At Tue, 08 Nov 2011 17:46:57 +0100, Alexey Fisher wrote:
Am 08.11.2011 15:54, schrieb Takashi Iwai:
At Tue, 08 Nov 2011 15:32:10 +0100, Alexey Fisher wrote:
Am 08.11.2011 14:09, schrieb Takashi Iwai:
At Tue, 08 Nov 2011 14:05:32 +0100, Takashi Iwai wrote:
At Tue, 08 Nov 2011 13:39:38 +0100, Alexey Fisher wrote:
Am 08.11.2011 13:11, schrieb Takashi Iwai: > At Tue, 08 Nov 2011 12:25:06 +0100, > Alexey Fisher wrote: >> >> Am 08.11.2011 10:59, schrieb Takashi Iwai: >>> At Tue, 08 Nov 2011 09:49:13 +0100, >>> Alexey Fisher wrote: >>>> >>>> Hallo all, Takashi, >>>> >>>> there is one regression in current linux main tree: >>>> >>>> cval->res quirks do not work any more. See usb/mixer.c:1150 >>>> Are there was some work in this area or may be some one bisected this >>>> bug down? >>> >>> Are you referring to the device 046d:09a4, which sets the mixer range >>> manually? If yes, does the patch below work? >>> >> >> >> No, i referring to devices 046d:0991, 046d:081d, i don't have access to >> 046d:09a4. >> >> This part is broken for me: >> case USB_ID(0x046d, 0x0991): >> /* Most audio usb devices lie about volume resolution. >> * Most Logitech webcams have res = 384. >> * Proboly there is some logitech magic behind this number --fishor >> */ >> if (!strcmp(kctl->id.name, "Mic Capture Volume")) { >> snd_printk(KERN_INFO >> "set resolution quirk: cval->res = 384\n"); >> cval->res = 384; >> } >> break; > > OK, so _what_ is actually broken? Do you see the message but > cval->res is overridden later?
yes.
To which value?
Also you should have got a message like "0:1: cannot get min/max values for ..." when built with CONFIG_SND_DEBUG. Check whether you get it actually.
It sets the res value to 1. I get fallowing message after i plug in the webcam:
[ 132.878150] usb 1-3.2: new high-speed USB device number 8 using ehci_hcd [ 133.087255] usb 1-3.2: New USB device found, idVendor=046d, idProduct=0991 [ 133.087259] usb 1-3.2: New USB device strings: Mfr=0, Product=0, SerialNumber=2 [ 133.087261] usb 1-3.2: SerialNumber: 9671DCEE [ 133.088428] uvcvideo: Found UVC 1.00 device<unnamed> (046d:0991) [ 133.122400] input: UVC Camera (046d:0991) as /devices/pci0000:00/0000:00:1a.7/usb1/1-3/1-3.2/1-3.2:1.0/input/input15 [ 133.488506] ALSA mixer.c:817 5:2: cannot get min/max values for control 2 (id 5) [ 133.488524] ALSA mixer.c:1168 set resolution quirk: cval->res = 384 [ 133.488527] ALSA mixer.c:817 5:2: cannot get min/max values for control 2 (id 5) [ 133.492187] ALSA mixer.c:817 5:2: cannot get min/max values for control 2 (id 5)
With amixer i get this: amixer -c U0x46d0x991 Simple mixer control 'Mic',0 Capabilities: cvolume cvolume-joined cswitch cswitch-joined penum Capture channels: Mono Limits: Capture 0 - 3072 Mono: Capture 2749 [89%] [28.73dB] [on]
But Limits should be 0-7 instead of 0-3072
OK, then the problem is that the first few reads of min/max values failed, but cval->res quirk is applied only for the first read.
Does the patch below fix?
Yes. Thanks a lot!
Thanks for a quick test. Now I queued the patch up for the next pull request.
Takashi