aboutsummaryrefslogtreecommitdiffstats
path: root/sound/isa/cmi8330.c
diff options
context:
space:
mode:
authorRene Herman <rene.herman@gmail.com>2007-11-30 11:59:25 -0500
committerJaroslav Kysela <perex@perex.cz>2008-01-31 11:29:30 -0500
commit109c53f840e551d6e99ecfd8b0131a968332c89f (patch)
tree212af8d6ebb3303a21dd44b032fd5949fdc37607 /sound/isa/cmi8330.c
parentdf1deb67532ea26f1a033a5f48bf34b30bec8e1d (diff)
[ALSA] sound/isa: kill pnp_resource_change
This removes the pnp_resource_change use from the ALSA ISAPnP drivers. In 2.4 these were useful in providing an easy path to setting the resources, but in 2.6 they retain function as a layering violation only. This makes for a nice cleanup (-550 lines) of ALSA but moreover, ALSA is the only remaining user of pnp_init_resource_table(), pnp_resource_change() and pnp_manual_config_dev() (and, in fact, of 'struct pnp_resource_table') in the tree outide of drivers/pnp itself meaning it makes for more cleanup potential inside the PnP layer. Thomas Renninger acked their removal from that side, you did from the ALSA side (CC list just copied from that thread). Against current alsa-kernel HG. Many more potential cleanups in there, but this _only_ removes the pnp_resource_change code. Compile tested against current alsa-kernel HG and compile- and use-tested against 2.6.23.x (few offsets). Cc: Thomas Renninger <trenn@suse.de> Signed-off-by: Rene Herman <rene.herman@gmail.com> Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Diffstat (limited to 'sound/isa/cmi8330.c')
-rw-r--r--sound/isa/cmi8330.c42
1 files changed, 5 insertions, 37 deletions
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