[media] rtl28xxu: add I2C read without write
authorOlli Salonen <olli.salonen@iki.fi>
Tue, 5 May 2015 16:54:18 +0000 (13:54 -0300)
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>
Tue, 12 May 2015 16:21:29 +0000 (13:21 -0300)
Add support for I2C read operation without a preceeding write.

While here, change the error code to EOPNOTSUPP in case an
unsupported I2C operation is attempted.

Signed-off-by: Olli Salonen <olli.salonen@iki.fi>
Signed-off-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
drivers/media/usb/dvb-usb-v2/rtl28xxu.c

index 895441fe90f7cbbb4e41e6971f785d124cf54845..54cb10979d996aecc4898335a08a0545a870ffdf 100644 (file)
@@ -232,8 +232,14 @@ static int rtl28xxu_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msg[],
                        req.data = msg[0].buf;
                        ret = rtl28xxu_ctrl_msg(d, &req);
                }
+       } else if (num == 1 && (msg[0].flags & I2C_M_RD)) {
+               req.value = (msg[0].addr << 1);
+               req.index = CMD_I2C_DA_RD;
+               req.size = msg[0].len;
+               req.data = msg[0].buf;
+               ret = rtl28xxu_ctrl_msg(d, &req);
        } else {
-               ret = -EINVAL;
+               ret = -EOPNOTSUPP;
        }
 
 err_mutex_unlock: