diff options
| author | Clemens Ladisch <clemens@ladisch.de> | 2005-10-04 02:46:51 -0400 |
|---|---|---|
| committer | Jaroslav Kysela <perex@suse.cz> | 2005-11-04 07:17:16 -0500 |
| commit | b7fe46220487f684abc858865cff817389af5c76 (patch) | |
| tree | d1eabbbdd0f686c87996133fd22ce2327da638c1 | |
| parent | 4b0940f8117b6cdf7e7c27bdecc29931f18c81ed (diff) | |
[ALSA] highlanderize motherboard AC97/HDA drivers
Remove the code for supporting eight cards from the integrated
controller drivers because There Can Be Only One controller of
each type per mainboard.
Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
| -rw-r--r-- | Documentation/sound/alsa/ALSA-Configuration.txt | 14 | ||||
| -rw-r--r-- | sound/pci/atiixp.c | 42 | ||||
| -rw-r--r-- | sound/pci/atiixp_modem.c | 28 | ||||
| -rw-r--r-- | sound/pci/hda/hda_intel.c | 34 | ||||
| -rw-r--r-- | sound/pci/intel8x0.c | 58 | ||||
| -rw-r--r-- | sound/pci/intel8x0m.c | 28 | ||||
| -rw-r--r-- | sound/pci/via82xx.c | 103 | ||||
| -rw-r--r-- | sound/pci/via82xx_modem.c | 29 |
8 files changed, 126 insertions, 210 deletions
diff --git a/Documentation/sound/alsa/ALSA-Configuration.txt b/Documentation/sound/alsa/ALSA-Configuration.txt index 09340cb4e18d..46a125003b0a 100644 --- a/Documentation/sound/alsa/ALSA-Configuration.txt +++ b/Documentation/sound/alsa/ALSA-Configuration.txt | |||
| @@ -206,7 +206,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed. | |||
| 206 | See "AC97 Quirk Option" section below. | 206 | See "AC97 Quirk Option" section below. |
| 207 | spdif_aclink - S/PDIF transfer over AC-link (default = 1) | 207 | spdif_aclink - S/PDIF transfer over AC-link (default = 1) |
| 208 | 208 | ||
| 209 | This module supports up to 8 cards and autoprobe. | 209 | This module supports one card and autoprobe. |
| 210 | 210 | ||
| 211 | ATI IXP has two different methods to control SPDIF output. One is | 211 | ATI IXP has two different methods to control SPDIF output. One is |
| 212 | over AC-link and another is over the "direct" SPDIF output. The | 212 | over AC-link and another is over the "direct" SPDIF output. The |
| @@ -218,7 +218,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed. | |||
| 218 | 218 | ||
| 219 | Module for ATI IXP 150/200/250 AC97 modem controllers. | 219 | Module for ATI IXP 150/200/250 AC97 modem controllers. |
| 220 | 220 | ||
| 221 | Module supports up to 8 cards. | 221 | This module supports one card and autoprobe. |
| 222 | 222 | ||
| 223 | Note: The default index value of this module is -2, i.e. the first | 223 | Note: The default index value of this module is -2, i.e. the first |
| 224 | slot is excluded. | 224 | slot is excluded. |
| @@ -637,7 +637,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed. | |||
| 637 | model - force the model name | 637 | model - force the model name |
| 638 | position_fix - Fix DMA pointer (0 = auto, 1 = none, 2 = POSBUF, 3 = FIFO size) | 638 | position_fix - Fix DMA pointer (0 = auto, 1 = none, 2 = POSBUF, 3 = FIFO size) |
| 639 | 639 | ||
| 640 | Module supports up to 8 cards. | 640 | This module supports one card and autoprobe. |
| 641 | 641 | ||
| 642 | Each codec may have a model table for different configurations. | 642 | Each codec may have a model table for different configurations. |
| 643 | If your machine isn't listed there, the default (usually minimal) | 643 | If your machine isn't listed there, the default (usually minimal) |
| @@ -815,7 +815,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed. | |||
| 815 | semaphores (e.g. on some ASUS laptops) | 815 | semaphores (e.g. on some ASUS laptops) |
| 816 | (default off) | 816 | (default off) |
| 817 | 817 | ||
| 818 | Module supports autoprobe and multiple bus-master chips (max 8). | 818 | This module supports one chip and autoprobe. |
| 819 | 819 | ||
| 820 | Note: the latest driver supports auto-detection of chip clock. | 820 | Note: the latest driver supports auto-detection of chip clock. |
| 821 | if you still encounter too fast playback, specify the clock | 821 | if you still encounter too fast playback, specify the clock |
| @@ -834,7 +834,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed. | |||
| 834 | 834 | ||
| 835 | ac97_clock - AC'97 codec clock base (0 = auto-detect) | 835 | ac97_clock - AC'97 codec clock base (0 = auto-detect) |
| 836 | 836 | ||
| 837 | This module supports up to 8 cards and autoprobe. | 837 | This module supports one card and autoprobe. |
| 838 | 838 | ||
| 839 | Note: The default index value of this module is -2, i.e. the first | 839 | Note: The default index value of this module is -2, i.e. the first |
| 840 | slot is excluded. | 840 | slot is excluded. |
| @@ -1314,7 +1314,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed. | |||
| 1314 | ac97_quirk - AC'97 workaround for strange hardware | 1314 | ac97_quirk - AC'97 workaround for strange hardware |
| 1315 | See "AC97 Quirk Option" section below. | 1315 | See "AC97 Quirk Option" section below. |
| 1316 | 1316 | ||
| 1317 | Module supports autoprobe and multiple bus-master chips (max 8). | 1317 | This module supports one chip and autoprobe. |
| 1318 | 1318 | ||
| 1319 | Note: on some SMP motherboards like MSI 694D the interrupts might | 1319 | Note: on some SMP motherboards like MSI 694D the interrupts might |
| 1320 | not be generated properly. In such a case, please try to | 1320 | not be generated properly. In such a case, please try to |
| @@ -1356,7 +1356,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed. | |||
| 1356 | 1356 | ||
| 1357 | ac97_clock - AC'97 codec clock base (default 48000Hz) | 1357 | ac97_clock - AC'97 codec clock base (default 48000Hz) |
| 1358 | 1358 | ||
| 1359 | Module supports up to 8 cards. | 1359 | This module supports one card and autoprobe. |
| 1360 | 1360 | ||
| 1361 | Note: The default index value of this module is -2, i.e. the first | 1361 | Note: The default index value of this module is -2, i.e. the first |
| 1362 | slot is excluded. | 1362 | slot is excluded. |
diff --git a/sound/pci/atiixp.c b/sound/pci/atiixp.c index cb1741102bbc..332a71de9673 100644 --- a/sound/pci/atiixp.c +++ b/sound/pci/atiixp.c | |||
| @@ -39,24 +39,21 @@ MODULE_DESCRIPTION("ATI IXP AC97 controller"); | |||
| 39 | MODULE_LICENSE("GPL"); | 39 | MODULE_LICENSE("GPL"); |
| 40 | MODULE_SUPPORTED_DEVICE("{{ATI,IXP150/200/250/300/400}}"); | 40 | MODULE_SUPPORTED_DEVICE("{{ATI,IXP150/200/250/300/400}}"); |
| 41 | 41 | ||
| 42 | static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; /* Index 0-MAX */ | 42 | static int index = SNDRV_DEFAULT_IDX1; /* Index 0-MAX */ |
| 43 | static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR; /* ID for this card */ | 43 | static char *id = SNDRV_DEFAULT_STR1; /* ID for this card */ |
| 44 | static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP; /* Enable this card */ | 44 | static int ac97_clock = 48000; |
| 45 | static int ac97_clock[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 48000}; | 45 | static char *ac97_quirk; |
| 46 | static char *ac97_quirk[SNDRV_CARDS]; | 46 | static int spdif_aclink = 1; |
| 47 | static int spdif_aclink[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 1}; | 47 | |
| 48 | 48 | module_param(index, int, 0444); | |
| 49 | module_param_array(index, int, NULL, 0444); | ||
| 50 | MODULE_PARM_DESC(index, "Index value for ATI IXP controller."); | 49 | MODULE_PARM_DESC(index, "Index value for ATI IXP controller."); |
| 51 | module_param_array(id, charp, NULL, 0444); | 50 | module_param(id, charp, 0444); |
| 52 | MODULE_PARM_DESC(id, "ID string for ATI IXP controller."); | 51 | MODULE_PARM_DESC(id, "ID string for ATI IXP controller."); |
| 53 | module_param_array(enable, bool, NULL, 0444); | 52 | module_param(ac97_clock, int, 0444); |
| 54 | MODULE_PARM_DESC(enable, "Enable audio part of ATI IXP controller."); | ||
| 55 | module_param_array(ac97_clock, int, NULL, 0444); | ||
| 56 | MODULE_PARM_DESC(ac97_clock, "AC'97 codec clock (default 48000Hz)."); | 53 | MODULE_PARM_DESC(ac97_clock, "AC'97 codec clock (default 48000Hz)."); |
| 57 | module_param_array(ac97_quirk, charp, NULL, 0444); | 54 | module_param(ac97_quirk, charp, 0444); |
| 58 | MODULE_PARM_DESC(ac97_quirk, "AC'97 workaround for strange hardware."); | 55 | MODULE_PARM_DESC(ac97_quirk, "AC'97 workaround for strange hardware."); |
| 59 | module_param_array(spdif_aclink, bool, NULL, 0444); | 56 | module_param(spdif_aclink, bool, 0444); |
| 60 | MODULE_PARM_DESC(spdif_aclink, "S/PDIF over AC-link."); | 57 | MODULE_PARM_DESC(spdif_aclink, "S/PDIF over AC-link."); |
| 61 | 58 | ||
| 62 | 59 | ||
| @@ -1578,26 +1575,18 @@ static int __devinit snd_atiixp_create(snd_card_t *card, | |||
| 1578 | static int __devinit snd_atiixp_probe(struct pci_dev *pci, | 1575 | static int __devinit snd_atiixp_probe(struct pci_dev *pci, |
| 1579 | const struct pci_device_id *pci_id) | 1576 | const struct pci_device_id *pci_id) |
| 1580 | { | 1577 | { |
| 1581 | static int dev; | ||
| 1582 | snd_card_t *card; | 1578 | snd_card_t *card; |
| 1583 | atiixp_t *chip; | 1579 | atiixp_t *chip; |
| 1584 | unsigned char revision; | 1580 | unsigned char revision; |
| 1585 | int err; | 1581 | int err; |
| 1586 | 1582 | ||
| 1587 | if (dev >= SNDRV_CARDS) | 1583 | card = snd_card_new(index, id, THIS_MODULE, 0); |
| 1588 | return -ENODEV; | ||
| 1589 | if (!enable[dev]) { | ||
| 1590 | dev++; | ||
| 1591 | return -ENOENT; | ||
| 1592 | } | ||
| 1593 | |||
| 1594 | card = snd_card_new(index[dev], id[dev], THIS_MODULE, 0); | ||
| 1595 | if (card == NULL) | 1584 | if (card == NULL) |
| 1596 | return -ENOMEM; | 1585 | return -ENOMEM; |
| 1597 | 1586 | ||
| 1598 | pci_read_config_byte(pci, PCI_REVISION_ID, &revision); | 1587 | pci_read_config_byte(pci, PCI_REVISION_ID, &revision); |
| 1599 | 1588 | ||
| 1600 | strcpy(card->driver, spdif_aclink[dev] ? "ATIIXP" : "ATIIXP-SPDMA"); | 1589 | strcpy(card->driver, spdif_aclink ? "ATIIXP" : "ATIIXP-SPDMA"); |
| 1601 | strcpy(card->shortname, "ATI IXP"); | 1590 | strcpy(card->shortname, "ATI IXP"); |
| 1602 | if ((err = snd_atiixp_create(card, pci, &chip)) < 0) | 1591 | if ((err = snd_atiixp_create(card, pci, &chip)) < 0) |
| 1603 | goto __error; | 1592 | goto __error; |
| @@ -1605,9 +1594,9 @@ static int __devinit snd_atiixp_probe(struct pci_dev *pci, | |||
| 1605 | if ((err = snd_atiixp_aclink_reset(chip)) < 0) | 1594 | if ((err = snd_atiixp_aclink_reset(chip)) < 0) |
| 1606 | goto __error; | 1595 | goto __error; |
| 1607 | 1596 | ||
| 1608 | chip->spdif_over_aclink = spdif_aclink[dev]; | 1597 | chip->spdif_over_aclink = spdif_aclink; |
| 1609 | 1598 | ||
| 1610 | if ((err = snd_atiixp_mixer_new(chip, ac97_clock[dev], ac97_quirk[dev])) < 0) | 1599 | if ((err = snd_atiixp_mixer_new(chip, ac97_clock, ac97_quirk)) < 0) |
| 1611 | goto __error; | 1600 | goto __error; |
| 1612 | 1601 | ||
| 1613 | if ((err = snd_atiixp_pcm_new(chip)) < 0) | 1602 | if ((err = snd_atiixp_pcm_new(chip)) < 0) |
| @@ -1628,7 +1617,6 @@ static int __devinit snd_atiixp_probe(struct pci_dev *pci, | |||
| 1628 | goto __error; | 1617 | goto __error; |
| 1629 | 1618 | ||
| 1630 | pci_set_drvdata(pci, card); | 1619 | pci_set_drvdata(pci, card); |
| 1631 | dev++; | ||
| 1632 | return 0; | 1620 | return 0; |
| 1633 | 1621 | ||
| 1634 | __error: | 1622 | __error: |
diff --git a/sound/pci/atiixp_modem.c b/sound/pci/atiixp_modem.c index a88a6f372050..a4778d373cdf 100644 --- a/sound/pci/atiixp_modem.c +++ b/sound/pci/atiixp_modem.c | |||
| @@ -39,18 +39,15 @@ MODULE_DESCRIPTION("ATI IXP MC97 controller"); | |||
| 39 | MODULE_LICENSE("GPL"); | 39 | MODULE_LICENSE("GPL"); |
| 40 | MODULE_SUPPORTED_DEVICE("{{ATI,IXP150/200/250}}"); | 40 | MODULE_SUPPORTED_DEVICE("{{ATI,IXP150/200/250}}"); |
| 41 | 41 | ||
| 42 | static int index[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = -2}; /* Exclude the first card */ | 42 | static int index = -2; /* Exclude the first card */ |
| 43 | static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR; /* ID for this card */ | 43 | static char *id = SNDRV_DEFAULT_STR1; /* ID for this card */ |
| 44 | static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP; /* Enable this card */ | 44 | static int ac97_clock = 48000; |
| 45 | static int ac97_clock[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 48000}; | ||
| 46 | 45 | ||
| 47 | module_param_array(index, int, NULL, 0444); | 46 | module_param(index, int, 0444); |
| 48 | MODULE_PARM_DESC(index, "Index value for ATI IXP controller."); | 47 | MODULE_PARM_DESC(index, "Index value for ATI IXP controller."); |
| 49 | module_param_array(id, charp, NULL, 0444); | 48 | module_param(id, charp, 0444); |
| 50 | MODULE_PARM_DESC(id, "ID string for ATI IXP controller."); | 49 | MODULE_PARM_DESC(id, "ID string for ATI IXP controller."); |
| 51 | module_param_array(enable, bool, NULL, 0444); | 50 | module_param(ac97_clock, int, 0444); |
| 52 | MODULE_PARM_DESC(enable, "Enable audio part of ATI IXP controller."); | ||
| 53 | module_param_array(ac97_clock, int, NULL, 0444); | ||
| 54 | MODULE_PARM_DESC(ac97_clock, "AC'97 codec clock (default 48000Hz)."); | 51 | MODULE_PARM_DESC(ac97_clock, "AC'97 codec clock (default 48000Hz)."); |
| 55 | 52 | ||
| 56 | 53 | ||
| @@ -1256,20 +1253,12 @@ static int __devinit snd_atiixp_create(snd_card_t *card, | |||
| 1256 | static int __devinit snd_atiixp_probe(struct pci_dev *pci, | 1253 | static int __devinit snd_atiixp_probe(struct pci_dev *pci, |
| 1257 | const struct pci_device_id *pci_id) | 1254 | const struct pci_device_id *pci_id) |
| 1258 | { | 1255 | { |
| 1259 | static int dev; | ||
| 1260 | snd_card_t *card; | 1256 | snd_card_t *card; |
| 1261 | atiixp_t *chip; | 1257 | atiixp_t *chip; |
| 1262 | unsigned char revision; | 1258 | unsigned char revision; |
| 1263 | int err; | 1259 | int err; |
| 1264 | 1260 | ||
| 1265 | if (dev >= SNDRV_CARDS) | 1261 | card = snd_card_new(index, id, THIS_MODULE, 0); |
| 1266 | return -ENODEV; | ||
| 1267 | if (!enable[dev]) { | ||
| 1268 | dev++; | ||
| 1269 | return -ENOENT; | ||
| 1270 | } | ||
| 1271 | |||
| 1272 | card = snd_card_new(index[dev], id[dev], THIS_MODULE, 0); | ||
| 1273 | if (card == NULL) | 1262 | if (card == NULL) |
| 1274 | return -ENOMEM; | 1263 | return -ENOMEM; |
| 1275 | 1264 | ||
| @@ -1283,7 +1272,7 @@ static int __devinit snd_atiixp_probe(struct pci_dev *pci, | |||
| 1283 | if ((err = snd_atiixp_aclink_reset(chip)) < 0) | 1272 | if ((err = snd_atiixp_aclink_reset(chip)) < 0) |
| 1284 | goto __error; | 1273 | goto __error; |
| 1285 | 1274 | ||
| 1286 | if ((err = snd_atiixp_mixer_new(chip, ac97_clock[dev])) < 0) | 1275 | if ((err = snd_atiixp_mixer_new(chip, ac97_clock)) < 0) |
| 1287 | goto __error; | 1276 | goto __error; |
| 1288 | 1277 | ||
| 1289 | if ((err = snd_atiixp_pcm_new(chip)) < 0) | 1278 | if ((err = snd_atiixp_pcm_new(chip)) < 0) |
| @@ -1302,7 +1291,6 @@ static int __devinit snd_atiixp_probe(struct pci_dev *pci, | |||
| 1302 | goto __error; | 1291 | goto __error; |
| 1303 | 1292 | ||
| 1304 | pci_set_drvdata(pci, card); | 1293 | pci_set_drvdata(pci, card); |
| 1305 | dev++; | ||
| 1306 | return 0; | 1294 | return 0; |
| 1307 | 1295 | ||
| 1308 | __error: | 1296 | __error: |
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c index faf9dd00ba6c..d9e88dfe8171 100644 --- a/sound/pci/hda/hda_intel.c +++ b/sound/pci/hda/hda_intel.c | |||
| @@ -47,21 +47,18 @@ | |||
| 47 | #include "hda_codec.h" | 47 | #include "hda_codec.h" |
| 48 | 48 | ||
| 49 | 49 | ||
| 50 | static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; | 50 | static int index = SNDRV_DEFAULT_IDX1; |
| 51 | static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP; | 51 | static char *id = SNDRV_DEFAULT_STR1; |
| 52 | static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR; | 52 | static char *model; |
| 53 | static char *model[SNDRV_CARDS]; | 53 | static int position_fix; |
| 54 | static int position_fix[SNDRV_CARDS]; | ||
| 55 | 54 | ||
| 56 | module_param_array(index, int, NULL, 0444); | 55 | module_param(index, int, 0444); |
| 57 | MODULE_PARM_DESC(index, "Index value for Intel HD audio interface."); | 56 | MODULE_PARM_DESC(index, "Index value for Intel HD audio interface."); |
| 58 | module_param_array(id, charp, NULL, 0444); | 57 | module_param(id, charp, 0444); |
| 59 | MODULE_PARM_DESC(id, "ID string for Intel HD audio interface."); | 58 | MODULE_PARM_DESC(id, "ID string for Intel HD audio interface."); |
| 60 | module_param_array(enable, bool, NULL, 0444); | 59 | module_param(model, charp, 0444); |
| 61 | MODULE_PARM_DESC(enable, "Enable Intel HD audio interface."); | ||
| 62 | module_param_array(model, charp, NULL, 0444); | ||
| 63 | MODULE_PARM_DESC(model, "Use the given board model."); | 60 | MODULE_PARM_DESC(model, "Use the given board model."); |
| 64 | module_param_array(position_fix, int, NULL, 0444); | 61 | module_param(position_fix, int, 0444); |
| 65 | MODULE_PARM_DESC(position_fix, "Fix DMA pointer (0 = auto, 1 = none, 2 = POSBUF, 3 = FIFO size)."); | 62 | MODULE_PARM_DESC(position_fix, "Fix DMA pointer (0 = auto, 1 = none, 2 = POSBUF, 3 = FIFO size)."); |
| 66 | 63 | ||
| 67 | MODULE_LICENSE("GPL"); | 64 | MODULE_LICENSE("GPL"); |
| @@ -1544,32 +1541,24 @@ static int __devinit azx_create(snd_card_t *card, struct pci_dev *pci, | |||
| 1544 | 1541 | ||
| 1545 | static int __devinit azx_probe(struct pci_dev *pci, const struct pci_device_id *pci_id) | 1542 | static int __devinit azx_probe(struct pci_dev *pci, const struct pci_device_id *pci_id) |
| 1546 | { | 1543 | { |
| 1547 | static int dev; | ||
| 1548 | snd_card_t *card; | 1544 | snd_card_t *card; |
| 1549 | azx_t *chip; | 1545 | azx_t *chip; |
| 1550 | int err = 0; | 1546 | int err = 0; |
| 1551 | 1547 | ||
| 1552 | if (dev >= SNDRV_CARDS) | 1548 | card = snd_card_new(index, id, THIS_MODULE, 0); |
| 1553 | return -ENODEV; | ||
| 1554 | if (! enable[dev]) { | ||
| 1555 | dev++; | ||
| 1556 | return -ENOENT; | ||
| 1557 | } | ||
| 1558 | |||
| 1559 | card = snd_card_new(index[dev], id[dev], THIS_MODULE, 0); | ||
| 1560 | if (NULL == card) { | 1549 | if (NULL == card) { |
| 1561 | snd_printk(KERN_ERR SFX "Error creating card!\n"); | 1550 | snd_printk(KERN_ERR SFX "Error creating card!\n"); |
| 1562 | return -ENOMEM; | 1551 | return -ENOMEM; |
| 1563 | } | 1552 | } |
| 1564 | 1553 | ||
| 1565 | if ((err = azx_create(card, pci, position_fix[dev], pci_id->driver_data, | 1554 | if ((err = azx_create(card, pci, position_fix, pci_id->driver_data, |
| 1566 | &chip)) < 0) { | 1555 | &chip)) < 0) { |
| 1567 | snd_card_free(card); | 1556 | snd_card_free(card); |
| 1568 | return err; | 1557 | return err; |
| 1569 | } | 1558 | } |
| 1570 | 1559 | ||
| 1571 | /* create codec instances */ | 1560 | /* create codec instances */ |
| 1572 | if ((err = azx_codec_create(chip, model[dev])) < 0) { | 1561 | if ((err = azx_codec_create(chip, model)) < 0) { |
| 1573 | snd_card_free(card); | 1562 | snd_card_free(card); |
| 1574 | return err; | 1563 | return err; |
| 1575 | } | 1564 | } |
| @@ -1595,7 +1584,6 @@ static int __devinit azx_probe(struct pci_dev *pci, const struct pci_device_id * | |||
| 1595 | } | 1584 | } |
| 1596 | 1585 | ||
| 1597 | pci_set_drvdata(pci, card); | 1586 | pci_set_drvdata(pci, card); |
| 1598 | dev++; | ||
| 1599 | 1587 | ||
| 1600 | return err; | 1588 | return err; |
| 1601 | } | 1589 | } |
diff --git a/sound/pci/intel8x0.c b/sound/pci/intel8x0.c index 0d11cf7d569a..bd9563c8b11e 100644 --- a/sound/pci/intel8x0.c +++ b/sound/pci/intel8x0.c | |||
| @@ -64,34 +64,27 @@ MODULE_SUPPORTED_DEVICE("{{Intel,82801AA-ICH}," | |||
| 64 | "{AMD,AMD8111}," | 64 | "{AMD,AMD8111}," |
| 65 | "{ALI,M5455}}"); | 65 | "{ALI,M5455}}"); |
| 66 | 66 | ||
| 67 | static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; /* Index 0-MAX */ | 67 | static int index = SNDRV_DEFAULT_IDX1; /* Index 0-MAX */ |
| 68 | static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR; /* ID for this card */ | 68 | static char *id = SNDRV_DEFAULT_STR1; /* ID for this card */ |
| 69 | static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP; /* Enable this card */ | 69 | static int ac97_clock = 0; |
| 70 | static int ac97_clock[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 0}; | 70 | static char *ac97_quirk; |
| 71 | static char *ac97_quirk[SNDRV_CARDS]; | 71 | static int buggy_semaphore; |
| 72 | static int buggy_semaphore[SNDRV_CARDS]; | 72 | static int buggy_irq; |
| 73 | static int buggy_irq[SNDRV_CARDS]; | 73 | static int xbox; |
| 74 | static int xbox[SNDRV_CARDS]; | 74 | |
| 75 | 75 | module_param(index, int, 0444); | |
| 76 | #ifdef SUPPORT_MIDI | ||
| 77 | static int mpu_port[SNDRV_CARDS]; /* disabled */ | ||
| 78 | #endif | ||
| 79 | |||
| 80 | module_param_array(index, int, NULL, 0444); | ||
| 81 | MODULE_PARM_DESC(index, "Index value for Intel i8x0 soundcard."); | 76 | MODULE_PARM_DESC(index, "Index value for Intel i8x0 soundcard."); |
| 82 | module_param_array(id, charp, NULL, 0444); | 77 | module_param(id, charp, 0444); |
| 83 | MODULE_PARM_DESC(id, "ID string for Intel i8x0 soundcard."); | 78 | MODULE_PARM_DESC(id, "ID string for Intel i8x0 soundcard."); |
| 84 | module_param_array(enable, bool, NULL, 0444); | 79 | module_param(ac97_clock, int, 0444); |
| 85 | MODULE_PARM_DESC(enable, "Enable Intel i8x0 soundcard."); | ||
| 86 | module_param_array(ac97_clock, int, NULL, 0444); | ||
| 87 | MODULE_PARM_DESC(ac97_clock, "AC'97 codec clock (0 = auto-detect)."); | 80 | MODULE_PARM_DESC(ac97_clock, "AC'97 codec clock (0 = auto-detect)."); |
| 88 | module_param_array(ac97_quirk, charp, NULL, 0444); | 81 | module_param(ac97_quirk, charp, 0444); |
| 89 | MODULE_PARM_DESC(ac97_quirk, "AC'97 workaround for strange hardware."); | 82 | MODULE_PARM_DESC(ac97_quirk, "AC'97 workaround for strange hardware."); |
| 90 | module_param_array(buggy_semaphore, bool, NULL, 0444); | 83 | module_param(buggy_semaphore, bool, 0444); |
| 91 | MODULE_PARM_DESC(buggy_semaphore, "Enable workaround for hardwares with problematic codec semaphores."); | 84 | MODULE_PARM_DESC(buggy_semaphore, "Enable workaround for hardwares with problematic codec semaphores."); |
| 92 | module_param_array(buggy_irq, bool, NULL, 0444); | 85 | module_param(buggy_irq, bool, 0444); |
| 93 | MODULE_PARM_DESC(buggy_irq, "Enable workaround for buggy interrupts on some motherboards."); | 86 | MODULE_PARM_DESC(buggy_irq, "Enable workaround for buggy interrupts on some motherboards."); |
| 94 | module_param_array(xbox, bool, NULL, 0444); | 87 | module_param(xbox, bool, 0444); |
| 95 | MODULE_PARM_DESC(xbox, "Set to 1 for Xbox, if you have problems with the AC'97 codec detection."); | 88 | MODULE_PARM_DESC(xbox, "Set to 1 for Xbox, if you have problems with the AC'97 codec detection."); |
| 96 | 89 | ||
| 97 | /* | 90 | /* |
| @@ -2781,20 +2774,12 @@ static struct shortname_table { | |||
| 2781 | static int __devinit snd_intel8x0_probe(struct pci_dev *pci, | 2774 | static int __devinit snd_intel8x0_probe(struct pci_dev *pci, |
| 2782 | const struct pci_device_id *pci_id) | 2775 | const struct pci_device_id *pci_id) |
| 2783 | { | 2776 | { |
| 2784 | static int dev; | ||
| 2785 | snd_card_t *card; | 2777 | snd_card_t *card; |
| 2786 | intel8x0_t *chip; | 2778 | intel8x0_t *chip; |
| 2787 | int err; | 2779 | int err; |
| 2788 | struct shortname_table *name; | 2780 | struct shortname_table *name; |
| 2789 | 2781 | ||
| 2790 | if (dev >= SNDRV_CARDS) | 2782 | card = snd_card_new(index, id, THIS_MODULE, 0); |
| 2791 | return -ENODEV; | ||
| 2792 | if (!enable[dev]) { | ||
| 2793 | dev++; | ||
| 2794 | return -ENOENT; | ||
| 2795 | } | ||
| 2796 | |||
| 2797 | card = snd_card_new(index[dev], id[dev], THIS_MODULE, 0); | ||
| 2798 | if (card == NULL) | 2783 | if (card == NULL) |
| 2799 | return -ENOMEM; | 2784 | return -ENOMEM; |
| 2800 | 2785 | ||
| @@ -2819,16 +2804,16 @@ static int __devinit snd_intel8x0_probe(struct pci_dev *pci, | |||
| 2819 | } | 2804 | } |
| 2820 | 2805 | ||
| 2821 | if ((err = snd_intel8x0_create(card, pci, pci_id->driver_data, | 2806 | if ((err = snd_intel8x0_create(card, pci, pci_id->driver_data, |
| 2822 | buggy_semaphore[dev], &chip)) < 0) { | 2807 | buggy_semaphore, &chip)) < 0) { |
| 2823 | snd_card_free(card); | 2808 | snd_card_free(card); |
| 2824 | return err; | 2809 | return err; |
| 2825 | } | 2810 | } |
| 2826 | if (buggy_irq[dev]) | 2811 | if (buggy_irq) |
| 2827 | chip->buggy_irq = 1; | 2812 | chip->buggy_irq = 1; |
| 2828 | if (xbox[dev]) | 2813 | if (xbox) |
| 2829 | chip->xbox = 1; | 2814 | chip->xbox = 1; |
| 2830 | 2815 | ||
| 2831 | if ((err = snd_intel8x0_mixer(chip, ac97_clock[dev], ac97_quirk[dev])) < 0) { | 2816 | if ((err = snd_intel8x0_mixer(chip, ac97_clock, ac97_quirk)) < 0) { |
| 2832 | snd_card_free(card); | 2817 | snd_card_free(card); |
| 2833 | return err; | 2818 | return err; |
| 2834 | } | 2819 | } |
| @@ -2843,7 +2828,7 @@ static int __devinit snd_intel8x0_probe(struct pci_dev *pci, | |||
| 2843 | "%s with %s at %#lx, irq %i", card->shortname, | 2828 | "%s with %s at %#lx, irq %i", card->shortname, |
| 2844 | snd_ac97_get_short_name(chip->ac97[0]), chip->addr, chip->irq); | 2829 | snd_ac97_get_short_name(chip->ac97[0]), chip->addr, chip->irq); |
| 2845 | 2830 | ||
| 2846 | if (! ac97_clock[dev]) | 2831 | if (! ac97_clock) |
| 2847 | intel8x0_measure_ac97_clock(chip); | 2832 | intel8x0_measure_ac97_clock(chip); |
| 2848 | 2833 | ||
| 2849 | if ((err = snd_card_register(card)) < 0) { | 2834 | if ((err = snd_card_register(card)) < 0) { |
| @@ -2851,7 +2836,6 @@ static int __devinit snd_intel8x0_probe(struct pci_dev *pci, | |||
| 2851 | return err; | 2836 | return err; |
| 2852 | } | 2837 | } |
| 2853 | pci_set_drvdata(pci, card); | 2838 | pci_set_drvdata(pci, card); |
| 2854 | dev++; | ||
| 2855 | return 0; | 2839 | return 0; |
| 2856 | } | 2840 | } |
| 2857 | 2841 | ||
diff --git a/sound/pci/intel8x0m.c b/sound/pci/intel8x0m.c index 15364d27804d..be604bb8445d 100644 --- a/sound/pci/intel8x0m.c +++ b/sound/pci/intel8x0m.c | |||
| @@ -56,18 +56,15 @@ MODULE_SUPPORTED_DEVICE("{{Intel,82801AA-ICH}," | |||
| 56 | "{NVidia,NForce3 Modem}," | 56 | "{NVidia,NForce3 Modem}," |
| 57 | "{AMD,AMD768}}"); | 57 | "{AMD,AMD768}}"); |
| 58 | 58 | ||
| 59 | static int index[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = -2}; /* Exclude the first card */ | 59 | static int index = -2; /* Exclude the first card */ |
| 60 | static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR; /* ID for this card */ | 60 | static char *id = SNDRV_DEFAULT_STR1; /* ID for this card */ |
| 61 | static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP; /* Enable this card */ | 61 | static int ac97_clock = 0; |
| 62 | static int ac97_clock[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 0}; | ||
| 63 | 62 | ||
| 64 | module_param_array(index, int, NULL, 0444); | 63 | module_param(index, int, 0444); |
| 65 | MODULE_PARM_DESC(index, "Index value for Intel i8x0 modemcard."); | 64 | MODULE_PARM_DESC(index, "Index value for Intel i8x0 modemcard."); |
| 66 | module_param_array(id, charp, NULL, 0444); | 65 | module_param(id, charp, 0444); |
| 67 | MODULE_PARM_DESC(id, "ID string for Intel i8x0 modemcard."); | 66 | MODULE_PARM_DESC(id, "ID string for Intel i8x0 modemcard."); |
| 68 | module_param_array(enable, bool, NULL, 0444); | 67 | module_param(ac97_clock, int, 0444); |
| 69 | MODULE_PARM_DESC(enable, "Enable Intel i8x0 modemcard."); | ||
| 70 | module_param_array(ac97_clock, int, NULL, 0444); | ||
| 71 | MODULE_PARM_DESC(ac97_clock, "AC'97 codec clock (0 = auto-detect)."); | 68 | MODULE_PARM_DESC(ac97_clock, "AC'97 codec clock (0 = auto-detect)."); |
| 72 | 69 | ||
| 73 | /* | 70 | /* |
| @@ -1263,20 +1260,12 @@ static struct shortname_table { | |||
| 1263 | static int __devinit snd_intel8x0m_probe(struct pci_dev *pci, | 1260 | static int __devinit snd_intel8x0m_probe(struct pci_dev *pci, |
| 1264 | const struct pci_device_id *pci_id) | 1261 | const struct pci_device_id *pci_id) |
| 1265 | { | 1262 | { |
| 1266 | static int dev; | ||
| 1267 | snd_card_t *card; | 1263 | snd_card_t *card; |
| 1268 | intel8x0_t *chip; | 1264 | intel8x0_t *chip; |
| 1269 | int err; | 1265 | int err; |
| 1270 | struct shortname_table *name; | 1266 | struct shortname_table *name; |
| 1271 | 1267 | ||
| 1272 | if (dev >= SNDRV_CARDS) | 1268 | card = snd_card_new(index, id, THIS_MODULE, 0); |
| 1273 | return -ENODEV; | ||
| 1274 | if (!enable[dev]) { | ||
| 1275 | dev++; | ||
| 1276 | return -ENOENT; | ||
| 1277 | } | ||
| 1278 | |||
| 1279 | card = snd_card_new(index[dev], id[dev], THIS_MODULE, 0); | ||
| 1280 | if (card == NULL) | 1269 | if (card == NULL) |
| 1281 | return -ENOMEM; | 1270 | return -ENOMEM; |
| 1282 | 1271 | ||
| @@ -1295,7 +1284,7 @@ static int __devinit snd_intel8x0m_probe(struct pci_dev *pci, | |||
| 1295 | return err; | 1284 | return err; |
| 1296 | } | 1285 | } |
| 1297 | 1286 | ||
| 1298 | if ((err = snd_intel8x0_mixer(chip, ac97_clock[dev])) < 0) { | 1287 | if ((err = snd_intel8x0_mixer(chip, ac97_clock)) < 0) { |
| 1299 | snd_card_free(card); | 1288 | snd_card_free(card); |
| 1300 | return err; | 1289 | return err; |
| 1301 | } | 1290 | } |
| @@ -1314,7 +1303,6 @@ static int __devinit snd_intel8x0m_probe(struct pci_dev *pci, | |||
| 1314 | return err; | 1303 | return err; |
| 1315 | } | 1304 | } |
| 1316 | pci_set_drvdata(pci, card); | 1305 | pci_set_drvdata(pci, card); |
| 1317 | dev++; | ||
| 1318 | return 0; | 1306 | return 0; |
| 1319 | } | 1307 | } |
| 1320 | 1308 | ||
diff --git a/sound/pci/via82xx.c b/sound/pci/via82xx.c index ecc4836ba8de..4545208ee460 100644 --- a/sound/pci/via82xx.c +++ b/sound/pci/via82xx.c | |||
| @@ -73,34 +73,31 @@ MODULE_SUPPORTED_DEVICE("{{VIA,VT82C686A/B/C,pci},{VIA,VT8233A/C,8235}}"); | |||
| 73 | #define SUPPORT_JOYSTICK 1 | 73 | #define SUPPORT_JOYSTICK 1 |
| 74 | #endif | 74 | #endif |
| 75 | 75 | ||
| 76 | static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; /* Index 0-MAX */ | 76 | static int index = SNDRV_DEFAULT_IDX1; /* Index 0-MAX */ |
| 77 | static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR; /* ID for this card */ | 77 | static char *id = SNDRV_DEFAULT_STR1; /* ID for this card */ |
| 78 | static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP; /* Enable this card */ | 78 | static long mpu_port; |
| 79 | static long mpu_port[SNDRV_CARDS]; | ||
| 80 | #ifdef SUPPORT_JOYSTICK | 79 | #ifdef SUPPORT_JOYSTICK |
| 81 | static int joystick[SNDRV_CARDS]; | 80 | static int joystick; |
| 82 | #endif | 81 | #endif |
| 83 | static int ac97_clock[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 48000}; | 82 | static int ac97_clock = 48000; |
| 84 | static char *ac97_quirk[SNDRV_CARDS]; | 83 | static char *ac97_quirk; |
| 85 | static int dxs_support[SNDRV_CARDS]; | 84 | static int dxs_support; |
| 86 | 85 | ||
| 87 | module_param_array(index, int, NULL, 0444); | 86 | module_param(index, int, 0444); |
| 88 | MODULE_PARM_DESC(index, "Index value for VIA 82xx bridge."); | 87 | MODULE_PARM_DESC(index, "Index value for VIA 82xx bridge."); |
| 89 | module_param_array(id, charp, NULL, 0444); | 88 | module_param(id, charp, 0444); |
| 90 | MODULE_PARM_DESC(id, "ID string for VIA 82xx bridge."); | 89 | MODULE_PARM_DESC(id, "ID string for VIA 82xx bridge."); |
| 91 | module_param_array(enable, bool, NULL, 0444); | 90 | module_param(mpu_port, long, 0444); |
| 92 | MODULE_PARM_DESC(enable, "Enable audio part of VIA 82xx bridge."); | ||
| 93 | module_param_array(mpu_port, long, NULL, 0444); | ||
| 94 | MODULE_PARM_DESC(mpu_port, "MPU-401 port. (VT82C686x only)"); | 91 | MODULE_PARM_DESC(mpu_port, "MPU-401 port. (VT82C686x only)"); |
| 95 | #ifdef SUPPORT_JOYSTICK | 92 | #ifdef SUPPORT_JOYSTICK |
| 96 | module_param_array(joystick, bool, NULL, 0444); | 93 | module_param(joystick, bool, 0444); |
| 97 | MODULE_PARM_DESC(joystick, "Enable joystick. (VT82C686x only)"); | 94 | MODULE_PARM_DESC(joystick, "Enable joystick. (VT82C686x only)"); |
| 98 | #endif | 95 | #endif |
| 99 | module_param_array(ac97_clock, int, NULL, 0444); | 96 | module_param(ac97_clock, int, 0444); |
| 100 | MODULE_PARM_DESC(ac97_clock, "AC'97 codec clock (default 48000Hz)."); | 97 | MODULE_PARM_DESC(ac97_clock, "AC'97 codec clock (default 48000Hz)."); |
| 101 | module_param_array(ac97_quirk, charp, NULL, 0444); | 98 | module_param(ac97_quirk, charp, 0444); |
| 102 | MODULE_PARM_DESC(ac97_quirk, "AC'97 workaround for strange hardware."); | 99 | MODULE_PARM_DESC(ac97_quirk, "AC'97 workaround for strange hardware."); |
| 103 | module_param_array(dxs_support, int, NULL, 0444); | 100 | module_param(dxs_support, int, 0444); |
| 104 | MODULE_PARM_DESC(dxs_support, "Support for DXS channels (0 = auto, 1 = enable, 2 = disable, 3 = 48k only, 4 = no VRA, 5 = enable any sample rate)"); | 101 | MODULE_PARM_DESC(dxs_support, "Support for DXS channels (0 = auto, 1 = enable, 2 = disable, 3 = 48k only, 4 = no VRA, 5 = enable any sample rate)"); |
| 105 | 102 | ||
| 106 | 103 | ||
| @@ -1637,12 +1634,12 @@ static int __devinit snd_via82xx_mixer_new(via82xx_t *chip, const char *quirk_ov | |||
| 1637 | 1634 | ||
| 1638 | #ifdef SUPPORT_JOYSTICK | 1635 | #ifdef SUPPORT_JOYSTICK |
| 1639 | #define JOYSTICK_ADDR 0x200 | 1636 | #define JOYSTICK_ADDR 0x200 |
| 1640 | static int __devinit snd_via686_create_gameport(via82xx_t *chip, int dev, unsigned char *legacy) | 1637 | static int __devinit snd_via686_create_gameport(via82xx_t *chip, unsigned char *legacy) |
| 1641 | { | 1638 | { |
| 1642 | struct gameport *gp; | 1639 | struct gameport *gp; |
| 1643 | struct resource *r; | 1640 | struct resource *r; |
| 1644 | 1641 | ||
| 1645 | if (!joystick[dev]) | 1642 | if (!joystick) |
| 1646 | return -ENODEV; | 1643 | return -ENODEV; |
| 1647 | 1644 | ||
| 1648 | r = request_region(JOYSTICK_ADDR, 8, "VIA686 gameport"); | 1645 | r = request_region(JOYSTICK_ADDR, 8, "VIA686 gameport"); |
| @@ -1686,7 +1683,7 @@ static void snd_via686_free_gameport(via82xx_t *chip) | |||
| 1686 | } | 1683 | } |
| 1687 | } | 1684 | } |
| 1688 | #else | 1685 | #else |
| 1689 | static inline int snd_via686_create_gameport(via82xx_t *chip, int dev, unsigned char *legacy) | 1686 | static inline int snd_via686_create_gameport(via82xx_t *chip, unsigned char *legacy) |
| 1690 | { | 1687 | { |
| 1691 | return -ENOSYS; | 1688 | return -ENOSYS; |
| 1692 | } | 1689 | } |
| @@ -1698,7 +1695,7 @@ static inline void snd_via686_free_gameport(via82xx_t *chip) { } | |||
| 1698 | * | 1695 | * |
| 1699 | */ | 1696 | */ |
| 1700 | 1697 | ||
| 1701 | static int __devinit snd_via8233_init_misc(via82xx_t *chip, int dev) | 1698 | static int __devinit snd_via8233_init_misc(via82xx_t *chip) |
| 1702 | { | 1699 | { |
| 1703 | int i, err, caps; | 1700 | int i, err, caps; |
| 1704 | unsigned char val; | 1701 | unsigned char val; |
| @@ -1739,7 +1736,7 @@ static int __devinit snd_via8233_init_misc(via82xx_t *chip, int dev) | |||
| 1739 | return 0; | 1736 | return 0; |
| 1740 | } | 1737 | } |
| 1741 | 1738 | ||
| 1742 | static int __devinit snd_via686_init_misc(via82xx_t *chip, int dev) | 1739 | static int __devinit snd_via686_init_misc(via82xx_t *chip) |
| 1743 | { | 1740 | { |
| 1744 | unsigned char legacy, legacy_cfg; | 1741 | unsigned char legacy, legacy_cfg; |
| 1745 | int rev_h = 0; | 1742 | int rev_h = 0; |
| @@ -1750,32 +1747,33 @@ static int __devinit snd_via686_init_misc(via82xx_t *chip, int dev) | |||
| 1750 | legacy &= ~VIA_FUNC_ENABLE_GAME; /* disable joystick */ | 1747 | legacy &= ~VIA_FUNC_ENABLE_GAME; /* disable joystick */ |
| 1751 | if (chip->revision >= VIA_REV_686_H) { | 1748 | if (chip->revision >= VIA_REV_686_H) { |
| 1752 | rev_h = 1; | 1749 | rev_h = 1; |
| 1753 | if (mpu_port[dev] >= 0x200) { /* force MIDI */ | 1750 | if (mpu_port >= 0x200) { /* force MIDI */ |
| 1754 | mpu_port[dev] &= 0xfffc; | 1751 | mpu_port &= 0xfffc; |
| 1755 | pci_write_config_dword(chip->pci, 0x18, mpu_port[dev] | 0x01); | 1752 | pci_write_config_dword(chip->pci, 0x18, mpu_port | 0x01); |
| 1756 | #ifdef CONFIG_PM | 1753 | #ifdef CONFIG_PM |
| 1757 | chip->mpu_port_saved = mpu_port[dev]; | 1754 | chip->mpu_port_saved = mpu_port; |
| 1758 | #endif | 1755 | #endif |
| 1759 | } else { | 1756 | } else { |
| 1760 | mpu_port[dev] = pci_resource_start(chip->pci, 2); | 1757 | mpu_port = pci_resource_start(chip->pci, 2); |
| 1761 | } | 1758 | } |
| 1762 | } else { | 1759 | } else { |
| 1763 | switch (mpu_port[dev]) { /* force MIDI */ | 1760 | switch (mpu_port) { /* force MIDI */ |
| 1764 | case 0x300: | 1761 | case 0x300: |
| 1765 | case 0x310: | 1762 | case 0x310: |
| 1766 | case 0x320: | 1763 | case 0x320: |
| 1767 | case 0x330: | 1764 | case 0x330: |
| 1768 | legacy_cfg &= ~(3 << 2); | 1765 | legacy_cfg &= ~(3 << 2); |
| 1769 | legacy_cfg |= (mpu_port[dev] & 0x0030) >> 2; | 1766 | legacy_cfg |= (mpu_port & 0x0030) >> 2; |
| 1770 | break; | 1767 | break; |
| 1771 | default: /* no, use BIOS settings */ | 1768 | default: /* no, use BIOS settings */ |
| 1772 | if (legacy & VIA_FUNC_ENABLE_MIDI) | 1769 | if (legacy & VIA_FUNC_ENABLE_MIDI) |
| 1773 | mpu_port[dev] = 0x300 + ((legacy_cfg & 0x000c) << 2); | 1770 | mpu_port = 0x300 + ((legacy_cfg & 0x000c) << 2); |
| 1774 | break; | 1771 | break; |
| 1775 | } | 1772 | } |
| 1776 | } | 1773 | } |
| 1777 | if (mpu_port[dev] >= 0x200 && | 1774 | if (mpu_port >= 0x200 && |
| 1778 | (chip->mpu_res = request_region(mpu_port[dev], 2, "VIA82xx MPU401")) != NULL) { | 1775 | (chip->mpu_res = request_region(mpu_port, 2, "VIA82xx MPU401")) |
| 1776 | != NULL) { | ||
| 1779 | if (rev_h) | 1777 | if (rev_h) |
| 1780 | legacy |= VIA_FUNC_MIDI_PNP; /* enable PCI I/O 2 */ | 1778 | legacy |= VIA_FUNC_MIDI_PNP; /* enable PCI I/O 2 */ |
| 1781 | legacy |= VIA_FUNC_ENABLE_MIDI; | 1779 | legacy |= VIA_FUNC_ENABLE_MIDI; |
| @@ -1783,16 +1781,17 @@ static int __devinit snd_via686_init_misc(via82xx_t *chip, int dev) | |||
| 1783 | if (rev_h) | 1781 | if (rev_h) |
| 1784 | legacy &= ~VIA_FUNC_MIDI_PNP; /* disable PCI I/O 2 */ | 1782 | legacy &= ~VIA_FUNC_MIDI_PNP; /* disable PCI I/O 2 */ |
| 1785 | legacy &= ~VIA_FUNC_ENABLE_MIDI; | 1783 | legacy &= ~VIA_FUNC_ENABLE_MIDI; |
| 1786 | mpu_port[dev] = 0; | 1784 | mpu_port = 0; |
| 1787 | } | 1785 | } |
| 1788 | 1786 | ||
| 1789 | pci_write_config_byte(chip->pci, VIA_FUNC_ENABLE, legacy); | 1787 | pci_write_config_byte(chip->pci, VIA_FUNC_ENABLE, legacy); |
| 1790 | pci_write_config_byte(chip->pci, VIA_PNP_CONTROL, legacy_cfg); | 1788 | pci_write_config_byte(chip->pci, VIA_PNP_CONTROL, legacy_cfg); |
| 1791 | if (chip->mpu_res) { | 1789 | if (chip->mpu_res) { |
| 1792 | if (snd_mpu401_uart_new(chip->card, 0, MPU401_HW_VIA686A, | 1790 | if (snd_mpu401_uart_new(chip->card, 0, MPU401_HW_VIA686A, |
| 1793 | mpu_port[dev], 1, | 1791 | mpu_port, 1, |
| 1794 | chip->irq, 0, &chip->rmidi) < 0) { | 1792 | chip->irq, 0, &chip->rmidi) < 0) { |
| 1795 | printk(KERN_WARNING "unable to initialize MPU-401 at 0x%lx, skipping\n", mpu_port[dev]); | 1793 | printk(KERN_WARNING "unable to initialize MPU-401" |
| 1794 | " at 0x%lx, skipping\n", mpu_port); | ||
| 1796 | legacy &= ~VIA_FUNC_ENABLE_MIDI; | 1795 | legacy &= ~VIA_FUNC_ENABLE_MIDI; |
| 1797 | } else { | 1796 | } else { |
| 1798 | legacy &= ~VIA_FUNC_MIDI_IRQMASK; /* enable MIDI interrupt */ | 1797 | legacy &= ~VIA_FUNC_MIDI_IRQMASK; /* enable MIDI interrupt */ |
| @@ -1800,7 +1799,7 @@ static int __devinit snd_via686_init_misc(via82xx_t *chip, int dev) | |||
| 1800 | pci_write_config_byte(chip->pci, VIA_FUNC_ENABLE, legacy); | 1799 | pci_write_config_byte(chip->pci, VIA_FUNC_ENABLE, legacy); |
| 1801 | } | 1800 | } |
| 1802 | 1801 | ||
| 1803 | snd_via686_create_gameport(chip, dev, &legacy); | 1802 | snd_via686_create_gameport(chip, &legacy); |
| 1804 | 1803 | ||
| 1805 | #ifdef CONFIG_PM | 1804 | #ifdef CONFIG_PM |
| 1806 | chip->legacy_saved = legacy; | 1805 | chip->legacy_saved = legacy; |
| @@ -2221,7 +2220,6 @@ static int __devinit check_dxs_list(struct pci_dev *pci) | |||
| 2221 | static int __devinit snd_via82xx_probe(struct pci_dev *pci, | 2220 | static int __devinit snd_via82xx_probe(struct pci_dev *pci, |
| 2222 | const struct pci_device_id *pci_id) | 2221 | const struct pci_device_id *pci_id) |
| 2223 | { | 2222 | { |
| 2224 | static int dev; | ||
| 2225 | snd_card_t *card; | 2223 | snd_card_t *card; |
| 2226 | via82xx_t *chip; | 2224 | via82xx_t *chip; |
| 2227 | unsigned char revision; | 2225 | unsigned char revision; |
| @@ -2229,14 +2227,7 @@ static int __devinit snd_via82xx_probe(struct pci_dev *pci, | |||
| 2229 | unsigned int i; | 2227 | unsigned int i; |
| 2230 | int err; | 2228 | int err; |
| 2231 | 2229 | ||
| 2232 | if (dev >= SNDRV_CARDS) | 2230 | card = snd_card_new(index, id, THIS_MODULE, 0); |
| 2233 | return -ENODEV; | ||
| 2234 | if (!enable[dev]) { | ||
| 2235 | dev++; | ||
| 2236 | return -ENOENT; | ||
| 2237 | } | ||
| 2238 | |||
| 2239 | card = snd_card_new(index[dev], id[dev], THIS_MODULE, 0); | ||
| 2240 | if (card == NULL) | 2231 | if (card == NULL) |
| 2241 | return -ENOMEM; | 2232 | return -ENOMEM; |
| 2242 | 2233 | ||
| @@ -2259,12 +2250,12 @@ static int __devinit snd_via82xx_probe(struct pci_dev *pci, | |||
| 2259 | } | 2250 | } |
| 2260 | } | 2251 | } |
| 2261 | if (chip_type != TYPE_VIA8233A) { | 2252 | if (chip_type != TYPE_VIA8233A) { |
| 2262 | if (dxs_support[dev] == VIA_DXS_AUTO) | 2253 | if (dxs_support == VIA_DXS_AUTO) |
| 2263 | dxs_support[dev] = check_dxs_list(pci); | 2254 | dxs_support = check_dxs_list(pci); |
| 2264 | /* force to use VIA8233 or 8233A model according to | 2255 | /* force to use VIA8233 or 8233A model according to |
| 2265 | * dxs_support module option | 2256 | * dxs_support module option |
| 2266 | */ | 2257 | */ |
| 2267 | if (dxs_support[dev] == VIA_DXS_DISABLE) | 2258 | if (dxs_support == VIA_DXS_DISABLE) |
| 2268 | chip_type = TYPE_VIA8233A; | 2259 | chip_type = TYPE_VIA8233A; |
| 2269 | else | 2260 | else |
| 2270 | chip_type = TYPE_VIA8233; | 2261 | chip_type = TYPE_VIA8233; |
| @@ -2282,14 +2273,15 @@ static int __devinit snd_via82xx_probe(struct pci_dev *pci, | |||
| 2282 | goto __error; | 2273 | goto __error; |
| 2283 | } | 2274 | } |
| 2284 | 2275 | ||
| 2285 | if ((err = snd_via82xx_create(card, pci, chip_type, revision, ac97_clock[dev], &chip)) < 0) | 2276 | if ((err = snd_via82xx_create(card, pci, chip_type, revision, |
| 2277 | ac97_clock, &chip)) < 0) | ||
| 2286 | goto __error; | 2278 | goto __error; |
| 2287 | if ((err = snd_via82xx_mixer_new(chip, ac97_quirk[dev])) < 0) | 2279 | if ((err = snd_via82xx_mixer_new(chip, ac97_quirk)) < 0) |
| 2288 | goto __error; | 2280 | goto __error; |
| 2289 | 2281 | ||
| 2290 | if (chip_type == TYPE_VIA686) { | 2282 | if (chip_type == TYPE_VIA686) { |
| 2291 | if ((err = snd_via686_pcm_new(chip)) < 0 || | 2283 | if ((err = snd_via686_pcm_new(chip)) < 0 || |
| 2292 | (err = snd_via686_init_misc(chip, dev)) < 0) | 2284 | (err = snd_via686_init_misc(chip)) < 0) |
| 2293 | goto __error; | 2285 | goto __error; |
| 2294 | } else { | 2286 | } else { |
| 2295 | if (chip_type == TYPE_VIA8233A) { | 2287 | if (chip_type == TYPE_VIA8233A) { |
| @@ -2299,16 +2291,16 @@ static int __devinit snd_via82xx_probe(struct pci_dev *pci, | |||
| 2299 | } else { | 2291 | } else { |
| 2300 | if ((err = snd_via8233_pcm_new(chip)) < 0) | 2292 | if ((err = snd_via8233_pcm_new(chip)) < 0) |
| 2301 | goto __error; | 2293 | goto __error; |
| 2302 | if (dxs_support[dev] == VIA_DXS_48K) | 2294 | if (dxs_support == VIA_DXS_48K) |
| 2303 | chip->dxs_fixed = 1; | 2295 | chip->dxs_fixed = 1; |
| 2304 | else if (dxs_support[dev] == VIA_DXS_NO_VRA) | 2296 | else if (dxs_support == VIA_DXS_NO_VRA) |
| 2305 | chip->no_vra = 1; | 2297 | chip->no_vra = 1; |
| 2306 | else if (dxs_support[dev] == VIA_DXS_SRC) { | 2298 | else if (dxs_support == VIA_DXS_SRC) { |
| 2307 | chip->no_vra = 1; | 2299 | chip->no_vra = 1; |
| 2308 | chip->dxs_src = 1; | 2300 | chip->dxs_src = 1; |
| 2309 | } | 2301 | } |
| 2310 | } | 2302 | } |
| 2311 | if ((err = snd_via8233_init_misc(chip, dev)) < 0) | 2303 | if ((err = snd_via8233_init_misc(chip)) < 0) |
| 2312 | goto __error; | 2304 | goto __error; |
| 2313 | } | 2305 | } |
| 2314 | 2306 | ||
| @@ -2329,7 +2321,6 @@ static int __devinit snd_via82xx_probe(struct pci_dev *pci, | |||
| 2329 | return err; | 2321 | return err; |
| 2330 | } | 2322 | } |
| 2331 | pci_set_drvdata(pci, card); | 2323 | pci_set_drvdata(pci, card); |
| 2332 | dev++; | ||
| 2333 | return 0; | 2324 | return 0; |
| 2334 | 2325 | ||
| 2335 | __error: | 2326 | __error: |
diff --git a/sound/pci/via82xx_modem.c b/sound/pci/via82xx_modem.c index c3ab8fbf582c..a7a60d837c85 100644 --- a/sound/pci/via82xx_modem.c +++ b/sound/pci/via82xx_modem.c | |||
| @@ -55,18 +55,15 @@ MODULE_DESCRIPTION("VIA VT82xx modem"); | |||
| 55 | MODULE_LICENSE("GPL"); | 55 | MODULE_LICENSE("GPL"); |
| 56 | MODULE_SUPPORTED_DEVICE("{{VIA,VT82C686A/B/C modem,pci}}"); | 56 | MODULE_SUPPORTED_DEVICE("{{VIA,VT82C686A/B/C modem,pci}}"); |
| 57 | 57 | ||
| 58 | static int index[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = -2}; /* Exclude the first card */ | 58 | static int index = -2; /* Exclude the first card */ |
| 59 | static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR; /* ID for this card */ | 59 | static char *id = SNDRV_DEFAULT_STR1; /* ID for this card */ |
| 60 | static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP; /* Enable this card */ | 60 | static int ac97_clock = 48000; |
| 61 | static int ac97_clock[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 48000}; | ||
| 62 | 61 | ||
| 63 | module_param_array(index, int, NULL, 0444); | 62 | module_param(index, int, 0444); |
| 64 | MODULE_PARM_DESC(index, "Index value for VIA 82xx bridge."); | 63 | MODULE_PARM_DESC(index, "Index value for VIA 82xx bridge."); |
| 65 | module_param_array(id, charp, NULL, 0444); | 64 | module_param(id, charp, 0444); |
| 66 | MODULE_PARM_DESC(id, "ID string for VIA 82xx bridge."); | 65 | MODULE_PARM_DESC(id, "ID string for VIA 82xx bridge."); |
| 67 | module_param_array(enable, bool, NULL, 0444); | 66 | module_param(ac97_clock, int, 0444); |
| 68 | MODULE_PARM_DESC(enable, "Enable modem part of VIA 82xx bridge."); | ||
| 69 | module_param_array(ac97_clock, int, NULL, 0444); | ||
| 70 | MODULE_PARM_DESC(ac97_clock, "AC'97 codec clock (default 48000Hz)."); | 67 | MODULE_PARM_DESC(ac97_clock, "AC'97 codec clock (default 48000Hz)."); |
| 71 | 68 | ||
| 72 | 69 | ||
| @@ -1135,7 +1132,6 @@ static int __devinit snd_via82xx_create(snd_card_t * card, | |||
| 1135 | static int __devinit snd_via82xx_probe(struct pci_dev *pci, | 1132 | static int __devinit snd_via82xx_probe(struct pci_dev *pci, |
| 1136 | const struct pci_device_id *pci_id) | 1133 | const struct pci_device_id *pci_id) |
| 1137 | { | 1134 | { |
| 1138 | static int dev; | ||
| 1139 | snd_card_t *card; | 1135 | snd_card_t *card; |
| 1140 | via82xx_t *chip; | 1136 | via82xx_t *chip; |
| 1141 | unsigned char revision; | 1137 | unsigned char revision; |
| @@ -1143,14 +1139,7 @@ static int __devinit snd_via82xx_probe(struct pci_dev *pci, | |||
| 1143 | unsigned int i; | 1139 | unsigned int i; |
| 1144 | int err; | 1140 | int err; |
| 1145 | 1141 | ||
| 1146 | if (dev >= SNDRV_CARDS) | 1142 | card = snd_card_new(index, id, THIS_MODULE, 0); |
| 1147 | return -ENODEV; | ||
| 1148 | if (!enable[dev]) { | ||
| 1149 | dev++; | ||
| 1150 | return -ENOENT; | ||
| 1151 | } | ||
| 1152 | |||
| 1153 | card = snd_card_new(index[dev], id[dev], THIS_MODULE, 0); | ||
| 1154 | if (card == NULL) | 1143 | if (card == NULL) |
| 1155 | return -ENOMEM; | 1144 | return -ENOMEM; |
| 1156 | 1145 | ||
| @@ -1167,7 +1156,8 @@ static int __devinit snd_via82xx_probe(struct pci_dev *pci, | |||
| 1167 | goto __error; | 1156 | goto __error; |
| 1168 | } | 1157 | } |
| 1169 | 1158 | ||
| 1170 | if ((err = snd_via82xx_create(card, pci, chip_type, revision, ac97_clock[dev], &chip)) < 0) | 1159 | if ((err = snd_via82xx_create(card, pci, chip_type, revision, |
| 1160 | ac97_clock, &chip)) < 0) | ||
| 1171 | goto __error; | 1161 | goto __error; |
| 1172 | if ((err = snd_via82xx_mixer_new(chip)) < 0) | 1162 | if ((err = snd_via82xx_mixer_new(chip)) < 0) |
| 1173 | goto __error; | 1163 | goto __error; |
| @@ -1191,7 +1181,6 @@ static int __devinit snd_via82xx_probe(struct pci_dev *pci, | |||
| 1191 | return err; | 1181 | return err; |
| 1192 | } | 1182 | } |
| 1193 | pci_set_drvdata(pci, card); | 1183 | pci_set_drvdata(pci, card); |
| 1194 | dev++; | ||
| 1195 | return 0; | 1184 | return 0; |
| 1196 | 1185 | ||
| 1197 | __error: | 1186 | __error: |
