diff options
author | Igor M. Liplianin <liplianin@netup.ru> | 2009-07-19 17:21:38 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2009-09-12 11:18:03 -0400 |
commit | c846121058c2604cc8c513addd0fad1050014b3d (patch) | |
tree | b2ca4ffd3db2414348f105921fe317c9a0261263 | |
parent | fc7e4a3e7201ee8a9a6359fdbcb6677231f353b5 (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.c | 38 |
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) |