V4L/DVB (12313): stv6110: Read registers through one time i2c_transfer calling
Signed-off-by: Igor M. Liplianin <liplianin@netup.ru> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
Родитель
fc7e4a3e72
Коммит
c846121058
|
@ -101,35 +101,25 @@ static int stv6110_read_regs(struct dvb_frontend *fe, u8 regs[],
|
|||
struct stv6110_priv *priv = fe->tuner_priv;
|
||||
int rc;
|
||||
u8 reg[] = { start };
|
||||
struct i2c_msg msg_wr = {
|
||||
.addr = priv->i2c_address,
|
||||
.flags = 0,
|
||||
.buf = reg,
|
||||
.len = 1,
|
||||
struct i2c_msg msg[] = {
|
||||
{
|
||||
.addr = priv->i2c_address,
|
||||
.flags = 0,
|
||||
.buf = reg,
|
||||
.len = 1,
|
||||
}, {
|
||||
.addr = priv->i2c_address,
|
||||
.flags = I2C_M_RD,
|
||||
.buf = regs,
|
||||
.len = len,
|
||||
},
|
||||
};
|
||||
|
||||
struct i2c_msg msg_rd = {
|
||||
.addr = priv->i2c_address,
|
||||
.flags = I2C_M_RD,
|
||||
.buf = regs,
|
||||
.len = len,
|
||||
};
|
||||
/* write subaddr */
|
||||
if (fe->ops.i2c_gate_ctrl)
|
||||
fe->ops.i2c_gate_ctrl(fe, 1);
|
||||
|
||||
rc = i2c_transfer(priv->i2c, &msg_wr, 1);
|
||||
if (rc != 1)
|
||||
dprintk("%s: i2c error\n", __func__);
|
||||
|
||||
if (fe->ops.i2c_gate_ctrl)
|
||||
fe->ops.i2c_gate_ctrl(fe, 0);
|
||||
/* read registers */
|
||||
if (fe->ops.i2c_gate_ctrl)
|
||||
fe->ops.i2c_gate_ctrl(fe, 1);
|
||||
|
||||
rc = i2c_transfer(priv->i2c, &msg_rd, 1);
|
||||
if (rc != 1)
|
||||
rc = i2c_transfer(priv->i2c, msg, 2);
|
||||
if (rc != 2)
|
||||
dprintk("%s: i2c error\n", __func__);
|
||||
|
||||
if (fe->ops.i2c_gate_ctrl)
|
||||
|
|
Загрузка…
Ссылка в новой задаче