All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v1] i2c: imx: Retry transfer on transient failure
@ 2022-07-12  8:24 ` Francesco Dolcini
  0 siblings, 0 replies; 36+ messages in thread
From: Francesco Dolcini @ 2022-07-12  8:24 UTC (permalink / raw)
  To: Oleksij Rempel, Pengutronix Kernel Team, Shawn Guo, Sascha Hauer,
	Fabio Estevam, NXP Linux Team
  Cc: Oleksandr Suvorov, linux-i2c, linux-arm-kernel, Francesco Dolcini

From: Oleksandr Suvorov <oleksandr.suvorov@toradex.com>

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@toradex.com>
Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
---
 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


^ permalink raw reply related	[flat|nested] 36+ messages in thread

end of thread, other threads:[~2022-07-15 11:46 UTC | newest]

Thread overview: 36+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-07-12  8:24 [PATCH v1] i2c: imx: Retry transfer on transient failure Francesco Dolcini
2022-07-12  8:24 ` Francesco Dolcini
2022-07-12  8:47 ` Marco Felsch
2022-07-12  8:47   ` Marco Felsch
2022-07-12  9:14   ` Francesco Dolcini
2022-07-12  9:14     ` Francesco Dolcini
2022-07-12 11:32   ` Wolfram Sang
2022-07-12 11:32     ` Wolfram Sang
2022-07-12 12:02     ` Marco Felsch
2022-07-12 12:02       ` Marco Felsch
2022-07-12  9:05 ` Uwe Kleine-König
2022-07-12  9:05   ` Uwe Kleine-König
2022-07-12 10:05   ` Francesco Dolcini
2022-07-12 10:05     ` Francesco Dolcini
2022-07-13 11:57     ` Francesco Dolcini
2022-07-13 11:57       ` Francesco Dolcini
2022-07-13 13:24       ` Oleksij Rempel
2022-07-13 13:24         ` Oleksij Rempel
2022-07-13 13:43         ` Francesco Dolcini
2022-07-13 13:43           ` Francesco Dolcini
2022-07-13 15:57           ` Oleksij Rempel
2022-07-13 15:57             ` Oleksij Rempel
2022-07-13 20:25             ` Francesco Dolcini
2022-07-13 20:25               ` Francesco Dolcini
2022-07-14  7:07               ` Oleksij Rempel
2022-07-14  7:07                 ` Oleksij Rempel
2022-07-14  7:34                 ` Francesco Dolcini
2022-07-14  7:34                   ` Francesco Dolcini
2022-07-15  6:49                   ` Uwe Kleine-König
2022-07-15  6:49                     ` Uwe Kleine-König
2022-07-15  7:24                     ` Francesco Dolcini
2022-07-15  7:24                       ` Francesco Dolcini
2022-07-15  8:34                       ` Uwe Kleine-König
2022-07-15  8:34                         ` Uwe Kleine-König
2022-07-15 11:45                         ` Francesco Dolcini
2022-07-15 11:45                           ` Francesco Dolcini

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.