From 66d0ab22fda9ec233d7ad52ee0c8a838e157e949 Mon Sep 17 00:00:00 2001 From: Kunal Powar Date: Thu, 27 Feb 2014 05:07:11 +0530 Subject: [PATCH] added BeagleBone Black (bbb) as one of the supported hosts --- README.md | 5 +++ describe.go | 3 ++ host/bbb/data.go | 64 +++++++++++++++++++++++++++++++++ host/bbb/descriptor.go | 23 ++++++++++++ host/generic/linux/gpio/gpio.go | 3 ++ 5 files changed, 98 insertions(+) create mode 100644 host/bbb/data.go create mode 100644 host/bbb/descriptor.go diff --git a/README.md b/README.md index 02e7d63..3707fcd 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,11 @@ Golang Embedded Programming Framework [![GoDoc](http://godoc.org/github.com/kidoman/embd?status.png)](http://godoc.org/github.com/kidoman/embd) +## Hosts supported + +* [RaspberryPi](http://www.raspberrypi.org/) +* [BeagleBone Black](http://beagleboard.org/Products/BeagleBone%20Black) + ## Protocols supported * **I2C** [Documentation](http://godoc.org/github.com/kidoman/embd/i2c) diff --git a/describe.go b/describe.go index f05aa86..34c13d5 100644 --- a/describe.go +++ b/describe.go @@ -4,6 +4,7 @@ import ( "errors" "github.com/kidoman/embd/gpio" + "github.com/kidoman/embd/host/bbb" "github.com/kidoman/embd/host/rpi" "github.com/kidoman/embd/i2c" ) @@ -22,6 +23,8 @@ func describeHost() (descriptor, error) { switch host { case HostRPi: return rpi.Descriptor(rev), nil + case HostBBB: + return bbb.Descriptor(rev), nil default: return nil, errors.New("host: invalid host") } diff --git a/host/bbb/data.go b/host/bbb/data.go new file mode 100644 index 0000000..ce394c6 --- /dev/null +++ b/host/bbb/data.go @@ -0,0 +1,64 @@ +package bbb + +import ( + "github.com/kidoman/embd/host/generic/linux/gpio" +) + +var Pins = gpio.PinMap{ + &gpio.PinDesc{66, []string{"P8_07", "GPIO_66", "TIMER4"}, gpio.Normal | gpio.GPMC}, + &gpio.PinDesc{67, []string{"P8_08", "GPIO_67", "TIMER7"}, gpio.Normal | gpio.GPMC}, + &gpio.PinDesc{69, []string{"P8_09", "GPIO_69", "TIMER5"}, gpio.Normal | gpio.GPMC}, + &gpio.PinDesc{68, []string{"P8_10", "GPIO_68", "TIMER6"}, gpio.Normal | gpio.GPMC}, + &gpio.PinDesc{45, []string{"P8_11", "GPIO_45"}, gpio.Normal | gpio.GPMC}, + &gpio.PinDesc{44, []string{"P8_12", "GPIO_44"}, gpio.Normal | gpio.GPMC}, + &gpio.PinDesc{23, []string{"P8_13", "GPIO_23", "EHRPWM2B"}, gpio.Normal | gpio.GPMC}, + &gpio.PinDesc{26, []string{"P8_14", "GPIO_26"}, gpio.Normal | gpio.GPMC}, + &gpio.PinDesc{47, []string{"P8_15", "GPIO_47"}, gpio.Normal | gpio.GPMC}, + &gpio.PinDesc{46, []string{"P8_16", "GPIO_46"}, gpio.Normal | gpio.GPMC}, + &gpio.PinDesc{27, []string{"P8_17", "GPIO_27"}, gpio.Normal | gpio.GPMC}, + &gpio.PinDesc{65, []string{"P8_18", "GPIO_65"}, gpio.Normal | gpio.GPMC}, + &gpio.PinDesc{22, []string{"P8_19", "GPIO_22", "EHRPWM2A"}, gpio.Normal | gpio.GPMC}, + &gpio.PinDesc{61, []string{"P8_26", "GPIO_61"}, gpio.Normal | gpio.GPMC}, + &gpio.PinDesc{86, []string{"P8_27", "GPIO_86"}, gpio.Normal | gpio.LCD}, + &gpio.PinDesc{88, []string{"P8_28", "GPIO_88"}, gpio.Normal | gpio.LCD}, + &gpio.PinDesc{87, []string{"P8_29", "GPIO_87"}, gpio.Normal | gpio.LCD}, + &gpio.PinDesc{89, []string{"P8_30", "GPIO_89"}, gpio.Normal | gpio.LCD}, + &gpio.PinDesc{10, []string{"P8_31", "GPIO_10", "UART5_CTSN"}, gpio.Normal | gpio.LCD}, + &gpio.PinDesc{11, []string{"P8_32", "GPIO_11", "UART5_RTSN"}, gpio.Normal | gpio.LCD}, + &gpio.PinDesc{9, []string{"P8_33", "GPIO_9 ", "UART4_RTSN"}, gpio.Normal | gpio.LCD}, + &gpio.PinDesc{81, []string{"P8_34", "GPIO_81", "UART3_RTSN"}, gpio.Normal | gpio.LCD}, + &gpio.PinDesc{8, []string{"P8_35", "GPIO_8 ", "UART4_CTSN"}, gpio.Normal | gpio.LCD}, + &gpio.PinDesc{80, []string{"P8_36", "GPIO_80", "UART3_CTSN"}, gpio.Normal | gpio.LCD}, + &gpio.PinDesc{78, []string{"P8_37", "GPIO_78", "UART5_TXD"}, gpio.Normal | gpio.LCD}, + &gpio.PinDesc{79, []string{"P8_38", "GPIO_79", "UART5_RXD"}, gpio.Normal | gpio.LCD}, + &gpio.PinDesc{76, []string{"P8_39", "GPIO_76"}, gpio.Normal | gpio.LCD}, + &gpio.PinDesc{77, []string{"P8_40", "GPIO_77"}, gpio.Normal | gpio.LCD}, + &gpio.PinDesc{74, []string{"P8_41", "GPIO_74"}, gpio.Normal | gpio.LCD}, + &gpio.PinDesc{75, []string{"P8_42", "GPIO_75"}, gpio.Normal | gpio.LCD}, + &gpio.PinDesc{72, []string{"P8_43", "GPIO_72"}, gpio.Normal | gpio.LCD}, + &gpio.PinDesc{73, []string{"P8_44", "GPIO_73"}, gpio.Normal | gpio.LCD}, + &gpio.PinDesc{70, []string{"P8_45", "GPIO_70"}, gpio.Normal | gpio.LCD}, + &gpio.PinDesc{71, []string{"P8_46", "GPIO_71"}, gpio.Normal | gpio.LCD}, + + &gpio.PinDesc{30, []string{"P9_11", "GPIO_30", "UART4_RXD"}, gpio.Normal | gpio.UART}, + &gpio.PinDesc{60, []string{"P9_12", "GPIO_60", "GPIO1_28"}, gpio.Normal}, + &gpio.PinDesc{31, []string{"P9_13", "GPIO_31", "UART4_TXD"}, gpio.Normal | gpio.UART}, + &gpio.PinDesc{50, []string{"P9_14", "GPIO_50", "EHRPWM1A"}, gpio.Normal | gpio.PWM}, + &gpio.PinDesc{48, []string{"P9_15", "GPIO_48", "GPIO1_16"}, gpio.Normal}, + &gpio.PinDesc{51, []string{"P9_16", "GPIO_51", "EHRPWM1B"}, gpio.Normal | gpio.PWM}, + &gpio.PinDesc{5, []string{"P9_17", "GPIO_5", "I2C1_SCL"}, gpio.Normal | gpio.I2C}, + &gpio.PinDesc{4, []string{"P9_18", "GPIO_4", "I2C1_SDA"}, gpio.Normal | gpio.I2C}, + &gpio.PinDesc{13, []string{"P9_19", "GPIO_13", "I2C2_SCL"}, gpio.Normal | gpio.I2C}, + &gpio.PinDesc{12, []string{"P9_20", "GPIO_12", "I2C2_SDA"}, gpio.Normal | gpio.I2C}, + &gpio.PinDesc{3, []string{"P9_21", "GPIO_3", "UART2_TXD"}, gpio.Normal | gpio.UART}, + &gpio.PinDesc{2, []string{"P9_22", "GPIO_2", "UART2_RXD"}, gpio.Normal | gpio.UART}, + &gpio.PinDesc{49, []string{"P9_23", "GPIO_49", "GPIO1_17"}, gpio.Normal}, + &gpio.PinDesc{15, []string{"P9_24", "GPIO_15", "UART1_TXD"}, gpio.Normal | gpio.UART}, + &gpio.PinDesc{117, []string{"P9_25", "GPIO_117", "GPIO3_21"}, gpio.Normal}, + &gpio.PinDesc{14, []string{"P9_26", "GPIO_14", "UART1_RXD"}, gpio.Normal | gpio.UART}, + &gpio.PinDesc{115, []string{"P9_27", "GPIO_115", "GPIO3_19"}, gpio.Normal}, + &gpio.PinDesc{113, []string{"P9_28", "GPIO_113", "SPI1_CS0"}, gpio.Normal | gpio.SPI}, + &gpio.PinDesc{111, []string{"P9_29", "GPIO_111", "SPI1_D0"}, gpio.Normal | gpio.SPI}, + &gpio.PinDesc{112, []string{"P9_30", "GPIO_112", "SPI1_D1"}, gpio.Normal | gpio.SPI}, + &gpio.PinDesc{110, []string{"P9_31", "GPIO_110", "SPI1_SCLK"}, gpio.Normal | gpio.SPI}, +} diff --git a/host/bbb/descriptor.go b/host/bbb/descriptor.go new file mode 100644 index 0000000..188c5e3 --- /dev/null +++ b/host/bbb/descriptor.go @@ -0,0 +1,23 @@ +package bbb + +import ( + "github.com/kidoman/embd/gpio" + lgpio "github.com/kidoman/embd/host/generic/linux/gpio" + li2c "github.com/kidoman/embd/host/generic/linux/i2c" + "github.com/kidoman/embd/i2c" +) + +type descriptor struct { +} + +func (d *descriptor) GPIO() gpio.GPIO { + return lgpio.New(Pins) +} + +func (d *descriptor) I2C() i2c.I2C { + return li2c.New() +} + +func Descriptor(rev int) *descriptor { + return &descriptor{} +} diff --git a/host/generic/linux/gpio/gpio.go b/host/generic/linux/gpio/gpio.go index 2a0add0..4c2b88e 100644 --- a/host/generic/linux/gpio/gpio.go +++ b/host/generic/linux/gpio/gpio.go @@ -14,6 +14,9 @@ const ( I2C UART SPI + GPMC + LCD + PWM ) type PinDesc struct {