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