Hi,
I've problems with the TT-C2300 DVB-C card and qam256 modulated channels. After
switching to a qam256 channel, the card
needs between 0.5 and 1 hour to get the lock. Possible it is a problem of the
reduced i2c bus speed. If the stv0297 is
accessed with a higher i2c bus speed, the card gets the lock within a few
seconds like qam64. I've attach a patch, which
does reduce the i2c bus speed for the tuner only. I've measured the time
between 'after tuning' and 'start waiting for
the agc lock' in stv0297_set_frontend(). Without the patch it needs 470ms and
with the patch 60ms. This is a little bit
strange, because the factor of the speed changing is two. Possible, there is a
bug in the spec of the saa7146.
- Hartmut
diff -r 7efa405e2d66 linux/drivers/media/dvb/ttpci/av7110.c
--- a/linux/drivers/media/dvb/ttpci/av7110.c Fri Oct 06 17:12:00 2006 -0300
+++ b/linux/drivers/media/dvb/ttpci/av7110.c Sun Oct 08 00:46:55 2006 +0200
@@ -1818,6 +1818,7 @@ static int nexusca_stv0297_tuner_set_par
struct i2c_msg msg = { .addr = 0x63, .flags = 0, .buf = data, .len = sizeof(data) };
struct i2c_msg readmsg = { .addr = 0x63, .flags = I2C_M_RD, .buf = data, .len = 1 };
int i;
+ u32 i2c_bitrate;
div = (params->frequency + 36150000 + 31250) / 62500;
@@ -1836,10 +1837,15 @@ static int nexusca_stv0297_tuner_set_par
else
return -EINVAL;
+ i2c_bitrate = av7110->dev->i2c_bitrate;
+ // the tuner on the nexusca card needs a lower i2c bus speed
+ av7110->dev->i2c_bitrate = SAA7146_I2C_BUS_BIT_RATE_240;
+
if (fe->ops.i2c_gate_ctrl)
fe->ops.i2c_gate_ctrl(fe, 1);
if (i2c_transfer(&av7110->i2c_adap, &msg, 1) != 1) {
printk("nexusca: pll transfer failed!\n");
+ av7110->dev->i2c_bitrate = i2c_bitrate;
return -EIO;
}
@@ -1851,6 +1857,7 @@ static int nexusca_stv0297_tuner_set_par
if (data[0] & 0x40) break;
msleep(10);
}
+ av7110->dev->i2c_bitrate = i2c_bitrate;
return 0;
}
@@ -2211,8 +2218,6 @@ static int frontend_init(struct av7110 *
saa7146_setgpio(av7110->dev, 1, SAA7146_GPIO_OUTLO); // TDA9819 pin9(STD)
saa7146_setgpio(av7110->dev, 3, SAA7146_GPIO_OUTLO); // TDA9819 pin30(VIF)
- /* tuner on this needs a slower i2c bus speed */
- av7110->dev->i2c_bitrate = SAA7146_I2C_BUS_BIT_RATE_240;
break;
}
break;
_______________________________________________
linux-dvb mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb