aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/mfd/twl4030-core.c30
1 files changed, 22 insertions, 8 deletions
diff --git a/drivers/mfd/twl4030-core.c b/drivers/mfd/twl4030-core.c
index e4a5d489b8e7..7c2ec0aa9d87 100644
--- a/drivers/mfd/twl4030-core.c
+++ b/drivers/mfd/twl4030-core.c
@@ -306,10 +306,17 @@ int twl4030_i2c_write(u8 mod_no, u8 *value, u8 reg, unsigned num_bytes)
306 ret = i2c_transfer(twl->client->adapter, twl->xfer_msg, 1); 306 ret = i2c_transfer(twl->client->adapter, twl->xfer_msg, 1);
307 mutex_unlock(&twl->xfer_lock); 307 mutex_unlock(&twl->xfer_lock);
308 308
309 /* i2cTransfer returns num messages.translate it pls.. */ 309 /* i2c_transfer returns number of messages transferred */
310 if (ret >= 0) 310 if (ret != 1) {
311 ret = 0; 311 pr_err("%s: i2c_write failed to transfer all messages\n",
312 return ret; 312 DRIVER_NAME);
313 if (ret < 0)
314 return ret;
315 else
316 return -EIO;
317 } else {
318 return 0;
319 }
313} 320}
314EXPORT_SYMBOL(twl4030_i2c_write); 321EXPORT_SYMBOL(twl4030_i2c_write);
315 322
@@ -358,10 +365,17 @@ int twl4030_i2c_read(u8 mod_no, u8 *value, u8 reg, unsigned num_bytes)
358 ret = i2c_transfer(twl->client->adapter, twl->xfer_msg, 2); 365 ret = i2c_transfer(twl->client->adapter, twl->xfer_msg, 2);
359 mutex_unlock(&twl->xfer_lock); 366 mutex_unlock(&twl->xfer_lock);
360 367
361 /* i2cTransfer returns num messages.translate it pls.. */ 368 /* i2c_transfer returns number of messages transferred */
362 if (ret >= 0) 369 if (ret != 2) {
363 ret = 0; 370 pr_err("%s: i2c_read failed to transfer all messages\n",
364 return ret; 371 DRIVER_NAME);
372 if (ret < 0)
373 return ret;
374 else
375 return -EIO;
376 } else {
377 return 0;
378 }
365} 379}
366EXPORT_SYMBOL(twl4030_i2c_read); 380EXPORT_SYMBOL(twl4030_i2c_read);
367 381