From: Oleksandr Suvorov <oleksandr.suvorov@xxxxxxxxxxx> Set the i2c_adapter retries field to a sensible value. This allows the i2c core to retry master_xfer()/master_xfer_atomic() when it returns -EAGAIN. Currently the i2c-imx driver returns -EAGAIN only on Tx arbitration failure (I2SR_IAL). Signed-off-by: Oleksandr Suvorov <oleksandr.suvorov@xxxxxxxxxxx> Signed-off-by: Francesco Dolcini <francesco.dolcini@xxxxxxxxxxx> --- drivers/i2c/busses/i2c-imx.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/i2c/busses/i2c-imx.c b/drivers/i2c/busses/i2c-imx.c index e9e2db68b9fb..26738e713c94 100644 --- a/drivers/i2c/busses/i2c-imx.c +++ b/drivers/i2c/busses/i2c-imx.c @@ -54,6 +54,7 @@ #define DRIVER_NAME "imx-i2c" #define I2C_IMX_CHECK_DELAY 30000 /* Time to check for bus idle, in NS */ +#define I2C_IMX_MAX_RETRIES 3 /* Retries on arbitration loss */ /* * Enable DMA if transfer byte size is bigger than this threshold. @@ -1477,6 +1478,7 @@ static int i2c_imx_probe(struct platform_device *pdev) i2c_imx->adapter.dev.parent = &pdev->dev; i2c_imx->adapter.nr = pdev->id; i2c_imx->adapter.dev.of_node = pdev->dev.of_node; + i2c_imx->adapter.retries = I2C_IMX_MAX_RETRIES; i2c_imx->base = base; ACPI_COMPANION_SET(&i2c_imx->adapter.dev, ACPI_COMPANION(&pdev->dev)); -- 2.25.1