[alsa-devel] Dell USB audio driver workaround

Kailang kailang at realtek.com
Tue Apr 12 05:02:08 CEST 2016


Hi Takashi,

Attach is new patch witch follow your method.
Many Thanks for you. ^^

BR,
Kailang 

> -----Original Message-----
> From: Takashi Iwai [mailto:tiwai at suse.de] 
> Sent: Thursday, April 07, 2016 6:18 PM
> To: Kailang
> Cc: (alsa-devel at alsa-project.org)
> Subject: Re: Dell USB audio driver workaround
> 
> On Thu, 07 Apr 2016 12:07:25 +0200,
> Kailang wrote:
> > 
> >  
> > 
> > > -----Original Message-----
> > > From: Takashi Iwai [mailto:tiwai at suse.de]
> > > Sent: Thursday, April 07, 2016 5:27 PM
> > > To: Kailang
> > > Cc: (alsa-devel at alsa-project.org)
> > > Subject: Re: Dell USB audio driver workaround
> > > 
> > > On Thu, 07 Apr 2016 09:05:52 +0200,
> > > Kailang wrote:
> > > > 
> > > >  
> > > > 
> > > > > -----Original Message-----
> > > > > From: Takashi Iwai [mailto:tiwai at suse.de]
> > > > > Sent: Wednesday, April 06, 2016 5:37 PM
> > > > > To: Kailang
> > > > > Cc: (alsa-devel at alsa-project.org)
> > > > > Subject: Re: Dell USB audio driver workaround
> > > > > 
> > > > > 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?
> > > > Max value. 
> > > 
> > > Sorry, my question wasn't clear.  "What" min and max are they?  
> > > min=0 and max=0x57?
> > 
> > Oh! Sorry. It's my wrong. I forgot.
> > 
> > Unit: 16
> >     Control: name="PCM Playback Volume", index=0
> >     Info: id=16, control=2, cmask=0x3, channels=2, type="S16"
> >     Volume: min=-16256, max=0, dBmin=-6350, dBmax=0
> > 
> > 0x0 (codec reg)  = (-16256) (USB vloume level) 0x57(codec reg) = 
> > 0xEC00(USB vloume level) 0x7F(codec reg) = 0x0000 (USB vloume level)
> > 
> > > 
> > > And, your patch changes both min and max to be 0.  That is, it 
> > > accepts only 0.  Does it mean that this FU isn't any 
> proper volume 
> > > control?
> > 
> > cval->max original is 0.
> > cval->min => I set it to 0. It will be not rewrite 0x57 
> value to codec.
> 
> OK, now it's clear, thanks.
> 
> Though, I still don't like to set min = max.  It basically 
> makes this control useless, and then there is no reason to 
> keep this exposed.
> 
> Can we just skip parsing this control, then?  You can create 
> an own usbmix_name_map[] to indicate the ID to skip building 
> a control by passing NULL to its name.  That is, a patch like 
> below.  (You need to fill the right ID number in the patch, 
> of course.)
> 
> 
> Takashi
> 
> ---
> diff --git a/sound/usb/mixer_maps.c b/sound/usb/mixer_maps.c
> --- a/sound/usb/mixer_maps.c
> +++ b/sound/usb/mixer_maps.c
> @@ -349,6 +349,16 @@ static struct usbmix_name_map 
> bose_companion5_map[] = {  };
>  
>  /*
> + * Dell XXX with ALC4020 codec had a firmware problem where it got
> + * screwed up when zero volume is passed; just skip it as a 
> workaround  
> +*/ static const struct usbmix_name_map dell_alc4020_map[] = {
> +	{ 10 /* XXX fill this right ID XXX */, NULL },
> +	{ 0 }
> +};
> +
> +
> +/*
>   * Control map entries
>   */
>  
> @@ -423,6 +433,10 @@ static struct usbmix_ctl_map 
> usbmix_ctl_maps[] = {
>  		.map = maya44_map,
>  	},
>  	{
> +		.id = USB_ID(0x0bda, 0x4014),
> +		.map = dell_alc4020_map,
> +	},
> +	{
>  		.id = USB_ID(0x0c45, 0x1158),
>  		.map = justlink_map,
>  	},
> 
> ------Please consider the environment before printing this e-mail.
> 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Dell-usb-dock-vloume-issue.patch
Type: application/octet-stream
Size: 1127 bytes
Desc: 0001-Dell-usb-dock-vloume-issue.patch
URL: <http://mailman.alsa-project.org/pipermail/alsa-devel/attachments/20160412/05af883b/attachment.obj>


More information about the Alsa-devel mailing list