693 |
/* |
/* |
694 |
* Unlinks all URBs (must be done before the usb_device is deleted). |
* Unlinks all URBs (must be done before the usb_device is deleted). |
695 |
*/ |
*/ |
696 |
void snd_usbmidi_disconnect(struct list_head* p) |
void snd_usbmidi_disconnect(struct list_head* p, struct usb_driver *driver) |
697 |
{ |
{ |
698 |
snd_usb_midi_t* umidi; |
snd_usb_midi_t* umidi; |
699 |
int i; |
int i; |
700 |
|
|
701 |
umidi = list_entry(p, snd_usb_midi_t, list); |
umidi = list_entry(p, snd_usb_midi_t, list); |
702 |
|
usb_driver_release_interface(driver, umidi->iface); |
703 |
for (i = 0; i < MIDI_MAX_ENDPOINTS; ++i) { |
for (i = 0; i < MIDI_MAX_ENDPOINTS; ++i) { |
704 |
snd_usb_midi_endpoint_t* ep = &umidi->endpoints[i]; |
snd_usb_midi_endpoint_t* ep = &umidi->endpoints[i]; |
705 |
if (ep->out && ep->out->urb) |
if (ep->out && ep->out->urb) |