Skip to contentSkip to conversation

Ensoniq SoundScape with 2.3.51 (mpu401 changes broke it)

PATCH In review Simon Huggins 1 participant 2 messages Mar 12, 2000 – Mar 13, 2000 Sound

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Ensoniq SoundScape with 2.3.51 (mpu401 changes broke it)

Hi,

Your patch to clean up the OSS stuff has broken the Ensoniq SoundScape. Reverting one small portion fixes it.
Can you decide whether you want to wrap this in some magical #ifdef's and send it on to Linus?

BTW, the documentation in Documentation/README.OSS suggests that this card cannot be used with isapnp?
This is not my experience.
See http://www.huggie.dial.pipex.com/linux/sound.shtml for how it Works For Me(TM).

Also since I applied my patch, I get this when I modprobe -r:

[root@byers /usr/src/linux/drivers/sound]# modprobe -r sscape Trying to free nonexistent resource <0000-0001> Sound device 2 went missing!
kmem_free: Either bad obj addr or double free (objp=c61bd000, name=size-4096)

I imagine this is because of the changes too?

Simon.

Signature · 1 line
"Now where did I put that magazine?" Tom asked periodically.                
mpu401.c renamed from mpu401.c.old +6 -10
@@ -1726,18 +1726,14 @@
 {
 	/* Can be loaded either for module use or to provide functions
 	   to others */
-	cfg.irq = irq;
-	cfg.io_base = io;
-	
-	if (cfg.io_base != -1 && cfg.irq != -1) {
-		printk(KERN_WARNING "mpu401: need io and irq !");
-		return -ENODEV;
+	if (io != -1 && irq != -1) {
+	        cfg.irq = irq;
+		cfg.io_base = io;
+		if (probe_mpu401(&cfg) == 0)
+			return -ENODEV;
+		attach_mpu401(&cfg);
 	}
 	
-	if (probe_mpu401(&cfg) == 0)
-		return -ENODEV;
-	attach_mpu401(&cfg);
-
 	SOUND_LOCK;
 	return 0;
 }
#1 lore raw
Quoted 3 lines · Christoph Hellwig
Quoted 2 lines

Can you decide whether you want to wrap this in some magical #ifdef's and send it on to Linus?

You can send it to Linus, the changes seem ok.

This is a better patch. It now unloads cleanly too.

Linus, please apply this to your tree. It fixes mpu401.c for the Ensoniq SoundScape.

Signature · 3 lines
Simon  [ [email protected] ] *\                "Cockroaches!  They're  \**
****** ]-+-+-+-+-+-+-+-+-[ **\            everywhere...uuugghh...I'm  \*
****** [  Htag.pl 0.0.4  ] ***\                 surrounded!" - Mulder  \
mpu401.c renamed from mpu401.c.old +10 -11
@@ -1726,25 +1726,24 @@
 {
 	/* Can be loaded either for module use or to provide functions
 	   to others */
-	cfg.irq = irq;
-	cfg.io_base = io;
-	
-	if (cfg.io_base != -1 && cfg.irq != -1) {
-		printk(KERN_WARNING "mpu401: need io and irq !");
-		return -ENODEV;
+	if (io != -1 && irq != -1) {
+	        cfg.irq = irq;
+		cfg.io_base = io;
+		if (probe_mpu401(&cfg) == 0)
+			return -ENODEV;
+		attach_mpu401(&cfg);
 	}
 	
-	if (probe_mpu401(&cfg) == 0)
-		return -ENODEV;
-	attach_mpu401(&cfg);
-
 	SOUND_LOCK;
 	return 0;
 }
 
 void cleanup_mpu401(void)
 {
-	unload_mpu401(&cfg);
+	if (io != -1 && irq != -1) {
+		/* Check for use by, for example, sscape driver */
+		unload_mpu401(&cfg);
+	}
 	SOUND_LOCK_END;
 }