mirror of https://gitee.com/openkylin/linux.git
i2c-omap: Bug in reading the RXSTAT/TXSTAT values from the I2C_BUFFSTAT register
Fix bug in reading the I2C_BUFFSTAT register for getting byte count on RX/TX interrupt. On Interrupt: I2C_STAT[RDR], read 'RXSTAT' from I2C_BUFFSTAT[8-13] On Interrupt: I2C_STAT[XDR] read 'TXSTAT' from I2C_BUFFSTAT[0-5] Signed-off-by: Jagadeesh Pakaravoor <j-pakaravoor@ti.com> Signed-off-by: Moiz Sonasath <m-sonasath@ti.com> Signed-off-by: Vikram pandita <vikram.pandita@ti.com> [ben-linux@fluff.org: fixed mail format and added i2c-omap to subject] Signed-off-by: Ben Dooks <ben-linux@fluff.org>
This commit is contained in:
parent
ccb3bc16b4
commit
bfb6b6588a
|
@ -692,9 +692,10 @@ omap_i2c_isr(int this_irq, void *dev_id)
|
||||||
if (dev->fifo_size) {
|
if (dev->fifo_size) {
|
||||||
if (stat & OMAP_I2C_STAT_RRDY)
|
if (stat & OMAP_I2C_STAT_RRDY)
|
||||||
num_bytes = dev->fifo_size;
|
num_bytes = dev->fifo_size;
|
||||||
else
|
else /* read RXSTAT on RDR interrupt */
|
||||||
num_bytes = omap_i2c_read_reg(dev,
|
num_bytes = (omap_i2c_read_reg(dev,
|
||||||
OMAP_I2C_BUFSTAT_REG);
|
OMAP_I2C_BUFSTAT_REG)
|
||||||
|
>> 8) & 0x3F;
|
||||||
}
|
}
|
||||||
while (num_bytes) {
|
while (num_bytes) {
|
||||||
num_bytes--;
|
num_bytes--;
|
||||||
|
@ -731,9 +732,10 @@ omap_i2c_isr(int this_irq, void *dev_id)
|
||||||
if (dev->fifo_size) {
|
if (dev->fifo_size) {
|
||||||
if (stat & OMAP_I2C_STAT_XRDY)
|
if (stat & OMAP_I2C_STAT_XRDY)
|
||||||
num_bytes = dev->fifo_size;
|
num_bytes = dev->fifo_size;
|
||||||
else
|
else /* read TXSTAT on XDR interrupt */
|
||||||
num_bytes = omap_i2c_read_reg(dev,
|
num_bytes = omap_i2c_read_reg(dev,
|
||||||
OMAP_I2C_BUFSTAT_REG);
|
OMAP_I2C_BUFSTAT_REG)
|
||||||
|
& 0x3F;
|
||||||
}
|
}
|
||||||
while (num_bytes) {
|
while (num_bytes) {
|
||||||
num_bytes--;
|
num_bytes--;
|
||||||
|
|
Loading…
Reference in New Issue