diff options
author | Oleksandr Suvorov <oleksandr.suvorov@toradex.com> | 2021-06-25 01:10:35 +0300 |
---|---|---|
committer | Marcel Ziswiler <marcel.ziswiler@toradex.com> | 2021-06-30 06:49:42 +0000 |
commit | 98b7f58bc5bf859f5201635e7112d99356218820 (patch) | |
tree | e8f11995ce764ad0ed68c54457ddeeff58297690 | |
parent | c6944a48583f6dc2d698df387fd648075491bf81 (diff) |
i2c: imx: retry transfer on transient failure
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).
Related-to: ELB-3883
Signed-off-by: Oleksandr Suvorov <oleksandr.suvorov@toradex.com>
-rw-r--r-- | drivers/i2c/busses/i2c-imx.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/i2c/busses/i2c-imx.c b/drivers/i2c/busses/i2c-imx.c index 5393b6d500c6..d59edf96aa65 100644 --- a/drivers/i2c/busses/i2c-imx.c +++ b/drivers/i2c/busses/i2c-imx.c @@ -59,6 +59,7 @@ /* Default value */ #define IMX_I2C_BIT_RATE 100000 /* 100kHz */ #define IMX_I2C_MAX_E_BIT_RATE 384000 /* 384kHz from e7805 errata*/ +#define IMX_I2C_MAX_RETRIES 3 /* Retries on arbitration loss */ /* * Enable DMA if transfer byte size is bigger than this threshold. @@ -1592,6 +1593,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 = IMX_I2C_MAX_RETRIES; i2c_imx->base = base; ACPI_COMPANION_SET(&i2c_imx->adapter.dev, ACPI_COMPANION(&pdev->dev)); |