mirror of
https://github.com/adulau/aha.git
synced 2024-12-27 19:26:25 +00:00
mfd: Clarify twl4030 return value for read and write
We should be checking if all the messages were tranferred. If not, then we should propagate the i2c core error code or EIO. Currently we return success (0) even if none of messages were transferred successfully. Signed-off-by: Amit Kucheria <amit.kucheria@verdurent.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
This commit is contained in:
parent
ab4abe056d
commit
147e084792
1 changed files with 22 additions and 8 deletions
|
@ -306,10 +306,17 @@ int twl4030_i2c_write(u8 mod_no, u8 *value, u8 reg, unsigned num_bytes)
|
|||
ret = i2c_transfer(twl->client->adapter, twl->xfer_msg, 1);
|
||||
mutex_unlock(&twl->xfer_lock);
|
||||
|
||||
/* i2cTransfer returns num messages.translate it pls.. */
|
||||
if (ret >= 0)
|
||||
ret = 0;
|
||||
return ret;
|
||||
/* i2c_transfer returns number of messages transferred */
|
||||
if (ret != 1) {
|
||||
pr_err("%s: i2c_write failed to transfer all messages\n",
|
||||
DRIVER_NAME);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
else
|
||||
return -EIO;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL(twl4030_i2c_write);
|
||||
|
||||
|
@ -358,10 +365,17 @@ int twl4030_i2c_read(u8 mod_no, u8 *value, u8 reg, unsigned num_bytes)
|
|||
ret = i2c_transfer(twl->client->adapter, twl->xfer_msg, 2);
|
||||
mutex_unlock(&twl->xfer_lock);
|
||||
|
||||
/* i2cTransfer returns num messages.translate it pls.. */
|
||||
if (ret >= 0)
|
||||
ret = 0;
|
||||
return ret;
|
||||
/* i2c_transfer returns number of messages transferred */
|
||||
if (ret != 2) {
|
||||
pr_err("%s: i2c_read failed to transfer all messages\n",
|
||||
DRIVER_NAME);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
else
|
||||
return -EIO;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL(twl4030_i2c_read);
|
||||
|
||||
|
|
Loading…
Reference in a new issue