diff options
author | Takashi Iwai <tiwai@suse.de> | 2009-07-26 11:07:08 +0200 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2009-07-26 11:07:08 +0200 |
commit | 57e4a5c4f8cfb4b198830c5400f9fc9eb7b75091 (patch) | |
tree | 9a1c443e005850710f48338948252ff08c1fed6e /sound/usb/usbmixer.c | |
parent | b88158846f36374553a5915b7cb5a86540cf9762 (diff) | |
parent | 2cf313ee75ddf6220b5d623b749b1bb79458307f (diff) | |
download | lwn-57e4a5c4f8cfb4b198830c5400f9fc9eb7b75091.tar.gz lwn-57e4a5c4f8cfb4b198830c5400f9fc9eb7b75091.zip |
Merge branch 'fix/usb-audio' into for-linus
* fix/usb-audio:
ALSA: usb-audio - Volume control quirk for QuickCam E 3500
Diffstat (limited to 'sound/usb/usbmixer.c')
-rw-r--r-- | sound/usb/usbmixer.c | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/sound/usb/usbmixer.c b/sound/usb/usbmixer.c index 4bd3a7a0edc1..ec9cdf986928 100644 --- a/sound/usb/usbmixer.c +++ b/sound/usb/usbmixer.c @@ -990,20 +990,35 @@ static void build_feature_ctl(struct mixer_build *state, unsigned char *desc, break; } - /* quirk for UDA1321/N101 */ - /* note that detection between firmware 2.1.1.7 (N101) and later 2.1.1.21 */ - /* is not very clear from datasheets */ - /* I hope that the min value is -15360 for newer firmware --jk */ + /* volume control quirks */ switch (state->chip->usb_id) { case USB_ID(0x0471, 0x0101): case USB_ID(0x0471, 0x0104): case USB_ID(0x0471, 0x0105): case USB_ID(0x0672, 0x1041): + /* quirk for UDA1321/N101. + * note that detection between firmware 2.1.1.7 (N101) + * and later 2.1.1.21 is not very clear from datasheets. + * I hope that the min value is -15360 for newer firmware --jk + */ if (!strcmp(kctl->id.name, "PCM Playback Volume") && cval->min == -15616) { - snd_printk(KERN_INFO "using volume control quirk for the UDA1321/N101 chip\n"); + snd_printk(KERN_INFO + "set volume quirk for UDA1321/N101 chip\n"); cval->max = -256; } + break; + + case USB_ID(0x046d, 0x09a4): + if (!strcmp(kctl->id.name, "Mic Capture Volume")) { + snd_printk(KERN_INFO + "set volume quirk for QuickCam E3500\n"); + cval->min = 6080; + cval->max = 8768; + cval->res = 192; + } + break; + } snd_printdd(KERN_INFO "[%d] FU [%s] ch = %d, val = %d/%d/%d\n", |