static int au6610_qt1010_tuner_attach(struct dvb_usb_adapter *adap)
{
- /* TODO FIXME; probably I2C gate.
- QT1010 tuner does not respond before we write 0x1a to ZL10353 demod
- register 0x62. This ought to be done somewhere in demod initialization.
- This solution is temporary hack. */
-
- u8 buf[2] = { 0x62, 0x1a };
- struct i2c_msg msg = { .addr = au6610_zl10353_config.demod_address,
- .flags = 0, .buf = buf, .len = 2 };
-
- if (i2c_transfer(&adap->dev->i2c_adap, &msg, 1) != 1) {
- printk(KERN_WARNING "au6610 tuner attach failed\n");
- return -EREMOTEIO;
- }
return dvb_attach(qt1010_attach,
adap->fe, &adap->dev->i2c_adap,
&au6610_qt1010_config) == NULL ? -ENODEV : 0;
static int gl861_tuner_attach(struct dvb_usb_adapter *adap)
{
- /* TODO FIXME; probably I2C gate.
- QT1010 tuner does not respond before we write 0x1a to ZL10353 demod
- register 0x62. This ought to be done somewhere in demod initialization.
- This solution is temporary hack. */
-
- u8 buf[2] = { 0x62, 0x1a };
- struct i2c_msg msg = { .addr = gl861_zl10353_config.demod_address,
- .flags = 0, .buf = buf, .len = 2 };
-
- if (i2c_transfer(&adap->dev->i2c_adap, &msg, 1) != 1) {
- printk(KERN_WARNING "gl861 tuner attach failed\n");
- return -EREMOTEIO;
- }
return dvb_attach(qt1010_attach,
adap->fe, &adap->dev->i2c_adap,
&gl861_qt1010_config) == NULL ? -ENODEV : 0;
priv->bandwidth = (fe->ops.info.type == FE_OFDM) ? params->u.ofdm.bandwidth : 0;
priv->frequency = freq;
+ if (fe->ops.i2c_gate_ctrl)
+ fe->ops.i2c_gate_ctrl(fe, 1); /* open i2c_gate */
+
/* reg 05 base value */
if (freq < 290000000) reg05 = 0x14; /* 290 MHz */
else if (freq < 610000000) reg05 = 0x34; /* 610 MHz */
if (debug)
qt1010_dump_regs(priv);
+ if (fe->ops.i2c_gate_ctrl)
+ fe->ops.i2c_gate_ctrl(fe, 0); /* close i2c_gate */
+
return 0;
}
return qt1010_writereg(priv, 0x1e, 0x00);
}
-
static u8 qt1010_init_meas2(struct qt1010_priv *priv, u8 reg_init_val, u8 *retval)
{
u8 i, val;
{ QT1010_WR, 0x08, 0x08 }
};
+ if (fe->ops.i2c_gate_ctrl)
+ fe->ops.i2c_gate_ctrl(fe, 1); /* open i2c_gate */
+
for (i = 0; i < sizeof(i2c_data) / sizeof(*i2c_data); i++) {
switch (i2c_data[i].oper) {
case QT1010_WR:
priv->cfg = cfg;
priv->i2c = i2c;
+ if (fe->ops.i2c_gate_ctrl)
+ fe->ops.i2c_gate_ctrl(fe, 1); /* open i2c_gate */
+
/* Try to detect tuner chip. Probably this is not correct register. */
if (qt1010_readreg(priv, 0x29, &id) != 0 || (id != 0x39)) {
return NULL;
}
+ if (fe->ops.i2c_gate_ctrl)
+ fe->ops.i2c_gate_ctrl(fe, 0); /* close i2c_gate */
+
printk(KERN_INFO "Quantek QT1010 successfully identified.\n");
memcpy(&fe->ops.tuner_ops, &qt1010_tuner_ops, sizeof(struct dvb_tuner_ops));