diff options
author | Takashi Iwai <tiwai@suse.de> | 2016-12-09 11:21:35 +0100 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2016-12-09 11:21:35 +0100 |
commit | d71bb23a81f80eeb5291e5c782377024e7265a23 (patch) | |
tree | 81aded55aceadd50ff2360df95f626d7bc35265c /sound/usb | |
parent | 17f08b0d9aafccdb10038ab6dbd9ddb6433c13e2 (diff) | |
parent | 82ffb6fc637150b279f49e174166d2aa3853eaf4 (diff) |
Merge branch 'for-linus' into for-next
Diffstat (limited to 'sound/usb')
-rw-r--r-- | sound/usb/endpoint.c | 12 | ||||
-rw-r--r-- | sound/usb/mixer.c | 3 |
2 files changed, 10 insertions, 5 deletions
diff --git a/sound/usb/endpoint.c b/sound/usb/endpoint.c index a2931f49a1fc..57b0d9968ec2 100644 --- a/sound/usb/endpoint.c +++ b/sound/usb/endpoint.c @@ -384,6 +384,9 @@ static void snd_complete_urb(struct urb *urb) if (unlikely(atomic_read(&ep->chip->shutdown))) goto exit_clear; + if (unlikely(!test_bit(EP_FLAG_RUNNING, &ep->flags))) + goto exit_clear; + if (usb_pipeout(ep->pipe)) { retire_outbound_urb(ep, ctx); /* can be stopped during retire callback */ @@ -534,6 +537,11 @@ static int wait_clear_urbs(struct snd_usb_endpoint *ep) alive, ep->ep_num); clear_bit(EP_FLAG_STOPPING, &ep->flags); + ep->data_subs = NULL; + ep->sync_slave = NULL; + ep->retire_data_urb = NULL; + ep->prepare_data_urb = NULL; + return 0; } @@ -1006,10 +1014,6 @@ void snd_usb_endpoint_stop(struct snd_usb_endpoint *ep) if (--ep->use_count == 0) { deactivate_urbs(ep, false); - ep->data_subs = NULL; - ep->sync_slave = NULL; - ep->retire_data_urb = NULL; - ep->prepare_data_urb = NULL; set_bit(EP_FLAG_STOPPING, &ep->flags); } } diff --git a/sound/usb/mixer.c b/sound/usb/mixer.c index 2f8c388ef84f..4703caea56b2 100644 --- a/sound/usb/mixer.c +++ b/sound/usb/mixer.c @@ -932,9 +932,10 @@ static void volume_control_quirks(struct usb_mixer_elem_info *cval, case USB_ID(0x046d, 0x0826): /* HD Webcam c525 */ case USB_ID(0x046d, 0x08ca): /* Logitech Quickcam Fusion */ case USB_ID(0x046d, 0x0991): + case USB_ID(0x046d, 0x09a2): /* QuickCam Communicate Deluxe/S7500 */ /* Most audio usb devices lie about volume resolution. * Most Logitech webcams have res = 384. - * Proboly there is some logitech magic behind this number --fishor + * Probably there is some logitech magic behind this number --fishor */ if (!strcmp(kctl->id.name, "Mic Capture Volume")) { usb_audio_info(chip, |