wcd938x.h 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. #ifndef __WCD938X_H__
  3. #define __WCD938X_H__
  4. #include <linux/soundwire/sdw.h>
  5. #include <linux/soundwire/sdw_type.h>
  6. #define WCD938X_BASE_ADDRESS (0x3000)
  7. #define WCD938X_ANA_PAGE_REGISTER (0x3000)
  8. #define WCD938X_ANA_BIAS (0x3001)
  9. #define WCD938X_ANA_RX_SUPPLIES (0x3008)
  10. #define WCD938X_RX_BIAS_EN_MASK BIT(0)
  11. #define WCD938X_REGULATOR_MODE_MASK BIT(1)
  12. #define WCD938X_REGULATOR_MODE_CLASS_AB 1
  13. #define WCD938X_VNEG_EN_MASK BIT(6)
  14. #define WCD938X_VPOS_EN_MASK BIT(7)
  15. #define WCD938X_ANA_HPH (0x3009)
  16. #define WCD938X_HPHR_REF_EN_MASK BIT(4)
  17. #define WCD938X_HPHL_REF_EN_MASK BIT(5)
  18. #define WCD938X_HPHR_EN_MASK BIT(6)
  19. #define WCD938X_HPHL_EN_MASK BIT(7)
  20. #define WCD938X_ANA_EAR (0x300A)
  21. #define WCD938X_ANA_EAR_COMPANDER_CTL (0x300B)
  22. #define WCD938X_GAIN_OVRD_REG_MASK BIT(7)
  23. #define WCD938X_EAR_GAIN_MASK GENMASK(6, 2)
  24. #define WCD938X_ANA_TX_CH1 (0x300E)
  25. #define WCD938X_ANA_TX_CH2 (0x300F)
  26. #define WCD938X_HPF1_INIT_MASK BIT(6)
  27. #define WCD938X_HPF2_INIT_MASK BIT(5)
  28. #define WCD938X_ANA_TX_CH3 (0x3010)
  29. #define WCD938X_ANA_TX_CH4 (0x3011)
  30. #define WCD938X_HPF3_INIT_MASK BIT(6)
  31. #define WCD938X_HPF4_INIT_MASK BIT(5)
  32. #define WCD938X_ANA_MICB1_MICB2_DSP_EN_LOGIC (0x3012)
  33. #define WCD938X_ANA_MICB3_DSP_EN_LOGIC (0x3013)
  34. #define WCD938X_ANA_MBHC_MECH (0x3014)
  35. #define WCD938X_MBHC_L_DET_EN_MASK BIT(7)
  36. #define WCD938X_MBHC_L_DET_EN BIT(7)
  37. #define WCD938X_MBHC_GND_DET_EN_MASK BIT(6)
  38. #define WCD938X_MBHC_MECH_DETECT_TYPE_MASK BIT(5)
  39. #define WCD938X_MBHC_MECH_DETECT_TYPE_INS 1
  40. #define WCD938X_MBHC_HPHL_PLUG_TYPE_MASK BIT(4)
  41. #define WCD938X_MBHC_HPHL_PLUG_TYPE_NO 1
  42. #define WCD938X_MBHC_GND_PLUG_TYPE_MASK BIT(3)
  43. #define WCD938X_MBHC_GND_PLUG_TYPE_NO 1
  44. #define WCD938X_MBHC_HSL_PULLUP_COMP_EN BIT(2)
  45. #define WCD938X_MBHC_HSG_PULLUP_COMP_EN BIT(1)
  46. #define WCD938X_MBHC_HPHL_100K_TO_GND_EN BIT(0)
  47. #define WCD938X_ANA_MBHC_ELECT (0x3015)
  48. #define WCD938X_ANA_MBHC_BD_ISRC_CTL_MASK GENMASK(6, 4)
  49. #define WCD938X_ANA_MBHC_BD_ISRC_100UA GENMASK(5, 4)
  50. #define WCD938X_ANA_MBHC_BD_ISRC_OFF 0
  51. #define WCD938X_ANA_MBHC_BIAS_EN_MASK BIT(0)
  52. #define WCD938X_ANA_MBHC_BIAS_EN BIT(0)
  53. #define WCD938X_ANA_MBHC_ZDET (0x3016)
  54. #define WCD938X_ANA_MBHC_RESULT_1 (0x3017)
  55. #define WCD938X_ANA_MBHC_RESULT_2 (0x3018)
  56. #define WCD938X_ANA_MBHC_RESULT_3 (0x3019)
  57. #define WCD938X_MBHC_BTN_RESULT_MASK GENMASK(2, 0)
  58. #define WCD938X_ANA_MBHC_BTN0 (0x301A)
  59. #define WCD938X_MBHC_BTN_VTH_MASK GENMASK(7, 2)
  60. #define WCD938X_ANA_MBHC_BTN1 (0x301B)
  61. #define WCD938X_ANA_MBHC_BTN2 (0x301C)
  62. #define WCD938X_ANA_MBHC_BTN3 (0x301D)
  63. #define WCD938X_ANA_MBHC_BTN4 (0x301E)
  64. #define WCD938X_ANA_MBHC_BTN5 (0x301F)
  65. #define WCD938X_VTH_MASK GENMASK(7, 2)
  66. #define WCD938X_ANA_MBHC_BTN6 (0x3020)
  67. #define WCD938X_ANA_MBHC_BTN7 (0x3021)
  68. #define WCD938X_ANA_MICB1 (0x3022)
  69. #define WCD938X_MICB_VOUT_MASK GENMASK(5, 0)
  70. #define WCD938X_MICB_EN_MASK GENMASK(7, 6)
  71. #define WCD938X_MICB_DISABLE 0
  72. #define WCD938X_MICB_ENABLE 1
  73. #define WCD938X_MICB_PULL_UP 2
  74. #define WCD938X_MICB_PULL_DOWN 3
  75. #define WCD938X_ANA_MICB2 (0x3023)
  76. #define WCD938X_ANA_MICB2_ENABLE BIT(6)
  77. #define WCD938X_ANA_MICB2_ENABLE_MASK GENMASK(7, 6)
  78. #define WCD938X_ANA_MICB2_VOUT_MASK GENMASK(5, 0)
  79. #define WCD938X_ANA_MICB2_RAMP (0x3024)
  80. #define WCD938X_RAMP_EN_MASK BIT(7)
  81. #define WCD938X_RAMP_SHIFT_CTRL_MASK GENMASK(4, 2)
  82. #define WCD938X_ANA_MICB3 (0x3025)
  83. #define WCD938X_ANA_MICB4 (0x3026)
  84. #define WCD938X_BIAS_CTL (0x3028)
  85. #define WCD938X_BIAS_VBG_FINE_ADJ (0x3029)
  86. #define WCD938X_LDOL_VDDCX_ADJUST (0x3040)
  87. #define WCD938X_LDOL_DISABLE_LDOL (0x3041)
  88. #define WCD938X_MBHC_CTL_CLK (0x3056)
  89. #define WCD938X_MBHC_CTL_ANA (0x3057)
  90. #define WCD938X_MBHC_CTL_SPARE_1 (0x3058)
  91. #define WCD938X_MBHC_CTL_SPARE_2 (0x3059)
  92. #define WCD938X_MBHC_CTL_BCS (0x305A)
  93. #define WCD938X_MBHC_MOISTURE_DET_FSM_STATUS (0x305B)
  94. #define WCD938X_MBHC_TEST_CTL (0x305C)
  95. #define WCD938X_LDOH_MODE (0x3067)
  96. #define WCD938X_LDOH_EN_MASK BIT(7)
  97. #define WCD938X_LDOH_BIAS (0x3068)
  98. #define WCD938X_LDOH_STB_LOADS (0x3069)
  99. #define WCD938X_LDOH_SLOWRAMP (0x306A)
  100. #define WCD938X_MICB1_TEST_CTL_1 (0x306B)
  101. #define WCD938X_MICB1_TEST_CTL_2 (0x306C)
  102. #define WCD938X_MICB1_TEST_CTL_3 (0x306D)
  103. #define WCD938X_MICB2_TEST_CTL_1 (0x306E)
  104. #define WCD938X_MICB2_TEST_CTL_2 (0x306F)
  105. #define WCD938X_MICB2_TEST_CTL_3 (0x3070)
  106. #define WCD938X_MICB3_TEST_CTL_1 (0x3071)
  107. #define WCD938X_MICB3_TEST_CTL_2 (0x3072)
  108. #define WCD938X_MICB3_TEST_CTL_3 (0x3073)
  109. #define WCD938X_MICB4_TEST_CTL_1 (0x3074)
  110. #define WCD938X_MICB4_TEST_CTL_2 (0x3075)
  111. #define WCD938X_MICB4_TEST_CTL_3 (0x3076)
  112. #define WCD938X_TX_COM_ADC_VCM (0x3077)
  113. #define WCD938X_TX_COM_BIAS_ATEST (0x3078)
  114. #define WCD938X_TX_COM_SPARE1 (0x3079)
  115. #define WCD938X_TX_COM_SPARE2 (0x307A)
  116. #define WCD938X_TX_COM_TXFE_DIV_CTL (0x307B)
  117. #define WCD938X_TX_COM_TXFE_DIV_START (0x307C)
  118. #define WCD938X_TX_COM_SPARE3 (0x307D)
  119. #define WCD938X_TX_COM_SPARE4 (0x307E)
  120. #define WCD938X_TX_1_2_TEST_EN (0x307F)
  121. #define WCD938X_TX_1_2_ADC_IB (0x3080)
  122. #define WCD938X_TX_1_2_ATEST_REFCTL (0x3081)
  123. #define WCD938X_TX_1_2_TEST_CTL (0x3082)
  124. #define WCD938X_TX_1_2_TEST_BLK_EN1 (0x3083)
  125. #define WCD938X_TX_1_2_TXFE1_CLKDIV (0x3084)
  126. #define WCD938X_TX_1_2_SAR2_ERR (0x3085)
  127. #define WCD938X_TX_1_2_SAR1_ERR (0x3086)
  128. #define WCD938X_TX_3_4_TEST_EN (0x3087)
  129. #define WCD938X_TX_3_4_ADC_IB (0x3088)
  130. #define WCD938X_TX_3_4_ATEST_REFCTL (0x3089)
  131. #define WCD938X_TX_3_4_TEST_CTL (0x308A)
  132. #define WCD938X_TX_3_4_TEST_BLK_EN3 (0x308B)
  133. #define WCD938X_TX_3_4_TXFE3_CLKDIV (0x308C)
  134. #define WCD938X_TX_3_4_SAR4_ERR (0x308D)
  135. #define WCD938X_TX_3_4_SAR3_ERR (0x308E)
  136. #define WCD938X_TX_3_4_TEST_BLK_EN2 (0x308F)
  137. #define WCD938X_TX_3_4_TXFE2_CLKDIV (0x3090)
  138. #define WCD938X_TX_3_4_SPARE1 (0x3091)
  139. #define WCD938X_TX_3_4_TEST_BLK_EN4 (0x3092)
  140. #define WCD938X_TX_3_4_TXFE4_CLKDIV (0x3093)
  141. #define WCD938X_TX_3_4_SPARE2 (0x3094)
  142. #define WCD938X_CLASSH_MODE_1 (0x3097)
  143. #define WCD938X_CLASSH_MODE_2 (0x3098)
  144. #define WCD938X_CLASSH_MODE_3 (0x3099)
  145. #define WCD938X_CLASSH_CTRL_VCL_1 (0x309A)
  146. #define WCD938X_CLASSH_CTRL_VCL_2 (0x309B)
  147. #define WCD938X_CLASSH_CTRL_CCL_1 (0x309C)
  148. #define WCD938X_CLASSH_CTRL_CCL_2 (0x309D)
  149. #define WCD938X_CLASSH_CTRL_CCL_3 (0x309E)
  150. #define WCD938X_CLASSH_CTRL_CCL_4 (0x309F)
  151. #define WCD938X_CLASSH_CTRL_CCL_5 (0x30A0)
  152. #define WCD938X_CLASSH_BUCK_TMUX_A_D (0x30A1)
  153. #define WCD938X_CLASSH_BUCK_SW_DRV_CNTL (0x30A2)
  154. #define WCD938X_CLASSH_SPARE (0x30A3)
  155. #define WCD938X_FLYBACK_EN (0x30A4)
  156. #define WCD938X_EN_CUR_DET_MASK BIT(2)
  157. #define WCD938X_FLYBACK_VNEG_CTRL_1 (0x30A5)
  158. #define WCD938X_FLYBACK_VNEG_CTRL_2 (0x30A6)
  159. #define WCD938X_FLYBACK_VNEG_CTRL_3 (0x30A7)
  160. #define WCD938X_FLYBACK_VNEG_CTRL_4 (0x30A8)
  161. #define WCD938X_FLYBACK_VNEG_CTRL_5 (0x30A9)
  162. #define WCD938X_FLYBACK_VNEG_CTRL_6 (0x30AA)
  163. #define WCD938X_FLYBACK_VNEG_CTRL_7 (0x30AB)
  164. #define WCD938X_FLYBACK_VNEG_CTRL_8 (0x30AC)
  165. #define WCD938X_FLYBACK_VNEG_CTRL_9 (0x30AD)
  166. #define WCD938X_FLYBACK_VNEGDAC_CTRL_1 (0x30AE)
  167. #define WCD938X_FLYBACK_VNEGDAC_CTRL_2 (0x30AF)
  168. #define WCD938X_FLYBACK_VNEGDAC_CTRL_3 (0x30B0)
  169. #define WCD938X_FLYBACK_CTRL_1 (0x30B1)
  170. #define WCD938X_FLYBACK_TEST_CTL (0x30B2)
  171. #define WCD938X_RX_AUX_SW_CTL (0x30B3)
  172. #define WCD938X_RX_PA_AUX_IN_CONN (0x30B4)
  173. #define WCD938X_RX_TIMER_DIV (0x30B5)
  174. #define WCD938X_RX_OCP_CTL (0x30B6)
  175. #define WCD938X_RX_OCP_COUNT (0x30B7)
  176. #define WCD938X_RX_BIAS_EAR_DAC (0x30B8)
  177. #define WCD938X_RX_BIAS_EAR_AMP (0x30B9)
  178. #define WCD938X_RX_BIAS_HPH_LDO (0x30BA)
  179. #define WCD938X_RX_BIAS_HPH_PA (0x30BB)
  180. #define WCD938X_RX_BIAS_HPH_RDACBUFF_CNP2 (0x30BC)
  181. #define WCD938X_RX_BIAS_HPH_RDAC_LDO (0x30BD)
  182. #define WCD938X_RX_BIAS_HPH_CNP1 (0x30BE)
  183. #define WCD938X_RX_BIAS_HPH_LOWPOWER (0x30BF)
  184. #define WCD938X_RX_BIAS_AUX_DAC (0x30C0)
  185. #define WCD938X_RX_BIAS_AUX_AMP (0x30C1)
  186. #define WCD938X_RX_BIAS_VNEGDAC_BLEEDER (0x30C2)
  187. #define WCD938X_RX_BIAS_MISC (0x30C3)
  188. #define WCD938X_RX_BIAS_BUCK_RST (0x30C4)
  189. #define WCD938X_RX_BIAS_BUCK_VREF_ERRAMP (0x30C5)
  190. #define WCD938X_RX_BIAS_FLYB_ERRAMP (0x30C6)
  191. #define WCD938X_RX_BIAS_FLYB_BUFF (0x30C7)
  192. #define WCD938X_RX_BIAS_FLYB_MID_RST (0x30C8)
  193. #define WCD938X_HPH_L_STATUS (0x30C9)
  194. #define WCD938X_HPH_R_STATUS (0x30CA)
  195. #define WCD938X_HPH_CNP_EN (0x30CB)
  196. #define WCD938X_HPH_CNP_WG_CTL (0x30CC)
  197. #define WCD938X_HPH_CNP_WG_TIME (0x30CD)
  198. #define WCD938X_HPH_OCP_CTL (0x30CE)
  199. #define WCD938X_HPH_AUTO_CHOP (0x30CF)
  200. #define WCD938X_HPH_CHOP_CTL (0x30D0)
  201. #define WCD938X_HPH_PA_CTL1 (0x30D1)
  202. #define WCD938X_HPH_PA_CTL2 (0x30D2)
  203. #define WCD938X_HPHPA_GND_R_MASK BIT(6)
  204. #define WCD938X_HPHPA_GND_L_MASK BIT(4)
  205. #define WCD938X_HPH_L_EN (0x30D3)
  206. #define WCD938X_HPH_L_TEST (0x30D4)
  207. #define WCD938X_HPH_L_ATEST (0x30D5)
  208. #define WCD938X_HPH_R_EN (0x30D6)
  209. #define WCD938X_GAIN_SRC_SEL_MASK BIT(5)
  210. #define WCD938X_GAIN_SRC_SEL_REGISTER 1
  211. #define WCD938X_HPH_R_TEST (0x30D7)
  212. #define WCD938X_HPH_R_ATEST (0x30D8)
  213. #define WCD938X_HPHPA_GND_OVR_MASK BIT(1)
  214. #define WCD938X_HPH_RDAC_CLK_CTL1 (0x30D9)
  215. #define WCD938X_CHOP_CLK_EN_MASK BIT(7)
  216. #define WCD938X_HPH_RDAC_CLK_CTL2 (0x30DA)
  217. #define WCD938X_HPH_RDAC_LDO_CTL (0x30DB)
  218. #define WCD938X_HPH_RDAC_CHOP_CLK_LP_CTL (0x30DC)
  219. #define WCD938X_HPH_REFBUFF_UHQA_CTL (0x30DD)
  220. #define WCD938X_HPH_REFBUFF_LP_CTL (0x30DE)
  221. #define WCD938X_PREREF_FLIT_BYPASS_MASK BIT(0)
  222. #define WCD938X_HPH_L_DAC_CTL (0x30DF)
  223. #define WCD938X_HPH_R_DAC_CTL (0x30E0)
  224. #define WCD938X_HPH_SURGE_HPHLR_SURGE_COMP_SEL (0x30E1)
  225. #define WCD938X_HPH_SURGE_HPHLR_SURGE_EN (0x30E2)
  226. #define WCD938X_HPH_SURGE_HPHLR_SURGE_MISC1 (0x30E3)
  227. #define WCD938X_HPH_SURGE_HPHLR_SURGE_STATUS (0x30E4)
  228. #define WCD938X_EAR_EAR_EN_REG (0x30E9)
  229. #define WCD938X_EAR_EAR_PA_CON (0x30EA)
  230. #define WCD938X_EAR_EAR_SP_CON (0x30EB)
  231. #define WCD938X_EAR_EAR_DAC_CON (0x30EC)
  232. #define WCD938X_DAC_SAMPLE_EDGE_SEL_MASK BIT(7)
  233. #define WCD938X_EAR_EAR_CNP_FSM_CON (0x30ED)
  234. #define WCD938X_EAR_TEST_CTL (0x30EE)
  235. #define WCD938X_EAR_STATUS_REG_1 (0x30EF)
  236. #define WCD938X_EAR_STATUS_REG_2 (0x30F0)
  237. #define WCD938X_ANA_NEW_PAGE_REGISTER (0x3100)
  238. #define WCD938X_HPH_NEW_ANA_HPH2 (0x3101)
  239. #define WCD938X_HPH_NEW_ANA_HPH3 (0x3102)
  240. #define WCD938X_SLEEP_CTL (0x3103)
  241. #define WCD938X_SLEEP_WATCHDOG_CTL (0x3104)
  242. #define WCD938X_MBHC_NEW_ELECT_REM_CLAMP_CTL (0x311F)
  243. #define WCD938X_MBHC_NEW_CTL_1 (0x3120)
  244. #define WCD938X_MBHC_CTL_RCO_EN_MASK BIT(7)
  245. #define WCD938X_MBHC_CTL_RCO_EN BIT(7)
  246. #define WCD938X_MBHC_BTN_DBNC_MASK GENMASK(1, 0)
  247. #define WCD938X_MBHC_BTN_DBNC_T_16_MS 0x2
  248. #define WCD938X_MBHC_NEW_CTL_2 (0x3121)
  249. #define WCD938X_M_RTH_CTL_MASK GENMASK(3, 2)
  250. #define WCD938X_MBHC_HS_VREF_CTL_MASK GENMASK(1, 0)
  251. #define WCD938X_MBHC_HS_VREF_1P5_V 0x1
  252. #define WCD938X_MBHC_NEW_PLUG_DETECT_CTL (0x3122)
  253. #define WCD938X_MBHC_DBNC_TIMER_INSREM_DBNC_T_96_MS 0x6
  254. #define WCD938X_MBHC_NEW_ZDET_ANA_CTL (0x3123)
  255. #define WCD938X_ZDET_RANGE_CTL_MASK GENMASK(3, 0)
  256. #define WCD938X_ZDET_MAXV_CTL_MASK GENMASK(6, 4)
  257. #define WCD938X_MBHC_NEW_ZDET_RAMP_CTL (0x3124)
  258. #define WCD938X_MBHC_NEW_FSM_STATUS (0x3125)
  259. #define WCD938X_MBHC_NEW_ADC_RESULT (0x3126)
  260. #define WCD938X_TX_NEW_AMIC_MUX_CFG (0x3127)
  261. #define WCD938X_AUX_AUXPA (0x3128)
  262. #define WCD938X_AUXPA_CLK_EN_MASK BIT(4)
  263. #define WCD938X_LDORXTX_MODE (0x3129)
  264. #define WCD938X_LDORXTX_CONFIG (0x312A)
  265. #define WCD938X_DIE_CRACK_DIE_CRK_DET_EN (0x312C)
  266. #define WCD938X_DIE_CRACK_DIE_CRK_DET_OUT (0x312D)
  267. #define WCD938X_HPH_NEW_INT_RDAC_GAIN_CTL (0x3132)
  268. #define WCD938X_HPH_NEW_INT_RDAC_HD2_CTL_L (0x3133)
  269. #define WCD938X_HPH_NEW_INT_RDAC_VREF_CTL (0x3134)
  270. #define WCD938X_HPH_NEW_INT_RDAC_OVERRIDE_CTL (0x3135)
  271. #define WCD938X_HPH_NEW_INT_RDAC_HD2_CTL_R (0x3136)
  272. #define WCD938X_HPH_RES_DIV_MASK GENMASK(4, 0)
  273. #define WCD938X_HPH_NEW_INT_PA_MISC1 (0x3137)
  274. #define WCD938X_HPH_NEW_INT_PA_MISC2 (0x3138)
  275. #define WCD938X_HPH_NEW_INT_PA_RDAC_MISC (0x3139)
  276. #define WCD938X_HPH_NEW_INT_HPH_TIMER1 (0x313A)
  277. #define WCD938X_AUTOCHOP_TIMER_EN BIT(1)
  278. #define WCD938X_HPH_NEW_INT_HPH_TIMER2 (0x313B)
  279. #define WCD938X_HPH_NEW_INT_HPH_TIMER3 (0x313C)
  280. #define WCD938X_HPH_NEW_INT_HPH_TIMER4 (0x313D)
  281. #define WCD938X_HPH_NEW_INT_PA_RDAC_MISC2 (0x313E)
  282. #define WCD938X_HPH_NEW_INT_PA_RDAC_MISC3 (0x313F)
  283. #define WCD938X_HPH_NEW_INT_RDAC_HD2_CTL_L_NEW (0x3140)
  284. #define WCD938X_HPH_NEW_INT_RDAC_HD2_CTL_R_NEW (0x3141)
  285. #define WCD938X_RX_NEW_INT_HPH_RDAC_BIAS_LOHIFI (0x3145)
  286. #define WCD938X_RX_NEW_INT_HPH_RDAC_BIAS_ULP (0x3146)
  287. #define WCD938X_RX_NEW_INT_HPH_RDAC_LDO_LP (0x3147)
  288. #define WCD938X_MBHC_NEW_INT_MOISTURE_DET_DC_CTRL (0x31AF)
  289. #define WCD938X_MBHC_NEW_INT_MOISTURE_DET_POLLING_CTRL (0x31B0)
  290. #define WCD938X_MOISTURE_EN_POLLING_MASK BIT(2)
  291. #define WCD938X_MBHC_NEW_INT_MECH_DET_CURRENT (0x31B1)
  292. #define WCD938X_HSDET_PULLUP_C_MASK GENMASK(4, 0)
  293. #define WCD938X_MBHC_NEW_INT_SPARE_2 (0x31B2)
  294. #define WCD938X_EAR_INT_NEW_EAR_CHOPPER_CON (0x31B7)
  295. #define WCD938X_EAR_INT_NEW_CNP_VCM_CON1 (0x31B8)
  296. #define WCD938X_EAR_INT_NEW_CNP_VCM_CON2 (0x31B9)
  297. #define WCD938X_EAR_INT_NEW_EAR_DYNAMIC_BIAS (0x31BA)
  298. #define WCD938X_AUX_INT_EN_REG (0x31BD)
  299. #define WCD938X_AUX_INT_PA_CTRL (0x31BE)
  300. #define WCD938X_AUX_INT_SP_CTRL (0x31BF)
  301. #define WCD938X_AUX_INT_DAC_CTRL (0x31C0)
  302. #define WCD938X_AUX_INT_CLK_CTRL (0x31C1)
  303. #define WCD938X_AUX_INT_TEST_CTRL (0x31C2)
  304. #define WCD938X_AUX_INT_STATUS_REG (0x31C3)
  305. #define WCD938X_AUX_INT_MISC (0x31C4)
  306. #define WCD938X_LDORXTX_INT_BIAS (0x31C5)
  307. #define WCD938X_LDORXTX_INT_STB_LOADS_DTEST (0x31C6)
  308. #define WCD938X_LDORXTX_INT_TEST0 (0x31C7)
  309. #define WCD938X_LDORXTX_INT_STARTUP_TIMER (0x31C8)
  310. #define WCD938X_LDORXTX_INT_TEST1 (0x31C9)
  311. #define WCD938X_LDORXTX_INT_STATUS (0x31CA)
  312. #define WCD938X_SLEEP_INT_WATCHDOG_CTL_1 (0x31D0)
  313. #define WCD938X_SLEEP_INT_WATCHDOG_CTL_2 (0x31D1)
  314. #define WCD938X_DIE_CRACK_INT_DIE_CRK_DET_INT1 (0x31D3)
  315. #define WCD938X_DIE_CRACK_INT_DIE_CRK_DET_INT2 (0x31D4)
  316. #define WCD938X_TX_COM_NEW_INT_TXFE_DIVSTOP_L2 (0x31D5)
  317. #define WCD938X_TX_COM_NEW_INT_TXFE_DIVSTOP_L1 (0x31D6)
  318. #define WCD938X_TX_COM_NEW_INT_TXFE_DIVSTOP_L0 (0x31D7)
  319. #define WCD938X_TX_COM_NEW_INT_TXFE_DIVSTOP_ULP1P2M (0x31D8)
  320. #define WCD938X_TX_COM_NEW_INT_TXFE_DIVSTOP_ULP0P6M (0x31D9)
  321. #define WCD938X_TX_COM_NEW_INT_TXFE_ICTRL_STG1_L2L1 (0x31DA)
  322. #define WCD938X_TX_COM_NEW_INT_TXFE_ICTRL_STG1_L0 (0x31DB)
  323. #define WCD938X_TX_COM_NEW_INT_TXFE_ICTRL_STG1_ULP (0x31DC)
  324. #define WCD938X_TX_COM_NEW_INT_TXFE_ICTRL_STG2MAIN_L2L1 (0x31DD)
  325. #define WCD938X_TX_COM_NEW_INT_TXFE_ICTRL_STG2MAIN_L0 (0x31DE)
  326. #define WCD938X_TX_COM_NEW_INT_TXFE_ICTRL_STG2MAIN_ULP (0x31DF)
  327. #define WCD938X_TX_COM_NEW_INT_TXFE_ICTRL_STG2CASC_L2L1L0 (0x31E0)
  328. #define WCD938X_TX_COM_NEW_INT_TXFE_ICTRL_STG2CASC_ULP (0x31E1)
  329. #define WCD938X_TX_COM_NEW_INT_TXADC_SCBIAS_L2L1 (0x31E2)
  330. #define WCD938X_TX_COM_NEW_INT_TXADC_SCBIAS_L0ULP (0x31E3)
  331. #define WCD938X_TX_COM_NEW_INT_TXADC_INT_L2 (0x31E4)
  332. #define WCD938X_TX_COM_NEW_INT_TXADC_INT_L1 (0x31E5)
  333. #define WCD938X_TX_COM_NEW_INT_TXADC_INT_L0 (0x31E6)
  334. #define WCD938X_TX_COM_NEW_INT_TXADC_INT_ULP (0x31E7)
  335. #define WCD938X_DIGITAL_PAGE_REGISTER (0x3400)
  336. #define WCD938X_DIGITAL_CHIP_ID0 (0x3401)
  337. #define WCD938X_DIGITAL_CHIP_ID1 (0x3402)
  338. #define WCD938X_DIGITAL_CHIP_ID2 (0x3403)
  339. #define WCD938X_DIGITAL_CHIP_ID3 (0x3404)
  340. #define WCD938X_DIGITAL_SWR_TX_CLK_RATE (0x3405)
  341. #define WCD938X_DIGITAL_CDC_RST_CTL (0x3406)
  342. #define WCD938X_DIGITAL_TOP_CLK_CFG (0x3407)
  343. #define WCD938X_DIGITAL_CDC_ANA_CLK_CTL (0x3408)
  344. #define WCD938X_ANA_RX_CLK_EN_MASK BIT(0)
  345. #define WCD938X_ANA_RX_DIV2_CLK_EN_MASK BIT(1)
  346. #define WCD938X_ANA_RX_DIV4_CLK_EN_MASK BIT(2)
  347. #define WCD938X_ANA_TX_CLK_EN_MASK BIT(3)
  348. #define WCD938X_ANA_TX_DIV2_CLK_EN_MASK BIT(4)
  349. #define WCD938X_ANA_TX_DIV4_CLK_EN_MASK BIT(5)
  350. #define WCD938X_DIGITAL_CDC_DIG_CLK_CTL (0x3409)
  351. #define WCD938X_TXD3_CLK_EN_MASK BIT(7)
  352. #define WCD938X_TXD2_CLK_EN_MASK BIT(6)
  353. #define WCD938X_TXD1_CLK_EN_MASK BIT(5)
  354. #define WCD938X_TXD0_CLK_EN_MASK BIT(4)
  355. #define WCD938X_TX_CLK_EN_MASK GENMASK(7, 4)
  356. #define WCD938X_RXD2_CLK_EN_MASK BIT(2)
  357. #define WCD938X_RXD1_CLK_EN_MASK BIT(1)
  358. #define WCD938X_RXD0_CLK_EN_MASK BIT(0)
  359. #define WCD938X_DIGITAL_SWR_RST_EN (0x340A)
  360. #define WCD938X_DIGITAL_CDC_PATH_MODE (0x340B)
  361. #define WCD938X_DIGITAL_CDC_RX_RST (0x340C)
  362. #define WCD938X_DIGITAL_CDC_RX0_CTL (0x340D)
  363. #define WCD938X_DEM_DITHER_ENABLE_MASK BIT(6)
  364. #define WCD938X_DIGITAL_CDC_RX1_CTL (0x340E)
  365. #define WCD938X_DIGITAL_CDC_RX2_CTL (0x340F)
  366. #define WCD938X_DIGITAL_CDC_TX_ANA_MODE_0_1 (0x3410)
  367. #define WCD938X_TXD0_MODE_MASK GENMASK(3, 0)
  368. #define WCD938X_TXD1_MODE_MASK GENMASK(7, 4)
  369. #define WCD938X_DIGITAL_CDC_TX_ANA_MODE_2_3 (0x3411)
  370. #define WCD938X_TXD2_MODE_MASK GENMASK(3, 0)
  371. #define WCD938X_TXD3_MODE_MASK GENMASK(7, 4)
  372. #define WCD938X_DIGITAL_CDC_COMP_CTL_0 (0x3414)
  373. #define WCD938X_HPHR_COMP_EN_MASK BIT(0)
  374. #define WCD938X_HPHL_COMP_EN_MASK BIT(1)
  375. #define WCD938X_DIGITAL_CDC_ANA_TX_CLK_CTL (0x3417)
  376. #define WCD938X_TX_SC_CLK_EN_MASK BIT(0)
  377. #define WCD938X_DIGITAL_CDC_HPH_DSM_A1_0 (0x3418)
  378. #define WCD938X_DIGITAL_CDC_HPH_DSM_A1_1 (0x3419)
  379. #define WCD938X_DIGITAL_CDC_HPH_DSM_A2_0 (0x341A)
  380. #define WCD938X_DIGITAL_CDC_HPH_DSM_A2_1 (0x341B)
  381. #define WCD938X_DIGITAL_CDC_HPH_DSM_A3_0 (0x341C)
  382. #define WCD938X_DIGITAL_CDC_HPH_DSM_A3_1 (0x341D)
  383. #define WCD938X_DIGITAL_CDC_HPH_DSM_A4_0 (0x341E)
  384. #define WCD938X_DIGITAL_CDC_HPH_DSM_A4_1 (0x341F)
  385. #define WCD938X_DIGITAL_CDC_HPH_DSM_A5_0 (0x3420)
  386. #define WCD938X_DIGITAL_CDC_HPH_DSM_A5_1 (0x3421)
  387. #define WCD938X_DIGITAL_CDC_HPH_DSM_A6_0 (0x3422)
  388. #define WCD938X_DIGITAL_CDC_HPH_DSM_A7_0 (0x3423)
  389. #define WCD938X_DIGITAL_CDC_HPH_DSM_C_0 (0x3424)
  390. #define WCD938X_DIGITAL_CDC_HPH_DSM_C_1 (0x3425)
  391. #define WCD938X_DIGITAL_CDC_HPH_DSM_C_2 (0x3426)
  392. #define WCD938X_DIGITAL_CDC_HPH_DSM_C_3 (0x3427)
  393. #define WCD938X_DIGITAL_CDC_HPH_DSM_R1 (0x3428)
  394. #define WCD938X_DIGITAL_CDC_HPH_DSM_R2 (0x3429)
  395. #define WCD938X_DIGITAL_CDC_HPH_DSM_R3 (0x342A)
  396. #define WCD938X_DIGITAL_CDC_HPH_DSM_R4 (0x342B)
  397. #define WCD938X_DIGITAL_CDC_HPH_DSM_R5 (0x342C)
  398. #define WCD938X_DIGITAL_CDC_HPH_DSM_R6 (0x342D)
  399. #define WCD938X_DIGITAL_CDC_HPH_DSM_R7 (0x342E)
  400. #define WCD938X_DIGITAL_CDC_AUX_DSM_A1_0 (0x342F)
  401. #define WCD938X_DIGITAL_CDC_AUX_DSM_A1_1 (0x3430)
  402. #define WCD938X_DIGITAL_CDC_AUX_DSM_A2_0 (0x3431)
  403. #define WCD938X_DIGITAL_CDC_AUX_DSM_A2_1 (0x3432)
  404. #define WCD938X_DIGITAL_CDC_AUX_DSM_A3_0 (0x3433)
  405. #define WCD938X_DIGITAL_CDC_AUX_DSM_A3_1 (0x3434)
  406. #define WCD938X_DIGITAL_CDC_AUX_DSM_A4_0 (0x3435)
  407. #define WCD938X_DIGITAL_CDC_AUX_DSM_A4_1 (0x3436)
  408. #define WCD938X_DIGITAL_CDC_AUX_DSM_A5_0 (0x3437)
  409. #define WCD938X_DIGITAL_CDC_AUX_DSM_A5_1 (0x3438)
  410. #define WCD938X_DIGITAL_CDC_AUX_DSM_A6_0 (0x3439)
  411. #define WCD938X_DIGITAL_CDC_AUX_DSM_A7_0 (0x343A)
  412. #define WCD938X_DIGITAL_CDC_AUX_DSM_C_0 (0x343B)
  413. #define WCD938X_DIGITAL_CDC_AUX_DSM_C_1 (0x343C)
  414. #define WCD938X_DIGITAL_CDC_AUX_DSM_C_2 (0x343D)
  415. #define WCD938X_DIGITAL_CDC_AUX_DSM_C_3 (0x343E)
  416. #define WCD938X_DIGITAL_CDC_AUX_DSM_R1 (0x343F)
  417. #define WCD938X_DIGITAL_CDC_AUX_DSM_R2 (0x3440)
  418. #define WCD938X_DIGITAL_CDC_AUX_DSM_R3 (0x3441)
  419. #define WCD938X_DIGITAL_CDC_AUX_DSM_R4 (0x3442)
  420. #define WCD938X_DIGITAL_CDC_AUX_DSM_R5 (0x3443)
  421. #define WCD938X_DIGITAL_CDC_AUX_DSM_R6 (0x3444)
  422. #define WCD938X_DIGITAL_CDC_AUX_DSM_R7 (0x3445)
  423. #define WCD938X_DIGITAL_CDC_HPH_GAIN_RX_0 (0x3446)
  424. #define WCD938X_DIGITAL_CDC_HPH_GAIN_RX_1 (0x3447)
  425. #define WCD938X_DIGITAL_CDC_HPH_GAIN_DSD_0 (0x3448)
  426. #define WCD938X_DIGITAL_CDC_HPH_GAIN_DSD_1 (0x3449)
  427. #define WCD938X_DIGITAL_CDC_HPH_GAIN_DSD_2 (0x344A)
  428. #define WCD938X_DIGITAL_CDC_AUX_GAIN_DSD_0 (0x344B)
  429. #define WCD938X_DIGITAL_CDC_AUX_GAIN_DSD_1 (0x344C)
  430. #define WCD938X_DIGITAL_CDC_AUX_GAIN_DSD_2 (0x344D)
  431. #define WCD938X_DIGITAL_CDC_HPH_GAIN_CTL (0x344E)
  432. #define WCD938X_HPHL_RX_EN_MASK BIT(2)
  433. #define WCD938X_HPHR_RX_EN_MASK BIT(3)
  434. #define WCD938X_DIGITAL_CDC_AUX_GAIN_CTL (0x344F)
  435. #define WCD938X_AUX_EN_MASK BIT(0)
  436. #define WCD938X_DIGITAL_CDC_EAR_PATH_CTL (0x3450)
  437. #define WCD938X_DIGITAL_CDC_SWR_CLH (0x3451)
  438. #define WCD938X_DIGITAL_SWR_CLH_BYP (0x3452)
  439. #define WCD938X_DIGITAL_CDC_TX0_CTL (0x3453)
  440. #define WCD938X_DIGITAL_CDC_TX1_CTL (0x3454)
  441. #define WCD938X_DIGITAL_CDC_TX2_CTL (0x3455)
  442. #define WCD938X_DIGITAL_CDC_TX_RST (0x3456)
  443. #define WCD938X_DIGITAL_CDC_REQ_CTL (0x3457)
  444. #define WCD938X_FS_RATE_4P8_MASK BIT(1)
  445. #define WCD938X_NO_NOTCH_MASK BIT(0)
  446. #define WCD938X_DIGITAL_CDC_RST (0x3458)
  447. #define WCD938X_DIGITAL_CDC_AMIC_CTL (0x345A)
  448. #define WCD938X_AMIC1_IN_SEL_DMIC 0
  449. #define WCD938X_AMIC1_IN_SEL_AMIC 0
  450. #define WCD938X_AMIC1_IN_SEL_MASK BIT(0)
  451. #define WCD938X_AMIC3_IN_SEL_MASK BIT(1)
  452. #define WCD938X_AMIC4_IN_SEL_MASK BIT(2)
  453. #define WCD938X_AMIC5_IN_SEL_MASK BIT(3)
  454. #define WCD938X_DIGITAL_CDC_DMIC_CTL (0x345B)
  455. #define WCD938X_DMIC_CLK_SCALING_EN_MASK GENMASK(2, 1)
  456. #define WCD938X_DIGITAL_CDC_DMIC1_CTL (0x345C)
  457. #define WCD938X_DMIC_CLK_EN_MASK BIT(3)
  458. #define WCD938X_DIGITAL_CDC_DMIC2_CTL (0x345D)
  459. #define WCD938X_DIGITAL_CDC_DMIC3_CTL (0x345E)
  460. #define WCD938X_DIGITAL_CDC_DMIC4_CTL (0x345F)
  461. #define WCD938X_DIGITAL_EFUSE_PRG_CTL (0x3460)
  462. #define WCD938X_DIGITAL_EFUSE_CTL (0x3461)
  463. #define WCD938X_DIGITAL_CDC_DMIC_RATE_1_2 (0x3462)
  464. #define WCD938X_DIGITAL_CDC_DMIC_RATE_3_4 (0x3463)
  465. #define WCD938X_DMIC1_RATE_MASK GENMASK(3, 0)
  466. #define WCD938X_DMIC2_RATE_MASK GENMASK(7, 4)
  467. #define WCD938X_DMIC3_RATE_MASK GENMASK(3, 0)
  468. #define WCD938X_DMIC4_RATE_MASK GENMASK(7, 4)
  469. #define WCD938X_DMIC4_RATE_2P4MHZ 3
  470. #define WCD938X_DIGITAL_PDM_WD_CTL0 (0x3465)
  471. #define WCD938X_PDM_WD_EN_MASK GENMASK(2, 0)
  472. #define WCD938X_DIGITAL_PDM_WD_CTL1 (0x3466)
  473. #define WCD938X_DIGITAL_PDM_WD_CTL2 (0x3467)
  474. #define WCD938X_AUX_PDM_WD_EN_MASK GENMASK(2, 0)
  475. #define WCD938X_DIGITAL_INTR_MODE (0x346A)
  476. #define WCD938X_DIGITAL_INTR_MASK_0 (0x346B)
  477. #define WCD938X_DIGITAL_INTR_MASK_1 (0x346C)
  478. #define WCD938X_DIGITAL_INTR_MASK_2 (0x346D)
  479. #define WCD938X_DIGITAL_INTR_STATUS_0 (0x346E)
  480. #define WCD938X_DIGITAL_INTR_STATUS_1 (0x346F)
  481. #define WCD938X_DIGITAL_INTR_STATUS_2 (0x3470)
  482. #define WCD938X_DIGITAL_INTR_CLEAR_0 (0x3471)
  483. #define WCD938X_DIGITAL_INTR_CLEAR_1 (0x3472)
  484. #define WCD938X_DIGITAL_INTR_CLEAR_2 (0x3473)
  485. #define WCD938X_DIGITAL_INTR_LEVEL_0 (0x3474)
  486. #define WCD938X_DIGITAL_INTR_LEVEL_1 (0x3475)
  487. #define WCD938X_DIGITAL_INTR_LEVEL_2 (0x3476)
  488. #define WCD938X_DIGITAL_INTR_SET_0 (0x3477)
  489. #define WCD938X_DIGITAL_INTR_SET_1 (0x3478)
  490. #define WCD938X_DIGITAL_INTR_SET_2 (0x3479)
  491. #define WCD938X_DIGITAL_INTR_TEST_0 (0x347A)
  492. #define WCD938X_DIGITAL_INTR_TEST_1 (0x347B)
  493. #define WCD938X_DIGITAL_INTR_TEST_2 (0x347C)
  494. #define WCD938X_DIGITAL_TX_MODE_DBG_EN (0x347F)
  495. #define WCD938X_DIGITAL_TX_MODE_DBG_0_1 (0x3480)
  496. #define WCD938X_DIGITAL_TX_MODE_DBG_2_3 (0x3481)
  497. #define WCD938X_DIGITAL_LB_IN_SEL_CTL (0x3482)
  498. #define WCD938X_DIGITAL_LOOP_BACK_MODE (0x3483)
  499. #define WCD938X_DIGITAL_SWR_DAC_TEST (0x3484)
  500. #define WCD938X_DIGITAL_SWR_HM_TEST_RX_0 (0x3485)
  501. #define WCD938X_DIGITAL_SWR_HM_TEST_TX_0 (0x3486)
  502. #define WCD938X_DIGITAL_SWR_HM_TEST_RX_1 (0x3487)
  503. #define WCD938X_DIGITAL_SWR_HM_TEST_TX_1 (0x3488)
  504. #define WCD938X_DIGITAL_SWR_HM_TEST_TX_2 (0x3489)
  505. #define WCD938X_DIGITAL_SWR_HM_TEST_0 (0x348A)
  506. #define WCD938X_DIGITAL_SWR_HM_TEST_1 (0x348B)
  507. #define WCD938X_DIGITAL_PAD_CTL_SWR_0 (0x348C)
  508. #define WCD938X_DIGITAL_PAD_CTL_SWR_1 (0x348D)
  509. #define WCD938X_DIGITAL_I2C_CTL (0x348E)
  510. #define WCD938X_DIGITAL_CDC_TX_TANGGU_SW_MODE (0x348F)
  511. #define WCD938X_DIGITAL_EFUSE_TEST_CTL_0 (0x3490)
  512. #define WCD938X_DIGITAL_EFUSE_TEST_CTL_1 (0x3491)
  513. #define WCD938X_DIGITAL_EFUSE_T_DATA_0 (0x3492)
  514. #define WCD938X_DIGITAL_EFUSE_T_DATA_1 (0x3493)
  515. #define WCD938X_DIGITAL_PAD_CTL_PDM_RX0 (0x3494)
  516. #define WCD938X_DIGITAL_PAD_CTL_PDM_RX1 (0x3495)
  517. #define WCD938X_DIGITAL_PAD_CTL_PDM_TX0 (0x3496)
  518. #define WCD938X_DIGITAL_PAD_CTL_PDM_TX1 (0x3497)
  519. #define WCD938X_DIGITAL_PAD_CTL_PDM_TX2 (0x3498)
  520. #define WCD938X_DIGITAL_PAD_INP_DIS_0 (0x3499)
  521. #define WCD938X_DIGITAL_PAD_INP_DIS_1 (0x349A)
  522. #define WCD938X_DIGITAL_DRIVE_STRENGTH_0 (0x349B)
  523. #define WCD938X_DIGITAL_DRIVE_STRENGTH_1 (0x349C)
  524. #define WCD938X_DIGITAL_DRIVE_STRENGTH_2 (0x349D)
  525. #define WCD938X_DIGITAL_RX_DATA_EDGE_CTL (0x349E)
  526. #define WCD938X_DIGITAL_TX_DATA_EDGE_CTL (0x349F)
  527. #define WCD938X_DIGITAL_GPIO_MODE (0x34A0)
  528. #define WCD938X_DIGITAL_PIN_CTL_OE (0x34A1)
  529. #define WCD938X_DIGITAL_PIN_CTL_DATA_0 (0x34A2)
  530. #define WCD938X_DIGITAL_PIN_CTL_DATA_1 (0x34A3)
  531. #define WCD938X_DIGITAL_PIN_STATUS_0 (0x34A4)
  532. #define WCD938X_DIGITAL_PIN_STATUS_1 (0x34A5)
  533. #define WCD938X_DIGITAL_DIG_DEBUG_CTL (0x34A6)
  534. #define WCD938X_DIGITAL_DIG_DEBUG_EN (0x34A7)
  535. #define WCD938X_DIGITAL_ANA_CSR_DBG_ADD (0x34A8)
  536. #define WCD938X_DIGITAL_ANA_CSR_DBG_CTL (0x34A9)
  537. #define WCD938X_DIGITAL_SSP_DBG (0x34AA)
  538. #define WCD938X_DIGITAL_MODE_STATUS_0 (0x34AB)
  539. #define WCD938X_DIGITAL_MODE_STATUS_1 (0x34AC)
  540. #define WCD938X_DIGITAL_SPARE_0 (0x34AD)
  541. #define WCD938X_DIGITAL_SPARE_1 (0x34AE)
  542. #define WCD938X_DIGITAL_SPARE_2 (0x34AF)
  543. #define WCD938X_DIGITAL_EFUSE_REG_0 (0x34B0)
  544. #define WCD938X_ID_MASK GENMASK(4, 1)
  545. #define WCD938X_DIGITAL_EFUSE_REG_1 (0x34B1)
  546. #define WCD938X_DIGITAL_EFUSE_REG_2 (0x34B2)
  547. #define WCD938X_DIGITAL_EFUSE_REG_3 (0x34B3)
  548. #define WCD938X_DIGITAL_EFUSE_REG_4 (0x34B4)
  549. #define WCD938X_DIGITAL_EFUSE_REG_5 (0x34B5)
  550. #define WCD938X_DIGITAL_EFUSE_REG_6 (0x34B6)
  551. #define WCD938X_DIGITAL_EFUSE_REG_7 (0x34B7)
  552. #define WCD938X_DIGITAL_EFUSE_REG_8 (0x34B8)
  553. #define WCD938X_DIGITAL_EFUSE_REG_9 (0x34B9)
  554. #define WCD938X_DIGITAL_EFUSE_REG_10 (0x34BA)
  555. #define WCD938X_DIGITAL_EFUSE_REG_11 (0x34BB)
  556. #define WCD938X_DIGITAL_EFUSE_REG_12 (0x34BC)
  557. #define WCD938X_DIGITAL_EFUSE_REG_13 (0x34BD)
  558. #define WCD938X_DIGITAL_EFUSE_REG_14 (0x34BE)
  559. #define WCD938X_DIGITAL_EFUSE_REG_15 (0x34BF)
  560. #define WCD938X_DIGITAL_EFUSE_REG_16 (0x34C0)
  561. #define WCD938X_DIGITAL_EFUSE_REG_17 (0x34C1)
  562. #define WCD938X_DIGITAL_EFUSE_REG_18 (0x34C2)
  563. #define WCD938X_DIGITAL_EFUSE_REG_19 (0x34C3)
  564. #define WCD938X_DIGITAL_EFUSE_REG_20 (0x34C4)
  565. #define WCD938X_DIGITAL_EFUSE_REG_21 (0x34C5)
  566. #define WCD938X_DIGITAL_EFUSE_REG_22 (0x34C6)
  567. #define WCD938X_DIGITAL_EFUSE_REG_23 (0x34C7)
  568. #define WCD938X_DIGITAL_EFUSE_REG_24 (0x34C8)
  569. #define WCD938X_DIGITAL_EFUSE_REG_25 (0x34C9)
  570. #define WCD938X_DIGITAL_EFUSE_REG_26 (0x34CA)
  571. #define WCD938X_DIGITAL_EFUSE_REG_27 (0x34CB)
  572. #define WCD938X_DIGITAL_EFUSE_REG_28 (0x34CC)
  573. #define WCD938X_DIGITAL_EFUSE_REG_29 (0x34CD)
  574. #define WCD938X_DIGITAL_EFUSE_REG_30 (0x34CE)
  575. #define WCD938X_DIGITAL_EFUSE_REG_31 (0x34CF)
  576. #define WCD938X_DIGITAL_TX_REQ_FB_CTL_0 (0x34D0)
  577. #define WCD938X_DIGITAL_TX_REQ_FB_CTL_1 (0x34D1)
  578. #define WCD938X_DIGITAL_TX_REQ_FB_CTL_2 (0x34D2)
  579. #define WCD938X_DIGITAL_TX_REQ_FB_CTL_3 (0x34D3)
  580. #define WCD938X_DIGITAL_TX_REQ_FB_CTL_4 (0x34D4)
  581. #define WCD938X_DIGITAL_DEM_BYPASS_DATA0 (0x34D5)
  582. #define WCD938X_DIGITAL_DEM_BYPASS_DATA1 (0x34D6)
  583. #define WCD938X_DIGITAL_DEM_BYPASS_DATA2 (0x34D7)
  584. #define WCD938X_DIGITAL_DEM_BYPASS_DATA3 (0x34D8)
  585. #define WCD938X_MAX_REGISTER (WCD938X_DIGITAL_DEM_BYPASS_DATA3)
  586. #define WCD938X_MAX_SWR_PORTS 5
  587. #define WCD938X_MAX_TX_SWR_PORTS 4
  588. #define WCD938X_MAX_SWR_CH_IDS 15
  589. struct wcd938x_sdw_ch_info {
  590. int port_num;
  591. unsigned int ch_mask;
  592. };
  593. #define WCD_SDW_CH(id, pn, cmask) \
  594. [id] = { \
  595. .port_num = pn, \
  596. .ch_mask = cmask, \
  597. }
  598. enum wcd938x_tx_sdw_ports {
  599. WCD938X_ADC_1_2_PORT = 1,
  600. WCD938X_ADC_3_4_PORT,
  601. /* DMIC0_0, DMIC0_1, DMIC1_0, DMIC1_1 */
  602. WCD938X_DMIC_0_3_MBHC_PORT,
  603. WCD938X_DMIC_4_7_PORT,
  604. };
  605. enum wcd938x_tx_sdw_channels {
  606. WCD938X_ADC1,
  607. WCD938X_ADC2,
  608. WCD938X_ADC3,
  609. WCD938X_ADC4,
  610. WCD938X_DMIC0,
  611. WCD938X_DMIC1,
  612. WCD938X_MBHC,
  613. WCD938X_DMIC2,
  614. WCD938X_DMIC3,
  615. WCD938X_DMIC4,
  616. WCD938X_DMIC5,
  617. WCD938X_DMIC6,
  618. WCD938X_DMIC7,
  619. };
  620. enum wcd938x_rx_sdw_ports {
  621. WCD938X_HPH_PORT = 1,
  622. WCD938X_CLSH_PORT,
  623. WCD938X_COMP_PORT,
  624. WCD938X_LO_PORT,
  625. WCD938X_DSD_PORT,
  626. };
  627. enum wcd938x_rx_sdw_channels {
  628. WCD938X_HPH_L,
  629. WCD938X_HPH_R,
  630. WCD938X_CLSH,
  631. WCD938X_COMP_L,
  632. WCD938X_COMP_R,
  633. WCD938X_LO,
  634. WCD938X_DSD_R,
  635. WCD938X_DSD_L,
  636. };
  637. enum {
  638. WCD938X_SDW_DIR_RX,
  639. WCD938X_SDW_DIR_TX,
  640. };
  641. struct wcd938x_priv;
  642. struct wcd938x_sdw_priv {
  643. struct sdw_slave *sdev;
  644. struct sdw_stream_config sconfig;
  645. struct sdw_stream_runtime *sruntime;
  646. struct sdw_port_config port_config[WCD938X_MAX_SWR_PORTS];
  647. struct wcd938x_sdw_ch_info *ch_info;
  648. bool port_enable[WCD938X_MAX_SWR_CH_IDS];
  649. int active_ports;
  650. int num_ports;
  651. bool is_tx;
  652. struct wcd938x_priv *wcd938x;
  653. struct irq_domain *slave_irq;
  654. struct regmap *regmap;
  655. };
  656. #if IS_ENABLED(CONFIG_SND_SOC_WCD938X_SDW)
  657. int wcd938x_sdw_free(struct wcd938x_sdw_priv *wcd,
  658. struct snd_pcm_substream *substream,
  659. struct snd_soc_dai *dai);
  660. int wcd938x_sdw_set_sdw_stream(struct wcd938x_sdw_priv *wcd,
  661. struct snd_soc_dai *dai,
  662. void *stream, int direction);
  663. int wcd938x_sdw_hw_params(struct wcd938x_sdw_priv *wcd,
  664. struct snd_pcm_substream *substream,
  665. struct snd_pcm_hw_params *params,
  666. struct snd_soc_dai *dai);
  667. struct device *wcd938x_sdw_device_get(struct device_node *np);
  668. int wcd938x_swr_get_current_bank(struct sdw_slave *sdev);
  669. #else
  670. static inline int wcd938x_sdw_free(struct wcd938x_sdw_priv *wcd,
  671. struct snd_pcm_substream *substream,
  672. struct snd_soc_dai *dai)
  673. {
  674. return -EOPNOTSUPP;
  675. }
  676. static inline int wcd938x_sdw_set_sdw_stream(struct wcd938x_sdw_priv *wcd,
  677. struct snd_soc_dai *dai,
  678. void *stream, int direction)
  679. {
  680. return -EOPNOTSUPP;
  681. }
  682. static inline int wcd938x_sdw_hw_params(struct wcd938x_sdw_priv *wcd,
  683. struct snd_pcm_substream *substream,
  684. struct snd_pcm_hw_params *params,
  685. struct snd_soc_dai *dai)
  686. {
  687. return -EOPNOTSUPP;
  688. }
  689. static inline struct device *wcd938x_sdw_device_get(struct device_node *np)
  690. {
  691. return NULL;
  692. }
  693. static inline int wcd938x_swr_get_current_bank(struct sdw_slave *sdev)
  694. {
  695. return 0;
  696. }
  697. #endif /* CONFIG_SND_SOC_WCD938X_SDW */
  698. #endif /* __WCD938X_H__ */