aboutsummaryrefslogtreecommitdiffstats
path: root/sound/isa/sb
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/sb
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/sb')
-rw-r--r--sound/isa/sb/es968.c27
-rw-r--r--sound/isa/sb/sb16.c39
2 files changed, 4 insertions, 62 deletions
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);
49MODULE_PARM_DESC(id, "ID string for es968 based soundcard."); 49MODULE_PARM_DESC(id, "ID string for es968 based soundcard.");
50module_param_array(enable, bool, NULL, 0444); 50module_param_array(enable, bool, NULL, 0444);
51MODULE_PARM_DESC(enable, "Enable es968 based soundcard."); 51MODULE_PARM_DESC(enable, "Enable es968 based soundcard.");
52module_param_array(port, long, NULL, 0444);
53MODULE_PARM_DESC(port, "Port # for es968 driver.");
54module_param_array(irq, int, NULL, 0444);
55MODULE_PARM_DESC(irq, "IRQ # for es968 driver.");
56module_param_array(dma8, int, NULL, 0444);
57MODULE_PARM_DESC(dma8, "8-bit DMA # for es968 driver.");
58 52
59struct snd_card_es968 { 53struct 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