From: Janusz Użycki Date: Tue, 23 Sep 2014 10:48:26 +0000 (+0200) Subject: i2c: mxs: detect No Slave Ack on SELECT in PIO mode X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=030f940a535433605e6b4ee43f36189e5cace022;p=GitHub%2Fmoto-9609%2Fandroid_kernel_motorola_exynos9610.git i2c: mxs: detect No Slave Ack on SELECT in PIO mode i2cdetect scanned i2c bus slow because the i2c-mxs driver ignored the NO_SLAVE_ACK bit during busy-waiting loop. Thanks to the patch, the speedup happens. Signed-off-by: Janusz Uzycki Signed-off-by: Wolfram Sang --- diff --git a/drivers/i2c/busses/i2c-mxs.c b/drivers/i2c/busses/i2c-mxs.c index 65a21fed08b5..07e1be6f8992 100644 --- a/drivers/i2c/busses/i2c-mxs.c +++ b/drivers/i2c/busses/i2c-mxs.c @@ -307,6 +307,9 @@ static int mxs_i2c_pio_wait_xfer_end(struct mxs_i2c_dev *i2c) unsigned long timeout = jiffies + msecs_to_jiffies(1000); while (readl(i2c->regs + MXS_I2C_CTRL0) & MXS_I2C_CTRL0_RUN) { + if (readl(i2c->regs + MXS_I2C_CTRL1) & + MXS_I2C_CTRL1_NO_SLAVE_ACK_IRQ) + return -ENXIO; if (time_after(jiffies, timeout)) return -ETIMEDOUT; cond_resched();