Re: [PATCH] ASoC: amd: yc: Add DMI quirk for ASUS TUF Gaming A16 FA607NUQ
From: Mukunda,Vijendar
Date: Thu Nov 05 2026 - 00:56:39 EST
On 05/11/26 07:24, Zhang Heng wrote:
> [Some people who received this message don't often get email from zhangheng@xxxxxxxxxx. Learn why this is important at https://aka.ms/LearnAboutSenderIdentification ]
>
> 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.
This patch should be split into two patches:
1. Allow the _WOV=0 case to fall back to the DMI quirk table.
2. Add the DMI quirk for the ASUS TUF Gaming A16 FA607NUQ.
>
> Closes: https://bugzilla.kernel.org/show_bug.cgi?id=222214
> Signed-off-by: Zhang Heng <zhangheng@xxxxxxxxxx>
> ---
> 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