i2c: img-scb: remove fifo EMPTYING interrupts handle
authorSifan Naeem <sifan.naeem@imgtec.com>
Thu, 19 Nov 2015 09:35:14 +0000 (09:35 +0000)
committerWolfram Sang <wsa@the-dreams.de>
Sat, 2 Jan 2016 21:04:05 +0000 (22:04 +0100)
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>
drivers/i2c/busses/i2c-img-scb.c

index c92bcf7..0af554a 100644 (file)
 #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
                                         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);
                }