qam256 problem with Technotrend C2300 DVB-C card

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [Linux Media]     [Video 4 Linux]     [Asterisk]     [Samba]     [Xorg]     [Xfree86]     [Linux USB]

  Powered by Linux