Takashi Iwai schrieb:
At Tue, 21 Jul 2009 23:57:46 +0200, Alexey Fisher wrote:
Takashi Iwai schrieb:
At Tue, 21 Jul 2009 23:10:42 +0200, Alexey Fisher wrote:
- E3500 report cval->max more than it actually can handel, so if you
set 95% capture level it will be muted. 2. betwen cval->min and cval-max(real) is 2940 control units, but real are only 7. 3. we found only 7 real control units, with cval->res = 384, but alsa can't handel less than 10 controls, so make it more and set cval->res = 192.
Signed-off-by: Alexey Fisher bug-track@fisher-privat.net
Thanks for the patch. The added code looks almost good. But, it's better to put your code into another place, e.g. a bit later so that you don't insert it between the comment and the other code. Also, if you use switch(), you need break.
In your case, simply put a new if () block with a proper comment after that switch() block. It's not necessarily merged into a single switch. The compiler should be clever enough.
Also, try to keep the patch checkpatch.pl-clean. Run it once before submitting your patch.
Could you fix these and repost?
thanks,
Takashi
sound/usb/usbmixer.c | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-)
diff --git a/sound/usb/usbmixer.c b/sound/usb/usbmixer.c index 4bd3a7a..72562ee 100644 --- a/sound/usb/usbmixer.c +++ b/sound/usb/usbmixer.c @@ -995,6 +995,13 @@ static void build_feature_ctl(struct mixer_build *state, unsigned char *desc, /* is not very clear from datasheets */ /* I hope that the min value is -15360 for newer firmware --jk */ switch (state->chip->usb_id) {
- case USB_ID(0x046d, 0x09a4):
if (!strcmp(kctl->id.name, "Mic Capture Volume")) {
snd_printk(KERN_INFO "using volume control quirk for the QuickCam E3500\n");
cval->min = 6080;
cval->max = 8768;
cval->res = 192;
case USB_ID(0x0471, 0x0101): case USB_ID(0x0471, 0x0104): case USB_ID(0x0471, 0x0105):}
There is some thing wrong with this. After suspend and resume this quirk not working. Even replug the cam not help, only reloading of snd_usb_sound will do it work again.
But isn't it irrelevant with your patch?
Takashi
it should be irrelevant, but some times it doesn't use this quirk. Seems like it depend on my usb.. so if quirk is not used there passably (if capture level set to more then 90%) will be no sound on this cam.
here is example. On this port it's working fine: =========================================================================== [ 1197.141867] ALSA sound/usb/usbaudio.c:2802: 17:3:1: add audio endpoint 0x86 [ 1198.144187] ALSA sound/usb/usbaudio.c:1295: 17:3:1: cannot get freq at ep 0x86 [ 1198.144344] ALSA sound/usb/usbmixer.c:1017: [5] FU [Mic Capture Switch] ch = 1, val = 0/1/1 [ 1198.917814] ALSA sound/usb/usbmixer.c:1000: using volume control quirk for the QuickCam E3500 [ 1198.917818] ALSA sound/usb/usbmixer.c:1017: [5] FU [Mic Capture Volume] ch = 1, val = 6080/8768/192 [ 1198.972148] ALSA sound/usb/usbaudio.c:1349: setting usb interface 3:1 [ 1198.999384] ALSA sound/usb/usbaudio.c:1349: setting usb interface 3:1 ==================================================================================
and quirk is applied: ================================================================= amixer -D hw:1 Simple mixer control 'Mic',0 Capabilities: cvolume cvolume-joined cswitch cswitch-joined Capture channels: Mono Limits: Capture 0 - 14 Mono: Capture 14 [100%] [34.25dB] [on] ======================================================================
On this port it's looks different: ================================================================== [ 434.298740] ALSA sound/usb/usbaudio.c:2802: 16:3:1: add audio endpoint 0x86 [ 435.296189] ALSA sound/usb/usbaudio.c:1288: 16:3:1: cannot set freq 16000 to ep 0x86 [ 435.296346] ALSA sound/usb/usbmixer.c:1017: [5] FU [Mic Capture Switch] ch = 1, val = 0/1/1 [ 436.055930] ALSA sound/usb/usbmixer.c:374: cannot get ctl value: req = 0x83, wValue = 0x200, wIndex = 0x502, type = 4 [ 436.055936] ALSA sound/usb/usbmixer.c:730: 5:2: cannot get min/max values for control 2 (id 5) [ 436.055954] ALSA sound/usb/usbmixer.c:1000: using volume control quirk for the QuickCam E3500 [ 436.055957] ALSA sound/usb/usbmixer.c:1017: [5] FU [Mic Capture Volume] ch = 1, val = 6080/8768/192 [ 436.107018] ALSA sound/usb/usbaudio.c:1349: setting usb interface 3:1 [ 436.133640] ALSA sound/usb/usbaudio.c:1349: setting usb interface 3:1 ========================================================================
and quirk is not working: ========================================================= amixer -D hw:1 Simple mixer control 'Mic',0 Capabilities: cvolume cvolume-joined cswitch cswitch-joined Capture channels: Mono Limits: Capture 0 - 3072 Mono: Capture 3072 [100%] [23.00dB] [on] ============================================================
this can't be reproduce with every plug in.. but some port have better possibility to get error. On this kind of port the setting can be changed after resume.