[media] ec100: improve I2C routines
authorAntti Palosaari <crope@iki.fi>
Wed, 12 Sep 2012 23:23:45 +0000 (20:23 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Sun, 23 Sep 2012 23:11:26 +0000 (20:11 -0300)
Signed-off-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/dvb-frontends/ec100.c

index b4ea34c2d09fd209fd30f6308810f70f61a6df14..9d424809d06b7dcb7f680491ce700078073ba30e 100644 (file)
@@ -33,24 +33,33 @@ struct ec100_state {
 /* write single register */
 static int ec100_write_reg(struct ec100_state *state, u8 reg, u8 val)
 {
+       int ret;
        u8 buf[2] = {reg, val};
-       struct i2c_msg msg = {
-               .addr = state->config.demod_address,
-               .flags = 0,
-               .len = 2,
-               .buf = buf};
-
-       if (i2c_transfer(state->i2c, &msg, 1) != 1) {
-               dev_warn(&state->i2c->dev, "%s: i2c wr failed reg=%02x\n",
-                               KBUILD_MODNAME, reg);
-               return -EREMOTEIO;
+       struct i2c_msg msg[1] = {
+               {
+                       .addr = state->config.demod_address,
+                       .flags = 0,
+                       .len = sizeof(buf),
+                       .buf = buf,
+               }
+       };
+
+       ret = i2c_transfer(state->i2c, msg, 1);
+       if (ret == 1) {
+               ret = 0;
+       } else {
+               dev_warn(&state->i2c->dev, "%s: i2c wr failed=%d reg=%02x\n",
+                               KBUILD_MODNAME, ret, reg);
+               ret = -EREMOTEIO;
        }
-       return 0;
+
+       return ret;
 }
 
 /* read single register */
 static int ec100_read_reg(struct ec100_state *state, u8 reg, u8 *val)
 {
+       int ret;
        struct i2c_msg msg[2] = {
                {
                        .addr = state->config.demod_address,
@@ -65,12 +74,16 @@ static int ec100_read_reg(struct ec100_state *state, u8 reg, u8 *val)
                }
        };
 
-       if (i2c_transfer(state->i2c, msg, 2) != 2) {
-               dev_warn(&state->i2c->dev, "%s: i2c rd failed reg=%02x\n",
-                               KBUILD_MODNAME, reg);
-               return -EREMOTEIO;
+       ret = i2c_transfer(state->i2c, msg, 2);
+       if (ret == 2) {
+               ret = 0;
+       } else {
+               dev_warn(&state->i2c->dev, "%s: i2c rd failed=%d reg=%02x\n",
+                               KBUILD_MODNAME, ret, reg);
+               ret = -EREMOTEIO;
        }
-       return 0;
+
+       return ret;
 }
 
 static int ec100_set_frontend(struct dvb_frontend *fe)