diff options
Diffstat (limited to 'sound/pci/ice1712/ice1712.c')
-rw-r--r-- | sound/pci/ice1712/ice1712.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/sound/pci/ice1712/ice1712.c b/sound/pci/ice1712/ice1712.c index 5be2e120a14e..f42b5b1c1d24 100644 --- a/sound/pci/ice1712/ice1712.c +++ b/sound/pci/ice1712/ice1712.c | |||
@@ -2686,6 +2686,7 @@ static int __devinit snd_ice1712_probe(struct pci_dev *pci, | |||
2686 | for (tbl = card_tables; *tbl; tbl++) { | 2686 | for (tbl = card_tables; *tbl; tbl++) { |
2687 | for (c = *tbl; c->subvendor; c++) { | 2687 | for (c = *tbl; c->subvendor; c++) { |
2688 | if (c->subvendor == ice->eeprom.subvendor) { | 2688 | if (c->subvendor == ice->eeprom.subvendor) { |
2689 | ice->card_info = c; | ||
2689 | strcpy(card->shortname, c->name); | 2690 | strcpy(card->shortname, c->name); |
2690 | if (c->driver) /* specific driver? */ | 2691 | if (c->driver) /* specific driver? */ |
2691 | strcpy(card->driver, c->driver); | 2692 | strcpy(card->driver, c->driver); |
@@ -2799,7 +2800,12 @@ static int __devinit snd_ice1712_probe(struct pci_dev *pci, | |||
2799 | 2800 | ||
2800 | static void __devexit snd_ice1712_remove(struct pci_dev *pci) | 2801 | static void __devexit snd_ice1712_remove(struct pci_dev *pci) |
2801 | { | 2802 | { |
2802 | snd_card_free(pci_get_drvdata(pci)); | 2803 | struct snd_card *card = pci_get_drvdata(pci); |
2804 | struct snd_ice1712 *ice = card->private_data; | ||
2805 | |||
2806 | if (ice->card_info && ice->card_info->chip_exit) | ||
2807 | ice->card_info->chip_exit(ice); | ||
2808 | snd_card_free(card); | ||
2803 | pci_set_drvdata(pci, NULL); | 2809 | pci_set_drvdata(pci, NULL); |
2804 | } | 2810 | } |
2805 | 2811 | ||