[linux-dvb] Pinnacle 300i, please try this patch
Hartmut Hackmann
hartmut.hackmann at t-online.de
Fri Feb 17 22:43:52 CET 2006
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
-------------- next part --------------
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;
}
More information about the linux-dvb
mailing list