FreeBSD/src 930b312 (r320461)sys/dev/iicbus iic_recover_bus.c iic_recover_bus.h

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).
DeltaFile
+124-0sys/dev/iicbus/iic_recover_bus.c
+57-0sys/dev/iicbus/iic_recover_bus.h
+181-02 files

UnifiedSplitRaw