ALSA: ice1724 - Allow card info based on model only
authorPavel Hofman <pavel.hofman@ivitera.com>
Tue, 10 Jan 2012 19:28:47 +0000 (20:28 +0100)
committerTakashi Iwai <tiwai@suse.de>
Wed, 11 Jan 2012 07:57:40 +0000 (08:57 +0100)
When two different cards share the same PCI vendor/subvendor
identification, allow card info based on model only.
Do not require subvendor ID.

Signed-off-by: Pavel Hofman <pavel.hofman@ivitera.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/ice1712/ice1724.c

index e797823ddc3a253ddfbf4f8bf0a7abbf5838e583..352f3fffa6454bae9e2618ea939f7474e4ad885e 100644 (file)
@@ -2282,7 +2282,7 @@ static int __devinit snd_vt1724_read_eeprom(struct snd_ice1712 *ice,
                }
        }
        for (tbl = card_tables; *tbl; tbl++) {
-               for (c = *tbl; c->subvendor; c++) {
+               for (c = *tbl; c->name; c++) {
                        if (modelname && c->model &&
                            !strcmp(modelname, c->model)) {
                                printk(KERN_INFO "ice1724: Using board model %s\n",
@@ -2591,8 +2591,10 @@ static int __devinit snd_vt1724_probe(struct pci_dev *pci,
        ice->ext_clock_count = 0;
 
        for (tbl = card_tables; *tbl; tbl++) {
-               for (c = *tbl; c->subvendor; c++) {
-                       if (c->subvendor == ice->eeprom.subvendor) {
+               for (c = *tbl; c->name; c++) {
+                       if ((model[dev] && c->model &&
+                            !strcmp(model[dev], c->model)) ||
+                           (c->subvendor == ice->eeprom.subvendor)) {
                                strcpy(card->shortname, c->name);
                                if (c->driver) /* specific driver? */
                                        strcpy(card->driver, c->driver);