Ok, I applied your second patch, and get this dmesg output:

drivers/usb/core/usb.c: deregistering driver snd-usb-audio
ALSA /home/mathieu/alsa-driver/usb/usbaudio.c:2944: snd_usb_audio_disconnect called, 
refcount = 1
ALSA /home/mathieu/alsa-driver/usb/usbaudio.c:2944: snd_usb_audio_disconnect called, 
refcount = 0
ALSA /home/mathieu/alsa-driver/alsa-kernel/usb/usbmidi.c:148: urb status -104
ALSA /home/mathieu/alsa-driver/alsa-kernel/usb/usbmidi.c:134: usb_submit_urb: -32

At this point the usb was down not responding anymore, like in the past.

what I did next, is put double each interesting lines printk, what I get is, that the 
rmmod of the driver was hanging on the midi ressources cleaning stuff.
Hum, first reflex: I just comment out those 3 lines =) and guess what.. that works 
fine now. I tried to plug/unplug several times my mouse, the midisport, and everything
works fine, so... I don't really know what was the bug's reason, but as long as that 
works I'm happy ;-)
Probably Takashi Iwai who seems to has coded it should once have a look to understand 
the 'why' question.

Cheers,

Mathieu 
--


Here is finally the modifications I applied:

--- alsa-kernel/usb/usbmidi.c   3 Mar 2004 11:35:15 -0000       1.24
+++ alsa-kernel/usb/usbmidi.c   8 Mar 2004 09:34:05 -0000       1.25
@@ -453,8 +453,16 @@
        usbmidi_out_port_t* port = 
(usbmidi_out_port_t*)substream->runtime->private_data;

        port->active = up;
-       if (up)
+       if (up) {
+               if (port->ep->umidi->chip->shutdown) {
+                       /* gobble up remaining bytes to prevent wait in
+                        * snd_rawmidi_drain_output */
+                       while (!snd_rawmidi_transmit_empty(substream))
+                               snd_rawmidi_transmit_ack(substream, 1);
+                       return;
+               }
                tasklet_hi_schedule(&port->ep->tasklet);
+       }
 }

 static int snd_usbmidi_input_open(snd_rawmidi_substream_t* substream)


--- alsa-kernel/usb/usbaudio.c  2004-03-11 21:00:25.000000000 +0100
+++ alsa-kernel/usb/usbaudio.c  2004-03-13 04:01:06.000000000 +0100
@@ -2939,9 +2939,9 @@
                        snd_usb_stream_disconnect(p, &usb_audio_driver);
                }
                /* release the midi resources */
-               list_for_each(p, &chip->midi_list) {
-                       snd_usbmidi_disconnect(p, &usb_audio_driver);
-               }
+               /* list_for_each(p, &chip->midi_list) { */
+               /* snd_usbmidi_disconnect(p, &usb_audio_driver); */
+               /* } */
                up(&register_mutex);
                snd_card_free_in_thread(card);
        } else {


-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click
_______________________________________________
Alsa-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-devel

Reply via email to