aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIgor M. Liplianin <liplianin@netup.ru>2009-07-19 17:21:38 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2009-09-12 11:18:03 -0400
commitc846121058c2604cc8c513addd0fad1050014b3d (patch)
treeb2ca4ffd3db2414348f105921fe317c9a0261263
parentfc7e4a3e7201ee8a9a6359fdbcb6677231f353b5 (diff)
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>
-rw-r--r--drivers/media/dvb/frontends/stv6110.c38
1 files changed, 14 insertions, 24 deletions
diff --git a/drivers/media/dvb/frontends/stv6110.c b/drivers/media/dvb/frontends/stv6110.c
index 5aabb782e311..dcf1b21ea974 100644
--- a/drivers/media/dvb/frontends/stv6110.c
+++ b/drivers/media/dvb/frontends/stv6110.c
@@ -101,35 +101,25 @@ static int stv6110_read_regs(struct dvb_frontend *fe, u8 regs[],
101 struct stv6110_priv *priv = fe->tuner_priv; 101 struct stv6110_priv *priv = fe->tuner_priv;
102 int rc; 102 int rc;
103 u8 reg[] = { start }; 103 u8 reg[] = { start };
104 struct i2c_msg msg_wr = { 104 struct i2c_msg msg[] = {
105 .addr = priv->i2c_address, 105 {
106 .flags = 0, 106 .addr = priv->i2c_address,
107 .buf = reg, 107 .flags = 0,
108 .len = 1, 108 .buf = reg,
109 .len = 1,
110 }, {
111 .addr = priv->i2c_address,
112 .flags = I2C_M_RD,
113 .buf = regs,
114 .len = len,
115 },
109 }; 116 };
110 117
111 struct i2c_msg msg_rd = {
112 .addr = priv->i2c_address,
113 .flags = I2C_M_RD,
114 .buf = regs,
115 .len = len,
116 };
117 /* write subaddr */
118 if (fe->ops.i2c_gate_ctrl) 118 if (fe->ops.i2c_gate_ctrl)
119 fe->ops.i2c_gate_ctrl(fe, 1); 119 fe->ops.i2c_gate_ctrl(fe, 1);
120 120
121 rc = i2c_transfer(priv->i2c, &msg_wr, 1); 121 rc = i2c_transfer(priv->i2c, msg, 2);
122 if (rc != 1) 122 if (rc != 2)
123 dprintk("%s: i2c error\n", __func__);
124
125 if (fe->ops.i2c_gate_ctrl)
126 fe->ops.i2c_gate_ctrl(fe, 0);
127 /* read registers */
128 if (fe->ops.i2c_gate_ctrl)
129 fe->ops.i2c_gate_ctrl(fe, 1);
130
131 rc = i2c_transfer(priv->i2c, &msg_rd, 1);
132 if (rc != 1)
133 dprintk("%s: i2c error\n", __func__); 123 dprintk("%s: i2c error\n", __func__);
134 124
135 if (fe->ops.i2c_gate_ctrl) 125 if (fe->ops.i2c_gate_ctrl)