summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSifan Naeem <sifan.naeem@imgtec.com>2015-11-19 10:35:14 +0100
committerWolfram Sang <wsa@the-dreams.de>2016-01-02 22:04:05 +0100
commita8c5a8d8c9caa150f0e1faab3884ba48d9cd99fe (patch)
tree0502ad5cced7b3b50e615a2073519fb3db5630b4
parenti2c: img-scb: support I2C_M_IGNORE_NAK (diff)
downloadlinux-a8c5a8d8c9caa150f0e1faab3884ba48d9cd99fe.tar.xz
linux-a8c5a8d8c9caa150f0e1faab3884ba48d9cd99fe.zip
i2c: img-scb: remove fifo EMPTYING interrupts handle
Now that we are using the transaction halt interrupt to safely control repeated start transfers, we no longer need to handle the fifo emptying interrupts. Handling this interrupt along with Transaction Halt interrupt can cause erratic behaviour. Signed-off-by: Sifan Naeem <sifan.naeem@imgtec.com> Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
-rw-r--r--drivers/i2c/busses/i2c-img-scb.c16
1 files changed, 3 insertions, 13 deletions
diff --git a/drivers/i2c/busses/i2c-img-scb.c b/drivers/i2c/busses/i2c-img-scb.c
index c92bcf7c204f..0af554a16ae5 100644
--- a/drivers/i2c/busses/i2c-img-scb.c
+++ b/drivers/i2c/busses/i2c-img-scb.c
@@ -154,7 +154,6 @@
#define INT_TIMING BIT(18)
#define INT_FIFO_FULL_FILLING (INT_FIFO_FULL | INT_FIFO_FILLING)
-#define INT_FIFO_EMPTY_EMPTYING (INT_FIFO_EMPTY | INT_FIFO_EMPTYING)
/* Level interrupts need clearing after handling instead of before */
#define INT_LEVEL 0x01e00
@@ -176,8 +175,7 @@
INT_WRITE_ACK_ERR | \
INT_FIFO_FULL | \
INT_FIFO_FILLING | \
- INT_FIFO_EMPTY | \
- INT_FIFO_EMPTYING)
+ INT_FIFO_EMPTY)
#define INT_ENABLE_MASK_WAITSTOP (INT_SLAVE_EVENT | \
INT_ADDR_ACK_ERR | \
@@ -874,16 +872,8 @@ static unsigned int img_i2c_auto(struct img_i2c *i2c,
return ISR_WAITSTOP;
}
} else {
- if (int_status & INT_FIFO_EMPTY_EMPTYING) {
- /*
- * The write fifo empty indicates that we're in the
- * last byte so it's safe to start a new write
- * transaction without losing any bytes from the
- * previous one.
- * see 2.3.7 Repeated Start Transactions.
- */
- if ((int_status & INT_FIFO_EMPTY) &&
- i2c->msg.len == 0)
+ if (int_status & INT_FIFO_EMPTY) {
+ if (i2c->msg.len == 0)
return ISR_WAITSTOP;
img_i2c_write_fifo(i2c);
}