> Hmmm, the name i2c_generic_bus_free suggests that scl should also be checked, > because the *bus* isn't really free unless both lines are high? No? Or, maybe > just rename to i2c_generic_sda_free (or something)? Well, technically, bus recovery is just for resurrecting a stuck low SDA. So, I'd think checking if SDA went high again should do it. However, there is HW (at least Renesas R-Car) which cannot read SDA directly. It will just return the result of its internal 'bus_free' logic. Whatever that is. I think it wants to see a STOP but that may be only part of it. I wanted to have an option to make use of such a feature if we can't read SDA. It is better than nothing. But since it doesn't reflect the state of SDA directly, I decided for another callback. > More importantly, isn't a ->get_bus_free implementation a sufficient requirement > for recovery? I.e. even if both ->get_sda and ->set_sda are missing? In my case, it isn't. It needs set_sda (== STOP) to achieve a useful result. Hmm, I think this needs better documentation...
Attachment:
signature.asc
Description: PGP signature