aboutsummaryrefslogtreecommitdiffstats
path: root/sound/usb
diff options
context:
space:
mode:
authorDaniel Mack <zonque@gmail.com>2012-08-01 10:16:53 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2012-08-09 08:27:53 -0700
commitf45cd6dfe00503a2ff49920bf8365a55ea69edbb (patch)
tree2c6faa4de8251b5a08126b25edc1da3e91d730d5 /sound/usb
parentaeaab8a0fee896fb31f2e5044f86d2a270d65cb6 (diff)
downloadkernel_samsung_espresso10-f45cd6dfe00503a2ff49920bf8365a55ea69edbb.zip
kernel_samsung_espresso10-f45cd6dfe00503a2ff49920bf8365a55ea69edbb.tar.gz
kernel_samsung_espresso10-f45cd6dfe00503a2ff49920bf8365a55ea69edbb.tar.bz2
ALSA: snd-usb: fix clock source validity index
commit aff252a848ce21b431ba822de3dab9c4c94571cb upstream. uac_clock_source_is_valid() uses the control selector value to access the bmControls bitmap of the clock source unit. This is wrong, as control selector values start from 1, while the bitmap uses all available bits. In other words, "Clock Validity Control" is stored in D3..2, not D5..4 of the clock selector unit's bmControls. Signed-off-by: Daniel Mack <zonque@gmail.com> Reported-by: Andreas Koch <andreas@akdesigninc.com> Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'sound/usb')
-rw-r--r--sound/usb/clock.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/sound/usb/clock.c b/sound/usb/clock.c
index 075195e..f0ff776 100644
--- a/sound/usb/clock.c
+++ b/sound/usb/clock.c
@@ -111,7 +111,8 @@ static bool uac_clock_source_is_valid(struct snd_usb_audio *chip, int source_id)
return 0;
/* If a clock source can't tell us whether it's valid, we assume it is */
- if (!uac2_control_is_readable(cs_desc->bmControls, UAC2_CS_CONTROL_CLOCK_VALID))
+ if (!uac2_control_is_readable(cs_desc->bmControls,
+ UAC2_CS_CONTROL_CLOCK_VALID - 1))
return 1;
err = snd_usb_ctl_msg(dev, usb_rcvctrlpipe(dev, 0), UAC2_CS_CUR,