summaryrefslogtreecommitdiff
path: root/sound/usb/clock.c
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2016-05-16 09:13:08 +0200
committerTakashi Iwai <tiwai@suse.de>2016-05-16 09:13:08 +0200
commit581abbaa03367f0b1327521f30bd2b69b8075b2f (patch)
tree686db8cee890fa97061baf5722c3bb9344e658dc /sound/usb/clock.c
parent84add303ef950b8d85f54bc2248c2bc73467c329 (diff)
parent639db596165746ca87bbcb56559b094fd9042890 (diff)
Merge branch 'for-next' into for-linus
Diffstat (limited to 'sound/usb/clock.c')
-rw-r--r--sound/usb/clock.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/sound/usb/clock.c b/sound/usb/clock.c
index 7ccbcaf6a147..26dd5f20f149 100644
--- a/sound/usb/clock.c
+++ b/sound/usb/clock.c
@@ -309,6 +309,9 @@ static int set_sample_rate_v1(struct snd_usb_audio *chip, int iface,
* support reading */
if (snd_usb_get_sample_rate_quirk(chip))
return 0;
+ /* the firmware is likely buggy, don't repeat to fail too many times */
+ if (chip->sample_rate_read_error > 2)
+ return 0;
if ((err = snd_usb_ctl_msg(dev, usb_rcvctrlpipe(dev, 0), UAC_GET_CUR,
USB_TYPE_CLASS | USB_RECIP_ENDPOINT | USB_DIR_IN,
@@ -316,6 +319,7 @@ static int set_sample_rate_v1(struct snd_usb_audio *chip, int iface,
data, sizeof(data))) < 0) {
dev_err(&dev->dev, "%d:%d: cannot get freq at ep %#x\n",
iface, fmt->altsetting, ep);
+ chip->sample_rate_read_error++;
return 0; /* some devices don't support reading */
}