> --- a/drivers/i2c/busses/i2c-imx.c
> +++ b/drivers/i2c/busses/i2c-imx.c
> @@ -268,6 +268,14 @@ static int i2c_imx_bus_busy(struct imx_i2c_struct 
> *i2c_imx, int for_busy)
>  
>       while (1) {
>               temp = imx_i2c_read_reg(i2c_imx, IMX_I2C_I2SR);
> +
> +             /** check for arbitration lost **/

One '*' is enough on each side.

> +             if (temp & I2SR_IAL) {
> +                     temp &= ~I2SR_IAL;
> +                     imx_i2c_write_reg(temp, i2c_imx, IMX_I2C_I2SR);
> +                     return -EIO;

Documentation/i2c/fault-codes defines 'EAGAIN' for arbitration lost.

> +             }
> +
>               if (for_busy && (temp & I2SR_IBB))
>                       break;
>               if (!for_busy && !(temp & I2SR_IBB))
> -- 
> 1.9.1
> 

Attachment: signature.asc
Description: Digital signature

Reply via email to