Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 19 Apr 2019 10:20:47 +0300
From:      Daniel Braniss <danny@cs.huji.ac.il>
To:        Ian Lepore <ian@freebsd.org>
Cc:        Emmanuel Vadot <manu@bidouilliste.com>, "freebsd-arm@freebsd.org" <arm@freebsd.org>
Subject:   Re: i2c almost working for me, was Re: i2c still not working for me
Message-ID:  <CD499934-6E4E-4416-9B73-F3B8AB9A916D@cs.huji.ac.il>
In-Reply-To: <64b5598e2c8c7265f89a31b1f191cb1be318788a.camel@freebsd.org>
References:  <12F641C3-9FAA-4A3A-BA18-A7302F3A0F5E@cs.huji.ac.il> <20190409095819.c560dbc156c46e5ca0244e3e@bidouilliste.com> <23A47048-642A-481C-B7BE-B61E55F82955@cs.huji.ac.il> <20190409171604.GA4581@bluezbox.com> <FCA4E00E-455A-46BF-AD78-E20E1E997BFC@cs.huji.ac.il> <6119CE3B-6042-4DDC-82BE-B0C0C7ADA838@cs.huji.ac.il> <5D4799BC-08DF-4F3D-81A4-C2D938F4AF93@cs.huji.ac.il> <20190417222601.c037efe0cb48987c81032bac@bidouilliste.com> <DDDAC739-D68F-4843-BF89-3044ED442F69@cs.huji.ac.il> <64b5598e2c8c7265f89a31b1f191cb1be318788a.camel@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help


> On 18 Apr 2019, at 17:19, Ian Lepore <ian@freebsd.org> wrote:
>=20
> On Thu, 2019-04-18 at 10:12 +0300, Daniel Braniss wrote:
>>> On 17 Apr 2019, at 23:26, Emmanuel Vadot <manu@bidouilliste.com>
>>> wrote:
>>>=20
>>> On Tue, 16 Apr 2019 09:16:02 +0300
>>> Daniel Braniss <danny@cs.huji.ac.il <mailto:danny@cs.huji.ac.il>>
>>> wrote:
>>>=20
>>>>=20
>>>>=20
>>>>> On 11 Apr 2019, at 09:56, Daniel Braniss <danny@cs.huji.ac.il>
>>>>> wrote:
>>>>>=20
>>>>> if no device is connected, I2CRDWR hangs,=20
>>>>> it also happens with i2c(8) -s, only reboot helps.
>>>>>=20
>>>>> ichb1: twsi_reset: Using IIC_FASTEST/UNKNOWN mode with speed
>>>>> param=3D2a
>>>>> 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=3Df8
>>>>> iichb1: twsi_transfer: msg[0] flags: 0
>>>>> iichb1: twsi_transfer: msg[0] len: 9
>>>>> iichb1: TWSI_WRITE: Writing e4 to c
>>>>>=20
>>>>> and now it?s hung
>>>>=20
>>>> [?]
>>>=20
>>> I don't see that on my OrangePi One or Pine64-LTS.
>>=20
>> well, mine is are Nanopi Neo, maybe it=E2=80=99s 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?


>>>=20
>>>>=20
>>>> even with a working device, this happens sometimes:
>>>>=20
>>>> my app gets ENXIO from the ioctl(fd, I2CRDWR, &data) and on the
>>>> console:
>>>> ?
>>>> gic0: Spurious interrupt detected: last irq: 38 on CPU2
>>>> gic0: Spurious interrupt detected: last irq: 38 on CPU2
>>>> gic0: Spurious interrupt detected: last irq: 38 on CPU2
>>>> gic0: Spurious interrupt detected: last irq: 29 on CPU2
>>>> gic0: Spurious interrupt detected: last irq: 29 on CPU2
>>>> gic0: Spurious interrupt detected: last irq: 38 on CPU2
>>>> gic0: Spurious interrupt detected: last irq: 29 on CPU2
>>>> gic0: Spurious interrupt detected: last irq: 38 on CPU2
>>>> gic0: Spurious interrupt detected: last irq: 29 on CPU2
>>>> gic0: Spurious interrupt detected: last irq: 38 on CPU2
>>>> gic0: Spurious interrupt detected: last irq: 38 on CPU2
>>>> gic0: Spurious interrupt detected: last irq: 38 on CPU2
>>>> gic0: Spurious interrupt detected: last irq: 38 on CPU2
>>>> gic0: Spurious interrupt detected: last irq: 38 on CPU2
>>>> gic0: Spurious interrupt detected: last irq: 38 on CPU2
>>>> gic0: Spurious interrupt detected: last irq: 38 on CPU2
>>>> gic0: Spurious interrupt detected: last irq: 38 on CPU2
>>>> gic0: Spurious interrupt detected: last irq: 29 on CPU2
>>>> gic0: Spurious interrupt detected: last irq: 29 on CPU2
>>>> gic0: Spurious interrupt detected: last irq: 29 on CPU2
>>>>=20
>>>> the good news: my app is killable :-)
>>>=20
>>> I would need more details for this.
>>=20
>> it was caused by i2c issues - the cable was a bit too long.
>> BTW, does changing the frequency work? ie dev.iicbus.0.frequency
>=20
> It looks like that driver does not honor the frequency sysctl/tunable.

>=20
> You can often compensate for a too-long cable by adding some stronger
> pullups.  It's typical for a SOM to have pullups in the 4.7K range on
> i2c.  You can add your own 1K pullups to see if that helps the rise
> times on the bus.

well, at the moment it works ok with a 6m cable, i=E2=80=99ll try your =
suggestion soon.

>=20
> -- Ian
>=20


cheers,
	danny




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CD499934-6E4E-4416-9B73-F3B8AB9A916D>