i2c: iproc: Add support for more master error status
authorMichael Cheng <ccheng@broadcom.com>
Wed, 3 Apr 2019 01:18:24 +0000 (18:18 -0700)
committerWolfram Sang <wsa@the-dreams.de>
Wed, 3 Apr 2019 20:35:38 +0000 (22:35 +0200)
Add support for more master error status including FIFO underrun and RX
FIFO full

Signed-off-by: Michael Cheng <ccheng@broadcom.com>
Signed-off-by: Ray Jui <ray.jui@broadcom.com>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
drivers/i2c/busses/i2c-bcm-iproc.c

index 915c1b5..d64876c 100644 (file)
@@ -73,6 +73,8 @@
 #define M_CMD_STATUS_NACK_ADDR       0x2
 #define M_CMD_STATUS_NACK_DATA       0x3
 #define M_CMD_STATUS_TIMEOUT         0x4
+#define M_CMD_STATUS_FIFO_UNDERRUN   0x5
+#define M_CMD_STATUS_RX_FIFO_FULL    0x6
 #define M_CMD_PROTOCOL_SHIFT         9
 #define M_CMD_PROTOCOL_MASK          0xf
 #define M_CMD_PROTOCOL_BLK_WR        0x7
@@ -536,6 +538,14 @@ static int bcm_iproc_i2c_check_status(struct bcm_iproc_i2c_dev *iproc_i2c,
                dev_dbg(iproc_i2c->device, "bus timeout\n");
                return -ETIMEDOUT;
 
+       case M_CMD_STATUS_FIFO_UNDERRUN:
+               dev_dbg(iproc_i2c->device, "FIFO under-run\n");
+               return -ENXIO;
+
+       case M_CMD_STATUS_RX_FIFO_FULL:
+               dev_dbg(iproc_i2c->device, "RX FIFO full\n");
+               return -ETIMEDOUT;
+
        default:
                dev_dbg(iproc_i2c->device, "unknown error code=%d\n", val);