diff options
| -rw-r--r-- | drivers/i2c/busses/i2c-omap.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c index f2b82ee39adf..a69665788513 100644 --- a/drivers/i2c/busses/i2c-omap.c +++ b/drivers/i2c/busses/i2c-omap.c | |||
| @@ -692,9 +692,10 @@ omap_i2c_isr(int this_irq, void *dev_id) | |||
| 692 | if (dev->fifo_size) { | 692 | if (dev->fifo_size) { |
| 693 | if (stat & OMAP_I2C_STAT_RRDY) | 693 | if (stat & OMAP_I2C_STAT_RRDY) |
| 694 | num_bytes = dev->fifo_size; | 694 | num_bytes = dev->fifo_size; |
| 695 | else | 695 | else /* read RXSTAT on RDR interrupt */ |
| 696 | num_bytes = omap_i2c_read_reg(dev, | 696 | num_bytes = (omap_i2c_read_reg(dev, |
| 697 | OMAP_I2C_BUFSTAT_REG); | 697 | OMAP_I2C_BUFSTAT_REG) |
| 698 | >> 8) & 0x3F; | ||
| 698 | } | 699 | } |
| 699 | while (num_bytes) { | 700 | while (num_bytes) { |
| 700 | num_bytes--; | 701 | num_bytes--; |
| @@ -731,9 +732,10 @@ omap_i2c_isr(int this_irq, void *dev_id) | |||
| 731 | if (dev->fifo_size) { | 732 | if (dev->fifo_size) { |
| 732 | if (stat & OMAP_I2C_STAT_XRDY) | 733 | if (stat & OMAP_I2C_STAT_XRDY) |
| 733 | num_bytes = dev->fifo_size; | 734 | num_bytes = dev->fifo_size; |
| 734 | else | 735 | else /* read TXSTAT on XDR interrupt */ |
| 735 | num_bytes = omap_i2c_read_reg(dev, | 736 | num_bytes = omap_i2c_read_reg(dev, |
| 736 | OMAP_I2C_BUFSTAT_REG); | 737 | OMAP_I2C_BUFSTAT_REG) |
| 738 | & 0x3F; | ||
| 737 | } | 739 | } |
| 738 | while (num_bytes) { | 740 | while (num_bytes) { |
| 739 | num_bytes--; | 741 | num_bytes--; |
