[alsa-devel] Lost dB volumes on USB headset between 2.6.38 and 3.0

Takashi Iwai tiwai at suse.de
Fri Aug 19 07:53:44 CEST 2011


At Fri, 19 Aug 2011 06:55:54 +0800,
Raymond Yau wrote:
> 
> 2011/8/18 Takashi Iwai <tiwai at suse.de>:
> > At Tue, 16 Aug 2011 13:31:52 +0100,
> > Colin Guthrie wrote:
> >>
> >> > diff --git a/sound/usb/mixer.c b/sound/usb/mixer.c
> >> > index c04d7c7..cdd19d7 100644
> >> > --- a/sound/usb/mixer.c
> >> > +++ b/sound/usb/mixer.c
> >> > @@ -152,6 +152,7 @@ static inline void check_mapped_dB(const struct usbmix_name_map *p,
> >> >     if (p && p->dB) {
> >> >             cval->dBmin = p->dB->min;
> >> >             cval->dBmax = p->dB->max;
> >> > +           cval->initialized = 1;
> >> >     }
> >> >  }
> >> >
> >> > @@ -1092,7 +1093,7 @@ static void build_feature_ctl(struct mixer_build *state, void *raw_desc,
> >> >                             " Switch" : " Volume");
> >> >             if (control == UAC_FU_VOLUME) {
> >> >                     check_mapped_dB(map, cval);
> >> > -                   if (cval->dBmin < cval->dBmax) {
> >> > +                   if (cval->dBmin < cval->dBmax || !cval->initialized) {
> >> >                             kctl->tlv.c = mixer_vol_tlv;
> >> >                             kctl->vd[0].access |=
> >> >                                     SNDRV_CTL_ELEM_ACCESS_TLV_READ |
> >>
> >>
> >>
> >> Not had a chance to test this yet but I will when I get a moment.
> >
> > Any chance to test the patch?
> >
> 
> The patch seem fix the no dB scale problem , however the broken dB
> test which you added seem redundant as cval->dBmin and cval->dBmax are
> still zero because error in get_min_max() at build_feature_ctl() and
> it seem that the valid dBmin and dBMax are calculated by get_min_max()
> at mixer_ctl_feature_info() on my usb logitech web cam

Yeah, that's a known problem.  The dB-test is missing when reading dB
failed at probing time and later it gives a wrong value.

We can add another dB-test later, and remove TLV bit from
kcontrol.access on the fly.  But for that, we'd need to notify via
SNDRV_CTL_EVENT_MASK_INFO, too.


thanks,

Takashi


More information about the Alsa-devel mailing list