summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClemens Ladisch <clemens@ladisch.de>2009-09-02 18:25:39 +0200
committerGreg Kroah-Hartman <gregkh@suse.de>2009-09-15 10:45:29 -0700
commitec20282569b8c528265974c8aef921ce24e14e25 (patch)
tree6dbe2c47d5d26dbe5c21805d41ddb8671cf0abde
parent65a11d230e61e2d760ee114781235d25725fd9d9 (diff)
sound: oxygen: handle cards with missing EEPROM
commit 92653453c3015c083b9fe0ad48261c6b2267d482 upstream. The card model detection code introduced in 2.6.30 that tries to work around partially broken EEPROM contents by reading the EEPROM directly does not handle cards where the EEPROM has been omitted. In this case, we have to use the default ID to allow the driver to load. Signed-off-by: Clemens Ladisch <clemens@ladisch.de> Reported-and-tested-by: Ozan Çağlayan <ozan@pardus.org.tr> Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r--sound/pci/oxygen/oxygen_lib.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/sound/pci/oxygen/oxygen_lib.c b/sound/pci/oxygen/oxygen_lib.c
index 312251d39696..9a8936e20744 100644
--- a/sound/pci/oxygen/oxygen_lib.c
+++ b/sound/pci/oxygen/oxygen_lib.c
@@ -260,6 +260,9 @@ oxygen_search_pci_id(struct oxygen *chip, const struct pci_device_id ids[])
* chip didn't if the first EEPROM word was overwritten.
*/
subdevice = oxygen_read_eeprom(chip, 2);
+ /* use default ID if EEPROM is missing */
+ if (subdevice == 0xffff)
+ subdevice = 0x8788;
/*
* We use only the subsystem device ID for searching because it is
* unique even without the subsystem vendor ID, which may have been