[alsa-devel] [PATCH 01/11] ALSA: hda - Add Stereo Downmix control for AD1986A

Takashi Iwai tiwai at suse.de
Tue Jan 28 11:06:30 CET 2014


The stereo downmix control was dropped during the transition to the
generic parser.  Let's re-add it.

Signed-off-by: Takashi Iwai <tiwai at suse.de>
---
 sound/pci/hda/patch_analog.c | 25 ++++++++++++++++++++++---
 1 file changed, 22 insertions(+), 3 deletions(-)

diff --git a/sound/pci/hda/patch_analog.c b/sound/pci/hda/patch_analog.c
index 7a426ed491f2..11ec27a60276 100644
--- a/sound/pci/hda/patch_analog.c
+++ b/sound/pci/hda/patch_analog.c
@@ -349,6 +349,12 @@ static int patch_ad1986a(struct hda_codec *codec)
 		0x1e, 0x03,
 		0
 	};
+	static const struct hda_verb downmix_verbs[] = {
+		{ 0x09, AC_VERB_SET_AMP_GAIN_MUTE, 0xb080 }, /* downmix off */
+		{}
+	};
+	static const struct snd_kcontrol_new downmix_mixer =
+		HDA_CODEC_MUTE("Stereo Downmix Switch", 0x09, 0x0, HDA_OUTPUT);
 
 	err = alloc_ad_spec(codec);
 	if (err < 0)
@@ -380,14 +386,27 @@ static int patch_ad1986a(struct hda_codec *codec)
 	snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE);
 
 	err = ad198x_parse_auto_config(codec, false);
-	if (err < 0) {
-		snd_hda_gen_free(codec);
-		return err;
+	if (err < 0)
+		goto error;
+
+	/* stereo downmix control */
+	err = snd_hda_add_verbs(codec, downmix_verbs);
+	if (err < 0)
+		goto error;
+	if (spec->gen.multiout.num_dacs > 1) {
+		if (!snd_hda_gen_add_kctl(&spec->gen, NULL, &downmix_mixer)) {
+			err = -ENOMEM;
+			goto error;
+		}
 	}
 
 	snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PROBE);
 
 	return 0;
+
+ error:
+	snd_hda_gen_free(codec);
+	return err;
 }
 
 
-- 
1.8.5.2



More information about the Alsa-devel mailing list