diff options
author | Javier Kohen <jkohen@users.sourceforge.net> | 2009-11-17 09:36:13 -0500 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2009-11-17 09:49:26 -0500 |
commit | 0c3cee57efcb1c79d62b1238c0d22afef4599247 (patch) | |
tree | 3baa242e3976e67d778b9d10cffc04764510ae0a /sound | |
parent | 828d44536cd24dfc085a8cf5a12364972398dcd4 (diff) |
ALSA: usb - Quirk to disable master volume control in PCM2702
Disable the master volume control in the PCM2702 chipset.
The datasheet documents two independent channel volume controls, one
master mute control and one master volume control. All controls are
fully functional except for the master volume control, which returns
USB stalls on all GET requests.
Signed-off-by: Javier Kohen <jkohen@users.sourceforge.net>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound')
-rw-r--r-- | sound/usb/usbmixer.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/sound/usb/usbmixer.c b/sound/usb/usbmixer.c index 9efcfd08d747..c998220b99c6 100644 --- a/sound/usb/usbmixer.c +++ b/sound/usb/usbmixer.c | |||
@@ -1071,6 +1071,15 @@ static int parse_audio_feature_unit(struct mixer_build *state, int unitid, unsig | |||
1071 | channels = (ftr[0] - 7) / csize - 1; | 1071 | channels = (ftr[0] - 7) / csize - 1; |
1072 | 1072 | ||
1073 | master_bits = snd_usb_combine_bytes(ftr + 6, csize); | 1073 | master_bits = snd_usb_combine_bytes(ftr + 6, csize); |
1074 | /* master configuration quirks */ | ||
1075 | switch (state->chip->usb_id) { | ||
1076 | case USB_ID(0x08bb, 0x2702): | ||
1077 | snd_printk(KERN_INFO | ||
1078 | "usbmixer: master volume quirk for PCM2702 chip\n"); | ||
1079 | /* disable non-functional volume control */ | ||
1080 | master_bits &= ~(1 << (USB_FEATURE_VOLUME - 1)); | ||
1081 | break; | ||
1082 | } | ||
1074 | if (channels > 0) | 1083 | if (channels > 0) |
1075 | first_ch_bits = snd_usb_combine_bytes(ftr + 6 + csize, csize); | 1084 | first_ch_bits = snd_usb_combine_bytes(ftr + 6 + csize, csize); |
1076 | else | 1085 | else |