csra66x0.h 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. /*
  3. * Copyright (c) 2018-2020, The Linux Foundation. All rights reserved.
  4. */
  5. #ifndef _CSRA66X0_H
  6. #define _CSRA66X0_H
  7. /* CSRA66X0 register addresses */
  8. #define CSRA66X0_BASE 0x7000
  9. #define CSRA66X0_AUDIO_IF_RX_CONFIG1 (CSRA66X0_BASE+0x0000)
  10. #define CSRA66X0_AUDIO_IF_RX_CONFIG2 (CSRA66X0_BASE+0x0001)
  11. #define CSRA66X0_AUDIO_IF_RX_CONFIG3 (CSRA66X0_BASE+0x0002)
  12. #define CSRA66X0_AUDIO_IF_TX_EN (CSRA66X0_BASE+0x0003)
  13. #define CSRA66X0_AUDIO_IF_TX_CONFIG1 (CSRA66X0_BASE+0x0004)
  14. #define CSRA66X0_AUDIO_IF_TX_CONFIG2 (CSRA66X0_BASE+0x0005)
  15. #define CSRA66X0_I2C_DEVICE_ADDRESS (CSRA66X0_BASE+0x0006)
  16. #define CSRA66X0_CHIP_ID_FA (CSRA66X0_BASE+0x0007)
  17. #define CSRA66X0_ROM_VER_FA (CSRA66X0_BASE+0x0008)
  18. #define CSRA66X0_CHIP_REV_0_FA (CSRA66X0_BASE+0x0009)
  19. #define CSRA66X0_CHIP_REV_1_FA (CSRA66X0_BASE+0x000A)
  20. #define CSRA66X0_CH1_MIX_SEL (CSRA66X0_BASE+0x000B)
  21. #define CSRA66X0_CH2_MIX_SEL (CSRA66X0_BASE+0x000C)
  22. #define CSRA66X0_CH1_SAMPLE1_SCALE_0 (CSRA66X0_BASE+0x000D)
  23. #define CSRA66X0_CH1_SAMPLE1_SCALE_1 (CSRA66X0_BASE+0x000E)
  24. #define CSRA66X0_CH1_SAMPLE3_SCALE_0 (CSRA66X0_BASE+0x000F)
  25. #define CSRA66X0_CH1_SAMPLE3_SCALE_1 (CSRA66X0_BASE+0x0010)
  26. #define CSRA66X0_CH1_SAMPLE5_SCALE_0 (CSRA66X0_BASE+0x0011)
  27. #define CSRA66X0_CH1_SAMPLE5_SCALE_1 (CSRA66X0_BASE+0x0012)
  28. #define CSRA66X0_CH1_SAMPLE7_SCALE_0 (CSRA66X0_BASE+0x0013)
  29. #define CSRA66X0_CH1_SAMPLE7_SCALE_1 (CSRA66X0_BASE+0x0014)
  30. #define CSRA66X0_CH1_SAMPLE2_SCALE_0 (CSRA66X0_BASE+0x0015)
  31. #define CSRA66X0_CH1_SAMPLE2_SCALE_1 (CSRA66X0_BASE+0x0016)
  32. #define CSRA66X0_CH1_SAMPLE4_SCALE_0 (CSRA66X0_BASE+0x0017)
  33. #define CSRA66X0_CH1_SAMPLE4_SCALE_1 (CSRA66X0_BASE+0x0018)
  34. #define CSRA66X0_CH1_SAMPLE6_SCALE_0 (CSRA66X0_BASE+0x0019)
  35. #define CSRA66X0_CH1_SAMPLE6_SCALE_1 (CSRA66X0_BASE+0x001A)
  36. #define CSRA66X0_CH1_SAMPLE8_SCALE_0 (CSRA66X0_BASE+0x001B)
  37. #define CSRA66X0_CH1_SAMPLE8_SCALE_1 (CSRA66X0_BASE+0x001C)
  38. #define CSRA66X0_CH2_SAMPLE1_SCALE_0 (CSRA66X0_BASE+0x001D)
  39. #define CSRA66X0_CH2_SAMPLE1_SCALE_1 (CSRA66X0_BASE+0x001E)
  40. #define CSRA66X0_CH2_SAMPLE3_SCALE_0 (CSRA66X0_BASE+0x001F)
  41. #define CSRA66X0_CH2_SAMPLE3_SCALE_1 (CSRA66X0_BASE+0x0020)
  42. #define CSRA66X0_CH2_SAMPLE5_SCALE_0 (CSRA66X0_BASE+0x0021)
  43. #define CSRA66X0_CH2_SAMPLE5_SCALE_1 (CSRA66X0_BASE+0x0022)
  44. #define CSRA66X0_CH2_SAMPLE7_SCALE_0 (CSRA66X0_BASE+0x0023)
  45. #define CSRA66X0_CH2_SAMPLE7_SCALE_1 (CSRA66X0_BASE+0x0024)
  46. #define CSRA66X0_CH2_SAMPLE2_SCALE_0 (CSRA66X0_BASE+0x0025)
  47. #define CSRA66X0_CH2_SAMPLE2_SCALE_1 (CSRA66X0_BASE+0x0026)
  48. #define CSRA66X0_CH2_SAMPLE4_SCALE_0 (CSRA66X0_BASE+0x0027)
  49. #define CSRA66X0_CH2_SAMPLE4_SCALE_1 (CSRA66X0_BASE+0x0028)
  50. #define CSRA66X0_CH2_SAMPLE6_SCALE_0 (CSRA66X0_BASE+0x0029)
  51. #define CSRA66X0_CH2_SAMPLE6_SCALE_1 (CSRA66X0_BASE+0x002A)
  52. #define CSRA66X0_CH2_SAMPLE8_SCALE_0 (CSRA66X0_BASE+0x002B)
  53. #define CSRA66X0_CH2_SAMPLE8_SCALE_1 (CSRA66X0_BASE+0x002C)
  54. #define CSRA66X0_VOLUME_CONFIG_FA (CSRA66X0_BASE+0x002D)
  55. #define CSRA66X0_STARTUP_DELAY_FA (CSRA66X0_BASE+0x002E)
  56. #define CSRA66X0_CH1_VOLUME_0_FA (CSRA66X0_BASE+0x002F)
  57. #define CSRA66X0_CH1_VOLUME_1_FA (CSRA66X0_BASE+0x0030)
  58. #define CSRA66X0_CH2_VOLUME_0_FA (CSRA66X0_BASE+0x0031)
  59. #define CSRA66X0_CH2_VOLUME_1_FA (CSRA66X0_BASE+0x0032)
  60. #define CSRA66X0_QUAD_ENC_COUNT_0_FA (CSRA66X0_BASE+0x0033)
  61. #define CSRA66X0_QUAD_ENC_COUNT_1_FA (CSRA66X0_BASE+0x0034)
  62. #define CSRA66X0_SOFT_CLIP_CONFIG (CSRA66X0_BASE+0x0035)
  63. #define CSRA66X0_CH1_HARD_CLIP_THRESH (CSRA66X0_BASE+0x0036)
  64. #define CSRA66X0_CH2_HARD_CLIP_THRESH (CSRA66X0_BASE+0x0037)
  65. #define CSRA66X0_SOFT_CLIP_THRESH (CSRA66X0_BASE+0x0038)
  66. #define CSRA66X0_DS_ENABLE_THRESH_0 (CSRA66X0_BASE+0x0039)
  67. #define CSRA66X0_DS_ENABLE_THRESH_1 (CSRA66X0_BASE+0x003A)
  68. #define CSRA66X0_DS_TARGET_COUNT_0 (CSRA66X0_BASE+0x003B)
  69. #define CSRA66X0_DS_TARGET_COUNT_1 (CSRA66X0_BASE+0x003C)
  70. #define CSRA66X0_DS_TARGET_COUNT_2 (CSRA66X0_BASE+0x003D)
  71. #define CSRA66X0_DS_DISABLE_THRESH_0 (CSRA66X0_BASE+0x003E)
  72. #define CSRA66X0_DS_DISABLE_THRESH_1 (CSRA66X0_BASE+0x003F)
  73. #define CSRA66X0_DCA_CTRL (CSRA66X0_BASE+0x0040)
  74. #define CSRA66X0_CH1_DCA_THRESH (CSRA66X0_BASE+0x0041)
  75. #define CSRA66X0_CH2_DCA_THRESH (CSRA66X0_BASE+0x0042)
  76. #define CSRA66X0_DCA_ATTACK_RATE (CSRA66X0_BASE+0x0043)
  77. #define CSRA66X0_DCA_RELEASE_RATE (CSRA66X0_BASE+0x0044)
  78. #define CSRA66X0_CH1_OUTPUT_INVERT_EN (CSRA66X0_BASE+0x0045)
  79. #define CSRA66X0_CH2_OUTPUT_INVERT_EN (CSRA66X0_BASE+0x0046)
  80. #define CSRA66X0_CH1_176P4K_DELAY (CSRA66X0_BASE+0x0047)
  81. #define CSRA66X0_CH2_176P4K_DELAY (CSRA66X0_BASE+0x0048)
  82. #define CSRA66X0_CH1_192K_DELAY (CSRA66X0_BASE+0x0049)
  83. #define CSRA66X0_CH2_192K_DELAY (CSRA66X0_BASE+0x004A)
  84. #define CSRA66X0_DEEMP_CONFIG_FA (CSRA66X0_BASE+0x004B)
  85. #define CSRA66X0_CH1_TREBLE_GAIN_CTRL_FA (CSRA66X0_BASE+0x004C)
  86. #define CSRA66X0_CH2_TREBLE_GAIN_CTRL_FA (CSRA66X0_BASE+0x004D)
  87. #define CSRA66X0_CH1_TREBLE_FC_CTRL_FA (CSRA66X0_BASE+0x004E)
  88. #define CSRA66X0_CH2_TREBLE_FC_CTRL_FA (CSRA66X0_BASE+0x004F)
  89. #define CSRA66X0_CH1_BASS_GAIN_CTRL_FA (CSRA66X0_BASE+0x0050)
  90. #define CSRA66X0_CH2_BASS_GAIN_CTRL_FA (CSRA66X0_BASE+0x0051)
  91. #define CSRA66X0_CH1_BASS_FC_CTRL_FA (CSRA66X0_BASE+0x0052)
  92. #define CSRA66X0_CH2_BASS_FC_CTRL_FA (CSRA66X0_BASE+0x0053)
  93. #define CSRA66X0_FILTER_SEL_8K (CSRA66X0_BASE+0x0054)
  94. #define CSRA66X0_FILTER_SEL_11P025K (CSRA66X0_BASE+0x0055)
  95. #define CSRA66X0_FILTER_SEL_16K (CSRA66X0_BASE+0x0056)
  96. #define CSRA66X0_FILTER_SEL_22P05K (CSRA66X0_BASE+0x0057)
  97. #define CSRA66X0_FILTER_SEL_32K (CSRA66X0_BASE+0x0058)
  98. #define CSRA66X0_FILTER_SEL_44P1K_48K (CSRA66X0_BASE+0x0059)
  99. #define CSRA66X0_FILTER_SEL_88P2K_96K (CSRA66X0_BASE+0x005A)
  100. #define CSRA66X0_FILTER_SEL_176P4K_192K (CSRA66X0_BASE+0x005B)
  101. /* RESERVED (CSRA66X0_BASE+0x005C) */
  102. #define CSRA66X0_USER_DSP_CTRL (CSRA66X0_BASE+0x005D)
  103. #define CSRA66X0_TEST_TONE_CTRL (CSRA66X0_BASE+0x005E)
  104. #define CSRA66X0_TEST_TONE_FREQ_0 (CSRA66X0_BASE+0x005F)
  105. #define CSRA66X0_TEST_TONE_FREQ_1 (CSRA66X0_BASE+0x0060)
  106. #define CSRA66X0_TEST_TONE_FREQ_2 (CSRA66X0_BASE+0x0061)
  107. #define CSRA66X0_AUDIO_RATE_CTRL_FA (CSRA66X0_BASE+0x0062)
  108. #define CSRA66X0_MODULATION_INDEX_CTRL (CSRA66X0_BASE+0x0063)
  109. #define CSRA66X0_MODULATION_INDEX_COUNT (CSRA66X0_BASE+0x0064)
  110. #define CSRA66X0_MIN_MODULATION_PULSE_WIDTH (CSRA66X0_BASE+0x0065)
  111. #define CSRA66X0_DEAD_TIME_CTRL (CSRA66X0_BASE+0x0066)
  112. #define CSRA66X0_DEAD_TIME_THRESHOLD_0 (CSRA66X0_BASE+0x0067)
  113. #define CSRA66X0_DEAD_TIME_THRESHOLD_1 (CSRA66X0_BASE+0x0068)
  114. #define CSRA66X0_DEAD_TIME_THRESHOLD_2 (CSRA66X0_BASE+0x0069)
  115. #define CSRA66X0_CH1_LOW_SIDE_DLY (CSRA66X0_BASE+0x006A)
  116. #define CSRA66X0_CH2_LOW_SIDE_DLY (CSRA66X0_BASE+0x006B)
  117. #define CSRA66X0_SPECTRUM_CTRL (CSRA66X0_BASE+0x006C)
  118. /* RESERVED (CSRA66X0_BASE+0x006D) */
  119. #define CSRA66X0_SPECTRUM_SPREAD_CTRL (CSRA66X0_BASE+0x006E)
  120. /* RESERVED (CSRA66X0_BASE+0x006F) */
  121. /* ... */
  122. /* RESERVED (CSRA66X0_BASE+0x007C) */
  123. #define CSRA66X0_EXT_PA_PROTECT_POLARITY (CSRA66X0_BASE+0x007D)
  124. #define CSRA66X0_TEMP0_BACKOFF_COMP_VALUE (CSRA66X0_BASE+0x007E)
  125. #define CSRA66X0_TEMP0_SHUTDOWN_COMP_VALUE (CSRA66X0_BASE+0x007F)
  126. #define CSRA66X0_TEMP1_BACKOFF_COMP_VALUE (CSRA66X0_BASE+0x0080)
  127. #define CSRA66X0_TEMP1_SHUTDOWN_COMP_VALUE (CSRA66X0_BASE+0x0081)
  128. #define CSRA66X0_TEMP_PROT_BACKOFF (CSRA66X0_BASE+0x0082)
  129. #define CSRA66X0_TEMP_READ0_FA (CSRA66X0_BASE+0x0083)
  130. #define CSRA66X0_TEMP_READ1_FA (CSRA66X0_BASE+0x0084)
  131. #define CSRA66X0_CHIP_STATE_CTRL_FA (CSRA66X0_BASE+0x0085)
  132. /* RESERVED (CSRA66X0_BASE+0x0086) */
  133. #define CSRA66X0_PWM_OUTPUT_CONFIG (CSRA66X0_BASE+0x0087)
  134. #define CSRA66X0_MISC_CONTROL_STATUS_0 (CSRA66X0_BASE+0x0088)
  135. #define CSRA66X0_MISC_CONTROL_STATUS_1_FA (CSRA66X0_BASE+0x0089)
  136. #define CSRA66X0_PIO0_SELECT (CSRA66X0_BASE+0x008A)
  137. #define CSRA66X0_PIO1_SELECT (CSRA66X0_BASE+0x008B)
  138. #define CSRA66X0_PIO2_SELECT (CSRA66X0_BASE+0x008C)
  139. #define CSRA66X0_PIO3_SELECT (CSRA66X0_BASE+0x008D)
  140. #define CSRA66X0_PIO4_SELECT (CSRA66X0_BASE+0x008E)
  141. #define CSRA66X0_PIO5_SELECT (CSRA66X0_BASE+0x008F)
  142. #define CSRA66X0_PIO6_SELECT (CSRA66X0_BASE+0x0090)
  143. #define CSRA66X0_PIO7_SELECT (CSRA66X0_BASE+0x0091)
  144. #define CSRA66X0_PIO8_SELECT (CSRA66X0_BASE+0x0092)
  145. #define CSRA66X0_PIO_DIRN0 (CSRA66X0_BASE+0x0093)
  146. #define CSRA66X0_PIO_DIRN1 (CSRA66X0_BASE+0x0094)
  147. #define CSRA66X0_PIO_PULL_EN0 (CSRA66X0_BASE+0x0095)
  148. #define CSRA66X0_PIO_PULL_EN1 (CSRA66X0_BASE+0x0096)
  149. #define CSRA66X0_PIO_PULL_DIR0 (CSRA66X0_BASE+0x0097)
  150. #define CSRA66X0_PIO_PULL_DIR1 (CSRA66X0_BASE+0x0098)
  151. #define CSRA66X0_PIO_DRIVE_OUT0_FA (CSRA66X0_BASE+0x0099)
  152. #define CSRA66X0_PIO_DRIVE_OUT1_FA (CSRA66X0_BASE+0x009A)
  153. #define CSRA66X0_PIO_STATUS_IN0_FA (CSRA66X0_BASE+0x009B)
  154. #define CSRA66X0_PIO_STATUS_IN1_FA (CSRA66X0_BASE+0x009C)
  155. /* RESERVED (CSRA66X0_BASE+0x009D) */
  156. #define CSRA66X0_IRQ_OUTPUT_ENABLE (CSRA66X0_BASE+0x009E)
  157. #define CSRA66X0_IRQ_OUTPUT_POLARITY (CSRA66X0_BASE+0x009F)
  158. #define CSRA66X0_IRQ_OUTPUT_STATUS_FA (CSRA66X0_BASE+0x00A0)
  159. #define CSRA66X0_CLIP_DCA_STATUS_FA (CSRA66X0_BASE+0x00A1)
  160. #define CSRA66X0_CHIP_STATE_STATUS_FA (CSRA66X0_BASE+0x00A2)
  161. #define CSRA66X0_FAULT_STATUS_FA (CSRA66X0_BASE+0x00A3)
  162. #define CSRA66X0_OTP_STATUS_FA (CSRA66X0_BASE+0x00A4)
  163. #define CSRA66X0_AUDIO_IF_STATUS_FA (CSRA66X0_BASE+0x00A5)
  164. /* RESERVED (CSRA66X0_BASE+0x00A6) */
  165. #define CSRA66X0_DSP_SATURATION_STATUS_FA (CSRA66X0_BASE+0x00A7)
  166. #define CSRA66X0_AUDIO_RATE_STATUS_FA (CSRA66X0_BASE+0x00A8)
  167. /* RESERVED (CSRA66X0_BASE+0x00A9) */
  168. /* ... */
  169. /* RESERVED (CSRA66X0_BASE+0x00AB) */
  170. #define CSRA66X0_DISABLE_PWM_OUTPUT (CSRA66X0_BASE+0x00AC)
  171. /* RESERVED (CSRA66X0_BASE+0x00AD) */
  172. /* ... */
  173. /* RESERVED (CSRA66X0_BASE+0x00B0) */
  174. #define CSRA66X0_OTP_VER_FA (CSRA66X0_BASE+0x00B1)
  175. #define CSRA66X0_RAM_VER_FA (CSRA66X0_BASE+0x00B2)
  176. /* RESERVED (CSRA66X0_BASE+0x00B3) */
  177. #define CSRA66X0_AUDIO_SATURATION_FLAGS_FA (CSRA66X0_BASE+0x00B4)
  178. #define CSRA66X0_DCOFFSET_CHAN_1_01_FA (CSRA66X0_BASE+0x00B5)
  179. #define CSRA66X0_DCOFFSET_CHAN_1_02_FA (CSRA66X0_BASE+0x00B6)
  180. #define CSRA66X0_DCOFFSET_CHAN_1_03_FA (CSRA66X0_BASE+0x00B7)
  181. #define CSRA66X0_DCOFFSET_CHAN_2_01_FA (CSRA66X0_BASE+0x00B8)
  182. #define CSRA66X0_DCOFFSET_CHAN_2_02_FA (CSRA66X0_BASE+0x00B9)
  183. #define CSRA66X0_DCOFFSET_CHAN_2_03_FA (CSRA66X0_BASE+0x00BA)
  184. #define CSRA66X0_FORCED_PA_SWITCHING_CTRL (CSRA66X0_BASE+0x00BB)
  185. #define CSRA66X0_PA_FORCE_PULSE_WIDTH (CSRA66X0_BASE+0x00BC)
  186. #define CSRA66X0_PA_HIGH_MODULATION_CTRL_CH1 (CSRA66X0_BASE+0x00BD)
  187. /* RESERVED (CSRA66X0_BASE+0x00BE) */
  188. /* RESERVED (CSRA66X0_BASE+0x00BF) */
  189. #define CSRA66X0_HIGH_MODULATION_THRESHOLD_LOW (CSRA66X0_BASE+0x00C0)
  190. #define CSRA66X0_HIGH_MODULATION_THRESHOLD_HIGH (CSRA66X0_BASE+0x00C1)
  191. /* RESERVED (CSRA66X0_BASE+0x00C2) */
  192. /* RESERVED (CSRA66X0_BASE+0x00C3) */
  193. #define CSRA66X0_PA_FREEZE_CTRL (CSRA66X0_BASE+0x00C4)
  194. #define CSRA66X0_DCA_FREEZE_CTRL (CSRA66X0_BASE+0x00C5)
  195. /* RESERVED (CSRA66X0_BASE+0x00C6) */
  196. /* ... */
  197. /* RESERVED (CSRA66X0_BASE+0x00FF) */
  198. #define CSRA66X0_MAX_REGISTER_ADDR CSRA66X0_DCA_FREEZE_CTRL
  199. #define CSRA66X0_COEFF_BASE 0xD000
  200. #define CSRA66X0_MAX_COEFF_ADDR 0xD6DF
  201. #define EXPECTED_CSRA66X0_CHIP_ID 0x39
  202. #define SPK_VOLUME_M20DB 0x119
  203. #define SPK_VOLUME_M20DB_LSB (SPK_VOLUME_M20DB & 0x0FF)
  204. #define SPK_VOLUME_M20DB_MSB ((SPK_VOLUME_M20DB & 0x100)>>8)
  205. #define SPK_VOLUME_LSB_MSK 0x00FF
  206. #define SPK_VOLUME_MSB_MSK 0x0100
  207. #define SET_CONFIG_STATE 0x0
  208. #define SET_RUN_STATE 0x1
  209. #define SET_STDBY_STATE 0x2
  210. #define CONFIG_STATE_ID 0x3
  211. #define WAIT_FOR_CONFIG_STATE_TIMEOUT_MS 2000
  212. #define SYSFS_RESET 1
  213. #define FAULT_STATUS_INTERNAL 0x01
  214. #define FAULT_STATUS_OTP_INTEGRITY 0x02
  215. #define FAULT_STATUS_PADS2 0x04
  216. #define FAULT_STATUS_SMPS 0x08
  217. #define FAULT_STATUS_TEMP 0x10
  218. #define FAULT_STATUS_PROTECT 0x20
  219. void csra66x0_hw_free_mute(struct snd_soc_component *component);
  220. #endif /* _CSRA66X0_H */