HomeFreeBSD

Add iic_recover_bus(), a helper function that can be used by any i2c driver

Description

Add iic_recover_bus(), a helper function that can be used by any i2c driver
which is able to manipulate the clock and data lines directly.

When an i2c bus is hung by a slave device stuck in the middle of a
transaction that didn't complete properly, this function manipulates the
clock and data lines in a sequence known to reliably reset slave devices.
The most common cause of a hung i2c bus is a system reboot in the middle of
an i2c transfer (so it doesnt' happen often, but now there is a way other
than power cycling to recover from it).

Details

Provenance
ianAuthored on
Parents
rS320460: If an i2c transfer ends due to error, issue a stop on the bus even if the
Branches
Unknown
Tags
Unknown