From 454eca42d0e6b48738cc49538080a354d048eec7 Mon Sep 17 00:00:00 2001 From: kunalpowar Date: Thu, 22 May 2014 01:21:09 +0530 Subject: [PATCH] spi: got rid of shouldInitialize arg in spibus (redundant). --- host/bbb/bbb.go | 2 +- host/generic/spibus.go | 32 +++++++++++++------------------- host/rpi/rpi.go | 2 +- spidriver.go | 18 ++++++++---------- 4 files changed, 23 insertions(+), 31 deletions(-) diff --git a/host/bbb/bbb.go b/host/bbb/bbb.go index 9c3a6e9..4564c72 100644 --- a/host/bbb/bbb.go +++ b/host/bbb/bbb.go @@ -180,7 +180,7 @@ func init() { return embd.NewLEDDriver(ledMap, generic.NewLED) }, SPIDriver: func() embd.SPIDriver { - return embd.NewSPIDriver(spiDeviceMinor, generic.NewSPIBus, true, spiInitializer) + return embd.NewSPIDriver(spiDeviceMinor, generic.NewSPIBus, spiInitializer) }, } }) diff --git a/host/generic/spibus.go b/host/generic/spibus.go index 3b7e6a2..35b3472 100644 --- a/host/generic/spibus.go +++ b/host/generic/spibus.go @@ -54,24 +54,22 @@ type spiBus struct { spiTransferData spiIOCTransfer initialized bool - shouldInitialize bool - initializer func() error + initializer func() error } func spiIOCMessageN(n uint32) uint32 { return (spiIOCMessage0 + (n * spiIOCIncrementor)) } -func NewSPIBus(spiDevMinor, mode, channel byte, speed, bpw, delay int, shouldInitialize bool, i func() error) embd.SPIBus { +func NewSPIBus(spiDevMinor, mode, channel byte, speed, bpw, delay int, i func() error) embd.SPIBus { return &spiBus{ - spiDevMinor: spiDevMinor, - mode: mode, - channel: channel, - speed: speed, - bpw: bpw, - delayms: delay, - shouldInitialize: shouldInitialize, - initializer: i, + spiDevMinor: spiDevMinor, + mode: mode, + channel: channel, + speed: speed, + bpw: bpw, + delayms: delay, + initializer: i, } } @@ -80,11 +78,10 @@ func (b *spiBus) init() error { return nil } - if b.shouldInitialize { + if b.initializer != nil { if err := b.initializer(); err != nil { return err } - b.shouldInitialize = false } var err error @@ -93,20 +90,17 @@ func (b *spiBus) init() error { } glog.V(3).Infof("spi: sucessfully opened file /dev/spidev%v.%v", b.spiDevMinor, b.channel) - err = b.setMode() - if err != nil { + if err = b.setMode(); err != nil { return err } b.spiTransferData = spiIOCTransfer{} - err = b.setSpeed() - if err != nil { + if err = b.setSpeed(); err != nil { return err } - err = b.setBPW() - if err != nil { + if err = b.setBPW(); err != nil { return err } diff --git a/host/rpi/rpi.go b/host/rpi/rpi.go index ddb0a6c..41db588 100644 --- a/host/rpi/rpi.go +++ b/host/rpi/rpi.go @@ -77,7 +77,7 @@ func init() { return embd.NewLEDDriver(ledMap, generic.NewLED) }, SPIDriver: func() embd.SPIDriver { - return embd.NewSPIDriver(spiDeviceMinor, generic.NewSPIBus, false, nil) + return embd.NewSPIDriver(spiDeviceMinor, generic.NewSPIBus, nil) }, } }) diff --git a/spidriver.go b/spidriver.go index bd7ec9d..91766dd 100644 --- a/spidriver.go +++ b/spidriver.go @@ -2,12 +2,11 @@ package embd import "sync" -type spiBusFactory func(byte, byte, byte, int, int, int, bool, func() error) SPIBus +type spiBusFactory func(byte, byte, byte, int, int, int, func() error) SPIBus type spiDriver struct { - spiDevMinor byte - shouldInitialize bool - initializer func() error + spiDevMinor byte + initializer func() error busMap map[byte]SPIBus busMapLock sync.Mutex @@ -15,12 +14,11 @@ type spiDriver struct { sbf spiBusFactory } -func NewSPIDriver(spiDevMinor byte, sbf spiBusFactory, shouldInitialize bool, i func() error) SPIDriver { +func NewSPIDriver(spiDevMinor byte, sbf spiBusFactory, i func() error) SPIDriver { return &spiDriver{ - spiDevMinor: spiDevMinor, - sbf: sbf, - shouldInitialize: shouldInitialize, - initializer: i, + spiDevMinor: spiDevMinor, + sbf: sbf, + initializer: i, } } @@ -28,7 +26,7 @@ func (s *spiDriver) Bus(mode, channel byte, speed, bpw, delay int) SPIBus { s.busMapLock.Lock() defer s.busMapLock.Unlock() - b := s.sbf(s.spiDevMinor, mode, channel, speed, bpw, delay, s.shouldInitialize, s.initializer) + b := s.sbf(s.spiDevMinor, mode, channel, speed, bpw, delay, s.initializer) s.busMap = make(map[byte]SPIBus) s.busMap[channel] = b return b