i2c bit banging timeout for SCL
Ian Lepore
ian at freebsd.org
Mon Jul 1 16:27:53 UTC 2019
On Mon, 2019-07-01 at 19:03 +0300, Andriy Gapon wrote:
> iicbb driver has a hardcoded timeout that defines how long the driver waits for
> SCL line to go high after the driver releases it to float. Sometimes slaves
> hold the line low until they are ready to continue with the communication.
> As a side note, the timeout means that the driver just goes on as if the line
> became high. Maybe it should produce an error instead.
>
> Anyway, I would like to increase the current timeout of 100 x 10us to 1000 x
> 10us. The rationale is that there are many slave devices, like sensors, that
> take about 10 ms to return a result. So, I think that it makes sense to play
> nice with such devices by default.
>
> Probably I'll add a sysctl for that parameter while I'll be there.
>
> Any objections?
Many (perhaps most?) modern i2c slave devices are both i2c and smbus
compatible, and the smbus slave timeout is 35ms, so that wouldn't be a
bad default value.
I don't think ignoring the error and forging ahead is a good idea. It
should return an error, and perhaps it should use the bitbang bus-
recovery sequence (from iic_recover_bus.c) to unwedge the slave device.
-- Ian
More information about the freebsd-current
mailing list