i2c: xlp9xx: return ENXIO on slave address NACK
authorDmitry Bazhenov <dmitry.bazhenov@auriga.com>
Thu, 18 Jan 2018 05:39:21 +0000 (05:39 +0000)
committerWolfram Sang <wsa@the-dreams.de>
Mon, 26 Feb 2018 20:14:09 +0000 (21:14 +0100)
Fix the driver violation of the common practice to return
ENXIO error on a slave address NACK.

Signed-off-by: Dmitry Bazhenov <dmitry.bazhenov@auriga.com>
Signed-off-by: George Cherian <george.cherian@cavium.com>
Tested-by: dann frazier <dann.frazier@canonical.com>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
drivers/i2c/busses/i2c-xlp9xx.c

index b970bf8f38e57f0ac3b072620bb96de15796b744..6d78cdc5cf91abd2bb785fb13e46581b1515574e 100644 (file)
@@ -324,7 +324,8 @@ static int xlp9xx_i2c_xfer_msg(struct xlp9xx_i2c_dev *priv, struct i2c_msg *msg,
                dev_dbg(priv->dev, "transfer error %x!\n", priv->msg_err);
                if (priv->msg_err & XLP9XX_I2C_INTEN_BUSERR)
                        xlp9xx_i2c_init(priv);
-               return -EIO;
+               return (priv->msg_err & XLP9XX_I2C_INTEN_NACKADDR) ?
+                       -ENXIO : -EIO;
        }
 
        if (timeleft == 0) {