diff options
author | Rene Herman <rene.herman@gmail.com> | 2007-11-30 11:59:25 -0500 |
---|---|---|
committer | Jaroslav Kysela <perex@perex.cz> | 2008-01-31 11:29:30 -0500 |
commit | 109c53f840e551d6e99ecfd8b0131a968332c89f (patch) | |
tree | 212af8d6ebb3303a21dd44b032fd5949fdc37607 /sound/isa/sb | |
parent | df1deb67532ea26f1a033a5f48bf34b30bec8e1d (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.c | 27 | ||||
-rw-r--r-- | sound/isa/sb/sb16.c | 39 |
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); | |||
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 | ||