sound: oxygen: do not try to restore nonexistent EEPROM
authorClemens Ladisch <clemens@ladisch.de>
Mon, 28 Sep 2009 09:05:18 +0000 (11:05 +0200)
committerTakashi Iwai <tiwai@suse.de>
Mon, 28 Sep 2009 09:53:21 +0000 (11:53 +0200)
On cards where the EEPROM was deliberately omitted, we do not need to
try to restore the EEPROM's contents.

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

index 9a8936e..c9f2714 100644 (file)
@@ -278,7 +278,11 @@ oxygen_search_pci_id(struct oxygen *chip, const struct pci_device_id ids[])
 static void oxygen_restore_eeprom(struct oxygen *chip,
                                  const struct pci_device_id *id)
 {
-       if (oxygen_read_eeprom(chip, 0) != OXYGEN_EEPROM_ID) {
+       u16 eeprom_id;
+
+       eeprom_id = oxygen_read_eeprom(chip, 0);
+       if (eeprom_id != OXYGEN_EEPROM_ID &&
+           (eeprom_id != 0xffff || id->subdevice != 0x8788)) {
                /*
                 * This function gets called only when a known card model has
                 * been detected, i.e., we know there is a valid subsystem