aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/i2c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/i2c')
-rw-r--r--drivers/i2c/algos/i2c-algo-pca.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/i2c/algos/i2c-algo-pca.c b/drivers/i2c/algos/i2c-algo-pca.c
index 4ca9cf9cde7..beb9ffe2564 100644
--- a/drivers/i2c/algos/i2c-algo-pca.c
+++ b/drivers/i2c/algos/i2c-algo-pca.c
@@ -196,7 +196,7 @@ static int pca_xfer(struct i2c_adapter *i2c_adap,
196 } else { 196 } else {
197 dev_dbg(&i2c_adap->dev, "bus is not idle. status is " 197 dev_dbg(&i2c_adap->dev, "bus is not idle. status is "
198 "%#04x\n", state); 198 "%#04x\n", state);
199 return -EAGAIN; 199 return -EBUSY;
200 } 200 }
201 } 201 }
202 202
@@ -224,7 +224,7 @@ static int pca_xfer(struct i2c_adapter *i2c_adap,
224 } 224 }
225 225
226 curmsg = 0; 226 curmsg = 0;
227 ret = -EREMOTEIO; 227 ret = -EIO;
228 while (curmsg < num) { 228 while (curmsg < num) {
229 state = pca_status(adap); 229 state = pca_status(adap);
230 230
@@ -259,6 +259,7 @@ static int pca_xfer(struct i2c_adapter *i2c_adap,
259 case 0x20: /* SLA+W has been transmitted; NOT ACK has been received */ 259 case 0x20: /* SLA+W has been transmitted; NOT ACK has been received */
260 DEB2("NOT ACK received after SLA+W\n"); 260 DEB2("NOT ACK received after SLA+W\n");
261 pca_stop(adap); 261 pca_stop(adap);
262 ret = -ENXIO;
262 goto out; 263 goto out;
263 264
264 case 0x40: /* SLA+R has been transmitted; ACK has been received */ 265 case 0x40: /* SLA+R has been transmitted; ACK has been received */
@@ -283,6 +284,7 @@ static int pca_xfer(struct i2c_adapter *i2c_adap,
283 case 0x48: /* SLA+R has been transmitted; NOT ACK has been received */ 284 case 0x48: /* SLA+R has been transmitted; NOT ACK has been received */
284 DEB2("NOT ACK received after SLA+R\n"); 285 DEB2("NOT ACK received after SLA+R\n");
285 pca_stop(adap); 286 pca_stop(adap);
287 ret = -ENXIO;
286 goto out; 288 goto out;
287 289
288 case 0x30: /* Data byte in I2CDAT has been transmitted; NOT ACK has been received */ 290 case 0x30: /* Data byte in I2CDAT has been transmitted; NOT ACK has been received */