Hi! On 12/05/15 21:12, ext Wolfram Sang wrote: >> Use recovery framework and implement bus recovery using "Bus Monitor" >> > register. Tests show that shortening SCL to GND results in "completion" >> > timeout with "BUSY" bit still set. So initiate recovery in case of generic >> > timeout and "Arbitration Lost" condition. > So, how could you verify in this setup if the recovery actually worked? Yes, it's tested with jumpers and oscilloscope on a custom Axxia AXM5508-based board. 9 CLK pulses are there and it's also jumping out of recovery if SDA is not low any more. >> > + switch (idev->msg_err) { >> > + case -ETIMEDOUT: >> > + case -EAGAIN: >> > + i2c_recover_bus(&idev->adapter); >> > + } >> > + > Doesn't look right. -EAGAIN means arbitration lost which is not a > condition to reset the bus in a multi-master setup. I'll resend with only -ETIMEDOUT triggering the recovery. -- Best regards, Alexander Sverdlin. -- To unsubscribe from this list: send the line "unsubscribe linux-i2c" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html