[alsa-devel] [PATCH] ALSA: HDA: Realtek: Avoid unnecessary volume control index on Surround/Side

Takashi Iwai tiwai at suse.de
Wed Mar 23 09:25:54 CET 2011


At Wed, 23 Mar 2011 08:56:34 +0100,
David Henningsson wrote:
> 
> [1  <text/plain; ISO-8859-1 (7bit)>]
> On 2011-03-22 00:13, Jan Losinski wrote:
> > * David Henningsson<david.henningsson at canonical.com>  [2011-03-21 22:44]:
> >> Hmm, I made one or two patches in relation to this but they aimed at=20
> >> moving index 1 to index 0, not the other way around. Could you please=20
> >> give alsa-info (see wiki.ubuntu.com/Audio/AlsaInfo ) information,=20
> >> preferably with 2.6.38 (and without your workaround) installed?
> >
> > Of course, it's located at [1] (2.6.38 without my "fix". Let me know if
> > you need more information or if you need someone to test).
> >
> > Jan Losinski
> >
> > [1] http://www.alsa-project.org/db/?f=3D80bc05cada24ed993c4f964d4188add6d0e=
> > 1dddb
> 
> Thanks, I've attached a patch that fixes this issue - Takashi, will you 
> apply it?

Yes, applied now.  Thanks.


Takashi


> > PS1: The tool does not work with LANG=3Dde_DE.UTF-8
> 
> Could not reproduce here, tried "LANG=de_DE.UTF-8 ./alsa-info.sh" and it 
> succeeded normally.
> 
> > PS2: I've subscribed the list ;)
> 
> Great! Nevertheless I like being CC:ed myself when something concerns me 
> in person, so I tend to do the same to others.
> 
> -- 
> David Henningsson, Canonical Ltd.
> http://launchpad.net/~diwic
> [2 0001-ALSA-HDA-Realtek-Avoid-unnecessary-volume-control-in.patch <text/x-patch (7bit)>]
> >From bda10a777732d2f31d1a5a51954fe73b37177f2d Mon Sep 17 00:00:00 2001
> From: David Henningsson <david.henningsson at canonical.com>
> Date: Wed, 23 Mar 2011 08:35:07 +0100
> Subject: [PATCH] ALSA: HDA: Realtek: Avoid unnecessary volume control index on Surround/Side
> 
> Similar to commit 7e59e097c09b82760bb0fe08b0fa2b704d76c3f4, this patch
> avoids unnecessary volume control indices for more
> Realtek auto-parsers, e g the ALC66x family, on the "Surround" and "Side"
> controls.
> These indices cause these volume controls to be ignored by PulseAudio and
> vmaster and should be removed whenever possible.
> 
> Cc: stable at kernel.org
> Reported-by: Jan Losinski <losinski at wh2.tu-dresden.de>
> Signed-off-by: David Henningsson <david.henningsson at canonical.com>
> ---
>  sound/pci/hda/patch_realtek.c |   25 +++++++++++++++++--------
>  1 files changed, 17 insertions(+), 8 deletions(-)
> 
> diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
> index f1a03f2..dc67c5d 100644
> --- a/sound/pci/hda/patch_realtek.c
> +++ b/sound/pci/hda/patch_realtek.c
> @@ -16006,9 +16006,12 @@ static int alc861_auto_create_multi_out_ctls(struct hda_codec *codec,
>  				return err;
>  		} else {
>  			const char *name = pfx;
> -			if (!name)
> +			int index = i;
> +			if (!name) {
>  				name = chname[i];
> -			err = __alc861_create_out_sw(codec, name, nid, i, 3);
> +				index = 0;
> +			}
> +			err = __alc861_create_out_sw(codec, name, nid, index, 3);
>  			if (err < 0)
>  				return err;
>  		}
> @@ -17159,16 +17162,19 @@ static int alc861vd_auto_create_multi_out_ctls(struct alc_spec *spec,
>  				return err;
>  		} else {
>  			const char *name = pfx;
> -			if (!name)
> +			int index = i;
> +			if (!name) {
>  				name = chname[i];
> +				index = 0;
> +			}
>  			err = __add_pb_vol_ctrl(spec, ALC_CTL_WIDGET_VOL,
> -						name, i,
> +						name, index,
>  					  HDA_COMPOSE_AMP_VAL(nid_v, 3, 0,
>  							      HDA_OUTPUT));
>  			if (err < 0)
>  				return err;
>  			err = __add_pb_sw_ctrl(spec, ALC_CTL_BIND_MUTE,
> -					       name, i,
> +					       name, index,
>  					  HDA_COMPOSE_AMP_VAL(nid_s, 3, 2,
>  							      HDA_INPUT));
>  			if (err < 0)
> @@ -19217,12 +19223,15 @@ static int alc662_auto_create_multi_out_ctls(struct hda_codec *codec,
>  				return err;
>  		} else {
>  			const char *name = pfx;
> -			if (!name)
> +			int index = i;
> +			if (!name) {
>  				name = chname[i];
> -			err = __alc662_add_vol_ctl(spec, name, nid, i, 3);
> +				index = 0;
> +			}
> +			err = __alc662_add_vol_ctl(spec, name, nid, index, 3);
>  			if (err < 0)
>  				return err;
> -			err = __alc662_add_sw_ctl(spec, name, mix, i, 3);
> +			err = __alc662_add_sw_ctl(spec, name, mix, index, 3);
>  			if (err < 0)
>  				return err;
>  		}
> -- 
> 1.7.1
> 


More information about the Alsa-devel mailing list