Skip to content

Commit 119b75c

Browse files
jason77-wangtiwai
authored andcommitted
ALSA: hda/realtek: Headphone volume is controlled by Front mixer
On some ASUS and MSI machines, the audio codec is alc1220 and the Headphone is connected to audio mixer 0xf and DAC 0x5, in theory the Headphone volume is controlled by DAC 0x5 (Heapdhone Playback Volume), but somehow it is controlled by DAC 0x2 (Front Playback Volume), maybe this is a defect on the codec alc1220. Because of this issue, the PA couldn't switch the headphone and Lineout correctly, If we apply the quirk CLEVO_P950 to those machines, the Lineout and Headphone will share the audio mixer 0xc and DAC 0x2, and generate Headphone+LO mixer, then PA could handle them when switching between them. BugLink: https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/1206 Cc: <[email protected]> Signed-off-by: Hui Wang <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Takashi Iwai <[email protected]>
1 parent 265d1a9 commit 119b75c

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

sound/pci/hda/patch_realtek.c

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2603,6 +2603,28 @@ static const struct hda_model_fixup alc882_fixup_models[] = {
26032603
{}
26042604
};
26052605

2606+
static const struct snd_hda_pin_quirk alc882_pin_fixup_tbl[] = {
2607+
SND_HDA_PIN_QUIRK(0x10ec1220, 0x1043, "ASUS", ALC1220_FIXUP_CLEVO_P950,
2608+
{0x14, 0x01014010},
2609+
{0x15, 0x01011012},
2610+
{0x16, 0x01016011},
2611+
{0x18, 0x01a19040},
2612+
{0x19, 0x02a19050},
2613+
{0x1a, 0x0181304f},
2614+
{0x1b, 0x0221401f},
2615+
{0x1e, 0x01456130}),
2616+
SND_HDA_PIN_QUIRK(0x10ec1220, 0x1462, "MS-7C35", ALC1220_FIXUP_CLEVO_P950,
2617+
{0x14, 0x01015010},
2618+
{0x15, 0x01011012},
2619+
{0x16, 0x01011011},
2620+
{0x18, 0x01a11040},
2621+
{0x19, 0x02a19050},
2622+
{0x1a, 0x0181104f},
2623+
{0x1b, 0x0221401f},
2624+
{0x1e, 0x01451130}),
2625+
{}
2626+
};
2627+
26062628
/*
26072629
* BIOS auto configuration
26082630
*/
@@ -2644,6 +2666,7 @@ static int patch_alc882(struct hda_codec *codec)
26442666

26452667
snd_hda_pick_fixup(codec, alc882_fixup_models, alc882_fixup_tbl,
26462668
alc882_fixups);
2669+
snd_hda_pick_pin_fixup(codec, alc882_pin_fixup_tbl, alc882_fixups, true);
26472670
snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE);
26482671

26492672
alc_auto_parse_customize_define(codec);

0 commit comments

Comments
 (0)