Ensoniq SoundScape with 2.3.51 (mpu401 changes broke it)
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 ; }
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 ; }