[PATCH] ASoC: amd: yc: Add DMI quirk for ASUS TUF Gaming A16 FA607NUQ

Zhang Heng posted 1 patch 2 hours ago
sound/soc/amd/yc/acp6x-mach.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
[PATCH] ASoC: amd: yc: Add DMI quirk for ASUS TUF Gaming A16 FA607NUQ
Posted by Zhang Heng 2 hours ago
The ASUS TUF Gaming A16 FA607NUQ has an internal DMIC array connected
to the AMD ACP 6.x PDM interface, but its BIOS does not configure the
_WOV ACPI method correctly — it returns 0, causing the driver to
return -ENODEV before the DMI quirk table is consulted.

Not all BIOS implementations report _WOV correctly. The DMI quirk
table already serves as a fallback for machines with broken ACPI
values (the _WOV read-failure path already falls through to it).
Extend the same fallback to the _WOV=0 case so that DMI overrides
can take effect for machines whose BIOS reports _WOV incorrectly.

Add a DMI entry for the ASUS TUF Gaming A16 FA607NUQ. After applying
this fix, the internal DMIC is detected and captured from correctly
on the affected machine.

Closes: https://bugzilla.kernel.org/show_bug.cgi?id=222214
Signed-off-by: Zhang Heng <zhangheng@kylinos.cn>
---
 sound/soc/amd/yc/acp6x-mach.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/sound/soc/amd/yc/acp6x-mach.c b/sound/soc/amd/yc/acp6x-mach.c
index 4908f4cc147a..fdeaedcfb178 100644
--- a/sound/soc/amd/yc/acp6x-mach.c
+++ b/sound/soc/amd/yc/acp6x-mach.c
@@ -969,6 +969,13 @@ static const struct dmi_system_id yc_acp_quirk_table[] = {
 			DMI_MATCH(DMI_PRODUCT_NAME, "HP 255R 15.6 inch G10 Notebook PC"),
 		}
 	},
+	{
+		.driver_data = &acp6x_card,
+		.matches = {
+			DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK COMPUTER INC."),
+			DMI_MATCH(DMI_PRODUCT_NAME, "TUF Gaming A16 FA607NUQ"),
+		}
+	},
 	{}
 };
 
@@ -1000,7 +1007,7 @@ static int acp6x_probe(struct platform_device *pdev)
 	if (!ACPI_FAILURE(ret)) {
 		wov_en = dmic_status;
 		if (!wov_en)
-			return -ENODEV;
+			goto check_dmi_entry;
 	} else {
 		/* Incase of ACPI method read failure then jump to check_dmi_entry */
 		goto check_dmi_entry;
-- 
2.25.1