es8326.h 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. /*
  3. * es8326.h -- es8326 ALSA SoC audio driver
  4. * Copyright Everest Semiconductor Co.,Ltd
  5. *
  6. * Authors: David Yang <[email protected]>
  7. */
  8. #ifndef _ES8326_H
  9. #define _ES8326_H
  10. #define CONFIG_HHTECH_MINIPMP 1
  11. /* ES8326 register space */
  12. #define ES8326_RESET 0x00
  13. #define ES8326_CLK_CTL 0x01
  14. #define ES8326_CLK_INV 0x02
  15. #define ES8326_CLK_RESAMPLE 0x03
  16. #define ES8326_CLK_DIV1 0x04
  17. #define ES8326_CLK_DIV2 0x05
  18. #define ES8326_CLK_DLL 0x06
  19. #define ES8326_CLK_MUX 0x07
  20. #define ES8326_CLK_ADC_SEL 0x08
  21. #define ES8326_CLK_DAC_SEL 0x09
  22. #define ES8326_CLK_ADC_OSR 0x0a
  23. #define ES8326_CLK_DAC_OSR 0x0b
  24. #define ES8326_CLK_DIV_CPC 0x0c
  25. #define ES8326_CLK_DIV_BCLK 0x0d
  26. #define ES8326_CLK_TRI 0x0e
  27. #define ES8326_CLK_DIV_LRCK 0x0f
  28. #define ES8326_CLK_VMIDS1 0x10
  29. #define ES8326_CLK_VMIDS2 0x11
  30. #define ES8326_CLK_CAL_TIME 0x12
  31. #define ES8326_FMT 0x13
  32. #define ES8326_DAC_MUTE 0x14
  33. #define ES8326_ADC_MUTE 0x15
  34. #define ES8326_ANA_PDN 0x16
  35. #define ES8326_PGA_PDN 0x17
  36. #define ES8326_VMIDSEL 0x18
  37. #define ES8326_ANA_LP 0x19
  38. #define ES8326_ANA_DMS 0x1a
  39. #define ES8326_ANA_MICBIAS 0x1b
  40. #define ES8326_ANA_VSEL 0x1c
  41. #define ES8326_SYS_BIAS 0x1d
  42. #define ES8326_BIAS_SW1 0x1e
  43. #define ES8326_BIAS_SW2 0x1f
  44. #define ES8326_BIAS_SW3 0x20
  45. #define ES8326_BIAS_SW4 0x21
  46. #define ES8326_VMIDLOW 0x22
  47. #define ES8326_PGAGAIN 0x23
  48. #define ES8326_HP_DRIVER 0x24
  49. #define ES8326_DAC2HPMIX 0x25
  50. #define ES8326_HP_VOL 0x26
  51. #define ES8326_HP_CAL 0x27
  52. #define ES8326_HP_DRIVER_REF 0x28
  53. #define ES8326_ADC_SCALE 0x29
  54. #define ES8326_ADC1_SRC 0x2a
  55. #define ES8326_ADC2_SRC 0x2b
  56. #define ES8326_ADC1_VOL 0x2c
  57. #define ES8326_ADC2_VOL 0x2d
  58. #define ES8326_ADC_RAMPRATE 0x2e
  59. #define ES8326_ALC_RECOVERY 0x32
  60. #define ES8326_ALC_LEVEL 0x33
  61. #define ES8326_ADC_HPFS1 0x34
  62. #define ES8326_ADC_HPFS2 0x35
  63. #define ES8326_ADC_EQ 0x36
  64. #define ES8326_HP_OFFSET_CAL 0x4A
  65. #define ES8326_HPL_OFFSET_INI 0x4B
  66. #define ES8326_HPR_OFFSET_INI 0x4C
  67. #define ES8326_DAC_DSM 0x4D
  68. #define ES8326_DAC_RAMPRATE 0x4E
  69. #define ES8326_DAC_VPPSCALE 0x4F
  70. #define ES8326_DAC_VOL 0x50
  71. #define ES8326_DRC_RECOVERY 0x53
  72. #define ES8326_DRC_WINSIZE 0x54
  73. #define ES8326_HPJACK_TIMER 0x56
  74. #define ES8326_HP_DET 0x57
  75. #define ES8326_INT_SOURCE 0x58
  76. #define ES8326_INTOUT_IO 0x59
  77. #define ES8326_SDINOUT1_IO 0x5A
  78. #define ES8326_SDINOUT23_IO 0x5B
  79. #define ES8326_JACK_PULSE 0x5C
  80. #define ES8326_PULLUP_CTL 0xF9
  81. #define ES8326_HP_DETECT 0xFB
  82. #define ES8326_CHIP_ID1 0xFD
  83. #define ES8326_CHIP_ID2 0xFE
  84. #define ES8326_CHIP_VERSION 0xFF
  85. /* ES8326_RESET */
  86. #define ES8326_CSM_ON (1 << 7)
  87. #define ES8326_MASTER_MODE_EN (1 << 6)
  88. #define ES8326_PWRUP_SEQ_EN (1 << 5)
  89. #define ES8326_CODEC_RESET (0x0f << 0)
  90. #define ES8326_CSM_OFF (0 << 7)
  91. /* ES8326_CLK_CTL */
  92. #define ES8326_CLK_ON (0x7f << 0)
  93. #define ES8326_CLK_OFF (0 << 0)
  94. /* ES8326_CLK_INV */
  95. #define ES8326_BCLK_AS_MCLK (1 << 3)
  96. /* ES8326_FMT */
  97. #define ES8326_S24_LE (0 << 2)
  98. #define ES8326_S20_3_LE (1 << 2)
  99. #define ES8326_S18_LE (2 << 2)
  100. #define ES8326_S16_LE (3 << 2)
  101. #define ES8326_S32_LE (4 << 2)
  102. #define ES8326_DATA_LEN_MASK (7 << 2)
  103. #define ES8326_DAIFMT_MASK ((1 << 5) | (3 << 0))
  104. #define ES8326_DAIFMT_I2S 0
  105. #define ES8326_DAIFMT_LEFT_J (1 << 0)
  106. #define ES8326_DAIFMT_DSP_A (3 << 0)
  107. #define ES8326_DAIFMT_DSP_B ((1 << 5) | (3 << 0))
  108. /* ES8326_PGAGAIN */
  109. #define ES8326_MIC_SEL_MASK (3 << 4)
  110. #define ES8326_MIC1_SEL (1 << 4)
  111. #define ES8326_MIC2_SEL (1 << 5)
  112. /* ES8326_HP_CAL */
  113. #define ES8326_HPOR_SHIFT 4
  114. /* ES8326_ADC1_SRC */
  115. #define ES8326_ADC1_SHIFT 0
  116. #define ES8326_ADC2_SHIFT 4
  117. #define ES8326_ADC_SRC_ANA 0
  118. #define ES8326_ADC_SRC_ANA_INV_SW0 1
  119. #define ES8326_ADC_SRC_ANA_INV_SW1 2
  120. #define ES8326_ADC_SRC_DMIC_MCLK 3
  121. #define ES8326_ADC_SRC_DMIC_SDIN2 4
  122. #define ES8326_ADC_SRC_DMIC_SDIN2_INV 5
  123. #define ES8326_ADC_SRC_DMIC_SDIN3 6
  124. #define ES8326_ADC_SRC_DMIC_SDIN3_INV 7
  125. #define ES8326_ADC_AMIC ((ES8326_ADC_SRC_ANA_INV_SW1 << ES8326_ADC2_SHIFT) \
  126. | (ES8326_ADC_SRC_ANA_INV_SW1 << ES8326_ADC1_SHIFT))
  127. #define ES8326_ADC_DMIC ((ES8326_ADC_SRC_DMIC_SDIN2 << ES8326_ADC2_SHIFT) \
  128. | (ES8326_ADC_SRC_DMIC_SDIN2 << ES8326_ADC1_SHIFT))
  129. /* ES8326_ADC2_SRC */
  130. #define ES8326_ADC3_SHIFT 0
  131. #define ES8326_ADC4_SHIFT 3
  132. /* ES8326_HP_DET */
  133. #define ES8326_HP_DET_SRC_PIN27 (1 << 5)
  134. #define ES8326_HP_DET_SRC_PIN9 (1 << 4)
  135. #define ES8326_HP_DET_JACK_POL (1 << 3)
  136. #define ES8326_HP_DET_BUTTON_POL (1 << 2)
  137. #define ES8326_HP_TYPE_OMTP (3 << 0)
  138. #define ES8326_HP_TYPE_CTIA (2 << 0)
  139. #define ES8326_HP_TYPE_AUTO (1 << 0)
  140. #define ES8326_HP_TYPE_AUTO_INV (0 << 0)
  141. /* ES8326_SDINOUT1_IO */
  142. #define ES8326_IO_INPUT (0 << 0)
  143. #define ES8326_IO_SDIN_SLOT0 (1 << 0)
  144. #define ES8326_IO_SDIN_SLOT1 (2 << 0)
  145. #define ES8326_IO_SDIN_SLOT2 (3 << 0)
  146. #define ES8326_IO_SDIN_SLOT7 (8 << 0)
  147. #define ES8326_IO_DMIC_CLK (9 << 0)
  148. #define ES8326_IO_DMIC_CLK_INV (0x0a << 0)
  149. #define ES8326_IO_SDOUT2 (0x0b << 0)
  150. #define ES8326_IO_LOW (0x0e << 0)
  151. #define ES8326_IO_HIGH (0x0f << 0)
  152. #define ES8326_ADC2DAC (1 << 3)
  153. #define ES8326_SDINOUT1_SHIFT 4
  154. /* ES8326_SDINOUT23_IO */
  155. #define ES8326_SDINOUT2_SHIFT 4
  156. #define ES8326_SDINOUT3_SHIFT 0
  157. /* ES8326_HP_DETECT */
  158. #define ES8326_HPINSERT_FLAG (1 << 1)
  159. #define ES8326_HPBUTTON_FLAG (1 << 0)
  160. /* ES8326_CHIP_VERSION 0xFF */
  161. #define ES8326_VERSION_B (1 << 0)
  162. #endif