[linux-dvb] [PATCH-TESTERS-REQUIRED] Leadtek Winfast PxDVR 3200 H - DVB Only support

stev391 at email.com stev391 at email.com
Sun Aug 10 07:31:01 CEST 2008

> ----- Original Message -----
> From: "Steven Toth" <stoth at linuxtv.org>
> To: stev391 at email.com
> Subject: Re: [linux-dvb] [PATCH-TESTERS-REQUIRED] Leadtek Winfast PxDVR 3200 H - DVB Only support
> Date: Tue, 05 Aug 2008 10:30:57 -0400
> stev391 at email.com wrote:
> > Steve,
> >
> > I have reworked the tuner callback now against your branch at:
> > http://linuxtv.org/hg/~stoth/v4l-dvb
> >
> > The new Patch (to add support for this card) is attached inline below for testing (this is a 
> > hint Mark & Jon), I have not provided a signed-off note on purpose as I want to solve the 
> > issue mentioned in the next paragraph first.
> >
> > Regarding the cx25840 module; the card doesn't seem to initialise properly (no DVB output and 
> > DMA errors in log) unless I have this requested.  Once the card is up and running I can unload 
> > all drivers, recompile without the cx25840 and load and it will work again until I power off 
> > the computer and back on again (This has been tedious trying to work out which setting I had 
> > missed).  Is there some initialisation work being performed in the cx25840 module that I can 
> > incorporate into my patch to remove this dependency? Or should I leave it as is?
> >
> > Anyway nearly bedtime here.
> The patch looks good, with the exception of requesting the cx25840.
> I've always been able to run DVB without that driver being present, so something is odd with the 
> Leadtek card. I'm not aware of any relationship between the cx25840 driver and the DVB core.
> You're going to need to find the magic register write that the cx25840 is performing so we can 
> discuss here. I'd rather we figured that out cleanly, than just merged the patch and have the 
> problem linger on.
> Other than that, good patch.
> - Steve


I have found the lines (starting at line 1441) within cx25840-core.c that effects the DVB working or not working. These lines are:
	if (state->is_cx23885) {
		/* Drive GPIO2 direction and values */
		cx25840_write(client, 0x160, 0x1d);
		cx25840_write(client, 0x164, 0x00);

If I comment these lines out in the code, the DVB side doesn't work.  I have tried incorporating these register writes into various places in the cx23885 code (cx23885_gpio_setup(), cx23885_card_setup() and dvb_register()) as the following lines:
cx_write(0x160, 0x1d);
cx_write(0x164, 0x00);

But this does not allow the card to work.

I have also commented out/ removed all of the code in cx25840-core.c except for the read, write, probe(now only contains the above cx25840_writes) and remove functions and the various struct configs, to ensure that it is not something else contributing to the dependency.

Have a used cx_write correctly?

I have also noticed that the following card also uses the cx25840 without any analog support in the driver:

Perhaps the person who included support for this card has already gone down this track...

There are two possible directions that I would like to take from here:
1) Submit the patch as is with the cx25840 dependency
2) Work on why the registers writes aren't working. (However this is out of my depth of knowledge and will need some guidance or pass it onto someone else).



Be Yourself @ mail.com!
Choose From 200+ Email Addresses
Get a Free Account at www.mail.com

More information about the linux-dvb mailing list