Update of /cvsroot/alsa/alsa-kernel/usb In directory sc8-pr-cvs1:/tmp/cvs-serv15174
Modified Files: usbaudio.c usbaudio.h usbmidi.c Log Message: fixed for 2.6 kernels: - set intervals to playback urbs. - release the claimed interfaces at disconnection. Index: usbaudio.c =================================================================== RCS file: /cvsroot/alsa/alsa-kernel/usb/usbaudio.c,v retrieving revision 1.59 retrieving revision 1.60 diff -u -r1.59 -r1.60 --- usbaudio.c 23 Jun 2003 12:41:36 -0000 1.59 +++ usbaudio.c 17 Jul 2003 17:42:25 -0000 1.60 @@ -388,6 +388,7 @@ urb->iso_frame_desc[i].length = 3; urb->iso_frame_desc[i].offset = offs; } + urb->interval = 1; return 0; } @@ -512,6 +513,7 @@ spin_unlock_irqrestore(&subs->lock, flags); urb->transfer_buffer_length = offs * stride; ctx->transfer = offs; + urb->interval = 1; return 0; } @@ -2337,6 +2339,32 @@ /* + * disconnect streams + * called from snd_usb_audio_disconnect() + */ +static void snd_usb_stream_disconnect(struct list_head *head, struct usb_driver *driver) +{ + int idx; + snd_usb_stream_t *as; + snd_usb_substream_t *subs; + struct list_head *p; + + as = list_entry(head, snd_usb_stream_t, list); + for (idx = 0; idx < 2; idx++) { + subs = &as->substream[idx]; + if (!subs->num_formats) + return; + release_substream_urbs(subs, 1); + subs->interface = -1; + /* release interfaces */ + list_for_each(p, &subs->fmt_list) { + struct audioformat *fp = list_entry(p, struct audioformat, list); + usb_driver_release_interface(driver, usb_ifnum_to_if(subs->dev, fp->iface)); + } + } +} + +/* * parse audio control descriptor and create pcm/midi streams */ static int snd_usb_create_streams(snd_usb_audio_t *chip, int ctrlif) @@ -2806,21 +2834,11 @@ snd_card_disconnect(card); /* release the pcm resources */ list_for_each(p, &chip->pcm_list) { - snd_usb_stream_t *as; - int idx; - as = list_entry(p, snd_usb_stream_t, list); - for (idx = 0; idx < 2; idx++) { - snd_usb_substream_t *subs; - subs = &as->substream[idx]; - if (!subs->num_formats) - continue; - release_substream_urbs(subs, 1); - subs->interface = -1; - } + snd_usb_stream_disconnect(p, &usb_audio_driver); } /* release the midi resources */ list_for_each(p, &chip->midi_list) { - snd_usbmidi_disconnect(p); + snd_usbmidi_disconnect(p, &usb_audio_driver); } up(®ister_mutex); snd_card_free_in_thread(card); Index: usbaudio.h =================================================================== RCS file: /cvsroot/alsa/alsa-kernel/usb/usbaudio.h,v retrieving revision 1.19 retrieving revision 1.20 diff -u -r1.19 -r1.20 --- usbaudio.h 20 Jun 2003 18:04:03 -0000 1.19 +++ usbaudio.h 17 Jul 2003 17:42:25 -0000 1.20 @@ -203,7 +203,7 @@ int snd_usb_create_mixer(snd_usb_audio_t *chip, int ctrlif); int snd_usb_create_midi_interface(snd_usb_audio_t *chip, struct usb_interface *iface, const snd_usb_audio_quirk_t *quirk); -void snd_usbmidi_disconnect(struct list_head *p); +void snd_usbmidi_disconnect(struct list_head *p, struct usb_driver *driver); /* * retrieve usb_interface descriptor from the host interface Index: usbmidi.c =================================================================== RCS file: /cvsroot/alsa/alsa-kernel/usb/usbmidi.c,v retrieving revision 1.20 retrieving revision 1.21 diff -u -r1.20 -r1.21 --- usbmidi.c 5 Mar 2003 11:33:21 -0000 1.20 +++ usbmidi.c 17 Jul 2003 17:42:25 -0000 1.21 @@ -693,12 +693,13 @@ /* * Unlinks all URBs (must be done before the usb_device is deleted). */ -void snd_usbmidi_disconnect(struct list_head* p) +void snd_usbmidi_disconnect(struct list_head* p, struct usb_driver *driver) { snd_usb_midi_t* umidi; int i; umidi = list_entry(p, snd_usb_midi_t, list); + usb_driver_release_interface(driver, umidi->iface); for (i = 0; i < MIDI_MAX_ENDPOINTS; ++i) { snd_usb_midi_endpoint_t* ep = &umidi->endpoints[i]; if (ep->out && ep->out->urb) ------------------------------------------------------- This SF.net email is sponsored by: VM Ware With VMware you can run multiple operating systems on a single machine. WITHOUT REBOOTING! Mix Linux / Windows / Novell virtual machines at the same time. Free trial click here: http://www.vmware.com/wl/offer/345/0 _______________________________________________ Alsa-cvslog mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/alsa-cvslog