| From 8e7e594b685f3fe44cd4803e3a4634bed897c2f7 Mon Sep 17 00:00:00 2001 |
| From: Zhang Ying-22455 <ying.zhang22455@nxp.com> |
| Date: Fri, 14 Apr 2017 17:03:03 +0800 |
| Subject: [PATCH] i2c: imx: add workaround for erratum ERR010027 |
| |
| ERR010027: Attempting a start cycle while the bus is busy may |
| generate a short clock pulse. |
| |
| Software must ensure that the I2C BUS is idle by checking the |
| bus busy before switching to master mode and attempting a Start |
| cycle. |
| |
| Signed-off-by: Zhang Ying-22455 <ying.zhang22455@nxp.com> |
| --- |
| drivers/i2c/busses/i2c-imx.c | 8 ++++++++ |
| 1 file changed, 8 insertions(+) |
| |
| --- a/drivers/i2c/busses/i2c-imx.c |
| +++ b/drivers/i2c/busses/i2c-imx.c |
| @@ -968,6 +968,14 @@ static int i2c_imx_xfer(struct i2c_adapt |
| enable_runtime_pm = true; |
| } |
| |
| + /* |
| + * workround for ERR010027: ensure that the I2C BUS is idle |
| + * before switching to master mode and attempting a Start cycle |
| + */ |
| + result = i2c_imx_bus_busy(i2c_imx, 0); |
| + if (result) |
| + goto out; |
| + |
| result = pm_runtime_get_sync(i2c_imx->adapter.dev.parent); |
| if (result < 0) |
| goto out; |