lkml.org 
[lkml]   [2006]   [May]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectStradis driver conflicts with all other SAA7146 drivers
From
Date
Hi,

[Nathan Laredo is the maintainer of the stradis driver but Jiri Slaby
submitted the PCI probing change that went into 2.6.16 so I'm Cc-ing
him too. I'm not a member of the video4linux mailing list so please
Cc me on any responses.]

The stradis driver in the 2.6.16 kernel only looks at the SAA7146
vendor and product ID and binds to any SAA7146 based device even if it
is not a stradis card. This stops all other SAA7146 drivers from
working, for example my WinTV Nova-T card using the budget-ci driver
doesn't work any longer. A lot of other people have also been bitten
by this.

So could you please modify your driver so that it only binds to real
stradis cards? If stradis cards have a subvendor and subdevice ID you
could just modify the pci_device_id table to look something like this:

static struct pci_device_id stradis_pci_tbl[] = {
{
.vendor = PCI_VENDOR_ID_PHILIPS,
.device = PCI_DEVICE_ID_PHILIPS_SAA7146,
.subvendor = 0xdead,
.subdevice = 0xbeef,
},
{ 0 }
};

From the code it looks as if some boards don't have a good subsystem
vendor and device ID:

if (!pdev->subsystem_vendor)
dev_info(&pdev->dev, "%d: rev1 decoder\n", saa_num);
else
dev_info(&pdev->dev, "%d: SDM2xx found\n", saa_num);

Are those rev1 boards out in the real world or are they just
prototypes? If they are prototypes, can you add the subvendor ID
anway and add a module parameter so that your driver only binds to
unspecified vendor IDs if you use that module parameter? Something
like this:

static int bind_to_anything = 0;
module_param(bind_to_anything, int, 0);

int __init stradis_init(void)
{
...
if (bind_to_anything) {
stradis_pci_tbl[0].subvendor = PCI_ANY_ID;
stradis_pci_tbl[0].subdevice = PCI_ANY_ID;
}
...
pci_register_driver(&stradis_driver);
...
}

For anyone submitting a new SAA7146 driver to the kernel in the
future, please be aware that your card isn't the only one that uses
that chip, so always add a subvendor/subdevice to your drivers.

/Christer

--
"Just how much can I get away with and still go to heaven?"

Freelance consultant specializing in device driver programming for Linux
Christer Weinigel <christer@weinigel.se> http://www.weinigel.se
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2006-05-28 14:38    [from the cache]
©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site