From: Takashi Iwai <tiwai@suse.de>
To: "Zack Fitch" <zack@internetuniverse.org>
Cc: alsa-devel@alsa-project.org
Subject: Re: [PATCH] ALSA: hda/realtek: enable dual-DAC on Gigabyte X570S/X870E ALC1220
Date: Wed, 11 Mar 2026 10:09:38 +0100 [thread overview]
Message-ID: <87eclq4trh.wl-tiwai@suse.de> (raw)
In-Reply-To: <98643a1eb0aba1a7dbc0742fc831317e35581c5c@internetuniverse.org>
On Wed, 11 Mar 2026 09:24:47 +0100,
Zack Fitch wrote:
>
> Hi,
>
> Please consider the attached patch for the Gigabyte X570S/X870E Aorus
> ALC1220 audio codec.
>
> Thanks,
> Zack
> From 06deee185e29ee352ede90ea63fdb0448da242ac Mon Sep 17 00:00:00 2001
> From: Zack Fitch <zack@internetuniverse.org>
> Date: Wed, 11 Mar 2026 01:22:39 -0700
> Subject: [PATCH] ALSA: hda/realtek: enable dual-DAC on Gigabyte X570S/X870E
> ALC1220
>
> The ALC1220 codec on Gigabyte X570S Aorus Master and X870E AORUS
> XTREME AI TOP boards (subsystem 0x1458:0xa0d5) has two usable output
> paths:
>
> - Pin 0x14 (front HP): hardwired to mixer 0x0c -> DAC 0x02
> - Pin 0x1b (rear line-out): 5 connections (0x0c 0x0d 0x0e 0x0f 0x26)
>
> The existing ALC1220_FIXUP_GB_X570 quirk overrides 0x1b's connection
> list to {0x0c} only, forcing both outputs onto DAC 0x02. It also does
> not suppress auto-mute, so inserting headphones silences the rear
> line-out.
>
> Desktop users need both outputs active simultaneously with independent
> DAC routing for per-application audio (e.g., Discord to headphones,
> music to speakers).
>
> Add ALC1220_FIXUP_GB_AORUS_NO_AUTOMUTE which:
> - Does NOT restrict 0x1b's connection list, allowing the generic HDA
> parser to assign DAC 0x03 (via mixer 0x0d) as an independent output
> - Sets suppress_auto_mute so front HP insertion does not mute rear
>
> The coefficient writes from gb_x570 are not required for audio output
> on these boards, as confirmed by testing with model=generic and by
> reverse-engineering the Windows Realtek driver which applies no
> board-specific handling for this subsystem ID.
>
> Tested on: Gigabyte X870E AORUS XTREME AI TOP
> ALC1220 codec, subsystem 0x1458:0xa0d5
> AMD Ryzen HD Audio Controller [1022:15e3]
> Kernel 6.18.13-arch1-1
>
> Signed-off-by: Zack Fitch <zack@internetuniverse.org>
So this model doesn't need any former x570-specific COEFs after all?
Also, what's the reason to suppress the auto-mute inevitably? By
plugging the headphone, all speaker outputs should be suppressed --
that's the default designed behavior. If user wants to use the
speaker outputs, they can simply turn the mixer swith "Auto-Mute Mode"
to "disabled" on the fly.
Last but not least, you don't need to add extra model string just for
a single use case. If user wants to apply the same for another model,
they can pick it up by passing the SSID alias.
thanks,
Takashi
> ---
> sound/hda/codecs/realtek/alc882.c | 22 +++++++++++++++++++++-
> 1 file changed, 21 insertions(+), 1 deletion(-)
>
> diff --git a/sound/hda/codecs/realtek/alc882.c b/sound/hda/codecs/realtek/alc882.c
> index 529fecd5ba..6b61719b96 100644
> --- a/sound/hda/codecs/realtek/alc882.c
> +++ b/sound/hda/codecs/realtek/alc882.c
> @@ -54,6 +54,7 @@ enum {
> ALC887_FIXUP_BASS_CHMAP,
> ALC1220_FIXUP_GB_DUAL_CODECS,
> ALC1220_FIXUP_GB_X570,
> + ALC1220_FIXUP_GB_AORUS_NO_AUTOMUTE,
> ALC1220_FIXUP_CLEVO_P950,
> ALC1220_FIXUP_CLEVO_PB51ED,
> ALC1220_FIXUP_CLEVO_PB51ED_PINS,
> @@ -211,6 +212,20 @@ static void alc1220_fixup_gb_x570(struct hda_codec *codec,
> }
> }
>
> +/* Gigabyte X570S/X870E Aorus boards: enable independent DAC routing
> + * by not restricting pin 0x1b's connection list, and suppress auto-mute
> + * so front headphone insertion does not silence rear line-out.
> + */
> +static void alc1220_fixup_gb_aorus_no_automute(struct hda_codec *codec,
> + const struct hda_fixup *fix,
> + int action)
> +{
> + struct alc_spec *spec = codec->spec;
> +
> + if (action == HDA_FIXUP_ACT_PRE_PROBE)
> + spec->gen.suppress_auto_mute = 1;
> +}
> +
> static void alc1220_fixup_clevo_p950(struct hda_codec *codec,
> const struct hda_fixup *fix,
> int action)
> @@ -514,6 +529,10 @@ static const struct hda_fixup alc882_fixups[] = {
> .type = HDA_FIXUP_FUNC,
> .v.func = alc1220_fixup_gb_x570,
> },
> + [ALC1220_FIXUP_GB_AORUS_NO_AUTOMUTE] = {
> + .type = HDA_FIXUP_FUNC,
> + .v.func = alc1220_fixup_gb_aorus_no_automute,
> + },
> [ALC1220_FIXUP_CLEVO_P950] = {
> .type = HDA_FIXUP_FUNC,
> .v.func = alc1220_fixup_clevo_p950,
> @@ -635,7 +654,7 @@ static const struct hda_quirk alc882_fixup_tbl[] = {
> SND_PCI_QUIRK(0x1458, 0xa0b8, "Gigabyte AZ370-Gaming", ALC1220_FIXUP_GB_DUAL_CODECS),
> SND_PCI_QUIRK(0x1458, 0xa0cd, "Gigabyte X570 Aorus Master", ALC1220_FIXUP_GB_X570),
> SND_PCI_QUIRK(0x1458, 0xa0ce, "Gigabyte X570 Aorus Xtreme", ALC1220_FIXUP_GB_X570),
> - SND_PCI_QUIRK(0x1458, 0xa0d5, "Gigabyte X570S Aorus Master", ALC1220_FIXUP_GB_X570),
> + SND_PCI_QUIRK(0x1458, 0xa0d5, "Gigabyte X570S/X870E Aorus", ALC1220_FIXUP_GB_AORUS_NO_AUTOMUTE),
> SND_PCI_QUIRK(0x1462, 0x11f7, "MSI-GE63", ALC1220_FIXUP_CLEVO_P950),
> SND_PCI_QUIRK(0x1462, 0x1228, "MSI-GP63", ALC1220_FIXUP_CLEVO_P950),
> SND_PCI_QUIRK(0x1462, 0x1229, "MSI-GP73", ALC1220_FIXUP_CLEVO_P950),
> @@ -718,6 +737,7 @@ static const struct hda_model_fixup alc882_fixup_models[] = {
> {.id = ALC887_FIXUP_ASUS_BASS, .name = "asus-bass"},
> {.id = ALC1220_FIXUP_GB_DUAL_CODECS, .name = "dual-codecs"},
> {.id = ALC1220_FIXUP_GB_X570, .name = "gb-x570"},
> + {.id = ALC1220_FIXUP_GB_AORUS_NO_AUTOMUTE, .name = "gb-aorus-no-automute"},
> {.id = ALC1220_FIXUP_CLEVO_P950, .name = "clevo-p950"},
> {}
> };
>
> base-commit: fd7df93013c5118812e63a52635dc6c3a805a1de
> --
> 2.53.0
>
prev parent reply other threads:[~2026-03-11 9:10 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-11 8:24 [PATCH] ALSA: hda/realtek: enable dual-DAC on Gigabyte X570S/X870E ALC1220 Zack Fitch
2026-03-11 9:09 ` Takashi Iwai [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87eclq4trh.wl-tiwai@suse.de \
--to=tiwai@suse.de \
--cc=alsa-devel@alsa-project.org \
--cc=zack@internetuniverse.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox