diff options
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, | |||
| 990 | break; | 990 | break; | 
| 991 | } | 991 | } | 
| 992 | 992 | ||
| 993 | /* quirk for UDA1321/N101 */ | 993 | /* volume control quirks */ | 
| 994 | /* note that detection between firmware 2.1.1.7 (N101) and later 2.1.1.21 */ | ||
| 995 | /* is not very clear from datasheets */ | ||
| 996 | /* I hope that the min value is -15360 for newer firmware --jk */ | ||
| 997 | switch (state->chip->usb_id) { | 994 | switch (state->chip->usb_id) { | 
| 998 | case USB_ID(0x0471, 0x0101): | 995 | case USB_ID(0x0471, 0x0101): | 
| 999 | case USB_ID(0x0471, 0x0104): | 996 | case USB_ID(0x0471, 0x0104): | 
| 1000 | case USB_ID(0x0471, 0x0105): | 997 | case USB_ID(0x0471, 0x0105): | 
| 1001 | case USB_ID(0x0672, 0x1041): | 998 | case USB_ID(0x0672, 0x1041): | 
| 999 | /* quirk for UDA1321/N101. | ||
| 1000 | * note that detection between firmware 2.1.1.7 (N101) | ||
| 1001 | * and later 2.1.1.21 is not very clear from datasheets. | ||
| 1002 | * I hope that the min value is -15360 for newer firmware --jk | ||
| 1003 | */ | ||
| 1002 | if (!strcmp(kctl->id.name, "PCM Playback Volume") && | 1004 | if (!strcmp(kctl->id.name, "PCM Playback Volume") && | 
| 1003 | cval->min == -15616) { | 1005 | cval->min == -15616) { | 
| 1004 | snd_printk(KERN_INFO "using volume control quirk for the UDA1321/N101 chip\n"); | 1006 | snd_printk(KERN_INFO | 
| 1007 | "set volume quirk for UDA1321/N101 chip\n"); | ||
| 1005 | cval->max = -256; | 1008 | cval->max = -256; | 
| 1006 | } | 1009 | } | 
| 1010 | break; | ||
| 1011 | |||
| 1012 | case USB_ID(0x046d, 0x09a4): | ||
| 1013 | if (!strcmp(kctl->id.name, "Mic Capture Volume")) { | ||
| 1014 | snd_printk(KERN_INFO | ||
| 1015 | "set volume quirk for QuickCam E3500\n"); | ||
| 1016 | cval->min = 6080; | ||
| 1017 | cval->max = 8768; | ||
| 1018 | cval->res = 192; | ||
| 1019 | } | ||
| 1020 | break; | ||
| 1021 | |||
| 1007 | } | 1022 | } | 
| 1008 | 1023 | ||
| 1009 | snd_printdd(KERN_INFO "[%d] FU [%s] ch = %d, val = %d/%d/%d\n", | 1024 | snd_printdd(KERN_INFO "[%d] FU [%s] ch = %d, val = %d/%d/%d\n", | 
