i2c almost working for me, was Re: i2c still not working for me
Daniel Braniss
danny at cs.huji.ac.il
Thu Apr 25 07:37:18 UTC 2019
> On 24 Apr 2019, at 16:06, Daniel Braniss <danny at cs.huji.ac.il> wrote:
>
>
>
>> On 24 Apr 2019, at 14:15, Emmanuel Vadot <manu at bidouilliste.com> wrote:
>>
>> On Wed, 24 Apr 2019 13:02:11 +0200
>> Emmanuel Vadot <manu at bidouilliste.com <mailto:manu at bidouilliste.com>> wrote:
>>
>>> On Fri, 19 Apr 2019 11:35:09 +0300
>>> Daniel Braniss <danny at cs.huji.ac.il> wrote:
>>>
>>>>
>>>>
>>>>> On 19 Apr 2019, at 11:05, Emmanuel Vadot <manu at bidouilliste.com> wrote:
>>>>>
>>>>> On Fri, 19 Apr 2019 10:20:47 +0300
>>>>> Daniel Braniss <danny at cs.huji.ac.il <mailto:danny at cs.huji.ac.il>> wrote:
>>>>>
>>>>>>
>>>>>>
>>>>>>> On 18 Apr 2019, at 17:19, Ian Lepore <ian at freebsd.org> wrote:
>>>>>>>
>>>>>>> On Thu, 2019-04-18 at 10:12 +0300, Daniel Braniss wrote:
>>>>>>>>> On 17 Apr 2019, at 23:26, Emmanuel Vadot <manu at bidouilliste.com>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>> On Tue, 16 Apr 2019 09:16:02 +0300
>>>>>>>>> Daniel Braniss <danny at cs.huji.ac.il <mailto:danny at cs.huji.ac.il>>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>> On 11 Apr 2019, at 09:56, Daniel Braniss <danny at cs.huji.ac.il>
>>>>>>>>>>> wrote:
>>>>>>>>>>>
>>>>>>>>>>> if no device is connected, I2CRDWR hangs,
>>>>>>>>>>> it also happens with i2c(8) -s, only reboot helps.
>>>>>>>>>>>
>>>>>>>>>>> ichb1: twsi_reset: Using IIC_FASTEST/UNKNOWN mode with speed
>>>>>>>>>>> param=2a
>>>>>>>>>>> iichb1: TWSI_WRITE: Writing 0 to 18
>>>>>>>>>>> iichb1: TWSI_WRITE: Writing 2a to 14
>>>>>>>>>>> iichb1: TWSI_WRITE: Writing 40 to c
>>>>>>>>>>> iichb1: TWSI_WRITE: Writing c4 to c
>>>>>>>>>>> iichb1: twsi_transfer: transmitting 2 messages
>>>>>>>>>>> iichb1: TWSI_READ: read f8 from 10
>>>>>>>>>>> iichb1: twsi_transfer: status=f8
>>>>>>>>>>> iichb1: twsi_transfer: msg[0] flags: 0
>>>>>>>>>>> iichb1: twsi_transfer: msg[0] len: 9
>>>>>>>>>>> iichb1: TWSI_WRITE: Writing e4 to c
>>
>> So looking at this is seems that the "START condition transmitted"
>> interrupt is never triggered, I'll see to add some type of timeout
>> around the pause_sbt.
>
> GREAT! I was about to send you a Nanopi-neo …,
> I might just do that if you send me an address.
>
this patch is not that elegant, but works for me:
Index: twsi.c
===================================================================
--- twsi.c (revision 346538)
+++ twsi.c (working copy)
@@ -458,8 +458,15 @@
if (sc->msg->len == 1)
sc->control_val &= ~TWSI_CONTROL_ACK;
TWSI_WRITE(sc, sc->reg_control, sc->control_val | TWSI_CONTROL_START);
- while (sc->error == 0 && sc->transfer != 0) {
- pause_sbt("twsi", SBT_1MS * 30, SBT_1MS, 0);
+ {
+ int count = 10;
+ while (sc->error == 0 && sc->transfer != 0) {
+ pause_sbt("twsi", SBT_1MS * 30, SBT_1MS, 0);
+ if(count-- == 0) {
+ sc->error = EDEADLK;
+ break;
+ }
+ }
}
debugf(dev, "Done with msg[%d]\n", i);
> danny
>
>>
>>>>>>>>>>> and now it?s hung
>>>>>>>>>>
>>>>>>>>>> [?]
>>>>>>>>>
>>>>>>>>> I don't see that on my OrangePi One or Pine64-LTS.
>>>>>>>>
>>>>>>>> well, mine is are Nanopi Neo, maybe it?s a dts issue?
>>>>>>>> I also have a orangepi-zero but it will take me some time to make
>>>>>>>> a sdcard
>>>>>>
>>>>>> I managed to boot my OrangePi Zero, and i2c -s has no issues, does not hang.
>>>>>> still, with the latest (r346368) my NanoPi Neo hangs when no i2c device is present,
>>>>>> so what is the difference? or where can I look?
>>>>>
>>>>> Are you using the same i2c controller on both ?
>>>> yes, and have tested with several controllers and nanopies,
>>>>
>>>>> Could you paste somewhere the overlays or dts patches ?
>>>> cat ./allwinner/dts/12/h3-i2c.dtso
>>>> /dts-v1/;
>>>> /plugin/;
>>>>
>>>> //#include "sun8i-h3-nanopi-neo.dts"
>>>>
>>>> / {
>>>> compatible = "allwinner,sun8i-h3";
>>>> };
>>>>
>>>> &i2c0 {
>>>> ##frequency = <50000>;
>>>> status = "okay";
>>>> };
>>>>
>>>> &i2c1 {
>>>> ##frequency = <50000>;
>>>> status = "okay";
>>>> };
>>>>
>>>>
>>>
>>> And you have hang on both i2c0 and i2c1 ?
>>> Also please note that i2c1 pins aren't routed on this PCB, I don't
>>> think that this could/should make the i2c controller hangs but ...
>>>
>>> --
>>> Emmanuel Vadot <manu at bidouilliste.com> <manu at freebsd.org>
>>> _______________________________________________
>>> freebsd-arm at freebsd.org <mailto:freebsd-arm at freebsd.org> mailing list
>>> https://lists.freebsd.org/mailman/listinfo/freebsd-arm <https://lists.freebsd.org/mailman/listinfo/freebsd-arm>
>>> To unsubscribe, send any mail to "freebsd-arm-unsubscribe at freebsd.org <mailto:freebsd-arm-unsubscribe at freebsd.org>"
>>
>>
>> --
>> Emmanuel Vadot <manu at bidouilliste.com <mailto:manu at bidouilliste.com>> <manu at freebsd.org <mailto:manu at freebsd.org>>
>
> _______________________________________________
> freebsd-arm at freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-arm
> To unsubscribe, send any mail to "freebsd-arm-unsubscribe at freebsd.org"
More information about the freebsd-arm
mailing list