summaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
authorJavier Kohen <jkohen@users.sourceforge.net>2009-11-17 15:36:13 +0100
committerTakashi Iwai <tiwai@suse.de>2009-11-17 15:49:26 +0100
commit0c3cee57efcb1c79d62b1238c0d22afef4599247 (patch)
tree3baa242e3976e67d778b9d10cffc04764510ae0a /sound
parent828d44536cd24dfc085a8cf5a12364972398dcd4 (diff)
downloadop-kernel-dev-0c3cee57efcb1c79d62b1238c0d22afef4599247.zip
op-kernel-dev-0c3cee57efcb1c79d62b1238c0d22afef4599247.tar.gz
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.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/sound/usb/usbmixer.c b/sound/usb/usbmixer.c
index 9efcfd0..c998220 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
channels = (ftr[0] - 7) / csize - 1;
master_bits = snd_usb_combine_bytes(ftr + 6, csize);
+ /* master configuration quirks */
+ switch (state->chip->usb_id) {
+ case USB_ID(0x08bb, 0x2702):
+ snd_printk(KERN_INFO
+ "usbmixer: master volume quirk for PCM2702 chip\n");
+ /* disable non-functional volume control */
+ master_bits &= ~(1 << (USB_FEATURE_VOLUME - 1));
+ break;
+ }
if (channels > 0)
first_ch_bits = snd_usb_combine_bytes(ftr + 6 + csize, csize);
else
OpenPOWER on IntegriCloud