sound: oxygen: handle cards with broken EEPROM
authorClemens Ladisch <clemens@ladisch.de>
Thu, 19 Feb 2009 07:42:44 +0000 (08:42 +0100)
committerTakashi Iwai <tiwai@suse.de>
Thu, 19 Feb 2009 09:22:25 +0000 (10:22 +0100)
commit30459d7b1843cbdea56ca120c8cac10dc5613e90
tree47341d43931193917c28dab16eaf7e1a12b2b6d6
parenta69bb3c3fe0881d986ec78e253cb8a6bb9c28230
sound: oxygen: handle cards with broken EEPROM

Under as yet unknown circumstances, the first word of the sound card's
EEPROM gets overwritten.  When this has happened, we cannot rely on the
subsystem IDs that the kernel reads from the PCI configuration
registers.  Instead, we read the IDs directly from the EEPROM and do the
ID matching manually.

Because the model-specific driver cannot determine the model before
calling oxygen_pci_probe(), that function now gets a get_model()
callback as parameter.  The customizing of the model structure, which
was formerly done by the probe() callback, also has moved into
get_model().

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/oxygen/hifier.c
sound/pci/oxygen/oxygen.c
sound/pci/oxygen/oxygen.h
sound/pci/oxygen/oxygen_io.c
sound/pci/oxygen/oxygen_lib.c
sound/pci/oxygen/virtuoso.c