Re: TT S-1401 problem with kernel 2.6.24 ???

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

 



Hi,

Am Freitag, den 21.03.2008, 07:42 +0100 schrieb Oliver Endriss:
> hermann pitton wrote:
> > Hi,
> > 
> > Am Donnerstag, den 20.03.2008, 00:48 +0100 schrieb Oliver Endriss:
> > > Andrew Junev wrote:
> > > > Hello All,
> > > > 
> > > > I was successfully using two TT S-1401 DVB-S cards in my HTPC running
> > > > Fedora 8. One of my antennas is positioned to Astra 19.2E and its
> > > > signal quality is quite low in my area. But the setup worked just fine
> > > > for me most of the time.
> > > > 
> > > > Last weekend I updated my system from kernel-2.6.23.15-137.fc8 to
> > > > kernel-2.6.24.3-12.fc8. It was just a 'yum update', nothing else.
> > > > Right after that I got no lock on most of Astra transponders (other
> > > > satellites were still Ok, but they normally have a far better signal).
> > > > After checking everything twice without any success, I booted back to
> > > > 2.6.23.15 and my Astra was back!
> > > > 
> > > > Is this a known behavior? I suppose it was not discussed before, so
> > > > this makes me think I am the only one with such a problem...
> > > > Strange... I think the problem is somehow related to the signal level / 
> > > > signal error rate. Looks like weak transponders are harder to lock
> > > > with the new kernel...
> > > > I'd appreciate any comments on this. I don't think I have an urgent
> > > > need to move to 2.6.24 now, but I'd still like to be able to do that
> > > > without loosing my TV... 
> > > > 
> > > > 
> > > > P.S. I can see there's kernel-2.6.24.3-34.fc8 already available for
> > > > Fedora 8. But I didn't try it yet...
> > > 
> > > Afaik this is a known regression in 2.6,24.
> > > 
> > > See 
> > >   http://www.linuxtv.org/pipermail/linux-dvb/2008-February/023477.html
> > > and
> > >   http://www.linuxtv.org/pipermail/linux-dvb/2008-February/023559.html
> > > for the fix.
> > > 
> > > CU
> > > Oliver
> > > 
> > 
> > hmm, thought that this we exactly did avoid on 2.6.24 and 2.6.25.
> > 
> > IIRC, this should never made it into 2.6.24, at least I thought we could
> > always stop it on 2.6.25 before it harms.
> > 
> > Fedora downports from release canditates, and almost always is fine,
> > so I don't trust the 2.6._24_ here.
> > 
> > If nothing else to do ..., might investigate it.
> 
> Unfortunately, the regression made it into the 2.6.24 series.
> I just checked and found it in 2.6.24.2. :-(
> 
> So we should submit a bug fix for 2.6,24, too.
> 
> CU
> Oliver
> 

yes, you are right.

changeset:   6579:816f256c2973
user:        Mauro Carvalho Chehab <mchehab@xxxxxxxxxxxxx>
date:        Thu Nov 08 09:54:53 2007 -0200
summary:     Fix bug #8824: Correct support for Diseqc on tda10086

The above changeset, to fix bug #8824,

http://bugzilla.kernel.org/show_bug.cgi?id=8824

also needed for DVB-S support on the saa7134 LifeView Trio, the triple
Creatix CTX948 and the MD8800 Medion Quad, did break the Pinnacle 400e
and the TT S-1401, since both have the LNB supply chip in such a way
connected, that it can't generate the 22kHz tone on its own, but needs
it provided by the tda10086 demodulator.

The following changeset by Hartmut did fix this for all above cards.

changeset:   7186:eb6bc7f18024
parent:      7182:3a880d2669a6
user:        Hartmut Hackmann <hartmut.hackmann@xxxxxxxxxxx>
date:        Sun Feb 10 00:54:24 2008 +0100
summary:     tda10086: make the 22kHz tone for DISEQC a config option

Here is Hartmut's fix, mercurial changeset 7186, acked by Patrick and
Oliver, against 2.6.24.4.

What else is needed to get the fix to 2.6.24 stable?

Thanks,
Hermann


diff -ur linux-2.6.24.4.orig/drivers/media/dvb/dvb-usb/ttusb2.c linux-2.6.24.4/drivers/media/dvb/dvb-usb/ttusb2.c
--- linux-2.6.24.4.orig/drivers/media/dvb/dvb-usb/ttusb2.c	2008-01-24 23:58:37.000000000 +0100
+++ linux-2.6.24.4/drivers/media/dvb/dvb-usb/ttusb2.c	2008-03-30 20:56:38.000000000 +0200
@@ -144,6 +144,7 @@
 static struct tda10086_config tda10086_config = {
 	.demod_address = 0x0e,
 	.invert = 0,
+	.diseqc_tone = 1,
 };
 
 static int ttusb2_frontend_attach(struct dvb_usb_adapter *adap)
diff -ur linux-2.6.24.4.orig/drivers/media/dvb/frontends/tda10086.c linux-2.6.24.4/drivers/media/dvb/frontends/tda10086.c
--- linux-2.6.24.4.orig/drivers/media/dvb/frontends/tda10086.c	2008-01-24 23:58:37.000000000 +0100
+++ linux-2.6.24.4/drivers/media/dvb/frontends/tda10086.c	2008-03-30 20:56:38.000000000 +0200
@@ -106,9 +106,12 @@
 static int tda10086_init(struct dvb_frontend* fe)
 {
 	struct tda10086_state* state = fe->demodulator_priv;
+	u8 t22k_off = 0x80;
 
 	dprintk ("%s\n", __FUNCTION__);
 
+	if (state->config->diseqc_tone)
+		t22k_off = 0;
 	// reset
 	tda10086_write_byte(state, 0x00, 0x00);
 	msleep(10);
@@ -158,7 +161,7 @@
 	tda10086_write_byte(state, 0x3d, 0x80);
 
 	// setup SEC
-	tda10086_write_byte(state, 0x36, 0x80); // all SEC off, no 22k tone
+	tda10086_write_byte(state, 0x36, t22k_off); // all SEC off, 22k tone
 	tda10086_write_byte(state, 0x34, (((1<<19) * (22000/1000)) / (SACLK/1000)));      // } tone frequency
 	tda10086_write_byte(state, 0x35, (((1<<19) * (22000/1000)) / (SACLK/1000)) >> 8); // }
 
@@ -180,16 +183,20 @@
 static int tda10086_set_tone (struct dvb_frontend* fe, fe_sec_tone_mode_t tone)
 {
 	struct tda10086_state* state = fe->demodulator_priv;
+	u8 t22k_off = 0x80;
 
 	dprintk ("%s\n", __FUNCTION__);
 
+	if (state->config->diseqc_tone)
+		t22k_off = 0;
+
 	switch (tone) {
 	case SEC_TONE_OFF:
-		tda10086_write_byte(state, 0x36, 0x80);
+		tda10086_write_byte(state, 0x36, t22k_off);
 		break;
 
 	case SEC_TONE_ON:
-		tda10086_write_byte(state, 0x36, 0x81);
+		tda10086_write_byte(state, 0x36, 0x01 + t22k_off);
 		break;
 	}
 
@@ -202,9 +209,13 @@
 	struct tda10086_state* state = fe->demodulator_priv;
 	int i;
 	u8 oldval;
+	u8 t22k_off = 0x80;
 
 	dprintk ("%s\n", __FUNCTION__);
 
+	if (state->config->diseqc_tone)
+		t22k_off = 0;
+
 	if (cmd->msg_len > 6)
 		return -EINVAL;
 	oldval = tda10086_read_byte(state, 0x36);
@@ -212,7 +223,8 @@
 	for(i=0; i< cmd->msg_len; i++) {
 		tda10086_write_byte(state, 0x48+i, cmd->msg[i]);
 	}
-	tda10086_write_byte(state, 0x36, 0x88 | ((cmd->msg_len - 1) << 4));
+	tda10086_write_byte(state, 0x36, (0x08 + t22k_off)
+					| ((cmd->msg_len - 1) << 4));
 
 	tda10086_diseqc_wait(state);
 
@@ -225,16 +237,20 @@
 {
 	struct tda10086_state* state = fe->demodulator_priv;
 	u8 oldval = tda10086_read_byte(state, 0x36);
+	u8 t22k_off = 0x80;
 
 	dprintk ("%s\n", __FUNCTION__);
 
+	if (state->config->diseqc_tone)
+		t22k_off = 0;
+
 	switch(minicmd) {
 	case SEC_MINI_A:
-		tda10086_write_byte(state, 0x36, 0x84);
+		tda10086_write_byte(state, 0x36, 0x04 + t22k_off);
 		break;
 
 	case SEC_MINI_B:
-		tda10086_write_byte(state, 0x36, 0x86);
+		tda10086_write_byte(state, 0x36, 0x06 + t22k_off);
 		break;
 	}
 
diff -ur linux-2.6.24.4.orig/drivers/media/dvb/frontends/tda10086.h linux-2.6.24.4/drivers/media/dvb/frontends/tda10086.h
--- linux-2.6.24.4.orig/drivers/media/dvb/frontends/tda10086.h	2008-01-24 23:58:37.000000000 +0100
+++ linux-2.6.24.4/drivers/media/dvb/frontends/tda10086.h	2008-03-30 20:56:38.000000000 +0200
@@ -33,6 +33,9 @@
 
 	/* does the "inversion" need inverted? */
 	u8 invert;
+
+	/* do we need the diseqc signal with carrier? */
+	u8 diseqc_tone;
 };
 
 #if defined(CONFIG_DVB_TDA10086) || (defined(CONFIG_DVB_TDA10086_MODULE) && defined(MODULE))
diff -ur linux-2.6.24.4.orig/drivers/media/dvb/ttpci/budget.c linux-2.6.24.4/drivers/media/dvb/ttpci/budget.c
--- linux-2.6.24.4.orig/drivers/media/dvb/ttpci/budget.c	2008-01-24 23:58:37.000000000 +0100
+++ linux-2.6.24.4/drivers/media/dvb/ttpci/budget.c	2008-03-30 20:56:38.000000000 +0200
@@ -351,6 +351,7 @@
 static struct tda10086_config tda10086_config = {
 	.demod_address = 0x0e,
 	.invert = 0,
+	.diseqc_tone = 1,
 };
 
 static u8 read_pwm(struct budget* budget)
diff -ur linux-2.6.24.4.orig/drivers/media/video/saa7134/saa7134-dvb.c linux-2.6.24.4/drivers/media/video/saa7134/saa7134-dvb.c
--- linux-2.6.24.4.orig/drivers/media/video/saa7134/saa7134-dvb.c	2008-01-24 23:58:37.000000000 +0100
+++ linux-2.6.24.4/drivers/media/video/saa7134/saa7134-dvb.c	2008-03-30 20:56:38.000000000 +0200
@@ -826,6 +826,7 @@
 static struct tda10086_config flydvbs = {
 	.demod_address = 0x0e,
 	.invert = 0,
+	.diseqc_tone = 0,
 };
 
 /* ==================================================================
@@ -940,9 +941,9 @@
 		configure_tda827x_fe(dev, &tda827x_lifeview_config);
 		break;
 	case SAA7134_BOARD_FLYDVB_TRIO:
-		if(! use_frontend) {	//terrestrial
+		if(! use_frontend) {	/* terrestrial */
 			configure_tda827x_fe(dev, &lifeview_trio_config);
-		} else {  	      //satellite
+		} else {  	        /* satellite */
 			dev->dvb.frontend = dvb_attach(tda10086_attach, &flydvbs, &dev->i2c_adap);
 			if (dev->dvb.frontend) {
 				if (dvb_attach(tda826x_attach, dev->dvb.frontend, 0x63,



_______________________________________________
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