i2c still not working for me

Daniel Braniss danny at cs.huji.ac.il
Tue Apr 9 08:23:17 UTC 2019



> On 9 Apr 2019, at 11:16, Emmanuel Vadot <manu at bidouilliste.com> wrote:
> 
> On Tue, 9 Apr 2019 11:04:23 +0300
> Daniel Braniss <danny at cs.huji.ac.il <mailto:danny at cs.huji.ac.il>> wrote:
> 
>> 
>> 
>>> On 9 Apr 2019, at 10:58, Emmanuel Vadot <manu at bidouilliste.com> wrote:
>>> 
>>> On Tue, 9 Apr 2019 10:50:22 +0300
>>> Daniel Braniss <danny at cs.huji.ac.il> wrote:
>>> 
>>>> Hi,
>>>> after the latest changes to i2c there is a small improvement,
>>>> i2c -s finds the device but complains:
>>>> 
>>>> root at neo-14:~ # i2c -s
>>>> Hardware may not support START/STOP scanning; trying less-reliable read method.
>>>> Scanning I2C devices on /dev/iic0: 24
>>>> 
>>>> but nothing else works.
>>>> 
>>>> I?ll try and connect my saleae signal analyzer later, but  in the meantime this is what I get
>>>> on the console:
>>>> [?]
>>>> iichb0: twsi_control_clear: read val=58
>>>> iichb0: twsi_control_clear: write val=40
>>>> iichb0: TWSI_WRITE: Writing 40 to c
>>>> iichb0: twsi_start: twsi_start: slave=48
>>>> iichb0: twsi_locked_start: send start
>>>> iichb0: TWSI_READ: read 58 from c
>>>> iichb0: twsi_control_set: read val=58
>>>> iichb0: twsi_control_set: write val=68
>>>> iichb0: TWSI_WRITE: Writing 68 to c
>>>> iichb0: twsi_poll_ctrl: Waiting for ctrl r.
>>>> eg to match mask 8
>>>> iichb0: TWSI_READ: read 48 from c
>>>> gic0: iichb0: Spurious interrupt detected: last irq: 32 on CPU1
>>>> twsi_poll_ctrl: done
>>>> gic0: iichb0: Spurious interrupt detected: last irq: 32 on CPU1
>>>> TWSI_READ: read 8 from 10
>>>> iichb0: twsi_locked_start: status=8
>>>> iichb0: TWSI_WRITE: Writing 48 to 8
>>>> gic0: Spurious interrupt detected: last irq: 32 on CPU1
>>>> iichb0: TWSI_READ: read 48 from c
>>>> gic0: iichb0: Spurious interrupt detected: last irq: 32 on CPU1
>>>> twsi_control_clear: read val=48
>>>> gic0: iichb0: Spurious interrupt detected: last irq: 32 on CPU1
>>>> twsi_control_clear: write val=40
>>>> gic0: iichb0: Spurious interrupt detected: last irq: 32 on CPU1
>>>> TWSI_WRITE: Writing 40 to c
>>>> gic0: Spurious interrupt detected: last irq: 32 on CPU1
>>>> iichb0: twsi_poll_ctrl: Waiting for ctrl reg to match mask 8
>>>> gic0: iichb0: Spurious interrupt detected: last irq: 32 on CPU1
>>>> TWSI_READ: read 48 from c
>>>> iichb0: twsi_poll_ctrl: done
>>>> iichb0: TWSI_READ: read 8 from 10
>>>> iichb0: twsi_locked_start: no ACK (status: 08) after sending slave address
>>>> gic0: iichb0: Spurious interrupt detected: last irq: 32 on CPU1
>>>> twsi_stop: twsi_stop
>>>> [?]
>>>> 
>>>> BTW, the hardware is NanoPi-neo and it?s running Current 345984
>>>> 
>>>> thanks,
>>>> 	danny
>>>> 
>>> 
>>> Based on the function names you are using directly stop/start/etc ...
>>> My changes were only for i2c_transfer (I2CRDWR ioctls)
>>> 
>> 
>> ok, this will show my ignorance, but could you send me some sample code that uses I2CRDWR?
>> btw, the device i?m trying out is an RFID reader pn533, which works with a modified driver ?
>> 
>> thanks,
>> 	danny
> 
> You can have a look at i2c(8) source code, it uses RDWR.
> Basically you give the ioctl some i2c messages (struct iic_rdwr_data).
> Also man 4 iic

i’m looking at the driver, 
thanks,
	danny

> 
> -- 
> Emmanuel Vadot <manu at bidouilliste.com <mailto:manu at bidouilliste.com>> <manu at freebsd.org <mailto:manu at freebsd.org>>



More information about the freebsd-arm mailing list