aboutsummaryrefslogtreecommitdiffstats
path: root/sound/isa/sb/sb16.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/isa/sb/sb16.c')
-rw-r--r--sound/isa/sb/sb16.c39
1 files changed, 2 insertions, 37 deletions
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