Skip to content

Commit

Permalink
V4L/DVB (12313): stv6110: Read registers through one time i2c_transfe…
Browse files Browse the repository at this point in the history
…r calling

Signed-off-by: Igor M. Liplianin <liplianin@netup.ru>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
  • Loading branch information
Igor M. Liplianin authored and Mauro Carvalho Chehab committed Sep 12, 2009
1 parent fc7e4a3 commit c846121
Showing 1 changed file with 14 additions and 24 deletions.
38 changes: 14 additions & 24 deletions drivers/media/dvb/frontends/stv6110.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down

0 comments on commit c846121

Please sign in to comment.