From: Catalin Popescu <[email protected]>

The error messages printed from mrst_i2c_abort() didn't give slave address info.
But I2C device driver developers always need this to check which slave device 
has problem.

This patch enhances the error message format by adding slave address info to 
each error message.

Signed-off-by: Bin Yang <[email protected]>
---
 drivers/i2c/busses/i2c-mrst.c |   41 ++++++++++++++++++++++++++++-------------
 drivers/i2c/busses/i2c-mrst.h |    2 +-
 2 files changed, 29 insertions(+), 14 deletions(-)

diff --git a/drivers/i2c/busses/i2c-mrst.c b/drivers/i2c/busses/i2c-mrst.c
index 59afb32..f2af9ca 100644
--- a/drivers/i2c/busses/i2c-mrst.c
+++ b/drivers/i2c/busses/i2c-mrst.c
@@ -245,7 +245,7 @@ static inline int mrst_i2c_address_neq(const struct i2c_msg 
*p1,
 static void mrst_i2c_abort(struct mrst_i2c_private *i2c)
 {
        /* Read about source register */
-       int abort = i2c->abort;
+       u32 abort = i2c->abort;
        struct i2c_adapter *adap = i2c->adap;
 
        /* Single transfer error check:
@@ -255,16 +255,20 @@ static void mrst_i2c_abort(struct mrst_i2c_private *i2c)
        switch (abort) {
        case ABRT_MASTER_DIS:
                dev_err(&adap->dev,
-               "initiate Master operation with Master mode disabled.\n");
+                       "%s: initiate Master operation with Master mode "
+                       "disabled (addr = 0x%x).\n", __func__, i2c->msg->addr);
 
                break;
        case ABRT_10B_RD_NORSTRT:
                dev_err(&adap->dev,
-       "RESTART disabled and master sends READ cmd in 10-BIT addressing.\n");
+                       "%s: RESTART disabled and master sends READ cmd in "
+                       "10-BIT addressing (addr = 0x%x).\n", 
+                       __func__, i2c->msg->addr);
                break;
        case ABRT_SBYTE_NORSTRT:
                dev_err(&adap->dev,
-               "RESTART disabled and user is trying to send START byte.\n");
+                       "%s: RESTART disabled and user is trying to send START"
+                       " byte (addr = 0x%x).\n", __func__, i2c->msg->addr);
                mrst_i2c_write(i2c->base + IC_TX_ABRT_SOURCE,
                               !(ABRT_SBYTE_NORSTRT));
                mrst_i2c_write(i2c->base + IC_CON, RESTART);
@@ -272,28 +276,35 @@ static void mrst_i2c_abort(struct mrst_i2c_private *i2c)
                break;
        case ABRT_SBYTE_ACKDET:
                dev_err(&adap->dev,
-                       "START byte was acknowledged.\n");
+                       "%s: START byte was acknowledged (addr = 0x%x).\n", 
+                       __func__, i2c->msg->addr);
                break;
        case ABRT_TXDATA_NOACK:
                dev_err(&adap->dev,
-                       "No acknowledge received from slave.\n");
+                       "%s: No acknowledge received from slave "
+                       "(addr = 0x%x).\n", __func__, i2c->msg->addr);
                break;
        case ABRT_10ADDR2_NOACK:
                dev_err(&adap->dev,
-       "The 2nd address byte of the 10-bit address not acknowledged.\n");
+                       "%s: The 2nd address byte of the 10-bit address not "
+                       "acknowledged (addr = 0x%x).\n", 
+                       __func__, i2c->msg->addr);
                break;
        case ABRT_10ADDR1_NOACK:
                dev_dbg(&adap->dev,
-               "The 1st address byte of 10-bit address not acknowledged.\n");
+                       "%s: The 1st address byte of 10-bit address not "
+                       "acknowledged (addr = 0x%x).\n", 
+                       __func__, i2c->msg->addr);
                break;
        case ABRT_7B_ADDR_NOACK:
                dev_err(&adap->dev,
-                       "I2C slave device not acknowledge.\n");
+                       "%s: I2C slave device not acknowledge (addr = 0x%x).\n",
+                        __func__, i2c->msg->addr);
                break;
        default:
                dev_err(&adap->dev,
-                       "I2C TX abort.\n");
-               ;
+                       "%s: I2C TX abort = 0x%x (addr = 0x%x).\n", 
+                       __func__, abort, i2c->msg->addr);
        }
 
        /* Clear TX_ABRT bit */
@@ -343,7 +354,9 @@ static int xfer_read(struct i2c_adapter *adap, unsigned 
char *buf, int length)
 
        err = wait_for_completion_interruptible_timeout(&i2c->complete, HZ);
        if (!err) {
-               dev_err(&adap->dev, "Time out for ACK from I2C slave device\n");
+               dev_err(&adap->dev, 
+                       "%s: Time out for ACK from I2C slave device 0x%x\n", 
+                       __func__, i2c->msg->addr);
                mrst_i2c_hwinit(i2c);
                return -ETIMEDOUT;
        } else {
@@ -398,7 +411,9 @@ static int xfer_write(struct i2c_adapter *adap,
 
        err = wait_for_completion_interruptible_timeout(&i2c->complete, HZ);
        if (!err) {
-               dev_err(&adap->dev, "Time out for ACK from I2C slave device\n");
+               dev_err(&adap->dev, 
+                       "%s: Time out for ACK from I2C slave device 0x%x\n",
+                       __func__, i2c->msg->addr);
                mrst_i2c_hwinit(i2c);
                return -ETIMEDOUT;
        } else {
diff --git a/drivers/i2c/busses/i2c-mrst.h b/drivers/i2c/busses/i2c-mrst.h
index eaf79eb..84e3b92 100644
--- a/drivers/i2c/busses/i2c-mrst.h
+++ b/drivers/i2c/busses/i2c-mrst.h
@@ -32,7 +32,7 @@ struct mrst_i2c_private {
        /* Speed mode */
        int speed;
        struct completion complete;
-       int abort;
+       u32 abort;
        u8 *rx_buf;
        int rx_buf_len;
        int status;
-- 
1.7.0.4

_______________________________________________
MeeGo-kernel mailing list
[email protected]
http://lists.meego.com/listinfo/meego-kernel

Reply via email to