Skip to content

Instantly share code, notes, and snippets.

@shivanshs9
Created June 11, 2026 00:12
Show Gist options
  • Select an option

  • Save shivanshs9/63a08b106aec969bc960046ded6b6559 to your computer and use it in GitHub Desktop.

Select an option

Save shivanshs9/63a08b106aec969bc960046ded6b6559 to your computer and use it in GitHub Desktop.
Asus TUF Gaming A14 FA401EA speakers fix patch (based on Linux 7.0.10-arch1 kernel)
diff --git a/sound/soc/amd/acp-config.c b/sound/soc/amd/acp-config.c
index 1604ed679..39428cfa4 100644
--- a/sound/soc/amd/acp-config.c
+++ b/sound/soc/amd/acp-config.c
@@ -30,6 +30,12 @@ static const struct dmi_system_id acp70_acpi_flag_override_table[] = {
DMI_MATCH(DMI_PRODUCT_NAME, "HN7306EA"),
},
},
+ {
+ .matches = {
+ DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK COMPUTER INC."),
+ DMI_MATCH(DMI_BOARD_NAME, "FA401EA"),
+ },
+ },
{}
};
diff --git a/sound/soc/amd/acp/acp-sdw-legacy-mach.c b/sound/soc/amd/acp/acp-sdw-legacy-mach.c
index a9c8d9545..b764270f8 100644
--- a/sound/soc/amd/acp/acp-sdw-legacy-mach.c
+++ b/sound/soc/amd/acp/acp-sdw-legacy-mach.c
@@ -135,6 +135,14 @@ static const struct dmi_system_id soc_sdw_quirk_table[] = {
},
.driver_data = (void *)(ASOC_SDW_ACP_DMIC),
},
+ {
+ .callback = soc_sdw_quirk_cb,
+ .matches = {
+ DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK COMPUTER INC."),
+ DMI_MATCH(DMI_BOARD_NAME, "FA401EA"),
+ },
+ .driver_data = (void *)(ASOC_SDW_CODEC_SPKR),
+ },
{}
};
diff --git a/sound/soc/amd/acp/amd-acp70-acpi-match.c b/sound/soc/amd/acp/amd-acp70-acpi-match.c
index 1ae43df5d..d5ac73f13 100644
--- a/sound/soc/amd/acp/amd-acp70-acpi-match.c
+++ b/sound/soc/amd/acp/amd-acp70-acpi-match.c
@@ -585,6 +585,28 @@ static const struct snd_soc_acpi_link_adr acp70_rt1320_l0_rt722_l1[] = {
{}
};
+static const struct snd_soc_acpi_adr_device rt721_l1u0_jack_amp_dmic_adr[] = {
+ {
+ .adr = 0x000130025D072101ull,
+ /*
+ * ASUS FA401EA: jack, internal speakers, and DMIC are all
+ * provided by rt721 (AF01 / AF02 / AF04); no external amps.
+ */
+ .num_endpoints = ARRAY_SIZE(jack_amp_g1_dmic_endpoints),
+ .endpoints = jack_amp_g1_dmic_endpoints,
+ .name_prefix = "rt721",
+ },
+};
+
+static const struct snd_soc_acpi_link_adr acp70_rt721_l1u0_jack_amp_dmic[] = {
+ {
+ .mask = BIT(1),
+ .num_adr = ARRAY_SIZE(rt721_l1u0_jack_amp_dmic_adr),
+ .adr_d = rt721_l1u0_jack_amp_dmic_adr,
+ },
+ {}
+};
+
static const struct snd_soc_acpi_adr_device rt721_l1u0_tas2783x2_l1u8b_adr[] = {
{
.adr = 0x000130025D072101ull,
@@ -706,6 +728,11 @@ struct snd_soc_acpi_mach snd_soc_acpi_amd_acp70_sdw_machines[] = {
.machine_check = snd_soc_acpi_amd_sdca_is_device_rt712_vb,
.drv_name = "amd_sdw",
},
+ {
+ .link_mask = BIT(1),
+ .links = acp70_rt721_l1u0_jack_amp_dmic,
+ .drv_name = "amd_sdw",
+ },
{
.link_mask = BIT(1),
.links = acp70_rt721_l1u0_tas2783x2_l1u8b,
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment