Takashi Iwai ad502b
From 119b75c150773425a89033215eab4d15d4198f8b Mon Sep 17 00:00:00 2001
Takashi Iwai ad502b
From: Hui Wang <hui.wang@canonical.com>
Takashi Iwai ad502b
Date: Sat, 22 May 2021 11:47:41 +0800
Takashi Iwai ad502b
Subject: [PATCH] ALSA: hda/realtek: Headphone volume is controlled by Front mixer
Takashi Iwai ad502b
Git-commit: 119b75c150773425a89033215eab4d15d4198f8b
Takashi Iwai ad502b
Patch-mainline: v5.13-rc4
Takashi Iwai ad502b
References: git-fixes
Takashi Iwai ad502b
Takashi Iwai ad502b
On some ASUS and MSI machines, the audio codec is alc1220 and the
Takashi Iwai ad502b
Headphone is connected to audio mixer 0xf and DAC 0x5, in theory
Takashi Iwai ad502b
the Headphone volume is controlled by DAC 0x5 (Heapdhone Playback
Takashi Iwai ad502b
Volume), but somehow it is controlled by DAC 0x2 (Front Playback
Takashi Iwai ad502b
Volume), maybe this is a defect on the codec alc1220.
Takashi Iwai ad502b
Takashi Iwai ad502b
Because of this issue, the PA couldn't switch the headphone and
Takashi Iwai ad502b
Lineout correctly, If we apply the quirk CLEVO_P950 to those machines,
Takashi Iwai ad502b
the Lineout and Headphone will share the audio mixer 0xc and DAC 0x2,
Takashi Iwai ad502b
and generate Headphone+LO mixer, then PA could handle them when
Takashi Iwai ad502b
switching between them.
Takashi Iwai ad502b
Takashi Iwai ad502b
Buglink: https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/1206
Takashi Iwai ad502b
Cc: <stable@vger.kernel.org>
Takashi Iwai ad502b
Signed-off-by: Hui Wang <hui.wang@canonical.com>
Takashi Iwai ad502b
Link: https://lore.kernel.org/r/20210522034741.13415-1-hui.wang@canonical.com
Takashi Iwai ad502b
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai ad502b
Takashi Iwai ad502b
---
Takashi Iwai ad502b
 sound/pci/hda/patch_realtek.c | 23 +++++++++++++++++++++++
Takashi Iwai ad502b
 1 file changed, 23 insertions(+)
Takashi Iwai ad502b
Takashi Iwai ad502b
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
Takashi Iwai ad502b
index 552e2cb73291..ffaeb8d3c316 100644
Takashi Iwai ad502b
--- a/sound/pci/hda/patch_realtek.c
Takashi Iwai ad502b
+++ b/sound/pci/hda/patch_realtek.c
Takashi Iwai ad502b
@@ -2603,6 +2603,28 @@ static const struct hda_model_fixup alc882_fixup_models[] = {
Takashi Iwai ad502b
 	{}
Takashi Iwai ad502b
 };
Takashi Iwai ad502b
 
Takashi Iwai ad502b
+static const struct snd_hda_pin_quirk alc882_pin_fixup_tbl[] = {
Takashi Iwai ad502b
+	SND_HDA_PIN_QUIRK(0x10ec1220, 0x1043, "ASUS", ALC1220_FIXUP_CLEVO_P950,
Takashi Iwai ad502b
+		{0x14, 0x01014010},
Takashi Iwai ad502b
+		{0x15, 0x01011012},
Takashi Iwai ad502b
+		{0x16, 0x01016011},
Takashi Iwai ad502b
+		{0x18, 0x01a19040},
Takashi Iwai ad502b
+		{0x19, 0x02a19050},
Takashi Iwai ad502b
+		{0x1a, 0x0181304f},
Takashi Iwai ad502b
+		{0x1b, 0x0221401f},
Takashi Iwai ad502b
+		{0x1e, 0x01456130}),
Takashi Iwai ad502b
+	SND_HDA_PIN_QUIRK(0x10ec1220, 0x1462, "MS-7C35", ALC1220_FIXUP_CLEVO_P950,
Takashi Iwai ad502b
+		{0x14, 0x01015010},
Takashi Iwai ad502b
+		{0x15, 0x01011012},
Takashi Iwai ad502b
+		{0x16, 0x01011011},
Takashi Iwai ad502b
+		{0x18, 0x01a11040},
Takashi Iwai ad502b
+		{0x19, 0x02a19050},
Takashi Iwai ad502b
+		{0x1a, 0x0181104f},
Takashi Iwai ad502b
+		{0x1b, 0x0221401f},
Takashi Iwai ad502b
+		{0x1e, 0x01451130}),
Takashi Iwai ad502b
+	{}
Takashi Iwai ad502b
+};
Takashi Iwai ad502b
+
Takashi Iwai ad502b
 /*
Takashi Iwai ad502b
  * BIOS auto configuration
Takashi Iwai ad502b
  */
Takashi Iwai ad502b
@@ -2644,6 +2666,7 @@ static int patch_alc882(struct hda_codec *codec)
Takashi Iwai ad502b
 
Takashi Iwai ad502b
 	snd_hda_pick_fixup(codec, alc882_fixup_models, alc882_fixup_tbl,
Takashi Iwai ad502b
 		       alc882_fixups);
Takashi Iwai ad502b
+	snd_hda_pick_pin_fixup(codec, alc882_pin_fixup_tbl, alc882_fixups, true);
Takashi Iwai ad502b
 	snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE);
Takashi Iwai ad502b
 
Takashi Iwai ad502b
 	alc_auto_parse_customize_define(codec);
Takashi Iwai ad502b
-- 
Takashi Iwai ad502b
2.26.2
Takashi Iwai ad502b