NFC: trf7970a: Ignore Overflow bit in FIFO Status Register
authorMark A. Greer <mgreer@animalcreek.com>
Tue, 2 Sep 2014 22:12:19 +0000 (15:12 -0700)
committerSamuel Ortiz <sameo@linux.intel.com>
Sun, 7 Sep 2014 21:13:42 +0000 (23:13 +0200)
The Overflow bit in the 'FIFO Status Register' has
proven to be untrustworthy so ignore it.

Signed-off-by: Mark A. Greer <mgreer@animalcreek.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
drivers/nfc/trf7970a.c

index badd2c7ffa92e3d69a71ba31a16864b97fd3cbc4..ac3db9d9eecab93b879f74e50ce368e1110a7d85 100644 (file)
@@ -561,12 +561,7 @@ static void trf7970a_fill_fifo(struct trf7970a *trf)
 
        dev_dbg(trf->dev, "Filling FIFO - fifo_bytes: 0x%x\n", fifo_bytes);
 
-       if (fifo_bytes & TRF7970A_FIFO_STATUS_OVERFLOW) {
-               dev_err(trf->dev, "%s - fifo overflow: 0x%x\n", __func__,
-                               fifo_bytes);
-               trf7970a_send_err_upstream(trf, -EIO);
-               return;
-       }
+       fifo_bytes &= ~TRF7970A_FIFO_STATUS_OVERFLOW;
 
        /* Calculate how much more data can be written to the fifo */
        len = TRF7970A_FIFO_SIZE - fifo_bytes;
@@ -596,16 +591,11 @@ static void trf7970a_drain_fifo(struct trf7970a *trf, u8 status)
 
        dev_dbg(trf->dev, "Draining FIFO - fifo_bytes: 0x%x\n", fifo_bytes);
 
+       fifo_bytes &= ~TRF7970A_FIFO_STATUS_OVERFLOW;
+
        if (!fifo_bytes)
                goto no_rx_data;
 
-       if (fifo_bytes & TRF7970A_FIFO_STATUS_OVERFLOW) {
-               dev_err(trf->dev, "%s - fifo overflow: 0x%x\n", __func__,
-                               fifo_bytes);
-               trf7970a_send_err_upstream(trf, -EIO);
-               return;
-       }
-
        if (fifo_bytes > skb_tailroom(skb)) {
                skb = skb_copy_expand(skb, skb_headroom(skb),
                                max_t(int, fifo_bytes,