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 linux-dvb@xxxxxxxxxxx http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb