axg-audio.h 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. /* SPDX-License-Identifier: (GPL-2.0 OR MIT) */
  2. /*
  3. * Copyright (c) 2018 BayLibre, SAS.
  4. * Author: Jerome Brunet <[email protected]>
  5. */
  6. #ifndef __AXG_AUDIO_CLKC_H
  7. #define __AXG_AUDIO_CLKC_H
  8. /*
  9. * Audio Clock register offsets
  10. *
  11. * Register offsets from the datasheet must be multiplied by 4 before
  12. * to get the right offset
  13. */
  14. #define AUDIO_CLK_GATE_EN 0x000
  15. #define AUDIO_MCLK_A_CTRL 0x004
  16. #define AUDIO_MCLK_B_CTRL 0x008
  17. #define AUDIO_MCLK_C_CTRL 0x00C
  18. #define AUDIO_MCLK_D_CTRL 0x010
  19. #define AUDIO_MCLK_E_CTRL 0x014
  20. #define AUDIO_MCLK_F_CTRL 0x018
  21. #define AUDIO_MST_PAD_CTRL0 0x01c
  22. #define AUDIO_MST_PAD_CTRL1 0x020
  23. #define AUDIO_SW_RESET 0x024
  24. #define AUDIO_MST_A_SCLK_CTRL0 0x040
  25. #define AUDIO_MST_A_SCLK_CTRL1 0x044
  26. #define AUDIO_MST_B_SCLK_CTRL0 0x048
  27. #define AUDIO_MST_B_SCLK_CTRL1 0x04C
  28. #define AUDIO_MST_C_SCLK_CTRL0 0x050
  29. #define AUDIO_MST_C_SCLK_CTRL1 0x054
  30. #define AUDIO_MST_D_SCLK_CTRL0 0x058
  31. #define AUDIO_MST_D_SCLK_CTRL1 0x05C
  32. #define AUDIO_MST_E_SCLK_CTRL0 0x060
  33. #define AUDIO_MST_E_SCLK_CTRL1 0x064
  34. #define AUDIO_MST_F_SCLK_CTRL0 0x068
  35. #define AUDIO_MST_F_SCLK_CTRL1 0x06C
  36. #define AUDIO_CLK_TDMIN_A_CTRL 0x080
  37. #define AUDIO_CLK_TDMIN_B_CTRL 0x084
  38. #define AUDIO_CLK_TDMIN_C_CTRL 0x088
  39. #define AUDIO_CLK_TDMIN_LB_CTRL 0x08C
  40. #define AUDIO_CLK_TDMOUT_A_CTRL 0x090
  41. #define AUDIO_CLK_TDMOUT_B_CTRL 0x094
  42. #define AUDIO_CLK_TDMOUT_C_CTRL 0x098
  43. #define AUDIO_CLK_SPDIFIN_CTRL 0x09C
  44. #define AUDIO_CLK_SPDIFOUT_CTRL 0x0A0
  45. #define AUDIO_CLK_RESAMPLE_CTRL 0x0A4
  46. #define AUDIO_CLK_LOCKER_CTRL 0x0A8
  47. #define AUDIO_CLK_PDMIN_CTRL0 0x0AC
  48. #define AUDIO_CLK_PDMIN_CTRL1 0x0B0
  49. #define AUDIO_CLK_SPDIFOUT_B_CTRL 0x0B4
  50. /* SM1 introduce new register and some shifts :( */
  51. #define AUDIO_CLK_GATE_EN1 0x004
  52. #define AUDIO_SM1_MCLK_A_CTRL 0x008
  53. #define AUDIO_SM1_MCLK_B_CTRL 0x00C
  54. #define AUDIO_SM1_MCLK_C_CTRL 0x010
  55. #define AUDIO_SM1_MCLK_D_CTRL 0x014
  56. #define AUDIO_SM1_MCLK_E_CTRL 0x018
  57. #define AUDIO_SM1_MCLK_F_CTRL 0x01C
  58. #define AUDIO_SM1_MST_PAD_CTRL0 0x020
  59. #define AUDIO_SM1_MST_PAD_CTRL1 0x024
  60. #define AUDIO_SM1_SW_RESET0 0x028
  61. #define AUDIO_SM1_SW_RESET1 0x02C
  62. #define AUDIO_CLK81_CTRL 0x030
  63. #define AUDIO_CLK81_EN 0x034
  64. /*
  65. * CLKID index values
  66. * These indices are entirely contrived and do not map onto the hardware.
  67. */
  68. #define AUD_CLKID_MST_A_MCLK_SEL 59
  69. #define AUD_CLKID_MST_B_MCLK_SEL 60
  70. #define AUD_CLKID_MST_C_MCLK_SEL 61
  71. #define AUD_CLKID_MST_D_MCLK_SEL 62
  72. #define AUD_CLKID_MST_E_MCLK_SEL 63
  73. #define AUD_CLKID_MST_F_MCLK_SEL 64
  74. #define AUD_CLKID_MST_A_MCLK_DIV 65
  75. #define AUD_CLKID_MST_B_MCLK_DIV 66
  76. #define AUD_CLKID_MST_C_MCLK_DIV 67
  77. #define AUD_CLKID_MST_D_MCLK_DIV 68
  78. #define AUD_CLKID_MST_E_MCLK_DIV 69
  79. #define AUD_CLKID_MST_F_MCLK_DIV 70
  80. #define AUD_CLKID_SPDIFOUT_CLK_SEL 71
  81. #define AUD_CLKID_SPDIFOUT_CLK_DIV 72
  82. #define AUD_CLKID_SPDIFIN_CLK_SEL 73
  83. #define AUD_CLKID_SPDIFIN_CLK_DIV 74
  84. #define AUD_CLKID_PDM_DCLK_SEL 75
  85. #define AUD_CLKID_PDM_DCLK_DIV 76
  86. #define AUD_CLKID_PDM_SYSCLK_SEL 77
  87. #define AUD_CLKID_PDM_SYSCLK_DIV 78
  88. #define AUD_CLKID_MST_A_SCLK_PRE_EN 92
  89. #define AUD_CLKID_MST_B_SCLK_PRE_EN 93
  90. #define AUD_CLKID_MST_C_SCLK_PRE_EN 94
  91. #define AUD_CLKID_MST_D_SCLK_PRE_EN 95
  92. #define AUD_CLKID_MST_E_SCLK_PRE_EN 96
  93. #define AUD_CLKID_MST_F_SCLK_PRE_EN 97
  94. #define AUD_CLKID_MST_A_SCLK_DIV 98
  95. #define AUD_CLKID_MST_B_SCLK_DIV 99
  96. #define AUD_CLKID_MST_C_SCLK_DIV 100
  97. #define AUD_CLKID_MST_D_SCLK_DIV 101
  98. #define AUD_CLKID_MST_E_SCLK_DIV 102
  99. #define AUD_CLKID_MST_F_SCLK_DIV 103
  100. #define AUD_CLKID_MST_A_SCLK_POST_EN 104
  101. #define AUD_CLKID_MST_B_SCLK_POST_EN 105
  102. #define AUD_CLKID_MST_C_SCLK_POST_EN 106
  103. #define AUD_CLKID_MST_D_SCLK_POST_EN 107
  104. #define AUD_CLKID_MST_E_SCLK_POST_EN 108
  105. #define AUD_CLKID_MST_F_SCLK_POST_EN 109
  106. #define AUD_CLKID_MST_A_LRCLK_DIV 110
  107. #define AUD_CLKID_MST_B_LRCLK_DIV 111
  108. #define AUD_CLKID_MST_C_LRCLK_DIV 112
  109. #define AUD_CLKID_MST_D_LRCLK_DIV 113
  110. #define AUD_CLKID_MST_E_LRCLK_DIV 114
  111. #define AUD_CLKID_MST_F_LRCLK_DIV 115
  112. #define AUD_CLKID_TDMIN_A_SCLK_PRE_EN 137
  113. #define AUD_CLKID_TDMIN_B_SCLK_PRE_EN 138
  114. #define AUD_CLKID_TDMIN_C_SCLK_PRE_EN 139
  115. #define AUD_CLKID_TDMIN_LB_SCLK_PRE_EN 140
  116. #define AUD_CLKID_TDMOUT_A_SCLK_PRE_EN 141
  117. #define AUD_CLKID_TDMOUT_B_SCLK_PRE_EN 142
  118. #define AUD_CLKID_TDMOUT_C_SCLK_PRE_EN 143
  119. #define AUD_CLKID_TDMIN_A_SCLK_POST_EN 144
  120. #define AUD_CLKID_TDMIN_B_SCLK_POST_EN 145
  121. #define AUD_CLKID_TDMIN_C_SCLK_POST_EN 146
  122. #define AUD_CLKID_TDMIN_LB_SCLK_POST_EN 147
  123. #define AUD_CLKID_TDMOUT_A_SCLK_POST_EN 148
  124. #define AUD_CLKID_TDMOUT_B_SCLK_POST_EN 149
  125. #define AUD_CLKID_TDMOUT_C_SCLK_POST_EN 150
  126. #define AUD_CLKID_SPDIFOUT_B_CLK_SEL 153
  127. #define AUD_CLKID_SPDIFOUT_B_CLK_DIV 154
  128. #define AUD_CLKID_CLK81_EN 173
  129. #define AUD_CLKID_SYSCLK_A_DIV 174
  130. #define AUD_CLKID_SYSCLK_B_DIV 175
  131. #define AUD_CLKID_SYSCLK_A_EN 176
  132. #define AUD_CLKID_SYSCLK_B_EN 177
  133. /* include the CLKIDs which are part of the DT bindings */
  134. #include <dt-bindings/clock/axg-audio-clkc.h>
  135. #define NR_CLKS 178
  136. #endif /*__AXG_AUDIO_CLKC_H */