|
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 |
|