From: Michael Cheng <[email protected]>

Add support for more master error status including FIFO underrun and RX
FIFO full

Signed-off-by: Michael Cheng <[email protected]>
Signed-off-by: Ray Jui <[email protected]>
---
 drivers/i2c/busses/i2c-bcm-iproc.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/drivers/i2c/busses/i2c-bcm-iproc.c 
b/drivers/i2c/busses/i2c-bcm-iproc.c
index 915c1b5aafd8..d64876cfa11c 100644
--- a/drivers/i2c/busses/i2c-bcm-iproc.c
+++ b/drivers/i2c/busses/i2c-bcm-iproc.c
@@ -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);
 
-- 
2.17.1

Reply via email to