diff options
Diffstat (limited to 'sound/isa')
-rw-r--r-- | sound/isa/ad1816a/ad1816a.c | 53 | ||||
-rw-r--r-- | sound/isa/als100.c | 49 | ||||
-rw-r--r-- | sound/isa/azt2320.c | 50 | ||||
-rw-r--r-- | sound/isa/cmi8330.c | 42 | ||||
-rw-r--r-- | sound/isa/cs423x/cs4236.c | 91 | ||||
-rw-r--r-- | sound/isa/dt019x.c | 46 | ||||
-rw-r--r-- | sound/isa/es18xx.c | 56 | ||||
-rw-r--r-- | sound/isa/gus/interwave.c | 39 | ||||
-rw-r--r-- | sound/isa/opl3sa2.c | 36 | ||||
-rw-r--r-- | sound/isa/opti9xx/opti92x-ad1848.c | 48 | ||||
-rw-r--r-- | sound/isa/sb/es968.c | 27 | ||||
-rw-r--r-- | sound/isa/sb/sb16.c | 39 | ||||
-rw-r--r-- | sound/isa/wavefront/wavefront.c | 55 |
13 files changed, 56 insertions, 575 deletions
diff --git a/sound/isa/ad1816a/ad1816a.c b/sound/isa/ad1816a/ad1816a.c index fc88a31da6f5..994bc85376c1 100644 --- a/sound/isa/ad1816a/ad1816a.c +++ b/sound/isa/ad1816a/ad1816a.c | |||
@@ -61,20 +61,6 @@ module_param_array(id, charp, NULL, 0444); | |||
61 | MODULE_PARM_DESC(id, "ID string for ad1816a based soundcard."); | 61 | MODULE_PARM_DESC(id, "ID string for ad1816a based soundcard."); |
62 | module_param_array(enable, bool, NULL, 0444); | 62 | module_param_array(enable, bool, NULL, 0444); |
63 | MODULE_PARM_DESC(enable, "Enable ad1816a based soundcard."); | 63 | MODULE_PARM_DESC(enable, "Enable ad1816a based soundcard."); |
64 | module_param_array(port, long, NULL, 0444); | ||
65 | MODULE_PARM_DESC(port, "Port # for ad1816a driver."); | ||
66 | module_param_array(mpu_port, long, NULL, 0444); | ||
67 | MODULE_PARM_DESC(mpu_port, "MPU-401 port # for ad1816a driver."); | ||
68 | module_param_array(fm_port, long, NULL, 0444); | ||
69 | MODULE_PARM_DESC(fm_port, "FM port # for ad1816a driver."); | ||
70 | module_param_array(irq, int, NULL, 0444); | ||
71 | MODULE_PARM_DESC(irq, "IRQ # for ad1816a driver."); | ||
72 | module_param_array(mpu_irq, int, NULL, 0444); | ||
73 | MODULE_PARM_DESC(mpu_irq, "MPU-401 IRQ # for ad1816a driver."); | ||
74 | module_param_array(dma1, int, NULL, 0444); | ||
75 | MODULE_PARM_DESC(dma1, "1st DMA # for ad1816a driver."); | ||
76 | module_param_array(dma2, int, NULL, 0444); | ||
77 | MODULE_PARM_DESC(dma2, "2nd DMA # for ad1816a driver."); | ||
78 | module_param_array(clockfreq, int, NULL, 0444); | 64 | module_param_array(clockfreq, int, NULL, 0444); |
79 | MODULE_PARM_DESC(clockfreq, "Clock frequency for ad1816a driver (default = 0)."); | 65 | MODULE_PARM_DESC(clockfreq, "Clock frequency for ad1816a driver (default = 0)."); |
80 | 66 | ||
@@ -117,16 +103,12 @@ static int __devinit snd_card_ad1816a_pnp(int dev, struct snd_card_ad1816a *acar | |||
117 | const struct pnp_card_device_id *id) | 103 | const struct pnp_card_device_id *id) |
118 | { | 104 | { |
119 | struct pnp_dev *pdev; | 105 | struct pnp_dev *pdev; |
120 | struct pnp_resource_table *cfg = kmalloc(sizeof(*cfg), GFP_KERNEL); | ||
121 | int err; | 106 | int err; |
122 | 107 | ||
123 | if (!cfg) | ||
124 | return -ENOMEM; | ||
125 | acard->dev = pnp_request_card_device(card, id->devs[0].id, NULL); | 108 | acard->dev = pnp_request_card_device(card, id->devs[0].id, NULL); |
126 | if (acard->dev == NULL) { | 109 | if (acard->dev == NULL) |
127 | kfree(cfg); | ||
128 | return -EBUSY; | 110 | return -EBUSY; |
129 | } | 111 | |
130 | acard->devmpu = pnp_request_card_device(card, id->devs[1].id, NULL); | 112 | acard->devmpu = pnp_request_card_device(card, id->devs[1].id, NULL); |
131 | if (acard->devmpu == NULL) { | 113 | if (acard->devmpu == NULL) { |
132 | mpu_port[dev] = -1; | 114 | mpu_port[dev] = -1; |
@@ -134,25 +116,10 @@ static int __devinit snd_card_ad1816a_pnp(int dev, struct snd_card_ad1816a *acar | |||
134 | } | 116 | } |
135 | 117 | ||
136 | pdev = acard->dev; | 118 | pdev = acard->dev; |
137 | pnp_init_resource_table(cfg); | 119 | |
138 | |||
139 | if (port[dev] != SNDRV_AUTO_PORT) | ||
140 | pnp_resource_change(&cfg->port_resource[2], port[dev], 16); | ||
141 | if (fm_port[dev] != SNDRV_AUTO_PORT) | ||
142 | pnp_resource_change(&cfg->port_resource[1], fm_port[dev], 4); | ||
143 | if (dma1[dev] != SNDRV_AUTO_DMA) | ||
144 | pnp_resource_change(&cfg->dma_resource[0], dma1[dev], 1); | ||
145 | if (dma2[dev] != SNDRV_AUTO_DMA) | ||
146 | pnp_resource_change(&cfg->dma_resource[1], dma2[dev], 1); | ||
147 | if (irq[dev] != SNDRV_AUTO_IRQ) | ||
148 | pnp_resource_change(&cfg->irq_resource[0], irq[dev], 1); | ||
149 | |||
150 | if (pnp_manual_config_dev(pdev, cfg, 0) < 0) | ||
151 | snd_printk(KERN_ERR PFX "AUDIO the requested resources are invalid, using auto config\n"); | ||
152 | err = pnp_activate_dev(pdev); | 120 | err = pnp_activate_dev(pdev); |
153 | if (err < 0) { | 121 | if (err < 0) { |
154 | printk(KERN_ERR PFX "AUDIO PnP configure failure\n"); | 122 | printk(KERN_ERR PFX "AUDIO PnP configure failure\n"); |
155 | kfree(cfg); | ||
156 | return -EBUSY; | 123 | return -EBUSY; |
157 | } | 124 | } |
158 | 125 | ||
@@ -162,20 +129,11 @@ static int __devinit snd_card_ad1816a_pnp(int dev, struct snd_card_ad1816a *acar | |||
162 | dma2[dev] = pnp_dma(pdev, 1); | 129 | dma2[dev] = pnp_dma(pdev, 1); |
163 | irq[dev] = pnp_irq(pdev, 0); | 130 | irq[dev] = pnp_irq(pdev, 0); |
164 | 131 | ||
165 | if (acard->devmpu == NULL) { | 132 | if (acard->devmpu == NULL) |
166 | kfree(cfg); | ||
167 | return 0; | 133 | return 0; |
168 | } | ||
169 | pdev = acard->devmpu; | ||
170 | pnp_init_resource_table(cfg); | ||
171 | 134 | ||
172 | if (mpu_port[dev] != SNDRV_AUTO_PORT) | 135 | pdev = acard->devmpu; |
173 | pnp_resource_change(&cfg->port_resource[0], mpu_port[dev], 2); | ||
174 | if (mpu_irq[dev] != SNDRV_AUTO_IRQ) | ||
175 | pnp_resource_change(&cfg->irq_resource[0], mpu_irq[dev], 1); | ||
176 | 136 | ||
177 | if (pnp_manual_config_dev(pdev, cfg, 0) < 0) | ||
178 | snd_printk(KERN_ERR PFX "AUDIO the requested resources are invalid, using auto config\n"); | ||
179 | err = pnp_activate_dev(pdev); | 137 | err = pnp_activate_dev(pdev); |
180 | if (err < 0) { | 138 | if (err < 0) { |
181 | printk(KERN_ERR PFX "MPU401 PnP configure failure\n"); | 139 | printk(KERN_ERR PFX "MPU401 PnP configure failure\n"); |
@@ -186,7 +144,6 @@ static int __devinit snd_card_ad1816a_pnp(int dev, struct snd_card_ad1816a *acar | |||
186 | mpu_irq[dev] = pnp_irq(pdev, 0); | 144 | mpu_irq[dev] = pnp_irq(pdev, 0); |
187 | } | 145 | } |
188 | 146 | ||
189 | kfree(cfg); | ||
190 | return 0; | 147 | return 0; |
191 | } | 148 | } |
192 | 149 | ||
diff --git a/sound/isa/als100.c b/sound/isa/als100.c index f2bcfb2cf5f5..35e25e5878e0 100644 --- a/sound/isa/als100.c +++ b/sound/isa/als100.c | |||
@@ -63,20 +63,6 @@ module_param_array(id, charp, NULL, 0444); | |||
63 | MODULE_PARM_DESC(id, "ID string for als100 based soundcard."); | 63 | MODULE_PARM_DESC(id, "ID string for als100 based soundcard."); |
64 | module_param_array(enable, bool, NULL, 0444); | 64 | module_param_array(enable, bool, NULL, 0444); |
65 | MODULE_PARM_DESC(enable, "Enable als100 based soundcard."); | 65 | MODULE_PARM_DESC(enable, "Enable als100 based soundcard."); |
66 | module_param_array(port, long, NULL, 0444); | ||
67 | MODULE_PARM_DESC(port, "Port # for als100 driver."); | ||
68 | module_param_array(mpu_port, long, NULL, 0444); | ||
69 | MODULE_PARM_DESC(mpu_port, "MPU-401 port # for als100 driver."); | ||
70 | module_param_array(fm_port, long, NULL, 0444); | ||
71 | MODULE_PARM_DESC(fm_port, "FM port # for als100 driver."); | ||
72 | module_param_array(irq, int, NULL, 0444); | ||
73 | MODULE_PARM_DESC(irq, "IRQ # for als100 driver."); | ||
74 | module_param_array(mpu_irq, int, NULL, 0444); | ||
75 | MODULE_PARM_DESC(mpu_irq, "MPU-401 IRQ # for als100 driver."); | ||
76 | module_param_array(dma8, int, NULL, 0444); | ||
77 | MODULE_PARM_DESC(dma8, "8-bit DMA # for als100 driver."); | ||
78 | module_param_array(dma16, int, NULL, 0444); | ||
79 | MODULE_PARM_DESC(dma16, "16-bit DMA # for als100 driver."); | ||
80 | 66 | ||
81 | struct snd_card_als100 { | 67 | struct snd_card_als100 { |
82 | int dev_no; | 68 | int dev_no; |
@@ -111,38 +97,20 @@ static int __devinit snd_card_als100_pnp(int dev, struct snd_card_als100 *acard, | |||
111 | const struct pnp_card_device_id *id) | 97 | const struct pnp_card_device_id *id) |
112 | { | 98 | { |
113 | struct pnp_dev *pdev; | 99 | struct pnp_dev *pdev; |
114 | struct pnp_resource_table *cfg = kmalloc(sizeof(*cfg), GFP_KERNEL); | ||
115 | int err; | 100 | int err; |
116 | 101 | ||
117 | if (!cfg) | ||
118 | return -ENOMEM; | ||
119 | acard->dev = pnp_request_card_device(card, id->devs[0].id, NULL); | 102 | acard->dev = pnp_request_card_device(card, id->devs[0].id, NULL); |
120 | if (acard->dev == NULL) { | 103 | if (acard->dev == NULL) |
121 | kfree(cfg); | ||
122 | return -ENODEV; | 104 | return -ENODEV; |
123 | } | 105 | |
124 | acard->devmpu = pnp_request_card_device(card, id->devs[1].id, acard->dev); | 106 | acard->devmpu = pnp_request_card_device(card, id->devs[1].id, acard->dev); |
125 | acard->devopl = pnp_request_card_device(card, id->devs[2].id, acard->dev); | 107 | acard->devopl = pnp_request_card_device(card, id->devs[2].id, acard->dev); |
126 | 108 | ||
127 | pdev = acard->dev; | 109 | pdev = acard->dev; |
128 | 110 | ||
129 | pnp_init_resource_table(cfg); | ||
130 | |||
131 | /* override resources */ | ||
132 | if (port[dev] != SNDRV_AUTO_PORT) | ||
133 | pnp_resource_change(&cfg->port_resource[0], port[dev], 16); | ||
134 | if (dma8[dev] != SNDRV_AUTO_DMA) | ||
135 | pnp_resource_change(&cfg->dma_resource[0], dma8[dev], 1); | ||
136 | if (dma16[dev] != SNDRV_AUTO_DMA) | ||
137 | pnp_resource_change(&cfg->dma_resource[1], dma16[dev], 1); | ||
138 | if (irq[dev] != SNDRV_AUTO_IRQ) | ||
139 | pnp_resource_change(&cfg->irq_resource[0], irq[dev], 1); | ||
140 | if (pnp_manual_config_dev(pdev, cfg, 0) < 0) | ||
141 | snd_printk(KERN_ERR PFX "AUDIO the requested resources are invalid, using auto config\n"); | ||
142 | err = pnp_activate_dev(pdev); | 111 | err = pnp_activate_dev(pdev); |
143 | if (err < 0) { | 112 | if (err < 0) { |
144 | snd_printk(KERN_ERR PFX "AUDIO pnp configure failure\n"); | 113 | snd_printk(KERN_ERR PFX "AUDIO pnp configure failure\n"); |
145 | kfree(cfg); | ||
146 | return err; | 114 | return err; |
147 | } | 115 | } |
148 | port[dev] = pnp_port_start(pdev, 0); | 116 | port[dev] = pnp_port_start(pdev, 0); |
@@ -152,13 +120,6 @@ static int __devinit snd_card_als100_pnp(int dev, struct snd_card_als100 *acard, | |||
152 | 120 | ||
153 | pdev = acard->devmpu; | 121 | pdev = acard->devmpu; |
154 | if (pdev != NULL) { | 122 | if (pdev != NULL) { |
155 | pnp_init_resource_table(cfg); | ||
156 | if (mpu_port[dev] != SNDRV_AUTO_PORT) | ||
157 | pnp_resource_change(&cfg->port_resource[0], mpu_port[dev], 2); | ||
158 | if (mpu_irq[dev] != SNDRV_AUTO_IRQ) | ||
159 | pnp_resource_change(&cfg->irq_resource[0], mpu_irq[dev], 1); | ||
160 | if ((pnp_manual_config_dev(pdev, cfg, 0)) < 0) | ||
161 | snd_printk(KERN_ERR PFX "MPU401 the requested resources are invalid, using auto config\n"); | ||
162 | err = pnp_activate_dev(pdev); | 123 | err = pnp_activate_dev(pdev); |
163 | if (err < 0) | 124 | if (err < 0) |
164 | goto __mpu_error; | 125 | goto __mpu_error; |
@@ -176,11 +137,6 @@ static int __devinit snd_card_als100_pnp(int dev, struct snd_card_als100 *acard, | |||
176 | 137 | ||
177 | pdev = acard->devopl; | 138 | pdev = acard->devopl; |
178 | if (pdev != NULL) { | 139 | if (pdev != NULL) { |
179 | pnp_init_resource_table(cfg); | ||
180 | if (fm_port[dev] != SNDRV_AUTO_PORT) | ||
181 | pnp_resource_change(&cfg->port_resource[0], fm_port[dev], 4); | ||
182 | if ((pnp_manual_config_dev(pdev, cfg, 0)) < 0) | ||
183 | snd_printk(KERN_ERR PFX "OPL3 the requested resources are invalid, using auto config\n"); | ||
184 | err = pnp_activate_dev(pdev); | 140 | err = pnp_activate_dev(pdev); |
185 | if (err < 0) | 141 | if (err < 0) |
186 | goto __fm_error; | 142 | goto __fm_error; |
@@ -195,7 +151,6 @@ static int __devinit snd_card_als100_pnp(int dev, struct snd_card_als100 *acard, | |||
195 | fm_port[dev] = -1; | 151 | fm_port[dev] = -1; |
196 | } | 152 | } |
197 | 153 | ||
198 | kfree(cfg); | ||
199 | return 0; | 154 | return 0; |
200 | } | 155 | } |
201 | 156 | ||
diff --git a/sound/isa/azt2320.c b/sound/isa/azt2320.c index b615538a928d..bfe3a255815c 100644 --- a/sound/isa/azt2320.c +++ b/sound/isa/azt2320.c | |||
@@ -72,22 +72,6 @@ module_param_array(id, charp, NULL, 0444); | |||
72 | MODULE_PARM_DESC(id, "ID string for azt2320 based soundcard."); | 72 | MODULE_PARM_DESC(id, "ID string for azt2320 based soundcard."); |
73 | module_param_array(enable, bool, NULL, 0444); | 73 | module_param_array(enable, bool, NULL, 0444); |
74 | MODULE_PARM_DESC(enable, "Enable azt2320 based soundcard."); | 74 | MODULE_PARM_DESC(enable, "Enable azt2320 based soundcard."); |
75 | module_param_array(port, long, NULL, 0444); | ||
76 | MODULE_PARM_DESC(port, "Port # for azt2320 driver."); | ||
77 | module_param_array(wss_port, long, NULL, 0444); | ||
78 | MODULE_PARM_DESC(wss_port, "WSS Port # for azt2320 driver."); | ||
79 | module_param_array(mpu_port, long, NULL, 0444); | ||
80 | MODULE_PARM_DESC(mpu_port, "MPU-401 port # for azt2320 driver."); | ||
81 | module_param_array(fm_port, long, NULL, 0444); | ||
82 | MODULE_PARM_DESC(fm_port, "FM port # for azt2320 driver."); | ||
83 | module_param_array(irq, int, NULL, 0444); | ||
84 | MODULE_PARM_DESC(irq, "IRQ # for azt2320 driver."); | ||
85 | module_param_array(mpu_irq, int, NULL, 0444); | ||
86 | MODULE_PARM_DESC(mpu_irq, "MPU-401 IRQ # for azt2320 driver."); | ||
87 | module_param_array(dma1, int, NULL, 0444); | ||
88 | MODULE_PARM_DESC(dma1, "1st DMA # for azt2320 driver."); | ||
89 | module_param_array(dma2, int, NULL, 0444); | ||
90 | MODULE_PARM_DESC(dma2, "2nd DMA # for azt2320 driver."); | ||
91 | 75 | ||
92 | struct snd_card_azt2320 { | 76 | struct snd_card_azt2320 { |
93 | int dev_no; | 77 | int dev_no; |
@@ -121,43 +105,19 @@ static int __devinit snd_card_azt2320_pnp(int dev, struct snd_card_azt2320 *acar | |||
121 | const struct pnp_card_device_id *id) | 105 | const struct pnp_card_device_id *id) |
122 | { | 106 | { |
123 | struct pnp_dev *pdev; | 107 | struct pnp_dev *pdev; |
124 | struct pnp_resource_table * cfg = kmalloc(sizeof(struct pnp_resource_table), GFP_KERNEL); | ||
125 | int err; | 108 | int err; |
126 | 109 | ||
127 | if (!cfg) | ||
128 | return -ENOMEM; | ||
129 | |||
130 | acard->dev = pnp_request_card_device(card, id->devs[0].id, NULL); | 110 | acard->dev = pnp_request_card_device(card, id->devs[0].id, NULL); |
131 | if (acard->dev == NULL) { | 111 | if (acard->dev == NULL) |
132 | kfree(cfg); | ||
133 | return -ENODEV; | 112 | return -ENODEV; |
134 | } | ||
135 | 113 | ||
136 | acard->devmpu = pnp_request_card_device(card, id->devs[1].id, NULL); | 114 | acard->devmpu = pnp_request_card_device(card, id->devs[1].id, NULL); |
137 | 115 | ||
138 | pdev = acard->dev; | 116 | pdev = acard->dev; |
139 | pnp_init_resource_table(cfg); | ||
140 | |||
141 | /* override resources */ | ||
142 | if (port[dev] != SNDRV_AUTO_PORT) | ||
143 | pnp_resource_change(&cfg->port_resource[0], port[dev], 16); | ||
144 | if (fm_port[dev] != SNDRV_AUTO_PORT) | ||
145 | pnp_resource_change(&cfg->port_resource[1], fm_port[dev], 4); | ||
146 | if (wss_port[dev] != SNDRV_AUTO_PORT) | ||
147 | pnp_resource_change(&cfg->port_resource[2], wss_port[dev], 4); | ||
148 | if (dma1[dev] != SNDRV_AUTO_DMA) | ||
149 | pnp_resource_change(&cfg->dma_resource[0], dma1[dev], 1); | ||
150 | if (dma2[dev] != SNDRV_AUTO_DMA) | ||
151 | pnp_resource_change(&cfg->dma_resource[1], dma2[dev], 1); | ||
152 | if (irq[dev] != SNDRV_AUTO_IRQ) | ||
153 | pnp_resource_change(&cfg->irq_resource[0], irq[dev], 1); | ||
154 | if ((pnp_manual_config_dev(pdev, cfg, 0)) < 0) | ||
155 | snd_printk(KERN_ERR PFX "AUDIO the requested resources are invalid, using auto config\n"); | ||
156 | 117 | ||
157 | err = pnp_activate_dev(pdev); | 118 | err = pnp_activate_dev(pdev); |
158 | if (err < 0) { | 119 | if (err < 0) { |
159 | snd_printk(KERN_ERR PFX "AUDIO pnp configure failure\n"); | 120 | snd_printk(KERN_ERR PFX "AUDIO pnp configure failure\n"); |
160 | kfree(cfg); | ||
161 | return err; | 121 | return err; |
162 | } | 122 | } |
163 | port[dev] = pnp_port_start(pdev, 0); | 123 | port[dev] = pnp_port_start(pdev, 0); |
@@ -169,13 +129,6 @@ static int __devinit snd_card_azt2320_pnp(int dev, struct snd_card_azt2320 *acar | |||
169 | 129 | ||
170 | pdev = acard->devmpu; | 130 | pdev = acard->devmpu; |
171 | if (pdev != NULL) { | 131 | if (pdev != NULL) { |
172 | pnp_init_resource_table(cfg); | ||
173 | if (mpu_port[dev] != SNDRV_AUTO_PORT) | ||
174 | pnp_resource_change(&cfg->port_resource[0], mpu_port[dev], 2); | ||
175 | if (mpu_irq[dev] != SNDRV_AUTO_IRQ) | ||
176 | pnp_resource_change(&cfg->irq_resource[0], mpu_irq[dev], 1); | ||
177 | if ((pnp_manual_config_dev(pdev, cfg, 0)) < 0) | ||
178 | snd_printk(KERN_ERR PFX "MPU401 the requested resources are invalid, using auto config\n"); | ||
179 | err = pnp_activate_dev(pdev); | 132 | err = pnp_activate_dev(pdev); |
180 | if (err < 0) | 133 | if (err < 0) |
181 | goto __mpu_error; | 134 | goto __mpu_error; |
@@ -191,7 +144,6 @@ static int __devinit snd_card_azt2320_pnp(int dev, struct snd_card_azt2320 *acar | |||
191 | mpu_port[dev] = -1; | 144 | mpu_port[dev] = -1; |
192 | } | 145 | } |
193 | 146 | ||
194 | kfree (cfg); | ||
195 | return 0; | 147 | return 0; |
196 | } | 148 | } |
197 | 149 | ||
diff --git a/sound/isa/cmi8330.c b/sound/isa/cmi8330.c index f471f8ad6885..c166e13d17ec 100644 --- a/sound/isa/cmi8330.c +++ b/sound/isa/cmi8330.c | |||
@@ -286,39 +286,21 @@ static int __devinit snd_cmi8330_pnp(int dev, struct snd_cmi8330 *acard, | |||
286 | const struct pnp_card_device_id *id) | 286 | const struct pnp_card_device_id *id) |
287 | { | 287 | { |
288 | struct pnp_dev *pdev; | 288 | struct pnp_dev *pdev; |
289 | struct pnp_resource_table * cfg = kmalloc(sizeof(struct pnp_resource_table), GFP_KERNEL); | ||
290 | int err; | 289 | int err; |
291 | 290 | ||
292 | if (!cfg) | ||
293 | return -ENOMEM; | ||
294 | acard->cap = pnp_request_card_device(card, id->devs[0].id, NULL); | 291 | acard->cap = pnp_request_card_device(card, id->devs[0].id, NULL); |
295 | if (acard->cap == NULL) { | 292 | if (acard->cap == NULL) |
296 | kfree(cfg); | ||
297 | return -EBUSY; | 293 | return -EBUSY; |
298 | } | 294 | |
299 | acard->play = pnp_request_card_device(card, id->devs[1].id, NULL); | 295 | acard->play = pnp_request_card_device(card, id->devs[1].id, NULL); |
300 | if (acard->play == NULL) { | 296 | if (acard->play == NULL) |
301 | kfree(cfg); | ||
302 | return -EBUSY; | 297 | return -EBUSY; |
303 | } | ||
304 | 298 | ||
305 | pdev = acard->cap; | 299 | pdev = acard->cap; |
306 | pnp_init_resource_table(cfg); | 300 | |
307 | /* allocate AD1848 resources */ | ||
308 | if (wssport[dev] != SNDRV_AUTO_PORT) | ||
309 | pnp_resource_change(&cfg->port_resource[0], wssport[dev], 8); | ||
310 | if (wssdma[dev] != SNDRV_AUTO_DMA) | ||
311 | pnp_resource_change(&cfg->dma_resource[0], wssdma[dev], 1); | ||
312 | if (wssirq[dev] != SNDRV_AUTO_IRQ) | ||
313 | pnp_resource_change(&cfg->irq_resource[0], wssirq[dev], 1); | ||
314 | |||
315 | err = pnp_manual_config_dev(pdev, cfg, 0); | ||
316 | if (err < 0) | ||
317 | snd_printk(KERN_ERR "CMI8330/C3D (AD1848) PnP manual resources are invalid, using auto config\n"); | ||
318 | err = pnp_activate_dev(pdev); | 301 | err = pnp_activate_dev(pdev); |
319 | if (err < 0) { | 302 | if (err < 0) { |
320 | snd_printk(KERN_ERR "CMI8330/C3D (AD1848) PnP configure failure\n"); | 303 | snd_printk(KERN_ERR "CMI8330/C3D (AD1848) PnP configure failure\n"); |
321 | kfree(cfg); | ||
322 | return -EBUSY; | 304 | return -EBUSY; |
323 | } | 305 | } |
324 | wssport[dev] = pnp_port_start(pdev, 0); | 306 | wssport[dev] = pnp_port_start(pdev, 0); |
@@ -327,23 +309,10 @@ static int __devinit snd_cmi8330_pnp(int dev, struct snd_cmi8330 *acard, | |||
327 | 309 | ||
328 | /* allocate SB16 resources */ | 310 | /* allocate SB16 resources */ |
329 | pdev = acard->play; | 311 | pdev = acard->play; |
330 | pnp_init_resource_table(cfg); | 312 | |
331 | if (sbport[dev] != SNDRV_AUTO_PORT) | ||
332 | pnp_resource_change(&cfg->port_resource[0], sbport[dev], 16); | ||
333 | if (sbdma8[dev] != SNDRV_AUTO_DMA) | ||
334 | pnp_resource_change(&cfg->dma_resource[0], sbdma8[dev], 1); | ||
335 | if (sbdma16[dev] != SNDRV_AUTO_DMA) | ||
336 | pnp_resource_change(&cfg->dma_resource[1], sbdma16[dev], 1); | ||
337 | if (sbirq[dev] != SNDRV_AUTO_IRQ) | ||
338 | pnp_resource_change(&cfg->irq_resource[0], sbirq[dev], 1); | ||
339 | |||
340 | err = pnp_manual_config_dev(pdev, cfg, 0); | ||
341 | if (err < 0) | ||
342 | snd_printk(KERN_ERR "CMI8330/C3D (SB16) PnP manual resources are invalid, using auto config\n"); | ||
343 | err = pnp_activate_dev(pdev); | 313 | err = pnp_activate_dev(pdev); |
344 | if (err < 0) { | 314 | if (err < 0) { |
345 | snd_printk(KERN_ERR "CMI8330/C3D (SB16) PnP configure failure\n"); | 315 | snd_printk(KERN_ERR "CMI8330/C3D (SB16) PnP configure failure\n"); |
346 | kfree(cfg); | ||
347 | return -EBUSY; | 316 | return -EBUSY; |
348 | } | 317 | } |
349 | sbport[dev] = pnp_port_start(pdev, 0); | 318 | sbport[dev] = pnp_port_start(pdev, 0); |
@@ -351,7 +320,6 @@ static int __devinit snd_cmi8330_pnp(int dev, struct snd_cmi8330 *acard, | |||
351 | sbdma16[dev] = pnp_dma(pdev, 1); | 320 | sbdma16[dev] = pnp_dma(pdev, 1); |
352 | sbirq[dev] = pnp_irq(pdev, 0); | 321 | sbirq[dev] = pnp_irq(pdev, 0); |
353 | 322 | ||
354 | kfree(cfg); | ||
355 | return 0; | 323 | return 0; |
356 | } | 324 | } |
357 | #endif | 325 | #endif |
diff --git a/sound/isa/cs423x/cs4236.c b/sound/isa/cs423x/cs4236.c index 5784b43f4123..0a3fece40f8b 100644 --- a/sound/isa/cs423x/cs4236.c +++ b/sound/isa/cs423x/cs4236.c | |||
@@ -270,29 +270,9 @@ static struct pnp_card_device_id snd_cs423x_pnpids[] = { | |||
270 | MODULE_DEVICE_TABLE(pnp_card, snd_cs423x_pnpids); | 270 | MODULE_DEVICE_TABLE(pnp_card, snd_cs423x_pnpids); |
271 | 271 | ||
272 | /* WSS initialization */ | 272 | /* WSS initialization */ |
273 | static int __devinit snd_cs423x_pnp_init_wss(int dev, struct pnp_dev *pdev, | 273 | static int __devinit snd_cs423x_pnp_init_wss(int dev, struct pnp_dev *pdev) |
274 | struct pnp_resource_table *cfg) | ||
275 | { | 274 | { |
276 | int err; | 275 | if (pnp_activate_dev(pdev) < 0) { |
277 | |||
278 | pnp_init_resource_table(cfg); | ||
279 | if (port[dev] != SNDRV_AUTO_PORT) | ||
280 | pnp_resource_change(&cfg->port_resource[0], port[dev], 4); | ||
281 | if (fm_port[dev] != SNDRV_AUTO_PORT && fm_port[dev] > 0) | ||
282 | pnp_resource_change(&cfg->port_resource[1], fm_port[dev], 4); | ||
283 | if (sb_port[dev] != SNDRV_AUTO_PORT) | ||
284 | pnp_resource_change(&cfg->port_resource[2], sb_port[dev], 16); | ||
285 | if (irq[dev] != SNDRV_AUTO_IRQ) | ||
286 | pnp_resource_change(&cfg->irq_resource[0], irq[dev], 1); | ||
287 | if (dma1[dev] != SNDRV_AUTO_DMA) | ||
288 | pnp_resource_change(&cfg->dma_resource[0], dma1[dev], 1); | ||
289 | if (dma2[dev] != SNDRV_AUTO_DMA) | ||
290 | pnp_resource_change(&cfg->dma_resource[1], dma2[dev] < 0 ? 4 : dma2[dev], 1); | ||
291 | err = pnp_manual_config_dev(pdev, cfg, 0); | ||
292 | if (err < 0) | ||
293 | snd_printk(KERN_ERR IDENT " WSS PnP manual resources are invalid, using auto config\n"); | ||
294 | err = pnp_activate_dev(pdev); | ||
295 | if (err < 0) { | ||
296 | printk(KERN_ERR IDENT " WSS PnP configure failed for WSS (out of resources?)\n"); | 276 | printk(KERN_ERR IDENT " WSS PnP configure failed for WSS (out of resources?)\n"); |
297 | return -EBUSY; | 277 | return -EBUSY; |
298 | } | 278 | } |
@@ -311,19 +291,9 @@ static int __devinit snd_cs423x_pnp_init_wss(int dev, struct pnp_dev *pdev, | |||
311 | } | 291 | } |
312 | 292 | ||
313 | /* CTRL initialization */ | 293 | /* CTRL initialization */ |
314 | static int __devinit snd_cs423x_pnp_init_ctrl(int dev, struct pnp_dev *pdev, | 294 | static int __devinit snd_cs423x_pnp_init_ctrl(int dev, struct pnp_dev *pdev) |
315 | struct pnp_resource_table *cfg) | ||
316 | { | 295 | { |
317 | int err; | 296 | if (pnp_activate_dev(pdev) < 0) { |
318 | |||
319 | pnp_init_resource_table(cfg); | ||
320 | if (cport[dev] != SNDRV_AUTO_PORT) | ||
321 | pnp_resource_change(&cfg->port_resource[0], cport[dev], 8); | ||
322 | err = pnp_manual_config_dev(pdev, cfg, 0); | ||
323 | if (err < 0) | ||
324 | snd_printk(KERN_ERR IDENT " CTRL PnP manual resources are invalid, using auto config\n"); | ||
325 | err = pnp_activate_dev(pdev); | ||
326 | if (err < 0) { | ||
327 | printk(KERN_ERR IDENT " CTRL PnP configure failed for WSS (out of resources?)\n"); | 297 | printk(KERN_ERR IDENT " CTRL PnP configure failed for WSS (out of resources?)\n"); |
328 | return -EBUSY; | 298 | return -EBUSY; |
329 | } | 299 | } |
@@ -333,21 +303,9 @@ static int __devinit snd_cs423x_pnp_init_ctrl(int dev, struct pnp_dev *pdev, | |||
333 | } | 303 | } |
334 | 304 | ||
335 | /* MPU initialization */ | 305 | /* MPU initialization */ |
336 | static int __devinit snd_cs423x_pnp_init_mpu(int dev, struct pnp_dev *pdev, | 306 | static int __devinit snd_cs423x_pnp_init_mpu(int dev, struct pnp_dev *pdev) |
337 | struct pnp_resource_table *cfg) | ||
338 | { | 307 | { |
339 | int err; | 308 | if (pnp_activate_dev(pdev) < 0) { |
340 | |||
341 | pnp_init_resource_table(cfg); | ||
342 | if (mpu_port[dev] != SNDRV_AUTO_PORT) | ||
343 | pnp_resource_change(&cfg->port_resource[0], mpu_port[dev], 2); | ||
344 | if (mpu_irq[dev] != SNDRV_AUTO_IRQ && mpu_irq[dev] >= 0) | ||
345 | pnp_resource_change(&cfg->irq_resource[0], mpu_irq[dev], 1); | ||
346 | err = pnp_manual_config_dev(pdev, cfg, 0); | ||
347 | if (err < 0) | ||
348 | snd_printk(KERN_ERR IDENT " MPU401 PnP manual resources are invalid, using auto config\n"); | ||
349 | err = pnp_activate_dev(pdev); | ||
350 | if (err < 0) { | ||
351 | printk(KERN_ERR IDENT " MPU401 PnP configure failed for WSS (out of resources?)\n"); | 309 | printk(KERN_ERR IDENT " MPU401 PnP configure failed for WSS (out of resources?)\n"); |
352 | mpu_port[dev] = SNDRV_AUTO_PORT; | 310 | mpu_port[dev] = SNDRV_AUTO_PORT; |
353 | mpu_irq[dev] = SNDRV_AUTO_IRQ; | 311 | mpu_irq[dev] = SNDRV_AUTO_IRQ; |
@@ -368,15 +326,8 @@ static int __devinit snd_cs423x_pnp_init_mpu(int dev, struct pnp_dev *pdev, | |||
368 | static int __devinit snd_card_cs4232_pnp(int dev, struct snd_card_cs4236 *acard, | 326 | static int __devinit snd_card_cs4232_pnp(int dev, struct snd_card_cs4236 *acard, |
369 | struct pnp_dev *pdev) | 327 | struct pnp_dev *pdev) |
370 | { | 328 | { |
371 | struct pnp_resource_table *cfg = kmalloc(sizeof(*cfg), GFP_KERNEL); | 329 | if (snd_cs423x_pnp_init_wss(dev, acard->wss) < 0) |
372 | |||
373 | if (!cfg) | ||
374 | return -ENOMEM; | ||
375 | if (snd_cs423x_pnp_init_wss(dev, acard->wss, cfg) < 0) { | ||
376 | kfree(cfg); | ||
377 | return -EBUSY; | 330 | return -EBUSY; |
378 | } | ||
379 | kfree(cfg); | ||
380 | cport[dev] = -1; | 331 | cport[dev] = -1; |
381 | return 0; | 332 | return 0; |
382 | } | 333 | } |
@@ -386,43 +337,33 @@ static int __devinit snd_card_cs423x_pnpc(int dev, struct snd_card_cs4236 *acard | |||
386 | struct pnp_card_link *card, | 337 | struct pnp_card_link *card, |
387 | const struct pnp_card_device_id *id) | 338 | const struct pnp_card_device_id *id) |
388 | { | 339 | { |
389 | struct pnp_resource_table *cfg = kmalloc(sizeof(*cfg), GFP_KERNEL); | ||
390 | |||
391 | if (!cfg) | ||
392 | return -ENOMEM; | ||
393 | |||
394 | acard->wss = pnp_request_card_device(card, id->devs[0].id, NULL); | 340 | acard->wss = pnp_request_card_device(card, id->devs[0].id, NULL); |
395 | if (acard->wss == NULL) | 341 | if (acard->wss == NULL) |
396 | goto error; | 342 | return -EBUSY; |
397 | acard->ctrl = pnp_request_card_device(card, id->devs[1].id, NULL); | 343 | acard->ctrl = pnp_request_card_device(card, id->devs[1].id, NULL); |
398 | if (acard->ctrl == NULL) | 344 | if (acard->ctrl == NULL) |
399 | goto error; | 345 | return -EBUSY; |
400 | if (id->devs[2].id[0]) { | 346 | if (id->devs[2].id[0]) { |
401 | acard->mpu = pnp_request_card_device(card, id->devs[2].id, NULL); | 347 | acard->mpu = pnp_request_card_device(card, id->devs[2].id, NULL); |
402 | if (acard->mpu == NULL) | 348 | if (acard->mpu == NULL) |
403 | goto error; | 349 | return -EBUSY; |
404 | } | 350 | } |
405 | 351 | ||
406 | /* WSS initialization */ | 352 | /* WSS initialization */ |
407 | if (snd_cs423x_pnp_init_wss(dev, acard->wss, cfg) < 0) | 353 | if (snd_cs423x_pnp_init_wss(dev, acard->wss) < 0) |
408 | goto error; | 354 | return -EBUSY; |
409 | 355 | ||
410 | /* CTRL initialization */ | 356 | /* CTRL initialization */ |
411 | if (acard->ctrl && cport[dev] > 0) { | 357 | if (acard->ctrl && cport[dev] > 0) { |
412 | if (snd_cs423x_pnp_init_ctrl(dev, acard->ctrl, cfg) < 0) | 358 | if (snd_cs423x_pnp_init_ctrl(dev, acard->ctrl) < 0) |
413 | goto error; | 359 | return -EBUSY; |
414 | } | 360 | } |
415 | /* MPU initialization */ | 361 | /* MPU initialization */ |
416 | if (acard->mpu && mpu_port[dev] > 0) { | 362 | if (acard->mpu && mpu_port[dev] > 0) { |
417 | if (snd_cs423x_pnp_init_mpu(dev, acard->mpu, cfg) < 0) | 363 | if (snd_cs423x_pnp_init_mpu(dev, acard->mpu) < 0) |
418 | goto error; | 364 | return -EBUSY; |
419 | } | 365 | } |
420 | kfree(cfg); | ||
421 | return 0; | 366 | return 0; |
422 | |||
423 | error: | ||
424 | kfree(cfg); | ||
425 | return -EBUSY; | ||
426 | } | 367 | } |
427 | #endif /* CONFIG_PNP */ | 368 | #endif /* CONFIG_PNP */ |
428 | 369 | ||
diff --git a/sound/isa/dt019x.c b/sound/isa/dt019x.c index ce57d526f7bc..ab689f948aea 100644 --- a/sound/isa/dt019x.c +++ b/sound/isa/dt019x.c | |||
@@ -56,18 +56,6 @@ module_param_array(id, charp, NULL, 0444); | |||
56 | MODULE_PARM_DESC(id, "ID string for DT-019X based soundcard."); | 56 | MODULE_PARM_DESC(id, "ID string for DT-019X based soundcard."); |
57 | module_param_array(enable, bool, NULL, 0444); | 57 | module_param_array(enable, bool, NULL, 0444); |
58 | MODULE_PARM_DESC(enable, "Enable DT-019X based soundcard."); | 58 | MODULE_PARM_DESC(enable, "Enable DT-019X based soundcard."); |
59 | module_param_array(port, long, NULL, 0444); | ||
60 | MODULE_PARM_DESC(port, "Port # for dt019x driver."); | ||
61 | module_param_array(mpu_port, long, NULL, 0444); | ||
62 | MODULE_PARM_DESC(mpu_port, "MPU-401 port # for dt019x driver."); | ||
63 | module_param_array(fm_port, long, NULL, 0444); | ||
64 | MODULE_PARM_DESC(fm_port, "FM port # for dt019x driver."); | ||
65 | module_param_array(irq, int, NULL, 0444); | ||
66 | MODULE_PARM_DESC(irq, "IRQ # for dt019x driver."); | ||
67 | module_param_array(mpu_irq, int, NULL, 0444); | ||
68 | MODULE_PARM_DESC(mpu_irq, "MPU-401 IRQ # for dt019x driver."); | ||
69 | module_param_array(dma8, int, NULL, 0444); | ||
70 | MODULE_PARM_DESC(dma8, "8-bit DMA # for dt019x driver."); | ||
71 | 59 | ||
72 | struct snd_card_dt019x { | 60 | struct snd_card_dt019x { |
73 | struct pnp_dev *dev; | 61 | struct pnp_dev *dev; |
@@ -95,36 +83,20 @@ static int __devinit snd_card_dt019x_pnp(int dev, struct snd_card_dt019x *acard, | |||
95 | const struct pnp_card_device_id *pid) | 83 | const struct pnp_card_device_id *pid) |
96 | { | 84 | { |
97 | struct pnp_dev *pdev; | 85 | struct pnp_dev *pdev; |
98 | struct pnp_resource_table * cfg = kmalloc(sizeof(struct pnp_resource_table), GFP_KERNEL); | ||
99 | int err; | 86 | int err; |
100 | 87 | ||
101 | if (!cfg) | ||
102 | return -ENOMEM; | ||
103 | |||
104 | acard->dev = pnp_request_card_device(card, pid->devs[0].id, NULL); | 88 | acard->dev = pnp_request_card_device(card, pid->devs[0].id, NULL); |
105 | if (acard->dev == NULL) { | 89 | if (acard->dev == NULL) |
106 | kfree (cfg); | ||
107 | return -ENODEV; | 90 | return -ENODEV; |
108 | } | 91 | |
109 | acard->devmpu = pnp_request_card_device(card, pid->devs[1].id, NULL); | 92 | acard->devmpu = pnp_request_card_device(card, pid->devs[1].id, NULL); |
110 | acard->devopl = pnp_request_card_device(card, pid->devs[2].id, NULL); | 93 | acard->devopl = pnp_request_card_device(card, pid->devs[2].id, NULL); |
111 | 94 | ||
112 | pdev = acard->dev; | 95 | pdev = acard->dev; |
113 | pnp_init_resource_table(cfg); | ||
114 | |||
115 | if (port[dev] != SNDRV_AUTO_PORT) | ||
116 | pnp_resource_change(&cfg->port_resource[0], port[dev], 16); | ||
117 | if (dma8[dev] != SNDRV_AUTO_DMA) | ||
118 | pnp_resource_change(&cfg->dma_resource[0], dma8[dev], 1); | ||
119 | if (irq[dev] != SNDRV_AUTO_IRQ) | ||
120 | pnp_resource_change(&cfg->irq_resource[0], irq[dev], 1); | ||
121 | 96 | ||
122 | if ((pnp_manual_config_dev(pdev, cfg, 0)) < 0) | ||
123 | snd_printk(KERN_ERR PFX "DT-019X AUDIO the requested resources are invalid, using auto config\n"); | ||
124 | err = pnp_activate_dev(pdev); | 97 | err = pnp_activate_dev(pdev); |
125 | if (err < 0) { | 98 | if (err < 0) { |
126 | snd_printk(KERN_ERR PFX "DT-019X AUDIO pnp configure failure\n"); | 99 | snd_printk(KERN_ERR PFX "DT-019X AUDIO pnp configure failure\n"); |
127 | kfree(cfg); | ||
128 | return err; | 100 | return err; |
129 | } | 101 | } |
130 | 102 | ||
@@ -135,15 +107,7 @@ static int __devinit snd_card_dt019x_pnp(int dev, struct snd_card_dt019x *acard, | |||
135 | port[dev],irq[dev],dma8[dev]); | 107 | port[dev],irq[dev],dma8[dev]); |
136 | 108 | ||
137 | pdev = acard->devmpu; | 109 | pdev = acard->devmpu; |
138 | |||
139 | if (pdev != NULL) { | 110 | if (pdev != NULL) { |
140 | pnp_init_resource_table(cfg); | ||
141 | if (mpu_port[dev] != SNDRV_AUTO_PORT) | ||
142 | pnp_resource_change(&cfg->port_resource[0], mpu_port[dev], 2); | ||
143 | if (mpu_irq[dev] != SNDRV_AUTO_IRQ) | ||
144 | pnp_resource_change(&cfg->irq_resource[0], mpu_irq[dev], 1); | ||
145 | if ((pnp_manual_config_dev(pdev, cfg, 0)) < 0) | ||
146 | snd_printk(KERN_ERR PFX "DT-019X MPU401 the requested resources are invalid, using auto config\n"); | ||
147 | err = pnp_activate_dev(pdev); | 111 | err = pnp_activate_dev(pdev); |
148 | if (err < 0) { | 112 | if (err < 0) { |
149 | pnp_release_card_device(pdev); | 113 | pnp_release_card_device(pdev); |
@@ -162,11 +126,6 @@ static int __devinit snd_card_dt019x_pnp(int dev, struct snd_card_dt019x *acard, | |||
162 | 126 | ||
163 | pdev = acard->devopl; | 127 | pdev = acard->devopl; |
164 | if (pdev != NULL) { | 128 | if (pdev != NULL) { |
165 | pnp_init_resource_table(cfg); | ||
166 | if (fm_port[dev] != SNDRV_AUTO_PORT) | ||
167 | pnp_resource_change(&cfg->port_resource[0], fm_port[dev], 4); | ||
168 | if ((pnp_manual_config_dev(pdev, cfg, 0)) < 0) | ||
169 | snd_printk(KERN_ERR PFX "DT-019X OPL3 the requested resources are invalid, using auto config\n"); | ||
170 | err = pnp_activate_dev(pdev); | 129 | err = pnp_activate_dev(pdev); |
171 | if (err < 0) { | 130 | if (err < 0) { |
172 | pnp_release_card_device(pdev); | 131 | pnp_release_card_device(pdev); |
@@ -181,7 +140,6 @@ static int __devinit snd_card_dt019x_pnp(int dev, struct snd_card_dt019x *acard, | |||
181 | fm_port[dev] = -1; | 140 | fm_port[dev] = -1; |
182 | } | 141 | } |
183 | 142 | ||
184 | kfree(cfg); | ||
185 | return 0; | 143 | return 0; |
186 | } | 144 | } |
187 | 145 | ||
diff --git a/sound/isa/es18xx.c b/sound/isa/es18xx.c index c1af28fd4a1f..5d4f1635ffdd 100644 --- a/sound/isa/es18xx.c +++ b/sound/isa/es18xx.c | |||
@@ -2035,31 +2035,9 @@ static struct pnp_device_id snd_audiodrive_pnpbiosids[] = { | |||
2035 | MODULE_DEVICE_TABLE(pnp, snd_audiodrive_pnpbiosids); | 2035 | MODULE_DEVICE_TABLE(pnp, snd_audiodrive_pnpbiosids); |
2036 | 2036 | ||
2037 | /* PnP main device initialization */ | 2037 | /* PnP main device initialization */ |
2038 | static int __devinit snd_audiodrive_pnp_init_main(int dev, struct pnp_dev *pdev, | 2038 | static int __devinit snd_audiodrive_pnp_init_main(int dev, struct pnp_dev *pdev) |
2039 | struct pnp_resource_table *cfg) | ||
2040 | { | 2039 | { |
2041 | int err; | 2040 | if (pnp_activate_dev(pdev) < 0) { |
2042 | |||
2043 | pnp_init_resource_table(cfg); | ||
2044 | if (port[dev] != SNDRV_AUTO_PORT) | ||
2045 | pnp_resource_change(&cfg->port_resource[0], port[dev], 16); | ||
2046 | if (fm_port[dev] != SNDRV_AUTO_PORT) | ||
2047 | pnp_resource_change(&cfg->port_resource[1], fm_port[dev], 4); | ||
2048 | if (mpu_port[dev] != SNDRV_AUTO_PORT) | ||
2049 | pnp_resource_change(&cfg->port_resource[2], mpu_port[dev], 2); | ||
2050 | if (dma1[dev] != SNDRV_AUTO_DMA) | ||
2051 | pnp_resource_change(&cfg->dma_resource[0], dma1[dev], 1); | ||
2052 | if (dma2[dev] != SNDRV_AUTO_DMA) | ||
2053 | pnp_resource_change(&cfg->dma_resource[1], dma2[dev], 1); | ||
2054 | if (irq[dev] != SNDRV_AUTO_IRQ) | ||
2055 | pnp_resource_change(&cfg->irq_resource[0], irq[dev], 1); | ||
2056 | if (pnp_device_is_isapnp(pdev)) { | ||
2057 | err = pnp_manual_config_dev(pdev, cfg, 0); | ||
2058 | if (err < 0) | ||
2059 | snd_printk(KERN_ERR PFX "PnP manual resources are invalid, using auto config\n"); | ||
2060 | } | ||
2061 | err = pnp_activate_dev(pdev); | ||
2062 | if (err < 0) { | ||
2063 | snd_printk(KERN_ERR PFX "PnP configure failure (out of resources?)\n"); | 2041 | snd_printk(KERN_ERR PFX "PnP configure failure (out of resources?)\n"); |
2064 | return -EBUSY; | 2042 | return -EBUSY; |
2065 | } | 2043 | } |
@@ -2087,16 +2065,9 @@ static int __devinit snd_audiodrive_pnp_init_main(int dev, struct pnp_dev *pdev, | |||
2087 | static int __devinit snd_audiodrive_pnp(int dev, struct snd_audiodrive *acard, | 2065 | static int __devinit snd_audiodrive_pnp(int dev, struct snd_audiodrive *acard, |
2088 | struct pnp_dev *pdev) | 2066 | struct pnp_dev *pdev) |
2089 | { | 2067 | { |
2090 | struct pnp_resource_table * cfg = kmalloc(sizeof(struct pnp_resource_table), GFP_KERNEL); | ||
2091 | |||
2092 | if (!cfg) | ||
2093 | return -ENOMEM; | ||
2094 | acard->dev = pdev; | 2068 | acard->dev = pdev; |
2095 | if (snd_audiodrive_pnp_init_main(dev, acard->dev, cfg) < 0) { | 2069 | if (snd_audiodrive_pnp_init_main(dev, acard->dev) < 0) |
2096 | kfree(cfg); | ||
2097 | return -EBUSY; | 2070 | return -EBUSY; |
2098 | } | ||
2099 | kfree(cfg); | ||
2100 | return 0; | 2071 | return 0; |
2101 | } | 2072 | } |
2102 | 2073 | ||
@@ -2125,33 +2096,24 @@ static int __devinit snd_audiodrive_pnpc(int dev, struct snd_audiodrive *acard, | |||
2125 | struct pnp_card_link *card, | 2096 | struct pnp_card_link *card, |
2126 | const struct pnp_card_device_id *id) | 2097 | const struct pnp_card_device_id *id) |
2127 | { | 2098 | { |
2128 | struct pnp_resource_table * cfg = kmalloc(sizeof(struct pnp_resource_table), GFP_KERNEL); | ||
2129 | |||
2130 | if (!cfg) | ||
2131 | return -ENOMEM; | ||
2132 | acard->dev = pnp_request_card_device(card, id->devs[0].id, NULL); | 2099 | acard->dev = pnp_request_card_device(card, id->devs[0].id, NULL); |
2133 | if (acard->dev == NULL) { | 2100 | if (acard->dev == NULL) |
2134 | kfree(cfg); | ||
2135 | return -EBUSY; | 2101 | return -EBUSY; |
2136 | } | 2102 | |
2137 | acard->devc = pnp_request_card_device(card, id->devs[1].id, NULL); | 2103 | acard->devc = pnp_request_card_device(card, id->devs[1].id, NULL); |
2138 | if (acard->devc == NULL) { | 2104 | if (acard->devc == NULL) |
2139 | kfree(cfg); | ||
2140 | return -EBUSY; | 2105 | return -EBUSY; |
2141 | } | 2106 | |
2142 | /* Control port initialization */ | 2107 | /* Control port initialization */ |
2143 | if (pnp_activate_dev(acard->devc) < 0) { | 2108 | if (pnp_activate_dev(acard->devc) < 0) { |
2144 | kfree(cfg); | ||
2145 | snd_printk(KERN_ERR PFX "PnP control configure failure (out of resources?)\n"); | 2109 | snd_printk(KERN_ERR PFX "PnP control configure failure (out of resources?)\n"); |
2146 | return -EAGAIN; | 2110 | return -EAGAIN; |
2147 | } | 2111 | } |
2148 | snd_printdd("pnp: port=0x%llx\n", | 2112 | snd_printdd("pnp: port=0x%llx\n", |
2149 | (unsigned long long)pnp_port_start(acard->devc, 0)); | 2113 | (unsigned long long)pnp_port_start(acard->devc, 0)); |
2150 | if (snd_audiodrive_pnp_init_main(dev, acard->dev, cfg) < 0) { | 2114 | if (snd_audiodrive_pnp_init_main(dev, acard->dev) < 0) |
2151 | kfree(cfg); | ||
2152 | return -EBUSY; | 2115 | return -EBUSY; |
2153 | } | 2116 | |
2154 | kfree(cfg); | ||
2155 | return 0; | 2117 | return 0; |
2156 | } | 2118 | } |
2157 | #endif /* CONFIG_PNP */ | 2119 | #endif /* CONFIG_PNP */ |
diff --git a/sound/isa/gus/interwave.c b/sound/isa/gus/interwave.c index 2091c50b2e3e..9381d1e8ad75 100644 --- a/sound/isa/gus/interwave.c +++ b/sound/isa/gus/interwave.c | |||
@@ -560,50 +560,27 @@ static int __devinit snd_interwave_pnp(int dev, struct snd_interwave *iwcard, | |||
560 | const struct pnp_card_device_id *id) | 560 | const struct pnp_card_device_id *id) |
561 | { | 561 | { |
562 | struct pnp_dev *pdev; | 562 | struct pnp_dev *pdev; |
563 | struct pnp_resource_table * cfg = kmalloc(sizeof(struct pnp_resource_table), GFP_KERNEL); | ||
564 | int err; | 563 | int err; |
565 | 564 | ||
566 | if (!cfg) | ||
567 | return -ENOMEM; | ||
568 | iwcard->dev = pnp_request_card_device(card, id->devs[0].id, NULL); | 565 | iwcard->dev = pnp_request_card_device(card, id->devs[0].id, NULL); |
569 | if (iwcard->dev == NULL) { | 566 | if (iwcard->dev == NULL) |
570 | kfree(cfg); | ||
571 | return -EBUSY; | 567 | return -EBUSY; |
572 | } | 568 | |
573 | #ifdef SNDRV_STB | 569 | #ifdef SNDRV_STB |
574 | iwcard->devtc = pnp_request_card_device(card, id->devs[1].id, NULL); | 570 | iwcard->devtc = pnp_request_card_device(card, id->devs[1].id, NULL); |
575 | if (iwcard->devtc == NULL) { | 571 | if (iwcard->devtc == NULL) |
576 | kfree(cfg); | ||
577 | return -EBUSY; | 572 | return -EBUSY; |
578 | } | ||
579 | #endif | 573 | #endif |
580 | /* Synth & Codec initialization */ | 574 | /* Synth & Codec initialization */ |
581 | pdev = iwcard->dev; | 575 | pdev = iwcard->dev; |
582 | pnp_init_resource_table(cfg); | 576 | |
583 | if (port[dev] != SNDRV_AUTO_PORT) { | ||
584 | pnp_resource_change(&cfg->port_resource[0], port[dev], 16); | ||
585 | pnp_resource_change(&cfg->port_resource[1], port[dev] + 0x100, 12); | ||
586 | pnp_resource_change(&cfg->port_resource[2], port[dev] + 0x10c, 4); | ||
587 | } | ||
588 | if (dma1[dev] != SNDRV_AUTO_DMA) | ||
589 | pnp_resource_change(&cfg->dma_resource[0], dma1[dev], 1); | ||
590 | if (dma2[dev] != SNDRV_AUTO_DMA) | ||
591 | pnp_resource_change(&cfg->dma_resource[1], dma2[dev], 1); | ||
592 | if (dma2[dev] < 0) | ||
593 | pnp_resource_change(&cfg->dma_resource[1], 4, 1); | ||
594 | if (irq[dev] != SNDRV_AUTO_IRQ) | ||
595 | pnp_resource_change(&cfg->irq_resource[0], irq[dev], 1); | ||
596 | if (pnp_manual_config_dev(pdev, cfg, 0) < 0) | ||
597 | snd_printk(KERN_ERR "InterWave - Synth - the requested resources are invalid, using auto config\n"); | ||
598 | err = pnp_activate_dev(pdev); | 577 | err = pnp_activate_dev(pdev); |
599 | if (err < 0) { | 578 | if (err < 0) { |
600 | kfree(cfg); | ||
601 | snd_printk(KERN_ERR "InterWave PnP configure failure (out of resources?)\n"); | 579 | snd_printk(KERN_ERR "InterWave PnP configure failure (out of resources?)\n"); |
602 | return err; | 580 | return err; |
603 | } | 581 | } |
604 | if (pnp_port_start(pdev, 0) + 0x100 != pnp_port_start(pdev, 1) || | 582 | if (pnp_port_start(pdev, 0) + 0x100 != pnp_port_start(pdev, 1) || |
605 | pnp_port_start(pdev, 0) + 0x10c != pnp_port_start(pdev, 2)) { | 583 | pnp_port_start(pdev, 0) + 0x10c != pnp_port_start(pdev, 2)) { |
606 | kfree(cfg); | ||
607 | snd_printk(KERN_ERR "PnP configure failure (wrong ports)\n"); | 584 | snd_printk(KERN_ERR "PnP configure failure (wrong ports)\n"); |
608 | return -ENOENT; | 585 | return -ENOENT; |
609 | } | 586 | } |
@@ -620,21 +597,15 @@ static int __devinit snd_interwave_pnp(int dev, struct snd_interwave *iwcard, | |||
620 | #ifdef SNDRV_STB | 597 | #ifdef SNDRV_STB |
621 | /* Tone Control initialization */ | 598 | /* Tone Control initialization */ |
622 | pdev = iwcard->devtc; | 599 | pdev = iwcard->devtc; |
623 | pnp_init_resource_table(cfg); | 600 | |
624 | if (port_tc[dev] != SNDRV_AUTO_PORT) | ||
625 | pnp_resource_change(&cfg->port_resource[0], port_tc[dev], 1); | ||
626 | if (pnp_manual_config_dev(pdev, cfg, 0) < 0) | ||
627 | snd_printk(KERN_ERR "InterWave - ToneControl - the requested resources are invalid, using auto config\n"); | ||
628 | err = pnp_activate_dev(pdev); | 601 | err = pnp_activate_dev(pdev); |
629 | if (err < 0) { | 602 | if (err < 0) { |
630 | kfree(cfg); | ||
631 | snd_printk(KERN_ERR "InterWave ToneControl PnP configure failure (out of resources?)\n"); | 603 | snd_printk(KERN_ERR "InterWave ToneControl PnP configure failure (out of resources?)\n"); |
632 | return err; | 604 | return err; |
633 | } | 605 | } |
634 | port_tc[dev] = pnp_port_start(pdev, 0); | 606 | port_tc[dev] = pnp_port_start(pdev, 0); |
635 | snd_printdd("isapnp IW: tone control port=0x%lx\n", port_tc[dev]); | 607 | snd_printdd("isapnp IW: tone control port=0x%lx\n", port_tc[dev]); |
636 | #endif | 608 | #endif |
637 | kfree(cfg); | ||
638 | return 0; | 609 | return 0; |
639 | } | 610 | } |
640 | #endif /* CONFIG_PNP */ | 611 | #endif /* CONFIG_PNP */ |
diff --git a/sound/isa/opl3sa2.c b/sound/isa/opl3sa2.c index 59af9ab7191f..125f6994bfb1 100644 --- a/sound/isa/opl3sa2.c +++ b/sound/isa/opl3sa2.c | |||
@@ -610,39 +610,8 @@ static int snd_opl3sa2_resume(struct snd_card *card) | |||
610 | static int __devinit snd_opl3sa2_pnp(int dev, struct snd_opl3sa2 *chip, | 610 | static int __devinit snd_opl3sa2_pnp(int dev, struct snd_opl3sa2 *chip, |
611 | struct pnp_dev *pdev) | 611 | struct pnp_dev *pdev) |
612 | { | 612 | { |
613 | struct pnp_resource_table * cfg; | 613 | if (pnp_activate_dev(pdev) < 0) { |
614 | int err; | 614 | snd_printk(KERN_ERR "PnP configure failure (out of resources?)\n"); |
615 | |||
616 | cfg = kmalloc(sizeof(struct pnp_resource_table), GFP_KERNEL); | ||
617 | if (!cfg) { | ||
618 | snd_printk(KERN_ERR PFX "cannot allocate pnp cfg\n"); | ||
619 | return -ENOMEM; | ||
620 | } | ||
621 | /* PnP initialization */ | ||
622 | pnp_init_resource_table(cfg); | ||
623 | if (sb_port[dev] != SNDRV_AUTO_PORT) | ||
624 | pnp_resource_change(&cfg->port_resource[0], sb_port[dev], 16); | ||
625 | if (wss_port[dev] != SNDRV_AUTO_PORT) | ||
626 | pnp_resource_change(&cfg->port_resource[1], wss_port[dev], 8); | ||
627 | if (fm_port[dev] != SNDRV_AUTO_PORT) | ||
628 | pnp_resource_change(&cfg->port_resource[2], fm_port[dev], 4); | ||
629 | if (midi_port[dev] != SNDRV_AUTO_PORT) | ||
630 | pnp_resource_change(&cfg->port_resource[3], midi_port[dev], 2); | ||
631 | if (port[dev] != SNDRV_AUTO_PORT) | ||
632 | pnp_resource_change(&cfg->port_resource[4], port[dev], 2); | ||
633 | if (dma1[dev] != SNDRV_AUTO_DMA) | ||
634 | pnp_resource_change(&cfg->dma_resource[0], dma1[dev], 1); | ||
635 | if (dma2[dev] != SNDRV_AUTO_DMA) | ||
636 | pnp_resource_change(&cfg->dma_resource[1], dma2[dev], 1); | ||
637 | if (irq[dev] != SNDRV_AUTO_IRQ) | ||
638 | pnp_resource_change(&cfg->irq_resource[0], irq[dev], 1); | ||
639 | err = pnp_manual_config_dev(pdev, cfg, 0); | ||
640 | if (err < 0) | ||
641 | snd_printk(KERN_WARNING "PnP manual resources are invalid, using auto config\n"); | ||
642 | err = pnp_activate_dev(pdev); | ||
643 | if (err < 0) { | ||
644 | kfree(cfg); | ||
645 | snd_printk(KERN_ERR "PnP configure failure (out of resources?) err = %d\n", err); | ||
646 | return -EBUSY; | 615 | return -EBUSY; |
647 | } | 616 | } |
648 | sb_port[dev] = pnp_port_start(pdev, 0); | 617 | sb_port[dev] = pnp_port_start(pdev, 0); |
@@ -657,7 +626,6 @@ static int __devinit snd_opl3sa2_pnp(int dev, struct snd_opl3sa2 *chip, | |||
657 | pnp_device_is_pnpbios(pdev) ? "BIOS" : "ISA", sb_port[dev], wss_port[dev], fm_port[dev], midi_port[dev]); | 626 | pnp_device_is_pnpbios(pdev) ? "BIOS" : "ISA", sb_port[dev], wss_port[dev], fm_port[dev], midi_port[dev]); |
658 | snd_printdd("%sPnP OPL3-SA: control port=0x%lx, dma1=%i, dma2=%i, irq=%i\n", | 627 | snd_printdd("%sPnP OPL3-SA: control port=0x%lx, dma1=%i, dma2=%i, irq=%i\n", |
659 | pnp_device_is_pnpbios(pdev) ? "BIOS" : "ISA", port[dev], dma1[dev], dma2[dev], irq[dev]); | 628 | pnp_device_is_pnpbios(pdev) ? "BIOS" : "ISA", port[dev], dma1[dev], dma2[dev], irq[dev]); |
660 | kfree(cfg); | ||
661 | return 0; | 629 | return 0; |
662 | } | 630 | } |
663 | #endif /* CONFIG_PNP */ | 631 | #endif /* CONFIG_PNP */ |
diff --git a/sound/isa/opti9xx/opti92x-ad1848.c b/sound/isa/opti9xx/opti92x-ad1848.c index ee1a824d8fc0..9300cf371ee8 100644 --- a/sound/isa/opti9xx/opti92x-ad1848.c +++ b/sound/isa/opti9xx/opti92x-ad1848.c | |||
@@ -1690,53 +1690,19 @@ static int __devinit snd_card_opti9xx_pnp(struct snd_opti9xx *chip, | |||
1690 | const struct pnp_card_device_id *pid) | 1690 | const struct pnp_card_device_id *pid) |
1691 | { | 1691 | { |
1692 | struct pnp_dev *pdev; | 1692 | struct pnp_dev *pdev; |
1693 | struct pnp_resource_table *cfg = kmalloc(sizeof(*cfg), GFP_KERNEL); | ||
1694 | int err; | 1693 | int err; |
1695 | 1694 | ||
1696 | if (!cfg) | ||
1697 | return -ENOMEM; | ||
1698 | chip->dev = pnp_request_card_device(card, pid->devs[0].id, NULL); | 1695 | chip->dev = pnp_request_card_device(card, pid->devs[0].id, NULL); |
1699 | if (chip->dev == NULL) { | 1696 | if (chip->dev == NULL) |
1700 | kfree(cfg); | ||
1701 | return -EBUSY; | 1697 | return -EBUSY; |
1702 | } | 1698 | |
1703 | chip->devmpu = pnp_request_card_device(card, pid->devs[1].id, NULL); | 1699 | chip->devmpu = pnp_request_card_device(card, pid->devs[1].id, NULL); |
1704 | 1700 | ||
1705 | pdev = chip->dev; | 1701 | pdev = chip->dev; |
1706 | pnp_init_resource_table(cfg); | ||
1707 | 1702 | ||
1708 | #ifdef OPTi93X | ||
1709 | if (port != SNDRV_AUTO_PORT) | ||
1710 | pnp_resource_change(&cfg->port_resource[0], port + 4, 4); | ||
1711 | #else | ||
1712 | if (pid->driver_data != 0x0924 && port != SNDRV_AUTO_PORT) | ||
1713 | pnp_resource_change(&cfg->port_resource[1], port, 4); | ||
1714 | #endif /* OPTi93X */ | ||
1715 | if (irq != SNDRV_AUTO_IRQ) | ||
1716 | pnp_resource_change(&cfg->irq_resource[0], irq, 1); | ||
1717 | if (dma1 != SNDRV_AUTO_DMA) | ||
1718 | pnp_resource_change(&cfg->dma_resource[0], dma1, 1); | ||
1719 | #if defined(CS4231) || defined(OPTi93X) | ||
1720 | if (dma2 != SNDRV_AUTO_DMA) | ||
1721 | pnp_resource_change(&cfg->dma_resource[1], dma2, 1); | ||
1722 | #else | ||
1723 | #ifdef snd_opti9xx_fixup_dma2 | ||
1724 | snd_opti9xx_fixup_dma2(pdev); | ||
1725 | #endif | ||
1726 | #endif /* CS4231 || OPTi93X */ | ||
1727 | #ifdef OPTi93X | ||
1728 | if (fm_port > 0 && fm_port != SNDRV_AUTO_PORT) | ||
1729 | pnp_resource_change(&cfg->port_resource[1], fm_port, 4); | ||
1730 | #else | ||
1731 | if (fm_port > 0 && fm_port != SNDRV_AUTO_PORT) | ||
1732 | pnp_resource_change(&cfg->port_resource[2], fm_port, 4); | ||
1733 | #endif | ||
1734 | if (pnp_manual_config_dev(pdev, cfg, 0) < 0) | ||
1735 | snd_printk(KERN_ERR "AUDIO the requested resources are invalid, using auto config\n"); | ||
1736 | err = pnp_activate_dev(pdev); | 1703 | err = pnp_activate_dev(pdev); |
1737 | if (err < 0) { | 1704 | if (err < 0) { |
1738 | snd_printk(KERN_ERR "AUDIO pnp configure failure: %d\n", err); | 1705 | snd_printk(KERN_ERR "AUDIO pnp configure failure: %d\n", err); |
1739 | kfree(cfg); | ||
1740 | return err; | 1706 | return err; |
1741 | } | 1707 | } |
1742 | 1708 | ||
@@ -1756,15 +1722,6 @@ static int __devinit snd_card_opti9xx_pnp(struct snd_opti9xx *chip, | |||
1756 | 1722 | ||
1757 | pdev = chip->devmpu; | 1723 | pdev = chip->devmpu; |
1758 | if (pdev && mpu_port > 0) { | 1724 | if (pdev && mpu_port > 0) { |
1759 | pnp_init_resource_table(cfg); | ||
1760 | |||
1761 | if (mpu_port != SNDRV_AUTO_PORT) | ||
1762 | pnp_resource_change(&cfg->port_resource[0], mpu_port, 2); | ||
1763 | if (mpu_irq != SNDRV_AUTO_IRQ) | ||
1764 | pnp_resource_change(&cfg->irq_resource[0], mpu_irq, 1); | ||
1765 | |||
1766 | if (pnp_manual_config_dev(pdev, cfg, 0) < 0) | ||
1767 | snd_printk(KERN_ERR "AUDIO the requested resources are invalid, using auto config\n"); | ||
1768 | err = pnp_activate_dev(pdev); | 1725 | err = pnp_activate_dev(pdev); |
1769 | if (err < 0) { | 1726 | if (err < 0) { |
1770 | snd_printk(KERN_ERR "AUDIO pnp configure failure\n"); | 1727 | snd_printk(KERN_ERR "AUDIO pnp configure failure\n"); |
@@ -1775,7 +1732,6 @@ static int __devinit snd_card_opti9xx_pnp(struct snd_opti9xx *chip, | |||
1775 | mpu_irq = pnp_irq(pdev, 0); | 1732 | mpu_irq = pnp_irq(pdev, 0); |
1776 | } | 1733 | } |
1777 | } | 1734 | } |
1778 | kfree(cfg); | ||
1779 | return pid->driver_data; | 1735 | return pid->driver_data; |
1780 | } | 1736 | } |
1781 | #endif /* CONFIG_PNP */ | 1737 | #endif /* CONFIG_PNP */ |
diff --git a/sound/isa/sb/es968.c b/sound/isa/sb/es968.c index d4b218726ce7..3049692bcc57 100644 --- a/sound/isa/sb/es968.c +++ b/sound/isa/sb/es968.c | |||
@@ -49,12 +49,6 @@ module_param_array(id, charp, NULL, 0444); | |||
49 | MODULE_PARM_DESC(id, "ID string for es968 based soundcard."); | 49 | MODULE_PARM_DESC(id, "ID string for es968 based soundcard."); |
50 | module_param_array(enable, bool, NULL, 0444); | 50 | module_param_array(enable, bool, NULL, 0444); |
51 | MODULE_PARM_DESC(enable, "Enable es968 based soundcard."); | 51 | MODULE_PARM_DESC(enable, "Enable es968 based soundcard."); |
52 | module_param_array(port, long, NULL, 0444); | ||
53 | MODULE_PARM_DESC(port, "Port # for es968 driver."); | ||
54 | module_param_array(irq, int, NULL, 0444); | ||
55 | MODULE_PARM_DESC(irq, "IRQ # for es968 driver."); | ||
56 | module_param_array(dma8, int, NULL, 0444); | ||
57 | MODULE_PARM_DESC(dma8, "8-bit DMA # for es968 driver."); | ||
58 | 52 | ||
59 | struct snd_card_es968 { | 53 | struct snd_card_es968 { |
60 | struct pnp_dev *dev; | 54 | struct pnp_dev *dev; |
@@ -86,40 +80,23 @@ static int __devinit snd_card_es968_pnp(int dev, struct snd_card_es968 *acard, | |||
86 | const struct pnp_card_device_id *id) | 80 | const struct pnp_card_device_id *id) |
87 | { | 81 | { |
88 | struct pnp_dev *pdev; | 82 | struct pnp_dev *pdev; |
89 | struct pnp_resource_table *cfg = kmalloc(sizeof(*cfg), GFP_KERNEL); | ||
90 | int err; | 83 | int err; |
91 | if (!cfg) | 84 | |
92 | return -ENOMEM; | ||
93 | acard->dev = pnp_request_card_device(card, id->devs[0].id, NULL); | 85 | acard->dev = pnp_request_card_device(card, id->devs[0].id, NULL); |
94 | if (acard->dev == NULL) { | 86 | if (acard->dev == NULL) |
95 | kfree(cfg); | ||
96 | return -ENODEV; | 87 | return -ENODEV; |
97 | } | ||
98 | 88 | ||
99 | pdev = acard->dev; | 89 | pdev = acard->dev; |
100 | 90 | ||
101 | pnp_init_resource_table(cfg); | ||
102 | |||
103 | /* override resources */ | ||
104 | if (port[dev] != SNDRV_AUTO_PORT) | ||
105 | pnp_resource_change(&cfg->port_resource[0], port[dev], 16); | ||
106 | if (dma8[dev] != SNDRV_AUTO_DMA) | ||
107 | pnp_resource_change(&cfg->dma_resource[0], dma8[dev], 1); | ||
108 | if (irq[dev] != SNDRV_AUTO_IRQ) | ||
109 | pnp_resource_change(&cfg->irq_resource[0], irq[dev], 1); | ||
110 | if ((pnp_manual_config_dev(pdev, cfg, 0)) < 0) | ||
111 | snd_printk(KERN_ERR PFX "AUDIO the requested resources are invalid, using auto config\n"); | ||
112 | err = pnp_activate_dev(pdev); | 91 | err = pnp_activate_dev(pdev); |
113 | if (err < 0) { | 92 | if (err < 0) { |
114 | snd_printk(KERN_ERR PFX "AUDIO pnp configure failure\n"); | 93 | snd_printk(KERN_ERR PFX "AUDIO pnp configure failure\n"); |
115 | kfree(cfg); | ||
116 | return err; | 94 | return err; |
117 | } | 95 | } |
118 | port[dev] = pnp_port_start(pdev, 0); | 96 | port[dev] = pnp_port_start(pdev, 0); |
119 | dma8[dev] = pnp_dma(pdev, 1); | 97 | dma8[dev] = pnp_dma(pdev, 1); |
120 | irq[dev] = pnp_irq(pdev, 0); | 98 | irq[dev] = pnp_irq(pdev, 0); |
121 | 99 | ||
122 | kfree(cfg); | ||
123 | return 0; | 100 | return 0; |
124 | } | 101 | } |
125 | 102 | ||
diff --git a/sound/isa/sb/sb16.c b/sound/isa/sb/sb16.c index e7f9edd92626..8e1aff77b900 100644 --- a/sound/isa/sb/sb16.c +++ b/sound/isa/sb/sb16.c | |||
@@ -257,44 +257,21 @@ static int __devinit snd_card_sb16_pnp(int dev, struct snd_card_sb16 *acard, | |||
257 | const struct pnp_card_device_id *id) | 257 | const struct pnp_card_device_id *id) |
258 | { | 258 | { |
259 | struct pnp_dev *pdev; | 259 | struct pnp_dev *pdev; |
260 | struct pnp_resource_table * cfg = kmalloc(sizeof(struct pnp_resource_table), GFP_KERNEL); | ||
261 | int err; | 260 | int err; |
262 | 261 | ||
263 | if (!cfg) | ||
264 | return -ENOMEM; | ||
265 | acard->dev = pnp_request_card_device(card, id->devs[0].id, NULL); | 262 | acard->dev = pnp_request_card_device(card, id->devs[0].id, NULL); |
266 | if (acard->dev == NULL) { | 263 | if (acard->dev == NULL) |
267 | kfree(cfg); | ||
268 | return -ENODEV; | 264 | return -ENODEV; |
269 | } | 265 | |
270 | #ifdef SNDRV_SBAWE_EMU8000 | 266 | #ifdef SNDRV_SBAWE_EMU8000 |
271 | acard->devwt = pnp_request_card_device(card, id->devs[1].id, acard->dev); | 267 | acard->devwt = pnp_request_card_device(card, id->devs[1].id, acard->dev); |
272 | #endif | 268 | #endif |
273 | /* Audio initialization */ | 269 | /* Audio initialization */ |
274 | pdev = acard->dev; | 270 | pdev = acard->dev; |
275 | 271 | ||
276 | pnp_init_resource_table(cfg); | ||
277 | |||
278 | /* override resources */ | ||
279 | |||
280 | if (port[dev] != SNDRV_AUTO_PORT) | ||
281 | pnp_resource_change(&cfg->port_resource[0], port[dev], 16); | ||
282 | if (mpu_port[dev] != SNDRV_AUTO_PORT) | ||
283 | pnp_resource_change(&cfg->port_resource[1], mpu_port[dev], 2); | ||
284 | if (fm_port[dev] != SNDRV_AUTO_PORT) | ||
285 | pnp_resource_change(&cfg->port_resource[2], fm_port[dev], 4); | ||
286 | if (dma8[dev] != SNDRV_AUTO_DMA) | ||
287 | pnp_resource_change(&cfg->dma_resource[0], dma8[dev], 1); | ||
288 | if (dma16[dev] != SNDRV_AUTO_DMA) | ||
289 | pnp_resource_change(&cfg->dma_resource[1], dma16[dev], 1); | ||
290 | if (irq[dev] != SNDRV_AUTO_IRQ) | ||
291 | pnp_resource_change(&cfg->irq_resource[0], irq[dev], 1); | ||
292 | if (pnp_manual_config_dev(pdev, cfg, 0) < 0) | ||
293 | snd_printk(KERN_ERR PFX "AUDIO the requested resources are invalid, using auto config\n"); | ||
294 | err = pnp_activate_dev(pdev); | 272 | err = pnp_activate_dev(pdev); |
295 | if (err < 0) { | 273 | if (err < 0) { |
296 | snd_printk(KERN_ERR PFX "AUDIO pnp configure failure\n"); | 274 | snd_printk(KERN_ERR PFX "AUDIO pnp configure failure\n"); |
297 | kfree(cfg); | ||
298 | return err; | 275 | return err; |
299 | } | 276 | } |
300 | port[dev] = pnp_port_start(pdev, 0); | 277 | port[dev] = pnp_port_start(pdev, 0); |
@@ -311,17 +288,6 @@ static int __devinit snd_card_sb16_pnp(int dev, struct snd_card_sb16 *acard, | |||
311 | /* WaveTable initialization */ | 288 | /* WaveTable initialization */ |
312 | pdev = acard->devwt; | 289 | pdev = acard->devwt; |
313 | if (pdev != NULL) { | 290 | if (pdev != NULL) { |
314 | pnp_init_resource_table(cfg); | ||
315 | |||
316 | /* override resources */ | ||
317 | |||
318 | if (awe_port[dev] != SNDRV_AUTO_PORT) { | ||
319 | pnp_resource_change(&cfg->port_resource[0], awe_port[dev], 4); | ||
320 | pnp_resource_change(&cfg->port_resource[1], awe_port[dev] + 0x400, 4); | ||
321 | pnp_resource_change(&cfg->port_resource[2], awe_port[dev] + 0x800, 4); | ||
322 | } | ||
323 | if ((pnp_manual_config_dev(pdev, cfg, 0)) < 0) | ||
324 | snd_printk(KERN_ERR PFX "WaveTable the requested resources are invalid, using auto config\n"); | ||
325 | err = pnp_activate_dev(pdev); | 291 | err = pnp_activate_dev(pdev); |
326 | if (err < 0) { | 292 | if (err < 0) { |
327 | goto __wt_error; | 293 | goto __wt_error; |
@@ -339,7 +305,6 @@ __wt_error: | |||
339 | awe_port[dev] = -1; | 305 | awe_port[dev] = -1; |
340 | } | 306 | } |
341 | #endif | 307 | #endif |
342 | kfree(cfg); | ||
343 | return 0; | 308 | return 0; |
344 | } | 309 | } |
345 | 310 | ||
diff --git a/sound/isa/wavefront/wavefront.c b/sound/isa/wavefront/wavefront.c index 83c2fc4cfc64..15c604653428 100644 --- a/sound/isa/wavefront/wavefront.c +++ b/sound/isa/wavefront/wavefront.c | |||
@@ -104,21 +104,15 @@ snd_wavefront_pnp (int dev, snd_wavefront_card_t *acard, struct pnp_card_link *c | |||
104 | const struct pnp_card_device_id *id) | 104 | const struct pnp_card_device_id *id) |
105 | { | 105 | { |
106 | struct pnp_dev *pdev; | 106 | struct pnp_dev *pdev; |
107 | struct pnp_resource_table *cfg = kmalloc(sizeof(*cfg), GFP_KERNEL); | ||
108 | int err; | 107 | int err; |
109 | 108 | ||
110 | if (!cfg) | ||
111 | return -ENOMEM; | ||
112 | |||
113 | /* Check for each logical device. */ | 109 | /* Check for each logical device. */ |
114 | 110 | ||
115 | /* CS4232 chip (aka "windows sound system") is logical device 0 */ | 111 | /* CS4232 chip (aka "windows sound system") is logical device 0 */ |
116 | 112 | ||
117 | acard->wss = pnp_request_card_device(card, id->devs[0].id, NULL); | 113 | acard->wss = pnp_request_card_device(card, id->devs[0].id, NULL); |
118 | if (acard->wss == NULL) { | 114 | if (acard->wss == NULL) |
119 | kfree(cfg); | ||
120 | return -EBUSY; | 115 | return -EBUSY; |
121 | } | ||
122 | 116 | ||
123 | /* there is a game port at logical device 1, but we ignore it completely */ | 117 | /* there is a game port at logical device 1, but we ignore it completely */ |
124 | 118 | ||
@@ -133,26 +127,20 @@ snd_wavefront_pnp (int dev, snd_wavefront_card_t *acard, struct pnp_card_link *c | |||
133 | 127 | ||
134 | if (use_cs4232_midi[dev]) { | 128 | if (use_cs4232_midi[dev]) { |
135 | acard->mpu = pnp_request_card_device(card, id->devs[2].id, NULL); | 129 | acard->mpu = pnp_request_card_device(card, id->devs[2].id, NULL); |
136 | if (acard->mpu == NULL) { | 130 | if (acard->mpu == NULL) |
137 | kfree(cfg); | ||
138 | return -EBUSY; | 131 | return -EBUSY; |
139 | } | ||
140 | } | 132 | } |
141 | 133 | ||
142 | /* The ICS2115 synth is logical device 4 */ | 134 | /* The ICS2115 synth is logical device 4 */ |
143 | 135 | ||
144 | acard->synth = pnp_request_card_device(card, id->devs[3].id, NULL); | 136 | acard->synth = pnp_request_card_device(card, id->devs[3].id, NULL); |
145 | if (acard->synth == NULL) { | 137 | if (acard->synth == NULL) |
146 | kfree(cfg); | ||
147 | return -EBUSY; | 138 | return -EBUSY; |
148 | } | ||
149 | 139 | ||
150 | /* PCM/FM initialization */ | 140 | /* PCM/FM initialization */ |
151 | 141 | ||
152 | pdev = acard->wss; | 142 | pdev = acard->wss; |
153 | 143 | ||
154 | pnp_init_resource_table(cfg); | ||
155 | |||
156 | /* An interesting note from the Tropez+ FAQ: | 144 | /* An interesting note from the Tropez+ FAQ: |
157 | 145 | ||
158 | Q. [Ports] Why is the base address of the WSS I/O ports off by 4? | 146 | Q. [Ports] Why is the base address of the WSS I/O ports off by 4? |
@@ -165,23 +153,9 @@ snd_wavefront_pnp (int dev, snd_wavefront_card_t *acard, struct pnp_card_link *c | |||
165 | 153 | ||
166 | */ | 154 | */ |
167 | 155 | ||
168 | if (cs4232_pcm_port[dev] != SNDRV_AUTO_PORT) | ||
169 | pnp_resource_change(&cfg->port_resource[0], cs4232_pcm_port[dev], 4); | ||
170 | if (fm_port[dev] != SNDRV_AUTO_PORT) | ||
171 | pnp_resource_change(&cfg->port_resource[1], fm_port[dev], 4); | ||
172 | if (dma1[dev] != SNDRV_AUTO_DMA) | ||
173 | pnp_resource_change(&cfg->dma_resource[0], dma1[dev], 1); | ||
174 | if (dma2[dev] != SNDRV_AUTO_DMA) | ||
175 | pnp_resource_change(&cfg->dma_resource[1], dma2[dev], 1); | ||
176 | if (cs4232_pcm_irq[dev] != SNDRV_AUTO_IRQ) | ||
177 | pnp_resource_change(&cfg->irq_resource[0], cs4232_pcm_irq[dev], 1); | ||
178 | |||
179 | if (pnp_manual_config_dev(pdev, cfg, 0) < 0) | ||
180 | snd_printk(KERN_ERR "PnP WSS the requested resources are invalid, using auto config\n"); | ||
181 | err = pnp_activate_dev(pdev); | 156 | err = pnp_activate_dev(pdev); |
182 | if (err < 0) { | 157 | if (err < 0) { |
183 | snd_printk(KERN_ERR "PnP WSS pnp configure failure\n"); | 158 | snd_printk(KERN_ERR "PnP WSS pnp configure failure\n"); |
184 | kfree(cfg); | ||
185 | return err; | 159 | return err; |
186 | } | 160 | } |
187 | 161 | ||
@@ -195,22 +169,9 @@ snd_wavefront_pnp (int dev, snd_wavefront_card_t *acard, struct pnp_card_link *c | |||
195 | 169 | ||
196 | pdev = acard->synth; | 170 | pdev = acard->synth; |
197 | 171 | ||
198 | pnp_init_resource_table(cfg); | ||
199 | |||
200 | if (ics2115_port[dev] != SNDRV_AUTO_PORT) { | ||
201 | pnp_resource_change(&cfg->port_resource[0], ics2115_port[dev], 16); | ||
202 | } | ||
203 | |||
204 | if (ics2115_port[dev] != SNDRV_AUTO_IRQ) { | ||
205 | pnp_resource_change(&cfg->irq_resource[0], ics2115_irq[dev], 1); | ||
206 | } | ||
207 | |||
208 | if (pnp_manual_config_dev(pdev, cfg, 0) < 0) | ||
209 | snd_printk(KERN_ERR "PnP ICS2115 the requested resources are invalid, using auto config\n"); | ||
210 | err = pnp_activate_dev(pdev); | 172 | err = pnp_activate_dev(pdev); |
211 | if (err < 0) { | 173 | if (err < 0) { |
212 | snd_printk(KERN_ERR "PnP ICS2115 pnp configure failure\n"); | 174 | snd_printk(KERN_ERR "PnP ICS2115 pnp configure failure\n"); |
213 | kfree(cfg); | ||
214 | return err; | 175 | return err; |
215 | } | 176 | } |
216 | 177 | ||
@@ -226,15 +187,6 @@ snd_wavefront_pnp (int dev, snd_wavefront_card_t *acard, struct pnp_card_link *c | |||
226 | 187 | ||
227 | pdev = acard->mpu; | 188 | pdev = acard->mpu; |
228 | 189 | ||
229 | pnp_init_resource_table(cfg); | ||
230 | |||
231 | if (cs4232_mpu_port[dev] != SNDRV_AUTO_PORT) | ||
232 | pnp_resource_change(&cfg->port_resource[0], cs4232_mpu_port[dev], 2); | ||
233 | if (cs4232_mpu_irq[dev] != SNDRV_AUTO_IRQ) | ||
234 | pnp_resource_change(&cfg->port_resource[0], cs4232_mpu_irq[dev], 1); | ||
235 | |||
236 | if (pnp_manual_config_dev(pdev, cfg, 0) < 0) | ||
237 | snd_printk(KERN_ERR "PnP MPU401 the requested resources are invalid, using auto config\n"); | ||
238 | err = pnp_activate_dev(pdev); | 190 | err = pnp_activate_dev(pdev); |
239 | if (err < 0) { | 191 | if (err < 0) { |
240 | snd_printk(KERN_ERR "PnP MPU401 pnp configure failure\n"); | 192 | snd_printk(KERN_ERR "PnP MPU401 pnp configure failure\n"); |
@@ -258,7 +210,6 @@ snd_wavefront_pnp (int dev, snd_wavefront_card_t *acard, struct pnp_card_link *c | |||
258 | ics2115_port[dev], | 210 | ics2115_port[dev], |
259 | ics2115_irq[dev]); | 211 | ics2115_irq[dev]); |
260 | 212 | ||
261 | kfree(cfg); | ||
262 | return 0; | 213 | return 0; |
263 | } | 214 | } |
264 | 215 | ||