drv_codec.h 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. #ifndef __DRV_CODEC_H__
  2. #define __DRV_CODEC_H__
  3. #define SUNXI_DAC_DPC 0x00
  4. #define SUNXI_DAC_FIFOC 0x04
  5. #define SUNXI_DAC_FIFOS 0x08
  6. #define SUNXI_DAC_TXDATA 0x0c
  7. #define SUNXI_ADC_FIFOC 0x10
  8. #define SUNXI_ADC_FIFOS 0x14
  9. #define SUNXI_ADC_RXDATA 0x18
  10. #define DAC_MIXER_CTRL 0x20
  11. #define ADC_MIXER_CTRL 0x24
  12. #define ADDA_TUNE 0x28
  13. #define BIAS_DA16_CAL_CTRL0 0x2C
  14. #define BIAS_DA16_CAL_CTRL1 0x34
  15. #define SUNXI_DAC_CNT 0x40
  16. #define SUNXI_ADC_CNT 0x44
  17. #define SUNXI_DAC_DG 0x48
  18. #define SUNXI_ADC_DG 0x4c
  19. #define AC_PR_CFG 0x400
  20. /*AC_DAC_DPC:0x00*/
  21. #define EN_DAC 31
  22. #define MODQU 25
  23. #define DWA 24
  24. #define HPF_EN 18
  25. #define DVOL 12
  26. /*#define HUB_EN 0 */
  27. /*AC_DAC_FIFOC:0x04*/
  28. #define DAC_FS 29
  29. #define FIR_VER 28
  30. #define SEND_LASAT 26
  31. #define FIFO_MODE 24
  32. #define DAC_DRQ_CLR_CNT 21
  33. #define TX_TRIG_LEVEL 8
  34. #define ADDA_LOOP_EN 7
  35. #define DAC_MONO_EN 6
  36. #define TX_SAMPLE_BITS 5
  37. #define DAC_DRQ_EN 4
  38. #define DAC_IRQ_EN 3
  39. #define FIFO_UNDERRUN_IRQ_EN 2
  40. #define FIFO_OVERRUN_IRQ_EN 1
  41. #define FIFO_FLUSH 0
  42. /*AC_ADC_FIFOC:0x10*/
  43. #define ADFS 29
  44. #define EN_AD 28
  45. #define RX_FIFO_MODE 24
  46. #define ADCDFEN 16
  47. #define RX_FIFO_TRG_LEVEL 8
  48. #define ADC_MONO_EN 7
  49. #define RX_SAMPLE_BITS 6
  50. #define ADC_DRQ_EN 4
  51. #define ADC_IRQ_EN 3
  52. #define ADC_OVERRUN_IRQ_EN 1
  53. #define ADC_FIFO_FLUSH 0
  54. /*DAC_MIXER_CTRL: 0x20*/
  55. #define DAC_AG_R_EN 31 /* dac right enable bit */
  56. #define DAC_AG_L_EN 30 /* dac left enable bit */
  57. #define R_MIXER_EN 29 /* right output mixer */
  58. #define L_MIXER_EN 28 /* left output mixer */
  59. #define PH_R_MUTE 27 /* headphone right mute */
  60. #define PH_L_MUTE 26 /* headphone left mute */
  61. #define PH_R_PWR_SLT 25
  62. #define PH_L_PWR_SLT 24
  63. #define PH_COM_FC 22
  64. #define PH_COM_PROTEC 21
  65. #define R_MIXER_MUTE_MIC 20
  66. #define R_MIXER_MUTE_LINEIN 19
  67. #define R_MIXER_MUTE_FM 18
  68. #define R_MIXER_MUTE_R_DAC 17
  69. #define R_MIXER_MUTE_L_DAC 16
  70. #define R_MIXER_MUTE 16
  71. #define HP_POWER_EN 15
  72. #define L_MIXER_MUTE_MIC 12
  73. #define L_MIXER_MUTE_LINEIN 11
  74. #define L_MIXER_MUTE_FM 10
  75. #define L_MIXER_MUTE_R_DAC 9
  76. #define L_MIXER_MUTE_L_DAC 8
  77. #define L_MIXER_MUTE 8
  78. #define L_HP_TO_R_HP_MUTE 7
  79. #define R_HP_TO_L_HP_MUTE 6
  80. #define HP_VOL 0
  81. /*ADC_MIXER_CTRL: 0x24*/
  82. #define ADC_EN 31 /* adc enable bit */
  83. /* mic in boost stage to L or R output mixer gain control */
  84. #define MIC_GAIN_CTL 24
  85. #define LINEIN_VOL 21 /* right output mixer */
  86. #define ADC_IN_GAIN_CTL 16 /* adc input gain control */
  87. #define COS_SLOP_TM 14 /* COS slop time control for Anti-pop */
  88. #define ADC_MIX_MUTE_MIC 13
  89. #define ADC_MIX_MUTE_FML 12
  90. #define ADC_MIX_MUTE_FMR 11
  91. #define ADC_MIX_MUTE_LINEIN 10
  92. #define ADC_MIX_MUTE_L 9
  93. #define ADC_MIX_MUTE_R 8
  94. #define ADC_MIX_MUTE 8 /* ADC mixer mute control */
  95. #define PA_SPEED_SLT 7 /* PA speed select->0: normal 1: fast */
  96. #define FM_TO_MIX_GAIN 4 /* FMin to mixer gain control */
  97. #define MIC_BST_AMP_EN 3 /* MIC boost AMP enable */
  98. #define MIC_BOST_GAIN 0 /* MIC boast AMP gain control */
  99. /*AC_ADC_TXDATA:0x20*/
  100. #define TX_DATA 0
  101. /*AC_DAC_CNT:0x40*/
  102. #define TX_CNT 0
  103. /*AC_ADC_CNT:0x44*/
  104. #define RX_CNT 0
  105. /*AC_DAC_DG:0x48*/
  106. /*
  107. * DAC Modulator Debug
  108. * 0:DAC Modulator Normal Mode
  109. * 1:DAC Modulator Debug Mode
  110. */
  111. #define DAC_MODU_SELECT 11
  112. /*
  113. * DAC Pattern Select
  114. * 00:Normal(Audio sample from TX fifo)
  115. * 01: -6 dB sin wave
  116. * 10: -60 dB sin wave
  117. * 11: silent wave
  118. */
  119. #define DAC_PATTERN_SELECT 9
  120. /*
  121. * CODEC Clock Source Select
  122. * 0:codec clock from PLL
  123. * 1:codec clock from OSC(for debug)
  124. */
  125. #define CODEC_CLK_SELECT 8
  126. /*
  127. * DAC output channel swap enable
  128. * 0:disable
  129. * 1:enable
  130. */
  131. #define DA_SWP 6
  132. /*AC_ADC_DG:0x4c*/
  133. #define AD_SWP 24
  134. /*AC_PR_CFG:0x400*/
  135. #define AC_PR_RST 28
  136. #define AC_PR_RW 24
  137. #define AC_PR_ADDR 16
  138. #define ADDA_PR_WDAT 8
  139. #define ADDA_PR_RDAT 0
  140. /* 时钟配置相关寄存器 */
  141. #define R6_REG_CCU_BASE 0x01c20000
  142. #define R6_REG_PLL_AUDIO_CTRL (R6_REG_CCU_BASE + 0x008)
  143. #define R6_REG_BUS_CLK_GATING_0 (R6_REG_CCU_BASE + 0x060)
  144. #define R6_REG_BUS_CLK_GATING_1 (R6_REG_CCU_BASE + 0x064)
  145. #define R6_REG_BUS_CLK_GATING_2 (R6_REG_CCU_BASE + 0x068)
  146. #define R6_REG_AUDIO_CODEC_CLK (R6_REG_CCU_BASE + 0x140)
  147. #define R6_REG_BUS_SOFT_RST_0 (R6_REG_CCU_BASE + 0x02C0)
  148. #define R6_REG_BUS_SOFT_RST_1 (R6_REG_CCU_BASE + 0x02C4)
  149. #define R6_REG_BUS_SOFT_RST_2 (R6_REG_CCU_BASE + 0x02D0)
  150. /* GPIO配置相关寄存器 */
  151. #define R6_REG_PIO_BASE 0x01c20800
  152. #define R6_REG_PD_CFG0 (R6_REG_PIO_BASE + (3 * 0x24 + 0X00))
  153. #define R6_REG_PD_CFG1 (R6_REG_PIO_BASE + (3 * 0x24 + 0X04))
  154. #define R6_REG_PD_CFG2 (R6_REG_PIO_BASE + (3 * 0x24 + 0X08))
  155. #define R6_REG_PD_CFG3 (R6_REG_PIO_BASE + (3 * 0x24 + 0X0c))
  156. #define R6_REG_PD_DATA (R6_REG_PIO_BASE + (3 * 0x24 + 0X10))
  157. #define R6_REG_PD_DRV0 (R6_REG_PIO_BASE + (3 * 0x24 + 0X14))
  158. #define R6_REG_PD_DRV1 (R6_REG_PIO_BASE + (3 * 0x24 + 0X18))
  159. #define R6_REG_PD_PUL0 (R6_REG_PIO_BASE + (3 * 0x24 + 0X1c))
  160. #define R6_REG_PD_PUL1 (R6_REG_PIO_BASE + (3 * 0x24 + 0X20))
  161. /* AUDIO配置相关寄存器 */
  162. #define R6_REG_AC_BASE 0x01c23c00
  163. #define R6_REG_AC_DAC_DPC (R6_REG_AC_BASE + 0x00)
  164. #define R6_REG_AC_DAC_FIFOC (R6_REG_AC_BASE + 0x04)
  165. #define R6_REG_AC_DAC_FIFOS (R6_REG_AC_BASE + 0x08)
  166. #define R6_REG_AC_DAC_TXDADA (R6_REG_AC_BASE + 0x0c)
  167. #define R6_REG_AC_ADC_FIFOC (R6_REG_AC_BASE + 0x10)
  168. #define R6_REG_AC_ADC_FIFOS (R6_REG_AC_BASE + 0x14)
  169. #define R6_REG_AC_ADC_RXDADA (R6_REG_AC_BASE + 0x18)
  170. #define R6_REG_DAC_MIXER_CTRL (R6_REG_AC_BASE + 0x20)
  171. #define R6_REG_ADC_MIXER_CTRL (R6_REG_AC_BASE + 0x24)
  172. #define R6_REG_AC_DAC_CNT (R6_REG_AC_BASE + 0x40)
  173. /* DMA配置相关寄存器 */
  174. #define R6_REG_NDMA_0_BASE (0x01c02000 + 0x100 + 0 * 0x20)
  175. #define R6_REG_DMA_INT_CTRL (0x01c02000 + 0x00)
  176. #define R6_REG_DMA_INT_STA (0x01c02000 + 0x04)
  177. #define R6_REG_DMA_PTY_CFG (0x01c02000 + 0x08)
  178. #define REG_NDMA_CFG (0x0)
  179. #define REG_NDMA_SRC_ADR (0x4)
  180. #define REG_NDMA_DES_ADR (0x8)
  181. #define REG_NDMA_BYTE_CNT (0xc)
  182. // #define REG_NDMA_PAR (0x300 + 0x1c)
  183. #define NDMA_CFG_SRC_DRQ_IR_RX (0x00 << 0)
  184. #define NDMA_CFG_SRC_DRQ_NONE (0x01 << 0)
  185. #define NDMA_CFG_SRC_DRQ_SDRAM (0x11 << 0)
  186. #define NDMA_CFG_DST_LINEAR (0x00 << 21)
  187. #define NDMA_CFG_DST_DRQ_IR_RX (0x00 << 16)
  188. #define NDMA_CFG_DST_DRQ_NONE (0x01 << 16)
  189. #define NDMA_CFG_DST_DRQ_SRAM (0x10 << 16)
  190. #define NDMA_CFG_DST_DRQ_SDRAM (0x11 << 16)
  191. #define NDMA_CFG_SRC_DRQ_SRAM (0x10 << 0)
  192. #define NDMA_CFG_SRC_LINEAR (0x00 << 5)
  193. #define NDMA_CFG_SRC_BST4_WIDTH32 ((0x1 << 7) | (0x2 << 8))
  194. #define NDMA_CFG_DST_DRQ_CODEC (0x0c << 16)
  195. #define NDMA_CFG_DST_IO (0x1 << 21)
  196. #define NDMA_CFG_DST_BST4_WIDTH32 ((0x1 << 23) | (0x2 << 24))
  197. #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
  198. #endif