acp3x-rn.c 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. // SPDX-License-Identifier: GPL-2.0+
  2. //
  3. // Machine driver for AMD Renoir platform using DMIC
  4. //
  5. //Copyright 2020 Advanced Micro Devices, Inc.
  6. #include <sound/soc.h>
  7. #include <sound/soc-dapm.h>
  8. #include <linux/module.h>
  9. #include <sound/pcm.h>
  10. #include <sound/pcm_params.h>
  11. #include <linux/io.h>
  12. #include "rn_acp3x.h"
  13. #define DRV_NAME "acp_pdm_mach"
  14. SND_SOC_DAILINK_DEF(acp_pdm,
  15. DAILINK_COMP_ARRAY(COMP_CPU("acp_rn_pdm_dma.0")));
  16. SND_SOC_DAILINK_DEF(dmic_codec,
  17. DAILINK_COMP_ARRAY(COMP_CODEC("dmic-codec.0",
  18. "dmic-hifi")));
  19. SND_SOC_DAILINK_DEF(platform,
  20. DAILINK_COMP_ARRAY(COMP_PLATFORM("acp_rn_pdm_dma.0")));
  21. static struct snd_soc_dai_link acp_dai_pdm[] = {
  22. {
  23. .name = "acp3x-dmic-capture",
  24. .stream_name = "DMIC capture",
  25. .capture_only = 1,
  26. SND_SOC_DAILINK_REG(acp_pdm, dmic_codec, platform),
  27. },
  28. };
  29. static struct snd_soc_card acp_card = {
  30. .name = "acp",
  31. .owner = THIS_MODULE,
  32. .dai_link = acp_dai_pdm,
  33. .num_links = 1,
  34. };
  35. static int acp_probe(struct platform_device *pdev)
  36. {
  37. int ret;
  38. struct acp_pdm *machine = NULL;
  39. struct snd_soc_card *card;
  40. card = &acp_card;
  41. acp_card.dev = &pdev->dev;
  42. platform_set_drvdata(pdev, card);
  43. snd_soc_card_set_drvdata(card, machine);
  44. ret = devm_snd_soc_register_card(&pdev->dev, card);
  45. if (ret) {
  46. return dev_err_probe(&pdev->dev, ret,
  47. "snd_soc_register_card(%s) failed\n",
  48. card->name);
  49. }
  50. return 0;
  51. }
  52. static struct platform_driver acp_mach_driver = {
  53. .driver = {
  54. .name = "acp_pdm_mach",
  55. .pm = &snd_soc_pm_ops,
  56. },
  57. .probe = acp_probe,
  58. };
  59. module_platform_driver(acp_mach_driver);
  60. MODULE_AUTHOR("[email protected]");
  61. MODULE_LICENSE("GPL v2");
  62. MODULE_ALIAS("platform:" DRV_NAME);