card_default.c 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <sound/snd_core.h>
  5. #include <aw_common.h>
  6. #ifndef CONFIG_KERNEL_FREERTOS
  7. #include <init.h>
  8. #endif
  9. #ifdef CONFIG_SND_PLATFORM_SUNXI_CPUDAI
  10. extern struct snd_codec sunxi_audiocodec;
  11. #endif
  12. #ifdef CONFIG_SND_CODEC_AC108
  13. extern struct snd_codec ac108_codec;
  14. #else
  15. extern struct snd_codec dummy_codec;
  16. #endif
  17. #ifdef CONFIG_SND_PLATFORM_SUNXI_DMIC
  18. extern struct snd_codec dmic_codec;
  19. #endif
  20. #ifdef CONFIG_SND_PLATFORM_SUNXI_SPDIF
  21. extern struct snd_codec spdif_codec;
  22. #endif
  23. int sunxi_soundcard_init(void)
  24. {
  25. int ret = 0;
  26. char *card_name = NULL;
  27. //maybe unused for compile warning.
  28. UNUSED(ret);
  29. UNUSED(card_name);
  30. /* ------------------------------------------------------------------------- */
  31. /* AUDIOCODEC */
  32. /* ------------------------------------------------------------------------- */
  33. #ifdef CONFIG_SND_PLATFORM_SUNXI_CPUDAI
  34. struct snd_codec *audio_codec = NULL;
  35. card_name = "audiocodec";
  36. audio_codec = &sunxi_audiocodec;
  37. /* register audiocodec sound card */
  38. ret = snd_card_register(card_name, audio_codec,
  39. SND_PLATFORM_TYPE_CPUDAI);
  40. if (ret == 0) {
  41. snd_print("soundcards: audiocodec register success!\n");
  42. } else {
  43. snd_err("soundcards: audiocodec register failed!\n");
  44. }
  45. #endif
  46. /* ------------------------------------------------------------------------- */
  47. /* DAUDIO */
  48. /* ------------------------------------------------------------------------- */
  49. #ifdef CONFIG_SND_PLATFORM_SUNXI_DAUDIO0
  50. #ifdef CONFIG_SND_CODEC_AC108
  51. card_name = "ac108";
  52. audio_codec = &ac108_codec;
  53. #else
  54. card_name = "snddaudio0";
  55. audio_codec = &dummy_codec;
  56. #endif
  57. /* register daudio0 sound card */
  58. ret = snd_card_register("snddaudio0", audio_codec, SND_PLATFORM_TYPE_DAUDIO0);
  59. if (ret == 0) {
  60. snd_print("soundcards: %s register success!\n", card_name);
  61. } else {
  62. snd_err("soundcards: %s register failed!\n", card_name);
  63. }
  64. #endif
  65. #ifdef CONFIG_SND_PLATFORM_SUNXI_DAUDIO1
  66. card_name = "snddaudio1";
  67. audio_codec = &dummy_codec;
  68. /* register daudio1 sound card */
  69. ret = snd_card_register("snddaudio1", audio_codec, SND_PLATFORM_TYPE_DAUDIO1);
  70. if (ret == 0) {
  71. snd_print("soundcards: %s register success!\n", card_name);
  72. } else {
  73. snd_err("soundcards: %s register failed!\n", card_name);
  74. }
  75. #endif
  76. #ifdef CONFIG_SND_PLATFORM_SUNXI_DAUDIO2
  77. card_name = "snddaudio2";
  78. audio_codec = &dummy_codec;
  79. /* register daudio2 sound card */
  80. ret = snd_card_register("snddaudio2", audio_codec, SND_PLATFORM_TYPE_DAUDIO2);
  81. if (ret == 0) {
  82. snd_print("soundcards: %s register success!\n", card_name);
  83. } else {
  84. snd_err("soundcards: %s register failed!\n", card_name);
  85. }
  86. #endif
  87. #ifdef CONFIG_SND_PLATFORM_SUNXI_DAUDIO3
  88. card_name = "snddaudio3";
  89. audio_codec = &dummy_codec;
  90. /* register daudio3 sound card */
  91. ret = snd_card_register("snddaudio3", audio_codec, SND_PLATFORM_TYPE_DAUDIO3);
  92. if (ret == 0) {
  93. snd_print("soundcards: %s register success!\n", card_name);
  94. } else {
  95. snd_err("soundcards: %s register failed!\n", card_name);
  96. }
  97. #endif
  98. /* ------------------------------------------------------------------------- */
  99. /* DMIC */
  100. /* ------------------------------------------------------------------------- */
  101. #ifdef CONFIG_SND_PLATFORM_SUNXI_DMIC
  102. card_name = "snddmic";
  103. audio_codec = &dmic_codec;
  104. /* register dmic sound card */
  105. ret = snd_card_register(card_name, audio_codec,
  106. SND_PLATFORM_TYPE_DMIC);
  107. if (ret == 0) {
  108. snd_print("soundcards: %s register success!\n", card_name);
  109. } else {
  110. snd_err("soundcards: %s register failed!\n", card_name);
  111. }
  112. #endif
  113. /* ------------------------------------------------------------------------- */
  114. /* SPDIF */
  115. /* ------------------------------------------------------------------------- */
  116. #ifdef CONFIG_SND_PLATFORM_SUNXI_SPDIF
  117. card_name = "sndspdif";
  118. audio_codec = &spdif_codec;
  119. /* register spdif sound card */
  120. ret = snd_card_register(card_name, audio_codec,
  121. SND_PLATFORM_TYPE_SPDIF);
  122. if (ret == 0) {
  123. snd_print("soundcards: %s register success!\n", card_name);
  124. } else {
  125. snd_err("soundcards: %s register failed!\n", card_name);
  126. }
  127. #endif
  128. /* Sound cards list */
  129. snd_card_list();
  130. return 0;
  131. }
  132. #ifndef CONFIG_KERNEL_FREERTOS
  133. late_initcall(sunxi_soundcard_init);
  134. #endif