wcd9335.h 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. #ifndef __WCD9335_H__
  3. #define __WCD9335_H__
  4. /*
  5. * WCD9335 register base can change according to the mode it works in.
  6. * In slimbus mode the reg base starts from 0x800.
  7. * In i2s/i2c mode the reg base is 0x0.
  8. */
  9. #define WCD9335_REG(pg, r) ((pg << 8) | (r))
  10. #define WCD9335_REG_OFFSET(r) (r & 0xFF)
  11. #define WCD9335_PAGE_OFFSET(r) ((r >> 8) & 0xFF)
  12. /* Page-0 Registers */
  13. #define WCD9335_PAGE0_PAGE_REGISTER WCD9335_REG(0x00, 0x000)
  14. #define WCD9335_CODEC_RPM_CLK_GATE WCD9335_REG(0x00, 0x002)
  15. #define WCD9335_CODEC_RPM_CLK_GATE_MCLK_GATE_MASK GENMASK(1, 0)
  16. #define WCD9335_CODEC_RPM_CLK_MCLK_CFG WCD9335_REG(0x00, 0x003)
  17. #define WCD9335_CODEC_RPM_CLK_MCLK_CFG_9P6MHZ BIT(0)
  18. #define WCD9335_CODEC_RPM_CLK_MCLK_CFG_12P288MHZ BIT(0)
  19. #define WCD9335_CODEC_RPM_CLK_MCLK_CFG_MCLK_MASK GENMASK(1, 0)
  20. #define WCD9335_CODEC_RPM_RST_CTL WCD9335_REG(0x00, 0x009)
  21. #define WCD9335_CODEC_RPM_PWR_CDC_DIG_HM_CTL WCD9335_REG(0x00, 0x011)
  22. #define WCD9335_CHIP_TIER_CTRL_CHIP_ID_BYTE0 WCD9335_REG(0x00, 0x021)
  23. #define WCD9335_CHIP_TIER_CTRL_EFUSE_CTL WCD9335_REG(0x00, 0x025)
  24. #define WCD9335_CHIP_TIER_CTRL_EFUSE_SSTATE_MASK GENMASK(4, 1)
  25. #define WCD9335_CHIP_TIER_CTRL_EFUSE_EN_MASK BIT(0)
  26. #define WCD9335_CHIP_TIER_CTRL_EFUSE_ENABLE BIT(0)
  27. #define WCD9335_CHIP_TIER_CTRL_EFUSE_VAL_OUT0 WCD9335_REG(0x00, 0x029)
  28. #define WCD9335_CHIP_TIER_CTRL_EFUSE_STATUS WCD9335_REG(0x00, 0x039)
  29. #define WCD9335_INTR_CFG WCD9335_REG(0x00, 0x081)
  30. #define WCD9335_INTR_CLR_COMMIT WCD9335_REG(0x00, 0x082)
  31. #define WCD9335_INTR_PIN1_MASK0 WCD9335_REG(0x00, 0x089)
  32. #define WCD9335_INTR_PIN1_MASK1 WCD9335_REG(0x00, 0x08a)
  33. #define WCD9335_INTR_PIN1_MASK2 WCD9335_REG(0x00, 0x08b)
  34. #define WCD9335_INTR_PIN1_MASK3 WCD9335_REG(0x00, 0x08c)
  35. #define WCD9335_INTR_PIN1_STATUS0 WCD9335_REG(0x00, 0x091)
  36. #define WCD9335_INTR_PIN1_STATUS1 WCD9335_REG(0x00, 0x092)
  37. #define WCD9335_INTR_PIN1_STATUS2 WCD9335_REG(0x00, 0x093)
  38. #define WCD9335_INTR_PIN1_STATUS3 WCD9335_REG(0x00, 0x094)
  39. #define WCD9335_INTR_PIN1_CLEAR0 WCD9335_REG(0x00, 0x099)
  40. #define WCD9335_INTR_PIN1_CLEAR1 WCD9335_REG(0x00, 0x09a)
  41. #define WCD9335_INTR_PIN1_CLEAR2 WCD9335_REG(0x00, 0x09b)
  42. #define WCD9335_INTR_PIN1_CLEAR3 WCD9335_REG(0x00, 0x09c)
  43. #define WCD9335_INTR_PIN2_MASK0 WCD9335_REG(0x00, 0x0a1)
  44. #define WCD9335_INTR_PIN2_MASK1 WCD9335_REG(0x00, 0x0a2)
  45. #define WCD9335_INTR_PIN2_MASK2 WCD9335_REG(0x00, 0x0a3)
  46. #define WCD9335_INTR_PIN2_MASK3 WCD9335_REG(0x00, 0x0a4)
  47. #define WCD9335_INTR_PIN2_STATUS0 WCD9335_REG(0x00, 0x0a9)
  48. #define WCD9335_INTR_PIN2_STATUS1 WCD9335_REG(0x00, 0x0aa)
  49. #define WCD9335_INTR_PIN2_STATUS2 WCD9335_REG(0x00, 0x0ab)
  50. #define WCD9335_INTR_PIN2_STATUS3 WCD9335_REG(0x00, 0x0ac)
  51. #define WCD9335_INTR_PIN2_CLEAR0 WCD9335_REG(0x00, 0x0b1)
  52. #define WCD9335_INTR_PIN2_CLEAR1 WCD9335_REG(0x00, 0x0b2)
  53. #define WCD9335_INTR_PIN2_CLEAR2 WCD9335_REG(0x00, 0x0b3)
  54. #define WCD9335_INTR_PIN2_CLEAR3 WCD9335_REG(0x00, 0x0b4)
  55. #define WCD9335_INTR_LEVEL0 WCD9335_REG(0x00, 0x0e1)
  56. #define WCD9335_INTR_LEVEL1 WCD9335_REG(0x00, 0x0e2)
  57. #define WCD9335_INTR_LEVEL2 WCD9335_REG(0x00, 0x0e3)
  58. #define WCD9335_INTR_LEVEL3 WCD9335_REG(0x00, 0x0e4)
  59. /* Page-1 Registers */
  60. #define WCD9335_CPE_FLL_USER_CTL_0 WCD9335_REG(0x01, 0x001)
  61. #define WCD9335_CPE_FLL_USER_CTL_1 WCD9335_REG(0x01, 0x002)
  62. #define WCD9335_CPE_FLL_USER_CTL_2 WCD9335_REG(0x01, 0x003)
  63. #define WCD9335_CPE_FLL_USER_CTL_3 WCD9335_REG(0x01, 0x004)
  64. #define WCD9335_CPE_FLL_USER_CTL_4 WCD9335_REG(0x01, 0x005)
  65. #define WCD9335_CPE_FLL_USER_CTL_5 WCD9335_REG(0x01, 0x006)
  66. #define WCD9335_CPE_FLL_USER_CTL_6 WCD9335_REG(0x01, 0x007)
  67. #define WCD9335_CPE_FLL_USER_CTL_7 WCD9335_REG(0x01, 0x008)
  68. #define WCD9335_CPE_FLL_USER_CTL_8 WCD9335_REG(0x01, 0x009)
  69. #define WCD9335_CPE_FLL_USER_CTL_9 WCD9335_REG(0x01, 0x00a)
  70. #define WCD9335_CPE_FLL_L_VAL_CTL_0 WCD9335_REG(0x01, 0x00b)
  71. #define WCD9335_CPE_FLL_L_VAL_CTL_1 WCD9335_REG(0x01, 0x00c)
  72. #define WCD9335_CPE_FLL_DSM_FRAC_CTL_0 WCD9335_REG(0x01, 0x00d)
  73. #define WCD9335_CPE_FLL_DSM_FRAC_CTL_1 WCD9335_REG(0x01, 0x00e)
  74. #define WCD9335_CPE_FLL_CONFIG_CTL_0 WCD9335_REG(0x01, 0x00f)
  75. #define WCD9335_CPE_FLL_CONFIG_CTL_1 WCD9335_REG(0x01, 0x010)
  76. #define WCD9335_CPE_FLL_CONFIG_CTL_2 WCD9335_REG(0x01, 0x011)
  77. #define WCD9335_CPE_FLL_CONFIG_CTL_3 WCD9335_REG(0x01, 0x012)
  78. #define WCD9335_CPE_FLL_CONFIG_CTL_4 WCD9335_REG(0x01, 0x013)
  79. #define WCD9335_CPE_FLL_TEST_CTL_0 WCD9335_REG(0x01, 0x014)
  80. #define WCD9335_CPE_FLL_TEST_CTL_1 WCD9335_REG(0x01, 0x015)
  81. #define WCD9335_CPE_FLL_TEST_CTL_2 WCD9335_REG(0x01, 0x016)
  82. #define WCD9335_CPE_FLL_TEST_CTL_3 WCD9335_REG(0x01, 0x017)
  83. #define WCD9335_CPE_FLL_TEST_CTL_4 WCD9335_REG(0x01, 0x018)
  84. #define WCD9335_CPE_FLL_TEST_CTL_5 WCD9335_REG(0x01, 0x019)
  85. #define WCD9335_CPE_FLL_TEST_CTL_6 WCD9335_REG(0x01, 0x01a)
  86. #define WCD9335_CPE_FLL_TEST_CTL_7 WCD9335_REG(0x01, 0x01b)
  87. #define WCD9335_CPE_FLL_FREQ_CTL_0 WCD9335_REG(0x01, 0x01c)
  88. #define WCD9335_CPE_FLL_FREQ_CTL_1 WCD9335_REG(0x01, 0x01d)
  89. #define WCD9335_CPE_FLL_FREQ_CTL_2 WCD9335_REG(0x01, 0x01e)
  90. #define WCD9335_CPE_FLL_FREQ_CTL_3 WCD9335_REG(0x01, 0x01f)
  91. #define WCD9335_CPE_FLL_SSC_CTL_0 WCD9335_REG(0x01, 0x020)
  92. #define WCD9335_CPE_FLL_SSC_CTL_1 WCD9335_REG(0x01, 0x021)
  93. #define WCD9335_CPE_FLL_SSC_CTL_2 WCD9335_REG(0x01, 0x022)
  94. #define WCD9335_CPE_FLL_SSC_CTL_3 WCD9335_REG(0x01, 0x023)
  95. #define WCD9335_CPE_FLL_FLL_MODE WCD9335_REG(0x01, 0x024)
  96. #define WCD9335_CPE_FLL_STATUS_0 WCD9335_REG(0x01, 0x025)
  97. #define WCD9335_CPE_FLL_STATUS_1 WCD9335_REG(0x01, 0x026)
  98. #define WCD9335_CPE_FLL_STATUS_2 WCD9335_REG(0x01, 0x027)
  99. #define WCD9335_CPE_FLL_STATUS_3 WCD9335_REG(0x01, 0x028)
  100. #define WCD9335_I2S_FLL_USER_CTL_0 WCD9335_REG(0x01, 0x041)
  101. #define WCD9335_I2S_FLL_USER_CTL_1 WCD9335_REG(0x01, 0x042)
  102. #define WCD9335_I2S_FLL_USER_CTL_2 WCD9335_REG(0x01, 0x043)
  103. #define WCD9335_I2S_FLL_USER_CTL_3 WCD9335_REG(0x01, 0x044)
  104. #define WCD9335_I2S_FLL_USER_CTL_4 WCD9335_REG(0x01, 0x045)
  105. #define WCD9335_I2S_FLL_USER_CTL_5 WCD9335_REG(0x01, 0x046)
  106. #define WCD9335_I2S_FLL_USER_CTL_6 WCD9335_REG(0x01, 0x047)
  107. #define WCD9335_I2S_FLL_USER_CTL_7 WCD9335_REG(0x01, 0x048)
  108. #define WCD9335_I2S_FLL_USER_CTL_8 WCD9335_REG(0x01, 0x049)
  109. #define WCD9335_I2S_FLL_USER_CTL_9 WCD9335_REG(0x01, 0x04a)
  110. #define WCD9335_I2S_FLL_L_VAL_CTL_0 WCD9335_REG(0x01, 0x04b)
  111. #define WCD9335_I2S_FLL_L_VAL_CTL_1 WCD9335_REG(0x01, 0x04c)
  112. #define WCD9335_I2S_FLL_DSM_FRAC_CTL_0 WCD9335_REG(0x01, 0x04d)
  113. #define WCD9335_I2S_FLL_DSM_FRAC_CTL_1 WCD9335_REG(0x01, 0x04e)
  114. #define WCD9335_I2S_FLL_CONFIG_CTL_0 WCD9335_REG(0x01, 0x04f)
  115. #define WCD9335_I2S_FLL_CONFIG_CTL_1 WCD9335_REG(0x01, 0x050)
  116. #define WCD9335_I2S_FLL_CONFIG_CTL_2 WCD9335_REG(0x01, 0x051)
  117. #define WCD9335_I2S_FLL_CONFIG_CTL_3 WCD9335_REG(0x01, 0x052)
  118. #define WCD9335_I2S_FLL_CONFIG_CTL_4 WCD9335_REG(0x01, 0x053)
  119. #define WCD9335_I2S_FLL_TEST_CTL_0 WCD9335_REG(0x01, 0x054)
  120. #define WCD9335_I2S_FLL_TEST_CTL_1 WCD9335_REG(0x01, 0x055)
  121. #define WCD9335_I2S_FLL_TEST_CTL_2 WCD9335_REG(0x01, 0x056)
  122. #define WCD9335_I2S_FLL_TEST_CTL_3 WCD9335_REG(0x01, 0x057)
  123. #define WCD9335_I2S_FLL_TEST_CTL_4 WCD9335_REG(0x01, 0x058)
  124. #define WCD9335_I2S_FLL_TEST_CTL_5 WCD9335_REG(0x01, 0x059)
  125. #define WCD9335_I2S_FLL_TEST_CTL_6 WCD9335_REG(0x01, 0x05a)
  126. #define WCD9335_I2S_FLL_TEST_CTL_7 WCD9335_REG(0x01, 0x05b)
  127. #define WCD9335_I2S_FLL_FREQ_CTL_0 WCD9335_REG(0x01, 0x05c)
  128. #define WCD9335_I2S_FLL_FREQ_CTL_1 WCD9335_REG(0x01, 0x05d)
  129. #define WCD9335_I2S_FLL_FREQ_CTL_2 WCD9335_REG(0x01, 0x05e)
  130. #define WCD9335_I2S_FLL_FREQ_CTL_3 WCD9335_REG(0x01, 0x05f)
  131. #define WCD9335_I2S_FLL_SSC_CTL_0 WCD9335_REG(0x01, 0x060)
  132. #define WCD9335_I2S_FLL_SSC_CTL_1 WCD9335_REG(0x01, 0x061)
  133. #define WCD9335_I2S_FLL_SSC_CTL_2 WCD9335_REG(0x01, 0x062)
  134. #define WCD9335_I2S_FLL_SSC_CTL_3 WCD9335_REG(0x01, 0x063)
  135. #define WCD9335_I2S_FLL_FLL_MODE WCD9335_REG(0x01, 0x064)
  136. #define WCD9335_I2S_FLL_STATUS_0 WCD9335_REG(0x01, 0x065)
  137. #define WCD9335_I2S_FLL_STATUS_1 WCD9335_REG(0x01, 0x066)
  138. #define WCD9335_I2S_FLL_STATUS_2 WCD9335_REG(0x01, 0x067)
  139. #define WCD9335_I2S_FLL_STATUS_3 WCD9335_REG(0x01, 0x068)
  140. #define WCD9335_SB_FLL_USER_CTL_0 WCD9335_REG(0x01, 0x081)
  141. #define WCD9335_SB_FLL_USER_CTL_1 WCD9335_REG(0x01, 0x082)
  142. #define WCD9335_SB_FLL_USER_CTL_2 WCD9335_REG(0x01, 0x083)
  143. #define WCD9335_SB_FLL_USER_CTL_3 WCD9335_REG(0x01, 0x084)
  144. #define WCD9335_SB_FLL_USER_CTL_4 WCD9335_REG(0x01, 0x085)
  145. #define WCD9335_SB_FLL_USER_CTL_5 WCD9335_REG(0x01, 0x086)
  146. #define WCD9335_SB_FLL_USER_CTL_6 WCD9335_REG(0x01, 0x087)
  147. #define WCD9335_SB_FLL_USER_CTL_7 WCD9335_REG(0x01, 0x088)
  148. #define WCD9335_SB_FLL_USER_CTL_8 WCD9335_REG(0x01, 0x089)
  149. #define WCD9335_SB_FLL_USER_CTL_9 WCD9335_REG(0x01, 0x08a)
  150. #define WCD9335_SB_FLL_L_VAL_CTL_0 WCD9335_REG(0x01, 0x08b)
  151. #define WCD9335_SB_FLL_L_VAL_CTL_1 WCD9335_REG(0x01, 0x08c)
  152. #define WCD9335_SB_FLL_DSM_FRAC_CTL_0 WCD9335_REG(0x01, 0x08d)
  153. #define WCD9335_SB_FLL_DSM_FRAC_CTL_1 WCD9335_REG(0x01, 0x08e)
  154. #define WCD9335_SB_FLL_CONFIG_CTL_0 WCD9335_REG(0x01, 0x08f)
  155. #define WCD9335_SB_FLL_CONFIG_CTL_1 WCD9335_REG(0x01, 0x090)
  156. #define WCD9335_SB_FLL_CONFIG_CTL_2 WCD9335_REG(0x01, 0x091)
  157. #define WCD9335_SB_FLL_CONFIG_CTL_3 WCD9335_REG(0x01, 0x092)
  158. #define WCD9335_SB_FLL_CONFIG_CTL_4 WCD9335_REG(0x01, 0x093)
  159. #define WCD9335_SB_FLL_TEST_CTL_0 WCD9335_REG(0x01, 0x094)
  160. #define WCD9335_SB_FLL_TEST_CTL_1 WCD9335_REG(0x01, 0x095)
  161. #define WCD9335_SB_FLL_TEST_CTL_2 WCD9335_REG(0x01, 0x096)
  162. #define WCD9335_SB_FLL_TEST_CTL_3 WCD9335_REG(0x01, 0x097)
  163. #define WCD9335_SB_FLL_TEST_CTL_4 WCD9335_REG(0x01, 0x098)
  164. #define WCD9335_SB_FLL_TEST_CTL_5 WCD9335_REG(0x01, 0x099)
  165. #define WCD9335_SB_FLL_TEST_CTL_6 WCD9335_REG(0x01, 0x09a)
  166. #define WCD9335_SB_FLL_TEST_CTL_7 WCD9335_REG(0x01, 0x09b)
  167. #define WCD9335_SB_FLL_FREQ_CTL_0 WCD9335_REG(0x01, 0x09c)
  168. #define WCD9335_SB_FLL_FREQ_CTL_1 WCD9335_REG(0x01, 0x09d)
  169. #define WCD9335_SB_FLL_FREQ_CTL_2 WCD9335_REG(0x01, 0x09e)
  170. #define WCD9335_SB_FLL_FREQ_CTL_3 WCD9335_REG(0x01, 0x09f)
  171. #define WCD9335_SB_FLL_SSC_CTL_0 WCD9335_REG(0x01, 0x0a0)
  172. #define WCD9335_SB_FLL_SSC_CTL_1 WCD9335_REG(0x01, 0x0a1)
  173. #define WCD9335_SB_FLL_SSC_CTL_2 WCD9335_REG(0x01, 0x0a2)
  174. #define WCD9335_SB_FLL_SSC_CTL_3 WCD9335_REG(0x01, 0x0a3)
  175. #define WCD9335_SB_FLL_FLL_MODE WCD9335_REG(0x01, 0x0a4)
  176. #define WCD9335_SB_FLL_STATUS_0 WCD9335_REG(0x01, 0x0a5)
  177. #define WCD9335_SB_FLL_STATUS_1 WCD9335_REG(0x01, 0x0a6)
  178. #define WCD9335_SB_FLL_STATUS_2 WCD9335_REG(0x01, 0x0a7)
  179. #define WCD9335_SB_FLL_STATUS_3 WCD9335_REG(0x01, 0x0a8)
  180. /* Page-2 Registers */
  181. #define WCD9335_PAGE2_PAGE_REGISTER WCD9335_REG(0x02, 0x000)
  182. #define WCD9335_CPE_SS_DMIC0_CTL WCD9335_REG(0x02, 0x063)
  183. #define WCD9335_CPE_SS_DMIC1_CTL WCD9335_REG(0x02, 0x064)
  184. #define WCD9335_CPE_SS_DMIC2_CTL WCD9335_REG(0x02, 0x065)
  185. #define WCD9335_CPE_SS_DMIC_CFG WCD9335_REG(0x02, 0x066)
  186. #define WCD9335_SOC_MAD_AUDIO_CTL_2 WCD9335_REG(0x02, 0x084)
  187. /* Page-6 Registers */
  188. #define WCD9335_PAGE6_PAGE_REGISTER WCD9335_REG(0x06, 0x000)
  189. #define WCD9335_ANA_BIAS WCD9335_REG(0x06, 0x001)
  190. #define WCD9335_ANA_BIAS_EN_MASK BIT(7)
  191. #define WCD9335_ANA_BIAS_ENABLE BIT(7)
  192. #define WCD9335_ANA_BIAS_DISABLE 0
  193. #define WCD9335_ANA_BIAS_PRECHRG_EN_MASK BIT(6)
  194. #define WCD9335_ANA_BIAS_PRECHRG_ENABLE BIT(6)
  195. #define WCD9335_ANA_BIAS_PRECHRG_DISABLE 0
  196. #define WCD9335_ANA_BIAS_PRECHRG_CTL_MODE BIT(5)
  197. #define WCD9335_ANA_BIAS_PRECHRG_CTL_MODE_AUTO BIT(5)
  198. #define WCD9335_ANA_BIAS_PRECHRG_CTL_MODE_MANUAL 0
  199. #define WCD9335_ANA_CLK_TOP WCD9335_REG(0x06, 0x002)
  200. #define WCD9335_ANA_CLK_MCLK_EN_MASK BIT(2)
  201. #define WCD9335_ANA_CLK_MCLK_ENABLE BIT(2)
  202. #define WCD9335_ANA_CLK_MCLK_DISABLE 0
  203. #define WCD9335_ANA_CLK_MCLK_SRC_MASK BIT(3)
  204. #define WCD9335_ANA_CLK_MCLK_SRC_RCO BIT(3)
  205. #define WCD9335_ANA_CLK_MCLK_SRC_EXTERNAL 0
  206. #define WCD9335_ANA_CLK_EXT_CLKBUF_EN_MASK BIT(7)
  207. #define WCD9335_ANA_CLK_EXT_CLKBUF_ENABLE BIT(7)
  208. #define WCD9335_ANA_CLK_EXT_CLKBUF_DISABLE 0
  209. #define WCD9335_ANA_RCO WCD9335_REG(0x06, 0x003)
  210. #define WCD9335_ANA_RCO_BG_EN_MASK BIT(7)
  211. #define WCD9335_ANA_RCO_BG_ENABLE BIT(7)
  212. #define WCD9335_ANA_BUCK_VOUT_D WCD9335_REG(0x06, 0x005)
  213. #define WCD9335_ANA_BUCK_VOUT_MASK GENMASK(7, 0)
  214. #define WCD9335_ANA_BUCK_CTL WCD9335_REG(0x06, 0x006)
  215. #define WCD9335_ANA_BUCK_CTL_VOUT_D_IREF_MASK BIT(1)
  216. #define WCD9335_ANA_BUCK_CTL_VOUT_D_IREF_EXT BIT(1)
  217. #define WCD9335_ANA_BUCK_CTL_VOUT_D_IREF_INT 0
  218. #define WCD9335_ANA_BUCK_CTL_VOUT_D_VREF_MASK BIT(2)
  219. #define WCD9335_ANA_BUCK_CTL_VOUT_D_VREF_EXT BIT(2)
  220. #define WCD9335_ANA_BUCK_CTL_VOUT_D_VREF_INT 0
  221. #define WCD9335_ANA_BUCK_CTL_RAMP_START_MASK BIT(7)
  222. #define WCD9335_ANA_BUCK_CTL_RAMP_START_ENABLE BIT(7)
  223. #define WCD9335_ANA_BUCK_CTL_RAMP_START_DISABLE 0
  224. #define WCD9335_ANA_RX_SUPPLIES WCD9335_REG(0x06, 0x008)
  225. #define WCD9335_ANA_RX_BIAS_ENABLE_MASK BIT(0)
  226. #define WCD9335_ANA_RX_BIAS_ENABLE BIT(0)
  227. #define WCD9335_ANA_RX_BIAS_DISABLE 0
  228. #define WCD9335_ANA_HPH WCD9335_REG(0x06, 0x009)
  229. #define WCD9335_ANA_EAR WCD9335_REG(0x06, 0x00a)
  230. #define WCD9335_ANA_LO_1_2 WCD9335_REG(0x06, 0x00b)
  231. #define WCD9335_ANA_LO_3_4 WCD9335_REG(0x06, 0x00c)
  232. #define WCD9335_ANA_AMIC1 WCD9335_REG(0x06, 0x00e)
  233. #define WCD9335_ANA_AMIC2 WCD9335_REG(0x06, 0x00f)
  234. #define WCD9335_ANA_AMIC3 WCD9335_REG(0x06, 0x010)
  235. #define WCD9335_ANA_AMIC4 WCD9335_REG(0x06, 0x011)
  236. #define WCD9335_ANA_AMIC5 WCD9335_REG(0x06, 0x012)
  237. #define WCD9335_ANA_AMIC6 WCD9335_REG(0x06, 0x013)
  238. #define WCD9335_ANA_MBHC_MECH WCD9335_REG(0x06, 0x014)
  239. #define WCD9335_MBHC_L_DET_EN_MASK BIT(7)
  240. #define WCD9335_MBHC_L_DET_EN BIT(7)
  241. #define WCD9335_MBHC_GND_DET_EN_MASK BIT(6)
  242. #define WCD9335_MBHC_MECH_DETECT_TYPE_MASK BIT(5)
  243. #define WCD9335_MBHC_MECH_DETECT_TYPE_SHIFT 5
  244. #define WCD9335_MBHC_HPHL_PLUG_TYPE_MASK BIT(4)
  245. #define WCD9335_MBHC_HPHL_PLUG_TYPE_NO BIT(4)
  246. #define WCD9335_MBHC_GND_PLUG_TYPE_MASK BIT(3)
  247. #define WCD9335_MBHC_GND_PLUG_TYPE_NO BIT(3)
  248. #define WCD9335_MBHC_HSL_PULLUP_COMP_EN BIT(2)
  249. #define WCD9335_MBHC_HPHL_100K_TO_GND_EN BIT(0)
  250. #define WCD9335_ANA_MBHC_ELECT WCD9335_REG(0x06, 0x015)
  251. #define WCD9335_ANA_MBHC_BD_ISRC_CTL_MASK GENMASK(6, 4)
  252. #define WCD9335_ANA_MBHC_BD_ISRC_100UA GENMASK(5, 4)
  253. #define WCD9335_ANA_MBHC_BD_ISRC_OFF 0
  254. #define WCD9335_ANA_MBHC_BIAS_EN_MASK BIT(0)
  255. #define WCD9335_ANA_MBHC_BIAS_EN BIT(0)
  256. #define WCD9335_ANA_MBHC_ZDET WCD9335_REG(0x06, 0x016)
  257. #define WCD9335_ANA_MBHC_RESULT_1 WCD9335_REG(0x06, 0x017)
  258. #define WCD9335_ANA_MBHC_RESULT_2 WCD9335_REG(0x06, 0x018)
  259. #define WCD9335_ANA_MBHC_RESULT_3 WCD9335_REG(0x06, 0x019)
  260. #define WCD9335_MBHC_BTN_RESULT_MASK GENMASK(2, 0)
  261. #define WCD9335_ANA_MBHC_BTN0 WCD9335_REG(0x06, 0x01a)
  262. #define WCD9335_ANA_MBHC_BTN1 WCD9335_REG(0x06, 0x01b)
  263. #define WCD9335_ANA_MBHC_BTN2 WCD9335_REG(0x06, 0x01c)
  264. #define WCD9335_ANA_MBHC_BTN3 WCD9335_REG(0x06, 0x01d)
  265. #define WCD9335_ANA_MBHC_BTN4 WCD9335_REG(0x06, 0x01e)
  266. #define WCD9335_ANA_MBHC_BTN5 WCD9335_REG(0x06, 0x01f)
  267. #define WCD9335_ANA_MBHC_BTN6 WCD9335_REG(0x06, 0x020)
  268. #define WCD9335_ANA_MBHC_BTN7 WCD9335_REG(0x06, 0x021)
  269. #define WCD9335_ANA_MICB1 WCD9335_REG(0x06, 0x022)
  270. #define WCD9335_ANA_MICB2 WCD9335_REG(0x06, 0x023)
  271. #define WCD9335_ANA_MICB2_ENABLE BIT(6)
  272. #define WCD9335_ANA_MICB2_RAMP WCD9335_REG(0x06, 0x024)
  273. #define WCD9335_ANA_MICB3 WCD9335_REG(0x06, 0x025)
  274. #define WCD9335_ANA_MICB4 WCD9335_REG(0x06, 0x026)
  275. #define WCD9335_ANA_VBADC WCD9335_REG(0x06, 0x027)
  276. #define WCD9335_BIAS_VBG_FINE_ADJ WCD9335_REG(0x06, 0x029)
  277. #define WCD9335_RCO_CTRL_2 WCD9335_REG(0x06, 0x02f)
  278. #define WCD9335_SIDO_SIDO_CCL_2 WCD9335_REG(0x06, 0x042)
  279. #define WCD9335_SIDO_SIDO_CCL_4 WCD9335_REG(0x06, 0x044)
  280. #define WCD9335_SIDO_SIDO_CCL_8 WCD9335_REG(0x06, 0x048)
  281. #define WCD9335_SIDO_SIDO_CCL_10 WCD9335_REG(0x06, 0x04a)
  282. #define WCD9335_SIDO_SIDO_CCL_10_ICHARG_PWR_SEL_C320FF 0x2
  283. /* Comparator 1 and 2 Bias current at 1P0UA with start pulse width of C320FF */
  284. #define WCD9335_SIDO_SIDO_CCL_DEF_VALUE 0x6e
  285. #define WCD9335_SIDO_SIDO_TEST_2 WCD9335_REG(0x06, 0x055)
  286. #define WCD9335_MBHC_CTL_1 WCD9335_REG(0x06, 0x056)
  287. #define WCD9335_MBHC_BTN_DBNC_MASK GENMASK(1, 0)
  288. #define WCD9335_MBHC_BTN_DBNC_T_16_MS 0x2
  289. #define WCD9335_MBHC_CTL_RCO_EN_MASK BIT(7)
  290. #define WCD9335_MBHC_CTL_RCO_EN BIT(7)
  291. #define WCD9335_MBHC_CTL_2 WCD9335_REG(0x06, 0x057)
  292. #define WCD9335_MBHC_HS_VREF_CTL_MASK GENMASK(1, 0)
  293. #define WCD9335_MBHC_HS_VREF_1P5_V 0x1
  294. #define WCD9335_MBHC_PLUG_DETECT_CTL WCD9335_REG(0x06, 0x058)
  295. #define WCD9335_MBHC_HSDET_PULLUP_CTL_MASK GENMASK(7, 6)
  296. #define WCD9335_MBHC_HSDET_PULLUP_CTL_SHIFT 6
  297. #define WCD9335_MBHC_HSDET_PULLUP_CTL_1_2P0_UA 0x80
  298. #define WCD9335_MBHC_DBNC_TIMER_INSREM_DBNC_T_96_MS 0x6
  299. #define WCD9335_MBHC_ZDET_RAMP_CTL WCD9335_REG(0x06, 0x05a)
  300. #define WCD9335_VBADC_IBIAS_FE WCD9335_REG(0x06, 0x05e)
  301. #define WCD9335_FLYBACK_CTRL_1 WCD9335_REG(0x06, 0x0b1)
  302. #define WCD9335_RX_BIAS_HPH_PA WCD9335_REG(0x06, 0x0bb)
  303. #define WCD9335_RX_BIAS_HPH_PA_AMP_5_UA_MASK GENMASK(3, 0)
  304. #define WCD9335_RX_BIAS_HPH_RDACBUFF_CNP2 WCD9335_REG(0x06, 0x0bc)
  305. #define WCD9335_RX_BIAS_HPH_RDAC_LDO WCD9335_REG(0x06, 0x0bd)
  306. #define WCD9335_RX_BIAS_FLYB_BUFF WCD9335_REG(0x06, 0x0c7)
  307. #define WCD9335_RX_BIAS_FLYB_VPOS_5_UA_MASK GENMASK(3, 0)
  308. #define WCD9335_RX_BIAS_FLYB_I_0P0_UA 0
  309. #define WCD9335_RX_BIAS_FLYB_VNEG_5_UA_MASK GENMASK(7, 4)
  310. #define WCD9335_RX_BIAS_FLYB_MID_RST WCD9335_REG(0x06, 0x0c8)
  311. #define WCD9335_HPH_CNP_WG_CTL WCD9335_REG(0x06, 0x0cc)
  312. #define WCD9335_HPH_CNP_WG_CTL_CURR_LDIV_MASK GENMASK(2, 0)
  313. #define WCD9335_HPH_CNP_WG_CTL_CURR_LDIV_RATIO_500 0x2
  314. #define WCD9335_HPH_CNP_WG_CTL_CURR_LDIV_RATIO_1000 0x3
  315. #define WCD9335_HPH_OCP_CTL WCD9335_REG(0x06, 0x0ce)
  316. #define WCD9335_HPH_AUTO_CHOP WCD9335_REG(0x06, 0x0cf)
  317. #define WCD9335_HPH_AUTO_CHOP_MASK BIT(5)
  318. #define WCD9335_HPH_AUTO_CHOP_FORCE_ENABLE BIT(5)
  319. #define WCD9335_HPH_AUTO_CHOP_ENABLE_BY_CMPDR_GAIN 0
  320. #define WCD9335_HPH_PA_CTL1 WCD9335_REG(0x06, 0x0d1)
  321. #define WCD9335_HPH_PA_GM3_IB_SCALE_MASK GENMASK(3, 1)
  322. #define WCD9335_HPH_PA_CTL2 WCD9335_REG(0x06, 0x0d2)
  323. #define WCD9335_HPH_PA_CTL2_FORCE_PSRREH_MASK BIT(2)
  324. #define WCD9335_HPH_PA_CTL2_FORCE_PSRREH_ENABLE BIT(2)
  325. #define WCD9335_HPH_PA_CTL2_FORCE_PSRREH_DISABLE 0
  326. #define WCD9335_HPH_PA_CTL2_FORCE_IQCTRL_MASK BIT(3)
  327. #define WCD9335_HPH_PA_CTL2_FORCE_IQCTRL_ENABLE BIT(3)
  328. #define WCD9335_HPH_PA_CTL2_FORCE_IQCTRL_DISABLE 0
  329. #define WCD9335_HPH_PA_CTL2_HPH_PSRR_ENH_MASK BIT(5)
  330. #define WCD9335_HPH_PA_CTL2_HPH_PSRR_ENABLE BIT(5)
  331. #define WCD9335_HPH_PA_CTL2_HPH_PSRR_DISABLE 0
  332. #define WCD9335_HPH_L_EN WCD9335_REG(0x06, 0x0d3)
  333. #define WCD9335_HPH_CONST_SEL_L_MASK GENMASK(7, 6)
  334. #define WCD9335_HPH_CONST_SEL_L_BYPASS 0
  335. #define WCD9335_HPH_CONST_SEL_L_LP_PATH 0x40
  336. #define WCD9335_HPH_CONST_SEL_L_HQ_PATH 0x80
  337. #define WCD9335_HPH_PA_GAIN_MASK GENMASK(4, 0)
  338. #define WCD9335_HPH_GAIN_SRC_SEL_MASK BIT(5)
  339. #define WCD9335_HPH_GAIN_SRC_SEL_COMPANDER 0
  340. #define WCD9335_HPH_GAIN_SRC_SEL_REGISTER BIT(5)
  341. #define WCD9335_HPH_L_TEST WCD9335_REG(0x06, 0x0d4)
  342. #define WCD9335_HPH_R_EN WCD9335_REG(0x06, 0x0d6)
  343. #define WCD9335_HPH_R_TEST WCD9335_REG(0x06, 0x0d7)
  344. #define WCD9335_HPH_R_ATEST WCD9335_REG(0x06, 0x0d8)
  345. #define WCD9335_HPH_RDAC_LDO_CTL WCD9335_REG(0x06, 0x0db)
  346. #define WCD9335_HPH_RDAC_N1P65_LD_OUTCTL_MASK GENMASK(2, 0)
  347. #define WCD9335_HPH_RDAC_N1P65_LD_OUTCTL_V_N1P60 0x1
  348. #define WCD9335_HPH_RDAC_1P65_LD_OUTCTL_MASK GENMASK(6, 4)
  349. #define WCD9335_HPH_RDAC_1P65_LD_OUTCTL_V_N1P60 0x10
  350. #define WCD9335_HPH_REFBUFF_LP_CTL WCD9335_REG(0x06, 0x0de)
  351. #define WCD9335_HPH_L_DAC_CTL WCD9335_REG(0x06, 0x0df)
  352. #define WCD9335_HPH_DAC_LDO_POWERMODE_MASK BIT(0)
  353. #define WCD9335_HPH_DAC_LDO_POWERMODE_LOWPOWER 0
  354. #define WCD9335_HPH_DAC_LDO_POWERMODE_UHQA BIT(0)
  355. #define WCD9335_HPH_DAC_LDO_UHQA_OV_MASK BIT(1)
  356. #define WCD9335_HPH_DAC_LDO_UHQA_OV_ENABLE BIT(1)
  357. #define WCD9335_HPH_DAC_LDO_UHQA_OV_DISABLE 0
  358. #define WCD9335_EAR_CMBUFF WCD9335_REG(0x06, 0x0e2)
  359. #define WCD9335_DIFF_LO_LO2_COMPANDER WCD9335_REG(0x06, 0x0ea)
  360. #define WCD9335_DIFF_LO_LO1_COMPANDER WCD9335_REG(0x06, 0x0eb)
  361. #define WCD9335_DIFF_LO_COM_SWCAP_REFBUF_FREQ WCD9335_REG(0x06, 0x0f1)
  362. #define WCD9335_DIFF_LO_COM_PA_FREQ WCD9335_REG(0x06, 0x0f2)
  363. #define WCD9335_SE_LO_LO3_GAIN WCD9335_REG(0x06, 0x0f8)
  364. #define WCD9335_SE_LO_LO3_CTRL WCD9335_REG(0x06, 0x0f9)
  365. #define WCD9335_SE_LO_LO4_GAIN WCD9335_REG(0x06, 0x0fa)
  366. /* Page-10 Registers */
  367. #define WCD9335_CDC_TX0_TX_PATH_CTL WCD9335_REG(0x0a, 0x031)
  368. #define WCD9335_CDC_TX_PATH_CTL_PCM_RATE_MASK GENMASK(3, 0)
  369. #define WCD9335_CDC_TX_PATH_CTL(dec) WCD9335_REG(0xa, (0x31 + dec * 0x10))
  370. #define WCD9335_CDC_TX0_TX_PATH_CFG0 WCD9335_REG(0x0a, 0x032)
  371. #define WCD9335_CDC_TX_ADC_AMIC_DMIC_SEL_MASK BIT(7)
  372. #define WCD9335_CDC_TX_ADC_DMIC_SEL BIT(7)
  373. #define WCD9335_CDC_TX_ADC_AMIC_SEL 0
  374. #define WCD9335_CDC_TX0_TX_VOL_CTL WCD9335_REG(0x0a, 0x034)
  375. #define WCD9335_CDC_TX0_TX_PATH_SEC2 WCD9335_REG(0x0a, 0x039)
  376. #define WCD9335_CDC_TX0_TX_PATH_SEC7 WCD9335_REG(0x0a, 0x03e)
  377. #define WCD9335_CDC_TX1_TX_PATH_CTL WCD9335_REG(0x0a, 0x041)
  378. #define WCD9335_CDC_TX1_TX_PATH_CFG0 WCD9335_REG(0x0a, 0x042)
  379. #define WCD9335_CDC_TX2_TX_PATH_CTL WCD9335_REG(0x0a, 0x051)
  380. #define WCD9335_CDC_TX2_TX_PATH_CFG0 WCD9335_REG(0x0a, 0x052)
  381. #define WCD9335_CDC_TX2_TX_VOL_CTL WCD9335_REG(0x0a, 0x054)
  382. #define WCD9335_CDC_TX3_TX_PATH_CTL WCD9335_REG(0x0a, 0x061)
  383. #define WCD9335_CDC_TX3_TX_PATH_CFG0 WCD9335_REG(0x0a, 0x062)
  384. #define WCD9335_CDC_TX3_TX_VOL_CTL WCD9335_REG(0x0a, 0x064)
  385. #define WCD9335_CDC_TX4_TX_PATH_CTL WCD9335_REG(0x0a, 0x071)
  386. #define WCD9335_CDC_TX4_TX_PATH_CFG0 WCD9335_REG(0x0a, 0x072)
  387. #define WCD9335_CDC_TX4_TX_VOL_CTL WCD9335_REG(0x0a, 0x074)
  388. #define WCD9335_CDC_TX5_TX_PATH_CTL WCD9335_REG(0x0a, 0x081)
  389. #define WCD9335_CDC_TX5_TX_PATH_CFG0 WCD9335_REG(0x0a, 0x082)
  390. #define WCD9335_CDC_TX5_TX_VOL_CTL WCD9335_REG(0x0a, 0x084)
  391. #define WCD9335_CDC_TX6_TX_PATH_CTL WCD9335_REG(0x0a, 0x091)
  392. #define WCD9335_CDC_TX6_TX_PATH_CFG0 WCD9335_REG(0x0a, 0x092)
  393. #define WCD9335_CDC_TX6_TX_VOL_CTL WCD9335_REG(0x0a, 0x094)
  394. #define WCD9335_CDC_TX7_TX_PATH_CTL WCD9335_REG(0x0a, 0x0a1)
  395. #define WCD9335_CDC_TX7_TX_PATH_CFG0 WCD9335_REG(0x0a, 0x0a2)
  396. #define WCD9335_CDC_TX7_TX_VOL_CTL WCD9335_REG(0x0a, 0x0a4)
  397. #define WCD9335_CDC_TX8_TX_PATH_CTL WCD9335_REG(0x0a, 0x0b1)
  398. #define WCD9335_CDC_TX8_TX_PATH_CFG0 WCD9335_REG(0x0a, 0x0b2)
  399. #define WCD9335_CDC_TX8_TX_VOL_CTL WCD9335_REG(0x0a, 0x0b4)
  400. #define WCD9335_CDC_TX9_SPKR_PROT_PATH_CFG0 WCD9335_REG(0x0a, 0x0c3)
  401. #define WCD9335_CDC_TX10_SPKR_PROT_PATH_CFG0 WCD9335_REG(0x0a, 0x0c7)
  402. #define WCD9335_CDC_TX11_SPKR_PROT_PATH_CFG0 WCD9335_REG(0x0a, 0x0cb)
  403. #define WCD9335_CDC_TX12_SPKR_PROT_PATH_CFG0 WCD9335_REG(0x0a, 0x0cf)
  404. /* Page-11 Registers */
  405. #define WCD9335_PAGE11_PAGE_REGISTER WCD9335_REG(0x0b, 0x000)
  406. #define WCD9335_CDC_COMPANDER1_CTL0 WCD9335_REG(0x0b, 0x001)
  407. #define WCD9335_CDC_COMPANDER1_CTL(c) WCD9335_REG(0x0b, (0x001 + c * 0x8))
  408. #define WCD9335_CDC_COMPANDER_CLK_EN_MASK BIT(0)
  409. #define WCD9335_CDC_COMPANDER_CLK_ENABLE BIT(0)
  410. #define WCD9335_CDC_COMPANDER_CLK_DISABLE 0
  411. #define WCD9335_CDC_COMPANDER_SOFT_RST_MASK BIT(1)
  412. #define WCD9335_CDC_COMPANDER_SOFT_RST_ENABLE BIT(1)
  413. #define WCD9335_CDC_COMPANDER_SOFT_RST_DISABLE 0
  414. #define WCD9335_CDC_COMPANDER_HALT_MASK BIT(2)
  415. #define WCD9335_CDC_COMPANDER_HALT BIT(2)
  416. #define WCD9335_CDC_COMPANDER_NOHALT 0
  417. #define WCD9335_CDC_COMPANDER7_CTL3 WCD9335_REG(0x0b, 0x034)
  418. #define WCD9335_CDC_COMPANDER7_CTL7 WCD9335_REG(0x0b, 0x038)
  419. #define WCD9335_CDC_COMPANDER8_CTL3 WCD9335_REG(0x0b, 0x03c)
  420. #define WCD9335_CDC_COMPANDER8_CTL7 WCD9335_REG(0x0b, 0x040)
  421. #define WCD9335_CDC_RX0_RX_PATH_CTL WCD9335_REG(0x0b, 0x041)
  422. #define WCD9335_CDC_RX_PGA_MUTE_EN_MASK BIT(4)
  423. #define WCD9335_CDC_RX_PGA_MUTE_ENABLE BIT(4)
  424. #define WCD9335_CDC_RX_PGA_MUTE_DISABLE 0
  425. #define WCD9335_CDC_RX_CLK_EN_MASK BIT(5)
  426. #define WCD9335_CDC_RX_CLK_ENABLE BIT(5)
  427. #define WCD9335_CDC_RX_CLK_DISABLE 0
  428. #define WCD9335_CDC_RX_RESET_MASK BIT(6)
  429. #define WCD9335_CDC_RX_RESET_ENABLE BIT(6)
  430. #define WCD9335_CDC_RX_RESET_DISABLE 0
  431. #define WCD9335_CDC_RX_PATH_CTL(rx) WCD9335_REG(0x0b, (0x041 + rx * 0x14))
  432. #define WCD9335_CDC_RX0_RX_PATH_CFG0 WCD9335_REG(0x0b, 0x042)
  433. #define WCD9335_CDC_RX0_RX_PATH_CFG1 WCD9335_REG(0x0b, 0x043)
  434. #define WCD9335_CDC_RX0_RX_PATH_CFG2 WCD9335_REG(0x0b, 0x044)
  435. #define WCD9335_CDC_RX0_RX_VOL_CTL WCD9335_REG(0x0b, 0x045)
  436. #define WCD9335_CDC_RX0_RX_PATH_MIX_CTL WCD9335_REG(0x0b, 0x046)
  437. #define WCD9335_CDC_MIX_PCM_RATE_MASK GENMASK(3, 0)
  438. #define WCD9335_CDC_RX_PATH_MIX_CTL(rx) WCD9335_REG(0x0b, (0x46 + rx * 0x14))
  439. #define WCD9335_CDC_RX0_RX_PATH_MIX_CFG WCD9335_REG(0x0b, 0x047)
  440. #define WCD9335_CDC_RX0_RX_VOL_MIX_CTL WCD9335_REG(0x0b, 0x048)
  441. #define WCD9335_CDC_RX0_RX_PATH_SEC0 WCD9335_REG(0x0b, 0x049)
  442. #define WCD9335_CDC_RX0_RX_PATH_SEC7 WCD9335_REG(0x0b, 0x050)
  443. #define WCD9335_CDC_RX0_RX_PATH_MIX_SEC0 WCD9335_REG(0x0b, 0x051)
  444. #define WCD9335_CDC_RX1_RX_PATH_CTL WCD9335_REG(0x0b, 0x055)
  445. #define WCD9335_CDC_RX1_RX_PATH_CFG0 WCD9335_REG(0x0b, 0x056)
  446. #define WCD9335_CDC_RX1_RX_PATH_CFG(c) WCD9335_REG(0x0b, (0x056 + c * 0x14))
  447. #define WCD9335_CDC_RX_PATH_CFG_CMP_EN_MASK BIT(1)
  448. #define WCD9335_CDC_RX_PATH_CFG_CMP_ENABLE BIT(1)
  449. #define WCD9335_CDC_RX_PATH_CFG_CMP_DISABLE 0
  450. #define WCD9335_CDC_RX_PATH_CFG_HD2_EN_MASK BIT(2)
  451. #define WCD9335_CDC_RX_PATH_CFG_HD2_ENABLE BIT(2)
  452. #define WCD9335_CDC_RX_PATH_CFG_HD2_DISABLE 0
  453. #define WCD9335_CDC_RX_PATH_CFG0_DLY_ZN_EN_MASK BIT(3)
  454. #define WCD9335_CDC_RX_PATH_CFG0_DLY_ZN_EN BIT(3)
  455. #define WCD9335_CDC_RX_PATH_CFG0_DLY_ZN_DISABLE 0
  456. #define WCD9335_CDC_RX1_RX_PATH_CFG2 WCD9335_REG(0x0b, 0x058)
  457. #define WCD9335_CDC_RX1_RX_VOL_CTL WCD9335_REG(0x0b, 0x059)
  458. #define WCD9335_CDC_RX1_RX_PATH_MIX_CTL WCD9335_REG(0x0b, 0x05a)
  459. #define WCD9335_CDC_RX1_RX_PATH_MIX_CFG WCD9335_REG(0x0b, 0x05b)
  460. #define WCD9335_CDC_RX1_RX_VOL_MIX_CTL WCD9335_REG(0x0b, 0x05c)
  461. #define WCD9335_CDC_RX1_RX_PATH_SEC0 WCD9335_REG(0x0b, 0x05d)
  462. #define WCD9335_CDC_RX1_RX_PATH_SEC3 WCD9335_REG(0x0b, 0x060)
  463. #define WCD9335_CDC_RX_PATH_SEC_HD2_SCALE_MASK GENMASK(1, 0)
  464. #define WCD9335_CDC_RX_PATH_SEC_HD2_SCALE_2 0x1
  465. #define WCD9335_CDC_RX_PATH_SEC_HD2_SCALE_1 0
  466. #define WCD9335_CDC_RX_PATH_SEC_HD2_ALPHA_MASK GENMASK(5, 2)
  467. #define WCD9335_CDC_RX_PATH_SEC_HD2_ALPHA_0P2500 0x10
  468. #define WCD9335_CDC_RX_PATH_SEC_HD2_ALPHA_0P0000 0
  469. #define WCD9335_CDC_RX2_RX_PATH_CTL WCD9335_REG(0x0b, 0x069)
  470. #define WCD9335_CDC_RX2_RX_PATH_CFG0 WCD9335_REG(0x0b, 0x06a)
  471. #define WCD9335_CDC_RX2_RX_PATH_CFG2 WCD9335_REG(0x0b, 0x06c)
  472. #define WCD9335_CDC_RX2_RX_VOL_CTL WCD9335_REG(0x0b, 0x06d)
  473. #define WCD9335_CDC_RX2_RX_PATH_MIX_CTL WCD9335_REG(0x0b, 0x06e)
  474. #define WCD9335_CDC_RX2_RX_PATH_MIX_CFG WCD9335_REG(0x0b, 0x06f)
  475. #define WCD9335_CDC_RX2_RX_VOL_MIX_CTL WCD9335_REG(0x0b, 0x070)
  476. #define WCD9335_CDC_RX2_RX_PATH_SEC0 WCD9335_REG(0x0b, 0x071)
  477. #define WCD9335_CDC_RX_PATH_DEM_INP_SEL_MASK GENMASK(1, 0)
  478. #define WCD9335_CDC_RX2_RX_PATH_SEC3 WCD9335_REG(0x0b, 0x074)
  479. #define WCD9335_CDC_RX3_RX_PATH_CTL WCD9335_REG(0x0b, 0x07d)
  480. #define WCD9335_CDC_RX3_RX_PATH_CFG0 WCD9335_REG(0x0b, 0x07e)
  481. #define WCD9335_CDC_RX3_RX_PATH_CFG2 WCD9335_REG(0x0b, 0x080)
  482. #define WCD9335_CDC_RX3_RX_VOL_CTL WCD9335_REG(0x0b, 0x081)
  483. #define WCD9335_CDC_RX3_RX_PATH_MIX_CTL WCD9335_REG(0x0b, 0x082)
  484. #define WCD9335_CDC_RX3_RX_PATH_MIX_CFG WCD9335_REG(0x0b, 0x083)
  485. #define WCD9335_CDC_RX3_RX_VOL_MIX_CTL WCD9335_REG(0x0b, 0x084)
  486. #define WCD9335_CDC_RX4_RX_PATH_CTL WCD9335_REG(0x0b, 0x091)
  487. #define WCD9335_CDC_RX4_RX_PATH_CFG0 WCD9335_REG(0x0b, 0x092)
  488. #define WCD9335_CDC_RX4_RX_PATH_CFG2 WCD9335_REG(0x0b, 0x094)
  489. #define WCD9335_CDC_RX4_RX_VOL_CTL WCD9335_REG(0x0b, 0x095)
  490. #define WCD9335_CDC_RX4_RX_PATH_MIX_CTL WCD9335_REG(0x0b, 0x096)
  491. #define WCD9335_CDC_RX4_RX_PATH_MIX_CFG WCD9335_REG(0x0b, 0x097)
  492. #define WCD9335_CDC_RX4_RX_VOL_MIX_CTL WCD9335_REG(0x0b, 0x098)
  493. #define WCD9335_CDC_RX5_RX_PATH_CTL WCD9335_REG(0x0b, 0x0a5)
  494. #define WCD9335_CDC_RX5_RX_PATH_CFG0 WCD9335_REG(0x0b, 0x0a6)
  495. #define WCD9335_CDC_RX5_RX_PATH_CFG2 WCD9335_REG(0x0b, 0x0a8)
  496. #define WCD9335_CDC_RX5_RX_VOL_CTL WCD9335_REG(0x0b, 0x0a9)
  497. #define WCD9335_CDC_RX5_RX_PATH_MIX_CTL WCD9335_REG(0x0b, 0x0aa)
  498. #define WCD9335_CDC_RX5_RX_PATH_MIX_CFG WCD9335_REG(0x0b, 0x0ab)
  499. #define WCD9335_CDC_RX5_RX_VOL_MIX_CTL WCD9335_REG(0x0b, 0x0ac)
  500. #define WCD9335_CDC_RX6_RX_PATH_CTL WCD9335_REG(0x0b, 0x0b9)
  501. #define WCD9335_CDC_RX6_RX_PATH_CFG0 WCD9335_REG(0x0b, 0x0ba)
  502. #define WCD9335_CDC_RX6_RX_PATH_CFG2 WCD9335_REG(0x0b, 0x0bc)
  503. #define WCD9335_CDC_RX6_RX_VOL_CTL WCD9335_REG(0x0b, 0x0bd)
  504. #define WCD9335_CDC_RX6_RX_PATH_MIX_CTL WCD9335_REG(0x0b, 0x0be)
  505. #define WCD9335_CDC_RX6_RX_PATH_MIX_CFG WCD9335_REG(0x0b, 0x0bf)
  506. #define WCD9335_CDC_RX6_RX_VOL_MIX_CTL WCD9335_REG(0x0b, 0x0c0)
  507. #define WCD9335_CDC_RX7_RX_PATH_CTL WCD9335_REG(0x0b, 0x0cd)
  508. #define WCD9335_CDC_RX7_RX_PATH_CFG0 WCD9335_REG(0x0b, 0x0ce)
  509. #define WCD9335_CDC_RX7_RX_PATH_CFG1 WCD9335_REG(0x0b, 0x0cf)
  510. #define WCD9335_CDC_RX7_RX_PATH_CFG2 WCD9335_REG(0x0b, 0x0d0)
  511. #define WCD9335_CDC_RX7_RX_VOL_CTL WCD9335_REG(0x0b, 0x0d1)
  512. #define WCD9335_CDC_RX7_RX_PATH_MIX_CTL WCD9335_REG(0x0b, 0x0d2)
  513. #define WCD9335_CDC_RX7_RX_PATH_MIX_CFG WCD9335_REG(0x0b, 0x0d3)
  514. #define WCD9335_CDC_RX7_RX_VOL_MIX_CTL WCD9335_REG(0x0b, 0x0d4)
  515. #define WCD9335_CDC_RX8_RX_PATH_CTL WCD9335_REG(0x0b, 0x0e1)
  516. #define WCD9335_CDC_RX8_RX_PATH_CFG0 WCD9335_REG(0x0b, 0x0e2)
  517. #define WCD9335_CDC_RX8_RX_PATH_CFG1 WCD9335_REG(0x0b, 0x0e3)
  518. #define WCD9335_CDC_RX8_RX_PATH_CFG2 WCD9335_REG(0x0b, 0x0e4)
  519. #define WCD9335_CDC_RX8_RX_VOL_CTL WCD9335_REG(0x0b, 0x0e5)
  520. #define WCD9335_CDC_RX8_RX_PATH_MIX_CTL WCD9335_REG(0x0b, 0x0e6)
  521. #define WCD9335_CDC_RX8_RX_PATH_MIX_CFG WCD9335_REG(0x0b, 0x0e7)
  522. #define WCD9335_CDC_RX8_RX_VOL_MIX_CTL WCD9335_REG(0x0b, 0x0e8)
  523. /* Page-12 Registers */
  524. #define WCD9335_PAGE12_PAGE_REGISTER WCD9335_REG(0x0c, 0x000)
  525. #define WCD9335_CDC_CLSH_K2_MSB WCD9335_REG(0x0c, 0x00a)
  526. #define WCD9335_CDC_CLSH_K2_LSB WCD9335_REG(0x0c, 0x00b)
  527. #define WCD9335_CDC_BOOST0_BOOST_CTL WCD9335_REG(0x0c, 0x01a)
  528. #define WCD9335_CDC_BOOST0_BOOST_CFG1 WCD9335_REG(0x0c, 0x01b)
  529. #define WCD9335_CDC_BOOST0_BOOST_CFG2 WCD9335_REG(0x0c, 0x01c)
  530. #define WCD9335_CDC_BOOST1_BOOST_CTL WCD9335_REG(0x0c, 0x022)
  531. #define WCD9335_CDC_BOOST1_BOOST_CFG1 WCD9335_REG(0x0c, 0x023)
  532. #define WCD9335_CDC_BOOST1_BOOST_CFG2 WCD9335_REG(0x0c, 0x024)
  533. /* Page-13 Registers */
  534. #define WCD9335_PAGE13_PAGE_REGISTER WCD9335_REG(0x0d, 0x000)
  535. #define WCD9335_CDC_RX_INP_MUX_RX_INT0_CFG0 WCD9335_REG(0x0d, 0x001)
  536. #define WCD9335_CDC_RX_INP_MUX_RX_INT_CFG0(i) WCD9335_REG(0xd, (0x1 + i * 0x2))
  537. #define WCD9335_CDC_RX_INP_MUX_RX_INT0_CFG1 WCD9335_REG(0xd, 0x002)
  538. #define WCD9335_CDC_RX_INP_MUX_RX_INT_SEL_MASK GENMASK(3, 0)
  539. #define WCD9335_CDC_RX_INP_MUX_RX_INT_CFG1(i) WCD9335_REG(0xd, (0x2 + i * 0x2))
  540. #define WCD9335_CDC_RX_INP_MUX_RX_INT1_CFG0 WCD9335_REG(0x0d, 0x003)
  541. #define WCD9335_CDC_RX_INP_MUX_RX_INT1_CFG1 WCD9335_REG(0x0d, 0x004)
  542. #define WCD9335_CDC_RX_INP_MUX_RX_INT2_CFG0 WCD9335_REG(0x0d, 0x005)
  543. #define WCD9335_CDC_RX_INP_MUX_RX_INT2_CFG1 WCD9335_REG(0x0d, 0x006)
  544. #define WCD9335_CDC_RX_INP_MUX_RX_INT3_CFG0 WCD9335_REG(0x0d, 0x007)
  545. #define WCD9335_CDC_RX_INP_MUX_RX_INT3_CFG1 WCD9335_REG(0x0d, 0x008)
  546. #define WCD9335_CDC_RX_INP_MUX_RX_INT4_CFG0 WCD9335_REG(0x0d, 0x009)
  547. #define WCD9335_CDC_RX_INP_MUX_RX_INT4_CFG1 WCD9335_REG(0x0d, 0x00a)
  548. #define WCD9335_CDC_RX_INP_MUX_RX_INT5_CFG0 WCD9335_REG(0x0d, 0x00b)
  549. #define WCD9335_CDC_RX_INP_MUX_RX_INT5_CFG1 WCD9335_REG(0x0d, 0x00c)
  550. #define WCD9335_CDC_RX_INP_MUX_RX_INT6_CFG0 WCD9335_REG(0x0d, 0x00d)
  551. #define WCD9335_CDC_RX_INP_MUX_RX_INT6_CFG1 WCD9335_REG(0x0d, 0x00e)
  552. #define WCD9335_CDC_RX_INP_MUX_RX_INT7_CFG0 WCD9335_REG(0x0d, 0x00f)
  553. #define WCD9335_CDC_RX_INP_MUX_RX_INT7_CFG1 WCD9335_REG(0x0d, 0x010)
  554. #define WCD9335_CDC_RX_INP_MUX_RX_INT8_CFG0 WCD9335_REG(0x0d, 0x011)
  555. #define WCD9335_CDC_RX_INP_MUX_RX_INT8_CFG1 WCD9335_REG(0x0d, 0x012)
  556. #define WCD9335_CDC_TX_INP_MUX_ADC_MUX0_CFG0 WCD9335_REG(0x0d, 0x01d)
  557. #define WCD9335_CDC_TX_INP_MUX_ADC_MUX0_CFG1 WCD9335_REG(0x0d, 0x01e)
  558. #define WCD9335_CDC_TX_INP_MUX_ADC_MUX1_CFG0 WCD9335_REG(0x0d, 0x01f)
  559. #define WCD9335_CDC_TX_INP_MUX_ADC_MUX1_CFG1 WCD9335_REG(0x0d, 0x020)
  560. #define WCD9335_CDC_TX_INP_MUX_ADC_MUX2_CFG0 WCD9335_REG(0x0d, 0x021)
  561. #define WCD9335_CDC_TX_INP_MUX_ADC_MUX2_CFG1 WCD9335_REG(0x0d, 0x022)
  562. #define WCD9335_CDC_TX_INP_MUX_ADC_MUX3_CFG0 WCD9335_REG(0x0d, 0x023)
  563. #define WCD9335_CDC_TX_INP_MUX_ADC_MUX3_CFG1 WCD9335_REG(0x0d, 0x024)
  564. #define WCD9335_CDC_TX_INP_MUX_ADC_MUX4_CFG0 WCD9335_REG(0x0d, 0x025)
  565. #define WCD9335_CDC_TX_INP_MUX_SEL_AMIC 0x1
  566. #define WCD9335_CDC_TX_INP_MUX_SEL_DMIC 0
  567. #define WCD9335_CDC_TX_INP_MUX_ADC_MUX5_CFG0 WCD9335_REG(0x0d, 0x026)
  568. #define WCD9335_CDC_TX_INP_MUX_ADC_MUX6_CFG0 WCD9335_REG(0x0d, 0x027)
  569. #define WCD9335_CDC_TX_INP_MUX_ADC_MUX7_CFG0 WCD9335_REG(0x0d, 0x028)
  570. #define WCD9335_CDC_TX_INP_MUX_ADC_MUX8_CFG0 WCD9335_REG(0x0d, 0x029)
  571. #define WCD9335_CDC_TX_INP_MUX_ADC_MUX10_CFG0 WCD9335_REG(0x0d, 0x02b)
  572. #define WCD9335_CDC_TX_INP_MUX_ADC_MUX11_CFG0 WCD9335_REG(0x0d, 0x02c)
  573. #define WCD9335_CDC_TX_INP_MUX_ADC_MUX12_CFG0 WCD9335_REG(0x0d, 0x02d)
  574. #define WCD9335_CDC_TX_INP_MUX_ADC_MUX13_CFG0 WCD9335_REG(0x0d, 0x02e)
  575. #define WCD9335_CDC_IF_ROUTER_TX_MUX_CFG0 WCD9335_REG(0x0d, 0x03a)
  576. #define WCD9335_CDC_IF_ROUTER_TX_MUX_CFG1 WCD9335_REG(0x0d, 0x03b)
  577. #define WCD9335_CDC_IF_ROUTER_TX_MUX_CFG2 WCD9335_REG(0x0d, 0x03c)
  578. #define WCD9335_CDC_IF_ROUTER_TX_MUX_CFG3 WCD9335_REG(0x0d, 0x03d)
  579. #define WCD9335_CDC_CLK_RST_CTRL_MCLK_CONTROL WCD9335_REG(0x0d, 0x041)
  580. #define WCD9335_CDC_CLK_RST_CTRL_MCLK_EN_MASK BIT(0)
  581. #define WCD9335_CDC_CLK_RST_CTRL_MCLK_ENABLE BIT(0)
  582. #define WCD9335_CDC_CLK_RST_CTRL_MCLK_DISABLE 0
  583. #define WCD9335_CDC_CLK_RST_CTRL_FS_CNT_CONTROL WCD9335_REG(0x0d, 0x042)
  584. #define WCD9335_CDC_CLK_RST_CTRL_FS_CNT_EN_MASK BIT(0)
  585. #define WCD9335_CDC_CLK_RST_CTRL_FS_CNT_ENABLE BIT(0)
  586. #define WCD9335_CDC_CLK_RST_CTRL_FS_CNT_DISABLE 0
  587. #define WCD9335_CDC_TOP_TOP_CFG1 WCD9335_REG(0x0d, 0x082)
  588. #define WCD9335_MAX_REGISTER 0xffff
  589. #define WCD9335_SEL_REGISTER 0x800
  590. /* SLIMBUS Slave Registers */
  591. #define WCD9335_SLIM_PGD_PORT_INT_EN0 WCD9335_REG(0, 0x30)
  592. #define WCD9335_SLIM_PGD_PORT_INT_STATUS_RX_0 WCD9335_REG(0, 0x34)
  593. #define WCD9335_SLIM_PGD_PORT_INT_STATUS_RX_1 WCD9335_REG(0, 0x35)
  594. #define WCD9335_SLIM_PGD_PORT_INT_STATUS_TX_0 WCD9335_REG(0, 0x36)
  595. #define WCD9335_SLIM_PGD_PORT_INT_STATUS_TX_1 WCD9335_REG(0, 0x37)
  596. #define WCD9335_SLIM_PGD_PORT_INT_CLR_RX_0 WCD9335_REG(0, 0x38)
  597. #define WCD9335_SLIM_PGD_PORT_INT_CLR_RX_1 WCD9335_REG(0, 0x39)
  598. #define WCD9335_SLIM_PGD_PORT_INT_CLR_TX_0 WCD9335_REG(0, 0x3A)
  599. #define WCD9335_SLIM_PGD_PORT_INT_CLR_TX_1 WCD9335_REG(0, 0x3B)
  600. #define WCD9335_SLIM_PGD_PORT_INT_RX_SOURCE0 WCD9335_REG(0, 0x60)
  601. #define WCD9335_SLIM_PGD_PORT_INT_TX_SOURCE0 WCD9335_REG(0, 0x70)
  602. #define WCD9335_SLIM_PGD_RX_PORT_CFG(p) WCD9335_REG(0, (0x30 + p))
  603. #define WCD9335_SLIM_PGD_PORT_CFG(p) WCD9335_REG(0, (0x40 + p))
  604. #define WCD9335_SLIM_PGD_TX_PORT_CFG(p) WCD9335_REG(0, (0x50 + p))
  605. #define WCD9335_SLIM_PGD_PORT_INT_SRC(p) WCD9335_REG(0, (0x60 + p))
  606. #define WCD9335_SLIM_PGD_PORT_INT_STATUS(p) WCD9335_REG(0, (0x80 + p))
  607. #define WCD9335_SLIM_PGD_TX_PORT_MULTI_CHNL_0(p) WCD9335_REG(0, (0x100 + 4 * p))
  608. /* ports range from 10-16 */
  609. #define WCD9335_SLIM_PGD_TX_PORT_MULTI_CHNL_1(p) WCD9335_REG(0, (0x101 + 4 * p))
  610. #define WCD9335_SLIM_PGD_RX_PORT_MULTI_CHNL_0(p) WCD9335_REG(0, (0x140 + 4 * p))
  611. #define WCD9335_IRQ_SLIMBUS 0
  612. #define WCD9335_IRQ_MBHC_SW_DET 8
  613. #define WCD9335_IRQ_MBHC_ELECT_INS_REM_DET 9
  614. #define WCD9335_IRQ_MBHC_BUTTON_PRESS_DET 10
  615. #define WCD9335_IRQ_MBHC_BUTTON_RELEASE_DET 11
  616. #define WCD9335_IRQ_MBHC_ELECT_INS_REM_LEG_DET 12
  617. #define SLIM_MANF_ID_QCOM 0x217
  618. #define SLIM_PROD_CODE_WCD9335 0x1a0
  619. #define WCD9335_VERSION_2_0 2
  620. #define WCD9335_MAX_SUPPLY 5
  621. #endif /* __WCD9335_H__ */