|
@@ -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);
|
|
|
|