[alsa-devel] Dell USB audio driver workaround

Takashi Iwai tiwai at suse.de
Wed Apr 6 11:36:37 CEST 2016


On Wed, 06 Apr 2016 11:22:43 +0200,
Kailang wrote:
> 
>  
> 
> > -----Original Message-----
> > From: Takashi Iwai [mailto:tiwai at suse.de] 
> > Sent: Wednesday, April 06, 2016 4:57 PM
> > To: Kailang
> > Cc: (alsa-devel at alsa-project.org)
> > Subject: Re: Dell USB audio driver workaround
> > 
> > On Wed, 06 Apr 2016 08:29:12 +0200,
> > Kailang wrote:
> > > 
> > > Hi Takashi,
> > > 
> > > Dell had USB dock.
> > > Maybe firmware issue, the master volume always keep at 0x57.
> > > Attach patch will fix it to keep at Max volume.
> > > 
> > > Could you help us to update it?
> > 
> > Well, I don't get how this patch works..
> > 
> > > diff --git a/sound/usb/mixer.c b/sound/usb/mixer.c index 
> > > 4f85757..84d9a4e 100644
> > > --- a/sound/usb/mixer.c
> > > +++ b/sound/usb/mixer.c
> > > @@ -846,6 +846,12 @@ static void volume_control_quirks(struct 
> > > usb_mixer_elem_info *cval,  {
> > >  	struct snd_usb_audio *chip = cval->head.mixer->chip;
> > >  	switch (chip->usb_id) {
> > > +	case USB_ID(0x0bda, 0x4014): /* Dell workaround */
> > > +		if (strstr(kctl->id.name, "Playback Volume") != NULL) {
> > > +			cval->min = 0x0000;
> > > +			cval->max = 0x0000;
> > > +		}
> > > +		break;
> > 
> > So, this means that this value has to be fixed to 0?
> > If yes, can't we simply remove this volume instead?
> 
> Yes, but it need to set Max volume to 0. This is test on my site.
> Because it will rewrite 0x57 value to codec register when driver is loaded.
> And keep 0x57 volume value all the time. So, Master volume will lower than windows machine.
> This case which driver fail to build the alsa mixer(This is firmware cause it). So, no hardware volume control on this.
> If the Max volume value is 0,  system will not set default value 0x57 for first time loading driver.

Which values (min/max) does this FU take and which values are buggy?
Judging from your description, the firmware gives the bogus max value
(white min value = 0) and a volume higher than zero is attenuation?


Takashi


More information about the Alsa-devel mailing list