12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- // SPDX-License-Identifier: GPL-2.0+
- //
- // Machine driver for AMD Renoir platform using DMIC
- //
- //Copyright 2020 Advanced Micro Devices, Inc.
- #include <sound/soc.h>
- #include <sound/soc-dapm.h>
- #include <linux/module.h>
- #include <sound/pcm.h>
- #include <sound/pcm_params.h>
- #include <linux/io.h>
- #include "rn_acp3x.h"
- #define DRV_NAME "acp_pdm_mach"
- SND_SOC_DAILINK_DEF(acp_pdm,
- DAILINK_COMP_ARRAY(COMP_CPU("acp_rn_pdm_dma.0")));
- SND_SOC_DAILINK_DEF(dmic_codec,
- DAILINK_COMP_ARRAY(COMP_CODEC("dmic-codec.0",
- "dmic-hifi")));
- SND_SOC_DAILINK_DEF(platform,
- DAILINK_COMP_ARRAY(COMP_PLATFORM("acp_rn_pdm_dma.0")));
- static struct snd_soc_dai_link acp_dai_pdm[] = {
- {
- .name = "acp3x-dmic-capture",
- .stream_name = "DMIC capture",
- .capture_only = 1,
- SND_SOC_DAILINK_REG(acp_pdm, dmic_codec, platform),
- },
- };
- static struct snd_soc_card acp_card = {
- .name = "acp",
- .owner = THIS_MODULE,
- .dai_link = acp_dai_pdm,
- .num_links = 1,
- };
- static int acp_probe(struct platform_device *pdev)
- {
- int ret;
- struct acp_pdm *machine = NULL;
- struct snd_soc_card *card;
- card = &acp_card;
- acp_card.dev = &pdev->dev;
- platform_set_drvdata(pdev, card);
- snd_soc_card_set_drvdata(card, machine);
- ret = devm_snd_soc_register_card(&pdev->dev, card);
- if (ret) {
- return dev_err_probe(&pdev->dev, ret,
- "snd_soc_register_card(%s) failed\n",
- card->name);
- }
- return 0;
- }
- static struct platform_driver acp_mach_driver = {
- .driver = {
- .name = "acp_pdm_mach",
- .pm = &snd_soc_pm_ops,
- },
- .probe = acp_probe,
- };
- module_platform_driver(acp_mach_driver);
- MODULE_AUTHOR("[email protected]");
- MODULE_LICENSE("GPL v2");
- MODULE_ALIAS("platform:" DRV_NAME);
|