Re: Pinnacle 300i, please try this patch

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

 



Hi,

hermann pitton wrote:
Hi Rainer,

Am Freitag, den 17.02.2006, 16:50 +0100 schrieb Rainer Schubert:

On Thu, 16 Feb 2006, hermann pitton wrote:


Hi Guys,

Hi Hermann,

[...]

Isn't 2.6.14 recent enough ?

yes, even 2.6.12 should be recent enough.

I thought so as I have got a working setup with 2.6.12.5 kernel.


yeah, but even the recent mercurial with the patch should work with
2.6.12 was meant.


[...]

It produces only an offset of 26 lines here, caused by the new Elsa
card.

It does not (yet) produce anything different from what it did without
the patch. :-)


Looking at the log I produced it seems the patches to tuner.c have been
rejected.

Only an offset of two lines caused by the new #ifdef for the XCeive
tuner. This part is needed to set the mt2050 in digital mode again.

Hmmmm...


Yes, that fixes the V4L2_TUNER_DIGITAL_TV mode for the 300i beside the
problems with the IR chip and that now the first register of the tda9887
is fully reprogrammed and not only bit 7 of port2.

Please apply the changes manually - at least the one for the pinnacle 300i.
It is a major portion of the trick. Also please keep in mind that the tda9887
module needs to be loaded manually before tuner. I have a patch for this
pending.

Tim sent his patched version which I will try this afternoon. Thanks Tim !


If you have inconsistent module versions, i guess the reason is that the
kernel is older than 2.6.12. In this case, the dvb modules will not be
updated.

It is version 2.6.14 and the inconsistancy was with versions of symbols in
ir_kbd-something.

Try modprobe -r to the related modules. This will also remove the old
ir-common.

Right. But I prefer a reboot, to be sure all modules a loaded in the right
order.


Take care and remember the problems with the tda8290 auto detection
code. It scans on the same address range than the tda9887 uses and with
this card the chip detection goes wrong ...

Until Hartmut provides the fix he is thinking about, you have to
modprobe -r saa7134-dvb/saa7134, tda9887 and tuner. Then modprobe
tda9887 at first!


[...]

Since it seems to produce problems for more people, a regenerated
version of Hartmut's patch against the recent "hg clone
http://linuxtv.org/hg/v4l-dvb"; is attached.

Thank you Hermann !


It should do if placed into the mercurial v4l-dvb top level directory
and there
"patch --dry-run -p 1 < pinnacle300i-regenerated-20060216.patch".
If so, drop the --dry-run and apply. I would like to see the first
saa7134-dvb hybrid card alive again everywhere :)

Same here as the card performs beautifully under Windows and so seems
to be quite a solid bit of hardware.


Yes, might be, but I think it was quite tricky even for Gerd to get the
card running, some i2c quirks in saa7134-i2c are reminders ...

Seems it causes more work for Hartmut now and he might even fork out
with a extra mercurial version for the card for a while to have proper
testing, stay tuned :)

Cheers,
Hermann

I will attach the patch that hopefully fixes the module load order issue.
I haven't updated my workspace for a while, so it might be that it does not
apply out of the box.
The main thing is in the tda8290.c. If probing for the tda8290 fails, the
code now assumes it is a tda9886 and restores its power on defaults.

Best regards
   Hartmut
diff -uNr v4l-dvb.old/linux/drivers/media/video/saa7134/saa7134-cards.c v4l-dvb/linux/drivers/media/video/saa7134/saa7134-cards.c
--- v4l-dvb.old/linux/drivers/media/video/saa7134/saa7134-cards.c	2006-02-14 00:55:21.000000000 +0100
+++ v4l-dvb/linux/drivers/media/video/saa7134/saa7134-cards.c	2006-02-14 22:22:00.000000000 +0100
@@ -2189,7 +2189,7 @@
 		.radio_type     = UNSET,
 		.tuner_addr	= 0x61,
 		.radio_addr	= ADDR_UNSET,
-		.tda9887_conf   = TDA9887_PRESENT,
+		.tda9887_conf   = TDA9887_PRESENT | TDA9887_PORT1_ACTIVE,
 		.mpeg           = SAA7134_MPEG_DVB,
 		.inputs = {{
 			.name   = name_tv,
@@ -2213,7 +2213,7 @@
 		.radio_type     = UNSET,
 		.tuner_addr	= 0x61,
 		.radio_addr	= ADDR_UNSET,
-		.tda9887_conf   = TDA9887_PRESENT,
+		.tda9887_conf   = TDA9887_PRESENT | TDA9887_PORT1_ACTIVE,
 		.mpeg           = SAA7134_MPEG_DVB,
 		.inputs = {{
 			.name   = name_tv,
diff -uNr v4l-dvb.old/linux/drivers/media/video/tda8290.c v4l-dvb/linux/drivers/media/video/tda8290.c
--- v4l-dvb.old/linux/drivers/media/video/tda8290.c	2006-02-14 00:55:21.000000000 +0100
+++ v4l-dvb/linux/drivers/media/video/tda8290.c	2006-02-14 01:00:26.000000000 +0100
@@ -589,9 +589,10 @@
 
 int tda8290_probe(struct i2c_client *c)
 {
-	unsigned char soft_reset[]  = { 0x00, 0x00 };
-	unsigned char easy_mode_b[] = { 0x01, 0x02 };
-	unsigned char easy_mode_g[] = { 0x01, 0x04 };
+	unsigned char soft_reset[]   = { 0x00, 0x00 };
+	unsigned char easy_mode_b[]  = { 0x01, 0x02 };
+	unsigned char easy_mode_g[]  = { 0x01, 0x04 };
+	unsigned char restore_9886[] = { 0x00, 0xd6, 0x30 };
 	unsigned char addr_dto_lsb = 0x07;
 	unsigned char data;
 
@@ -608,6 +609,7 @@
 			return 0;
 		}
 	}
+	i2c_master_send(c, restore_9886, 3);
 	return -1;
 }
 
_______________________________________________

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