diff options
author | Antti Palosaari <crope@iki.fi> | 2007-01-27 14:41:35 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@infradead.org> | 2007-02-21 10:35:31 -0500 |
commit | 705d41e5da674b449f900df97ad13ebe53e82b82 (patch) | |
tree | 058036817b0d597f778dc9e48f78ebb3c7df2efe /drivers/media/dvb/frontends/qt1010.c | |
parent | 38d0629fd80464247290450d8641890d6f94b6fa (diff) |
V4L/DVB (5240): Qt1010: use i2c_gate_ctrl where appropriate
This patch adds calls to i2c_gate_ctrl in the qt1010 dvb tuner module,
while removing the temporary hack in au6610 and gl861.
Tested successfully against fi-Oulu frequencies with
MSI Megasky 580 GL861 and Sigmatek DVB-110 AU6610.
Signed-off-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'drivers/media/dvb/frontends/qt1010.c')
-rw-r--r-- | drivers/media/dvb/frontends/qt1010.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/drivers/media/dvb/frontends/qt1010.c b/drivers/media/dvb/frontends/qt1010.c index d7360f45355a..c3408dcabe87 100644 --- a/drivers/media/dvb/frontends/qt1010.c +++ b/drivers/media/dvb/frontends/qt1010.c | |||
@@ -149,6 +149,9 @@ static int qt1010_set_params(struct dvb_frontend *fe, struct dvb_frontend_parame | |||
149 | priv->bandwidth = (fe->ops.info.type == FE_OFDM) ? params->u.ofdm.bandwidth : 0; | 149 | priv->bandwidth = (fe->ops.info.type == FE_OFDM) ? params->u.ofdm.bandwidth : 0; |
150 | priv->frequency = freq; | 150 | priv->frequency = freq; |
151 | 151 | ||
152 | if (fe->ops.i2c_gate_ctrl) | ||
153 | fe->ops.i2c_gate_ctrl(fe, 1); /* open i2c_gate */ | ||
154 | |||
152 | /* reg 05 base value */ | 155 | /* reg 05 base value */ |
153 | if (freq < 290000000) reg05 = 0x14; /* 290 MHz */ | 156 | if (freq < 290000000) reg05 = 0x14; /* 290 MHz */ |
154 | else if (freq < 610000000) reg05 = 0x34; /* 610 MHz */ | 157 | else if (freq < 610000000) reg05 = 0x34; /* 610 MHz */ |
@@ -242,6 +245,9 @@ static int qt1010_set_params(struct dvb_frontend *fe, struct dvb_frontend_parame | |||
242 | if (debug) | 245 | if (debug) |
243 | qt1010_dump_regs(priv); | 246 | qt1010_dump_regs(priv); |
244 | 247 | ||
248 | if (fe->ops.i2c_gate_ctrl) | ||
249 | fe->ops.i2c_gate_ctrl(fe, 0); /* close i2c_gate */ | ||
250 | |||
245 | return 0; | 251 | return 0; |
246 | } | 252 | } |
247 | 253 | ||
@@ -277,7 +283,6 @@ static int qt1010_init_meas1(struct qt1010_priv *priv, u8 oper, u8 reg, u8 reg_i | |||
277 | return qt1010_writereg(priv, 0x1e, 0x00); | 283 | return qt1010_writereg(priv, 0x1e, 0x00); |
278 | } | 284 | } |
279 | 285 | ||
280 | |||
281 | static u8 qt1010_init_meas2(struct qt1010_priv *priv, u8 reg_init_val, u8 *retval) | 286 | static u8 qt1010_init_meas2(struct qt1010_priv *priv, u8 reg_init_val, u8 *retval) |
282 | { | 287 | { |
283 | u8 i, val; | 288 | u8 i, val; |
@@ -347,6 +352,9 @@ static int qt1010_init(struct dvb_frontend *fe) | |||
347 | { QT1010_WR, 0x08, 0x08 } | 352 | { QT1010_WR, 0x08, 0x08 } |
348 | }; | 353 | }; |
349 | 354 | ||
355 | if (fe->ops.i2c_gate_ctrl) | ||
356 | fe->ops.i2c_gate_ctrl(fe, 1); /* open i2c_gate */ | ||
357 | |||
350 | for (i = 0; i < sizeof(i2c_data) / sizeof(*i2c_data); i++) { | 358 | for (i = 0; i < sizeof(i2c_data) / sizeof(*i2c_data); i++) { |
351 | switch (i2c_data[i].oper) { | 359 | switch (i2c_data[i].oper) { |
352 | case QT1010_WR: | 360 | case QT1010_WR: |
@@ -430,6 +438,9 @@ struct dvb_frontend * qt1010_attach(struct dvb_frontend *fe, | |||
430 | priv->cfg = cfg; | 438 | priv->cfg = cfg; |
431 | priv->i2c = i2c; | 439 | priv->i2c = i2c; |
432 | 440 | ||
441 | if (fe->ops.i2c_gate_ctrl) | ||
442 | fe->ops.i2c_gate_ctrl(fe, 1); /* open i2c_gate */ | ||
443 | |||
433 | 444 | ||
434 | /* Try to detect tuner chip. Probably this is not correct register. */ | 445 | /* Try to detect tuner chip. Probably this is not correct register. */ |
435 | if (qt1010_readreg(priv, 0x29, &id) != 0 || (id != 0x39)) { | 446 | if (qt1010_readreg(priv, 0x29, &id) != 0 || (id != 0x39)) { |
@@ -437,6 +448,9 @@ struct dvb_frontend * qt1010_attach(struct dvb_frontend *fe, | |||
437 | return NULL; | 448 | return NULL; |
438 | } | 449 | } |
439 | 450 | ||
451 | if (fe->ops.i2c_gate_ctrl) | ||
452 | fe->ops.i2c_gate_ctrl(fe, 0); /* close i2c_gate */ | ||
453 | |||
440 | printk(KERN_INFO "Quantek QT1010 successfully identified.\n"); | 454 | printk(KERN_INFO "Quantek QT1010 successfully identified.\n"); |
441 | memcpy(&fe->ops.tuner_ops, &qt1010_tuner_ops, sizeof(struct dvb_tuner_ops)); | 455 | memcpy(&fe->ops.tuner_ops, &qt1010_tuner_ops, sizeof(struct dvb_tuner_ops)); |
442 | 456 | ||