At Wed, 22 Jul 2009 07:15:41 +0200, Alexey Fisher wrote: > > 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: > >>>> 1. 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@xxxxxxxxxxxxxxxxx> > >>> 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. Hm, then it means that chip->usb_id has a different number. Could you check with printk? Takashi _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel