mirror of https://gitee.com/openkylin/linux.git
[media] af9035: implement I2C adapter read operation
Signed-off-by: Antti Palosaari <crope@iki.fi> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
a7fab85111
commit
3b98c34783
|
@ -268,11 +268,29 @@ static int af9035_i2c_master_xfer(struct i2c_adapter *adap,
|
|||
memcpy(&buf[5], msg[0].buf, msg[0].len);
|
||||
ret = af9035_ctrl_msg(d, &req);
|
||||
}
|
||||
} else if (num == 1 && (msg[0].flags & I2C_M_RD)) {
|
||||
if (msg[0].len > 40) {
|
||||
/* TODO: correct limits > 40 */
|
||||
ret = -EOPNOTSUPP;
|
||||
} else {
|
||||
/* I2C */
|
||||
u8 buf[5];
|
||||
struct usb_req req = { CMD_I2C_RD, 0, sizeof(buf),
|
||||
buf, msg[0].len, msg[0].buf };
|
||||
req.mbox |= ((msg[0].addr & 0x80) >> 3);
|
||||
buf[0] = msg[0].len;
|
||||
buf[1] = msg[0].addr << 1;
|
||||
buf[2] = 0x00; /* reg addr len */
|
||||
buf[3] = 0x00; /* reg addr MSB */
|
||||
buf[4] = 0x00; /* reg addr LSB */
|
||||
ret = af9035_ctrl_msg(d, &req);
|
||||
}
|
||||
} else {
|
||||
/*
|
||||
* We support only two kind of I2C transactions:
|
||||
* 1) 1 x read + 1 x write
|
||||
* We support only three kind of I2C transactions:
|
||||
* 1) 1 x read + 1 x write (repeated start)
|
||||
* 2) 1 x write
|
||||
* 3) 1 x read
|
||||
*/
|
||||
ret = -EOPNOTSUPP;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue