2006-01-12 22:05:50

by Jon Mason

[permalink] [raw]
Subject: [PATCH] Prevent ALSA trident driver from grabbing pcnet32 hardware

Some pcnet32 hardware erroneously has the Vendor ID for Trident. The
pcnet32 driver looks for the PCI ethernet class before grabbing the
hardware, but the current trident driver does not check against the
PCI audio class. This allows the trident driver to claim the pcnet32
hardware. This patch prevents that.

Per Jiri Slaby's request, I changed the trident driver to use
PCI_DEVICE macro and PCI ID #defines.

This patch is untested on Trident 4DWAVE_DX hardware, but has been
tested on pcnet32 hardware.

Thanks,
Jon

Signed-off-by: Jon Mason <[email protected]>


diff -r 4a7597b41d25 sound/pci/trident/trident.c
--- a/sound/pci/trident/trident.c Wed Jan 11 19:14:08 2006
+++ b/sound/pci/trident/trident.c Thu Jan 12 15:52:34 2006
@@ -64,9 +64,11 @@
MODULE_PARM_DESC(wavetable_size, "Maximum memory size in kB for wavetable synth.");

static struct pci_device_id snd_trident_ids[] = {
- { 0x1023, 0x2000, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, }, /* Trident 4DWave DX PCI Audio */
- { 0x1023, 0x2001, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, }, /* Trident 4DWave NX PCI Audio */
- { 0x1039, 0x7018, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, }, /* SiS SI7018 PCI Audio */
+ {PCI_DEVICE(PCI_VENDOR_ID_TRIDENT, PCI_DEVICE_ID_TRIDENT_4DWAVE_DX),
+ PCI_CLASS_MULTIMEDIA_AUDIO << 8, 0xffff00, 0},
+ {PCI_DEVICE(PCI_VENDOR_ID_TRIDENT, PCI_DEVICE_ID_TRIDENT_4DWAVE_NX),
+ 0, 0, 0},
+ {PCI_DEVICE(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_7018), 0, 0, 0},
{ 0, }
};


2006-01-13 13:15:31

by Takashi Iwai

[permalink] [raw]
Subject: Re: [PATCH] Prevent ALSA trident driver from grabbing pcnet32 hardware

At Thu, 12 Jan 2006 16:05:30 -0600,
Jon Mason wrote:
>
> Some pcnet32 hardware erroneously has the Vendor ID for Trident. The
> pcnet32 driver looks for the PCI ethernet class before grabbing the
> hardware, but the current trident driver does not check against the
> PCI audio class. This allows the trident driver to claim the pcnet32
> hardware. This patch prevents that.
>
> Per Jiri Slaby's request, I changed the trident driver to use
> PCI_DEVICE macro and PCI ID #defines.
>
> This patch is untested on Trident 4DWAVE_DX hardware, but has been
> tested on pcnet32 hardware.
>
> Thanks,
> Jon
>
> Signed-off-by: Jon Mason <[email protected]>

Applied to ALSA tree. Thanks.


Takashi