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