From 2ee0cbc899841db1daf57c81cc2205707094c7ca Mon Sep 17 00:00:00 2001 From: Kunal Powar Date: Thu, 10 Apr 2014 07:29:06 +0530 Subject: [PATCH 1/2] i2c: fixed missing init call --- host/generic/i2cbus.go | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/host/generic/i2cbus.go b/host/generic/i2cbus.go index 526d2db..bb5a348 100644 --- a/host/generic/i2cbus.go +++ b/host/generic/i2cbus.go @@ -79,6 +79,10 @@ func (b *i2cBus) ReadByte(addr byte) (byte, error) { b.mu.Lock() defer b.mu.Unlock() + if err := b.init(); err != nil { + return 0, err + } + if err := b.setAddress(addr); err != nil { return 0, err } @@ -97,6 +101,10 @@ func (b *i2cBus) WriteByte(addr, value byte) error { b.mu.Lock() defer b.mu.Unlock() + if err := b.init(); err != nil { + return err + } + if err := b.setAddress(addr); err != nil { return err } @@ -114,6 +122,10 @@ func (b *i2cBus) WriteBytes(addr byte, value []byte) error { b.mu.Lock() defer b.mu.Unlock() + if err := b.init(); err != nil { + return err + } + if err := b.setAddress(addr); err != nil { return err } @@ -138,6 +150,10 @@ func (b *i2cBus) ReadFromReg(addr, reg byte, value []byte) error { b.mu.Lock() defer b.mu.Unlock() + if err := b.init(); err != nil { + return err + } + if err := b.setAddress(addr); err != nil { return err } @@ -187,6 +203,10 @@ func (b *i2cBus) WriteToReg(addr, reg byte, value []byte) error { b.mu.Lock() defer b.mu.Unlock() + if err := b.init(); err != nil { + return err + } + if err := b.setAddress(addr); err != nil { return err } @@ -217,6 +237,10 @@ func (b *i2cBus) WriteByteToReg(addr, reg, value byte) error { b.mu.Lock() defer b.mu.Unlock() + if err := b.init(); err != nil { + return err + } + if err := b.setAddress(addr); err != nil { return err } @@ -248,6 +272,10 @@ func (b *i2cBus) WriteWordToReg(addr, reg byte, value uint16) error { b.mu.Lock() defer b.mu.Unlock() + if err := b.init(); err != nil { + return err + } + if err := b.setAddress(addr); err != nil { return err } From 68ba342e1bf6b5c345516ab3b3a6fb1e2e22d39e Mon Sep 17 00:00:00 2001 From: Kunal Powar Date: Thu, 10 Apr 2014 07:38:14 +0530 Subject: [PATCH 2/2] i2c: added debug logs --- host/generic/i2cbus.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/host/generic/i2cbus.go b/host/generic/i2cbus.go index bb5a348..dc8e74c 100644 --- a/host/generic/i2cbus.go +++ b/host/generic/i2cbus.go @@ -11,6 +11,7 @@ import ( "time" "unsafe" + "github.com/golang/glog" "github.com/kidoman/embd" ) @@ -58,6 +59,8 @@ func (b *i2cBus) init() error { return err } + glog.V(2).Infof("i2c: bus %v initialized", b.l) + b.initialized = true return nil @@ -65,6 +68,7 @@ func (b *i2cBus) init() error { func (b *i2cBus) setAddress(addr byte) error { if addr != b.addr { + glog.V(2).Infof("i2c: setting bus %v address to %#02x", b.l, addr) if _, _, errno := syscall.Syscall(syscall.SYS_IOCTL, b.file.Fd(), slaveCmd, uintptr(addr)); errno != 0 { return syscall.Errno(errno) }