On Tue, Apr 28, 2015 at 02:20:33PM +0200, Alexander Sverdlin 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?

> +     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.

Other than that, it looks like a nice example of using this framework.
Just a few little helper functions and the core will do the rest.

Attachment: signature.asc
Description: Digital signature

Reply via email to