|
@@ -952,11 +952,13 @@ omap_i2c_isr_thread(int this_irq, void *dev_id)
|
|
|
if (dev->fifo_size)
|
|
|
num_bytes = dev->buf_len;
|
|
|
|
|
|
- omap_i2c_receive_data(dev, num_bytes, true);
|
|
|
-
|
|
|
- if (dev->errata & I2C_OMAP_ERRATA_I207)
|
|
|
+ if (dev->errata & I2C_OMAP_ERRATA_I207) {
|
|
|
i2c_omap_errata_i207(dev, stat);
|
|
|
+ num_bytes = (omap_i2c_read_reg(dev,
|
|
|
+ OMAP_I2C_BUFSTAT_REG) >> 8) & 0x3F;
|
|
|
+ }
|
|
|
|
|
|
+ omap_i2c_receive_data(dev, num_bytes, true);
|
|
|
omap_i2c_ack_stat(dev, OMAP_I2C_STAT_RDR);
|
|
|
continue;
|
|
|
}
|