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.c28
1 files changed, 2 insertions, 26 deletions
diff --git a/sound/isa/sb/es968.c b/sound/isa/sb/es968.c
index d4b218726ce7..c8c8e214c843 100644
--- a/sound/isa/sb/es968.c
+++ b/sound/isa/sb/es968.c
@@ -20,7 +20,6 @@
20 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 20 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21*/ 21*/
22 22
23#include <sound/driver.h>
24#include <linux/init.h> 23#include <linux/init.h>
25#include <linux/time.h> 24#include <linux/time.h>
26#include <linux/pnp.h> 25#include <linux/pnp.h>
@@ -49,12 +48,6 @@ module_param_array(id, charp, NULL, 0444);
49MODULE_PARM_DESC(id, "ID string for es968 based soundcard."); 48MODULE_PARM_DESC(id, "ID string for es968 based soundcard.");
50module_param_array(enable, bool, NULL, 0444); 49module_param_array(enable, bool, NULL, 0444);
51MODULE_PARM_DESC(enable, "Enable es968 based soundcard."); 50MODULE_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 51
59struct snd_card_es968 { 52struct snd_card_es968 {
60 struct pnp_dev *dev; 53 struct pnp_dev *dev;
@@ -86,40 +79,23 @@ static int __devinit snd_card_es968_pnp(int dev, struct snd_card_es968 *acard,
86 const struct pnp_card_device_id *id) 79 const struct pnp_card_device_id *id)
87{ 80{
88 struct pnp_dev *pdev; 81 struct pnp_dev *pdev;
89 struct pnp_resource_table *cfg = kmalloc(sizeof(*cfg), GFP_KERNEL);
90 int err; 82 int err;
91 if (!cfg) 83
92 return -ENOMEM;
93 acard->dev = pnp_request_card_device(card, id->devs[0].id, NULL); 84 acard->dev = pnp_request_card_device(card, id->devs[0].id, NULL);
94 if (acard->dev == NULL) { 85 if (acard->dev == NULL)
95 kfree(cfg);
96 return -ENODEV; 86 return -ENODEV;
97 }
98 87
99 pdev = acard->dev; 88 pdev = acard->dev;
100 89
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); 90 err = pnp_activate_dev(pdev);
113 if (err < 0) { 91 if (err < 0) {
114 snd_printk(KERN_ERR PFX "AUDIO pnp configure failure\n"); 92 snd_printk(KERN_ERR PFX "AUDIO pnp configure failure\n");
115 kfree(cfg);
116 return err; 93 return err;
117 } 94 }
118 port[dev] = pnp_port_start(pdev, 0); 95 port[dev] = pnp_port_start(pdev, 0);
119 dma8[dev] = pnp_dma(pdev, 1); 96 dma8[dev] = pnp_dma(pdev, 1);
120 irq[dev] = pnp_irq(pdev, 0); 97 irq[dev] = pnp_irq(pdev, 0);
121 98
122 kfree(cfg);
123 return 0; 99 return 0;
124} 100}
125 101