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