]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
ASoC: amd: acp: Fix for enabling DMIC on acp platforms via _DSD entry
authorVenkata Prasad Potturu <venkataprasad.potturu@amd.com>
Mon, 10 Mar 2025 18:32:01 +0000 (00:02 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 10 Apr 2025 12:39:13 +0000 (14:39 +0200)
[ Upstream commit 02e1cf7a352a3ba5f768849f2b4fcaaaa19f89e3 ]

Add condition check to register ACP PDM sound card by reading
_WOV acpi entry.

Fixes: 09068d624c49 ("ASoC: amd: acp: fix for acp platform device creation failure")
Signed-off-by: Venkata Prasad Potturu <venkataprasad.potturu@amd.com>
Link: https://patch.msgid.link/20250310183201.11979-15-venkataprasad.potturu@amd.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
sound/soc/amd/acp/acp-legacy-common.c

index be01b178172e8698a48a7b5c1f87729a97c7fbd5..e4af2640feeb14a3f9a23cdc1ea2bba1c1528687 100644 (file)
@@ -13,6 +13,7 @@
  */
 
 #include "amd.h"
+#include <linux/acpi.h>
 #include <linux/pci.h>
 #include <linux/export.h>
 
@@ -445,7 +446,9 @@ void check_acp_config(struct pci_dev *pci, struct acp_chip_info *chip)
 {
        struct acpi_device *pdm_dev;
        const union acpi_object *obj;
-       u32 pdm_addr;
+       acpi_handle handle;
+       acpi_integer dmic_status;
+       u32 pdm_addr, ret;
 
        switch (chip->acp_rev) {
        case ACP3X_DEV:
@@ -477,6 +480,11 @@ void check_acp_config(struct pci_dev *pci, struct acp_chip_info *chip)
                                                   obj->integer.value == pdm_addr)
                                chip->is_pdm_dev = true;
                }
+
+               handle = ACPI_HANDLE(&pci->dev);
+               ret = acpi_evaluate_integer(handle, "_WOV", NULL, &dmic_status);
+               if (!ACPI_FAILURE(ret))
+                       chip->is_pdm_dev = dmic_status;
        }
 }
 EXPORT_SYMBOL_NS_GPL(check_acp_config, SND_SOC_ACP_COMMON);