Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 342600
b: refs/heads/master
c: ccc1696
h: refs/heads/master
v: v3
  • Loading branch information
Takashi Iwai committed Nov 21, 2012
1 parent f90fdb7 commit 93bd8ed
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 17 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: a9bb36261ef5c7e25564d5ce8a5129920a29bff9
refs/heads/master: ccc1696d527d64deb417bfa1ef9e479d10ad4f6b
23 changes: 7 additions & 16 deletions trunk/sound/usb/endpoint.c
Original file line number Diff line number Diff line change
Expand Up @@ -515,33 +515,24 @@ void snd_usb_endpoint_sync_pending_stop(struct snd_usb_endpoint *ep)
/*
* unlink active urbs.
*/
static int deactivate_urbs(struct snd_usb_endpoint *ep, bool force, bool can_sleep)
static int deactivate_urbs(struct snd_usb_endpoint *ep, bool force)
{
unsigned int i;
int async;

if (!force && ep->chip->shutdown) /* to be sure... */
return -EBADFD;

async = !can_sleep;

clear_bit(EP_FLAG_RUNNING, &ep->flags);

INIT_LIST_HEAD(&ep->ready_playback_urbs);
ep->next_packet_read_pos = 0;
ep->next_packet_write_pos = 0;

if (!async && in_interrupt())
return 0;

for (i = 0; i < ep->nurbs; i++) {
if (test_bit(i, &ep->active_mask)) {
if (!test_and_set_bit(i, &ep->unlink_mask)) {
struct urb *u = ep->urb[i].urb;
if (async)
usb_unlink_urb(u);
else
usb_kill_urb(u);
usb_unlink_urb(u);
}
}
}
Expand All @@ -561,7 +552,7 @@ static void release_urbs(struct snd_usb_endpoint *ep, int force)
ep->prepare_data_urb = NULL;

/* stop urbs */
deactivate_urbs(ep, force, true);
deactivate_urbs(ep, force);
wait_clear_urbs(ep);

for (i = 0; i < ep->nurbs; i++)
Expand Down Expand Up @@ -837,7 +828,7 @@ int snd_usb_endpoint_start(struct snd_usb_endpoint *ep, bool can_sleep)
return 0;

/* just to be sure */
deactivate_urbs(ep, false, can_sleep);
deactivate_urbs(ep, false);
if (can_sleep)
wait_clear_urbs(ep);

Expand Down Expand Up @@ -891,7 +882,7 @@ int snd_usb_endpoint_start(struct snd_usb_endpoint *ep, bool can_sleep)
__error:
clear_bit(EP_FLAG_RUNNING, &ep->flags);
ep->use_count--;
deactivate_urbs(ep, false, false);
deactivate_urbs(ep, false);
return -EPIPE;
}

Expand All @@ -915,7 +906,7 @@ void snd_usb_endpoint_stop(struct snd_usb_endpoint *ep, bool wait)
return;

if (--ep->use_count == 0) {
deactivate_urbs(ep, false, wait);
deactivate_urbs(ep, false);
ep->data_subs = NULL;
ep->sync_slave = NULL;
ep->retire_data_urb = NULL;
Expand Down Expand Up @@ -946,7 +937,7 @@ int snd_usb_endpoint_deactivate(struct snd_usb_endpoint *ep)
if (!ep)
return -EINVAL;

deactivate_urbs(ep, true, true);
deactivate_urbs(ep, true);
wait_clear_urbs(ep);

if (ep->use_count != 0)
Expand Down

0 comments on commit 93bd8ed

Please sign in to comment.