[media] af9035: i2c read fix
authorHans-Frieder Vogt <hfvogt@gmx.net>
Sun, 1 Apr 2012 17:11:29 +0000 (14:11 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Mon, 9 Apr 2012 17:45:16 +0000 (14:45 -0300)
Enable i2c read requests.

I2C read fix (necessary e.g. for mxl5007t tuner, because it
sends a 2 bytes for a read request, thus msg[0].len != msg[1].len).

Signed-off-by: Hans-Frieder Vogt <hfvogt@gmx.net>
Signed-off-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/dvb/dvb-usb/af9035.c

index dc0a49ac664a47689988a7e2df14dd148c4c7eb1..6a83120afcd61fc70946ec9bf31049cd7a0b6294 100644 (file)
@@ -209,24 +209,15 @@ static int af9035_i2c_master_xfer(struct i2c_adapter *adap,
                                        msg[1].len);
                } else {
                        /* I2C */
-#if 0
-                       /*
-                        * FIXME: Keep that code. It should work but as it is
-                        * not tested I left it disabled and return -EOPNOTSUPP
-                        * for the sure.
-                        */
                        u8 buf[4 + msg[0].len];
                        struct usb_req req = { CMD_I2C_RD, 0, sizeof(buf),
                                        buf, msg[1].len, msg[1].buf };
-                       buf[0] = msg[0].len;
+                       buf[0] = msg[1].len;
                        buf[1] = msg[0].addr << 1;
                        buf[2] = 0x01;
                        buf[3] = 0x00;
                        memcpy(&buf[4], msg[0].buf, msg[0].len);
                        ret = af9035_ctrl_msg(d->udev, &req);
-#endif
-                       pr_debug("%s: I2C operation not supported\n", __func__);
-                       ret = -EOPNOTSUPP;
                }
        } else if (num == 1 && !(msg[0].flags & I2C_M_RD)) {
                if (msg[0].len > 40) {