|
@@ -903,22 +903,22 @@ int saa7134_dsp_create(struct saa7134_dev *dev)
|
|
|
{
|
|
|
int err;
|
|
|
|
|
|
- err = dev->dmasound.minor_dsp =
|
|
|
- register_sound_dsp(&saa7134_dsp_fops,
|
|
|
- dsp_nr[dev->nr]);
|
|
|
- if (err < 0) {
|
|
|
- goto fail;
|
|
|
- }
|
|
|
- printk(KERN_INFO "%s: registered device dsp%d\n",
|
|
|
- dev->name,dev->dmasound.minor_dsp >> 4);
|
|
|
-
|
|
|
- err = dev->dmasound.minor_mixer =
|
|
|
- register_sound_mixer(&saa7134_mixer_fops,
|
|
|
- mixer_nr[dev->nr]);
|
|
|
- if (err < 0)
|
|
|
- goto fail;
|
|
|
- printk(KERN_INFO "%s: registered device mixer%d\n",
|
|
|
- dev->name,dev->dmasound.minor_mixer >> 4);
|
|
|
+ err = dev->dmasound.minor_dsp =
|
|
|
+ register_sound_dsp(&saa7134_dsp_fops,
|
|
|
+ dsp_nr[dev->nr]);
|
|
|
+ if (err < 0) {
|
|
|
+ goto fail;
|
|
|
+ }
|
|
|
+ printk(KERN_INFO "%s: registered device dsp%d\n",
|
|
|
+ dev->name,dev->dmasound.minor_dsp >> 4);
|
|
|
+
|
|
|
+ err = dev->dmasound.minor_mixer =
|
|
|
+ register_sound_mixer(&saa7134_mixer_fops,
|
|
|
+ mixer_nr[dev->nr]);
|
|
|
+ if (err < 0)
|
|
|
+ goto fail;
|
|
|
+ printk(KERN_INFO "%s: registered device mixer%d\n",
|
|
|
+ dev->name,dev->dmasound.minor_mixer >> 4);
|
|
|
|
|
|
return 0;
|
|
|
|
|
@@ -929,6 +929,31 @@ fail:
|
|
|
|
|
|
}
|
|
|
|
|
|
+static int oss_device_init(struct saa7134_dev *dev)
|
|
|
+{
|
|
|
+ dev->dmasound.priv_data = dev;
|
|
|
+ saa7134_oss_init1(dev);
|
|
|
+ saa7134_dsp_create(dev);
|
|
|
+ return 1;
|
|
|
+}
|
|
|
+
|
|
|
+static int oss_device_exit(struct saa7134_dev *dev)
|
|
|
+{
|
|
|
+
|
|
|
+ unregister_sound_mixer(dev->dmasound.minor_mixer);
|
|
|
+ unregister_sound_dsp(dev->dmasound.minor_dsp);
|
|
|
+
|
|
|
+ saa7134_oss_fini(dev);
|
|
|
+
|
|
|
+ if (dev->pci->irq > 0) {
|
|
|
+ synchronize_irq(dev->pci->irq);
|
|
|
+ free_irq(dev->pci->irq,&dev->dmasound);
|
|
|
+ }
|
|
|
+
|
|
|
+ dev->dmasound.priv_data = NULL;
|
|
|
+ return 1;
|
|
|
+}
|
|
|
+
|
|
|
static int saa7134_oss_init(void)
|
|
|
{
|
|
|
struct saa7134_dev *dev = NULL;
|
|
@@ -939,9 +964,7 @@ static int saa7134_oss_init(void)
|
|
|
list_for_each(list,&saa7134_devlist) {
|
|
|
dev = list_entry(list, struct saa7134_dev, devlist);
|
|
|
if (dev->dmasound.priv_data == NULL) {
|
|
|
- dev->dmasound.priv_data = dev;
|
|
|
- saa7134_oss_init1(dev);
|
|
|
- saa7134_dsp_create(dev);
|
|
|
+ oss_device_init(dev);
|
|
|
} else {
|
|
|
printk(KERN_ERR "saa7134 OSS: DMA sound is being handled by ALSA, ignoring %s\n",dev->name);
|
|
|
return -EBUSY;
|
|
@@ -951,6 +974,9 @@ static int saa7134_oss_init(void)
|
|
|
if (dev == NULL)
|
|
|
printk(KERN_INFO "saa7134 OSS: no saa7134 cards found\n");
|
|
|
|
|
|
+ dmasound_init = oss_device_init;
|
|
|
+ dmasound_exit = oss_device_exit;
|
|
|
+
|
|
|
return 0;
|
|
|
|
|
|
}
|
|
@@ -967,18 +993,7 @@ void saa7134_oss_exit(void)
|
|
|
if (!dev->dmasound.minor_dsp)
|
|
|
continue;
|
|
|
|
|
|
- unregister_sound_mixer(dev->dmasound.minor_mixer);
|
|
|
- unregister_sound_dsp(dev->dmasound.minor_dsp);
|
|
|
-
|
|
|
- saa7134_oss_fini(dev);
|
|
|
-
|
|
|
- if (dev->pci->irq > 0) {
|
|
|
- synchronize_irq(dev->pci->irq);
|
|
|
- free_irq(dev->pci->irq,&dev->dmasound);
|
|
|
- }
|
|
|
-
|
|
|
- dev->dmasound.priv_data = NULL;
|
|
|
-
|
|
|
+ oss_device_exit(dev);
|
|
|
}
|
|
|
|
|
|
printk(KERN_INFO "saa7134 OSS driver for DMA sound unloaded\n");
|