On 13/05/21 3:01 am, wsa@xxxxxxxxxx wrote: >>> I've been doing my recent work with a P2040 and prior to that I did test >>> out the recovery on a T2081 (which isn't documented to have this >>> erratum) when I was re-working the driver. The "new" recovery actually >>> seems better but I don't have a reliably faulty i2c device so that's >>> only based on me writing some code to manually trigger the recovery >>> (using the snippet below) and observing it with an oscilloscope. >> You don't need a faulty device, just an aborted I2C read/write op. > If you can wire GPIOs to the bus, you can use the I2C fault injector: > > Documentation/i2c/gpio-fault-injection.rst > > There are already two "incomplete transfer" injectors. > Just giving this thread a poke. I have been looking at my options for triggering an i2c recovery but haven't really had time to do much. I think the best option given what I've got access to is a modified SFP that grounds the SDA line but I need to find a system where I can attach an oscilloscope (should be a few of these in the office when I can get on-site). I can confirm that when manually triggered the existing recovery and the new erratum workaround produce what I'd expect to observe on an oscilloscope. I haven't explored Joakim's alternative recovery but I don't think that should hold up these changes, any improvement to the existing recovery can be done later as a follow-up.