diff options
Diffstat (limited to 'sound/pci/intel8x0.c')
-rw-r--r-- | sound/pci/intel8x0.c | 58 |
1 files changed, 21 insertions, 37 deletions
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 | ||