summaryrefslogtreecommitdiffstats
path: root/sound/soc/amd/acp/acp-pci.c
diff options
context:
space:
mode:
authorSyed Saba Kareem <Syed.SabaKareem@amd.com>2023-10-21 20:20:47 +0530
committerMark Brown <broonie@kernel.org>2023-10-25 17:21:48 +0100
commit3a94c8ad0aae2b14a55059869871ea2d199af489 (patch)
tree1ff0bb3dccdb880de26d65e38a0bc0c19b41eada /sound/soc/amd/acp/acp-pci.c
parentd4c2d5391d7efc29fdd59d54355526c9ace16bec (diff)
downloadlinux-3a94c8ad0aae2b14a55059869871ea2d199af489.tar.gz
linux-3a94c8ad0aae2b14a55059869871ea2d199af489.tar.bz2
linux-3a94c8ad0aae2b14a55059869871ea2d199af489.zip
ASoC: amd: acp: add code for scanning acp pdm controller
Add common code for scanning acp pdm controller and create platform device for the same. Signed-off-by: Syed Saba Kareem <Syed.SabaKareem@amd.com> Link: https://lore.kernel.org/r/20231021145110.478744-6-Syed.SabaKareem@amd.com Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound/soc/amd/acp/acp-pci.c')
-rw-r--r--sound/soc/amd/acp/acp-pci.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/sound/soc/amd/acp/acp-pci.c b/sound/soc/amd/acp/acp-pci.c
index d7fc4a0e9245..bbf079d47dc4 100644
--- a/sound/soc/amd/acp/acp-pci.c
+++ b/sound/soc/amd/acp/acp-pci.c
@@ -55,7 +55,7 @@ static int acp_pci_probe(struct pci_dev *pci, const struct pci_device_id *pci_id
int ret;
flag = snd_amd_acp_find_config(pci);
- if (flag != FLAG_AMD_LEGACY)
+ if (flag != FLAG_AMD_LEGACY && flag != FLAG_AMD_LEGACY_ONLY_DMIC)
return -ENODEV;
chip = devm_kzalloc(&pci->dev, sizeof(*chip), GFP_KERNEL);
@@ -129,6 +129,13 @@ static int acp_pci_probe(struct pci_dev *pci, const struct pci_device_id *pci_id
}
}
+ if (flag == FLAG_AMD_LEGACY_ONLY_DMIC) {
+ ret = check_acp_pdm(pci, chip);
+ if (ret < 0)
+ goto skip_pdev_creation;
+ }
+
+ chip->flag = flag;
memset(&pdevinfo, 0, sizeof(pdevinfo));
pdevinfo.name = chip->name;
@@ -145,6 +152,8 @@ static int acp_pci_probe(struct pci_dev *pci, const struct pci_device_id *pci_id
ret = PTR_ERR(pdev);
goto unregister_dmic_dev;
}
+
+skip_pdev_creation:
chip->chip_pdev = pdev;
dev_set_drvdata(&pci->dev, chip);
pm_runtime_set_autosuspend_delay(&pci->dev, 2000);