From 6cfa481f30ea3425d5480d4e0d016b75d908d0b4 Mon Sep 17 00:00:00 2001 From: Thorsten von Eicken Date: Mon, 5 Sep 2016 23:13:14 -0700 Subject: [PATCH] Support SPI minor devices >255 (PR #33) --- host/bbb/bbb.go | 2 +- host/chip/chip.go | 2 +- host/generic/i2cbus.go | 2 +- host/generic/spibus.go | 4 ++-- host/rpi/rpi.go | 2 +- spidriver.go | 6 +++--- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/host/bbb/bbb.go b/host/bbb/bbb.go index f909627..1f42d7d 100644 --- a/host/bbb/bbb.go +++ b/host/bbb/bbb.go @@ -95,7 +95,7 @@ var ledMap = embd.LEDMap{ "beaglebone:green:usr3": []string{"3", "USR3", "usr3"}, } -var spiDeviceMinor byte = 1 +var spiDeviceMinor int = 1 func ensureFeatureEnabled(id string) error { glog.V(3).Infof("bbb: enabling feature %v", id) diff --git a/host/chip/chip.go b/host/chip/chip.go index c6bf7cc..277b72f 100644 --- a/host/chip/chip.go +++ b/host/chip/chip.go @@ -18,7 +18,7 @@ import ( "github.com/kidoman/embd/host/generic" ) -var spiDeviceMinor = byte(0) +var spiDeviceMinor = 32766 var chipPins = embd.PinMap{ // official GPIO pins (U14 connector) using the pcf8574a diff --git a/host/generic/i2cbus.go b/host/generic/i2cbus.go index 45c5870..fbe6f55 100644 --- a/host/generic/i2cbus.go +++ b/host/generic/i2cbus.go @@ -245,7 +245,7 @@ func (b *i2cBus) WriteToReg(addr, reg byte, value []byte) error { message.addr = uint16(addr) message.flags = 0 message.len = uint16(len(outbuf)) - message.buf = uintptr(unsafe.Pointer(&hdrp.Data)) + message.buf = uintptr(unsafe.Pointer(hdrp.Data)) var packets i2c_rdwr_ioctl_data diff --git a/host/generic/spibus.go b/host/generic/spibus.go index ef29c02..a33576f 100644 --- a/host/generic/spibus.go +++ b/host/generic/spibus.go @@ -43,7 +43,7 @@ type spiIOCTransfer struct { type spiBus struct { file *os.File - spiDevMinor byte + spiDevMinor int channel byte mode byte @@ -63,7 +63,7 @@ func spiIOCMessageN(n uint32) uint32 { return (spiIOCMessage0 + (n * spiIOCIncrementor)) } -func NewSPIBus(spiDevMinor, mode, channel byte, speed, bpw, delay int, i func() error) embd.SPIBus { +func NewSPIBus(spiDevMinor int, mode, channel byte, speed, bpw, delay int, i func() error) embd.SPIBus { return &spiBus{ spiDevMinor: spiDevMinor, mode: mode, diff --git a/host/rpi/rpi.go b/host/rpi/rpi.go index 0a82a4b..9279ca8 100644 --- a/host/rpi/rpi.go +++ b/host/rpi/rpi.go @@ -13,7 +13,7 @@ import ( "github.com/kidoman/embd/host/generic" ) -var spiDeviceMinor = byte(0) +var spiDeviceMinor = 0 var rev1Pins = embd.PinMap{ &embd.PinDesc{ID: "P1_3", Aliases: []string{"0", "GPIO_0", "SDA", "I2C0_SDA"}, Caps: embd.CapDigital | embd.CapI2C, DigitalLogical: 0}, diff --git a/spidriver.go b/spidriver.go index cecc19d..a145155 100644 --- a/spidriver.go +++ b/spidriver.go @@ -2,10 +2,10 @@ package embd import "sync" -type spiBusFactory func(byte, byte, byte, int, int, int, func() error) SPIBus +type spiBusFactory func(int, byte, byte, int, int, int, func() error) SPIBus type spiDriver struct { - spiDevMinor byte + spiDevMinor int initializer func() error busMap map[byte]SPIBus @@ -16,7 +16,7 @@ type spiDriver struct { // NewSPIDriver returns a SPIDriver interface which allows control // over the SPI bus. -func NewSPIDriver(spiDevMinor byte, sbf spiBusFactory, i func() error) SPIDriver { +func NewSPIDriver(spiDevMinor int, sbf spiBusFactory, i func() error) SPIDriver { return &spiDriver{ spiDevMinor: spiDevMinor, sbf: sbf,