wsa884x-reg-masks.h 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. /*
  3. * Copyright (c) 2021, The Linux Foundation. All rights reserved.
  4. */
  5. #ifndef WSA884X_REG_MASKS_H
  6. #define WSA884X_REG_MASKS_H
  7. #include <linux/regmap.h>
  8. #include <linux/device.h>
  9. #include "wsa884x-registers.h"
  10. /*
  11. * Use in conjunction with wsa884x-reg-shifts.c for field values.
  12. * field_value = (register_value & field_mask) >> field_shift
  13. */
  14. #define FIELD_MASK(register_name, field_name) \
  15. WSA884X_##register_name##_##field_name##_MASK
  16. /* WSA884X_BOP2_PROG Fields: */
  17. #define WSA884X_BOP2_PROG_BOP2_VTH_MASK 0xf0
  18. #define WSA884X_BOP2_PROG_BOP2_HYST_MASK 0x0f
  19. /* WSA884X_VSENSE1 Fields: */
  20. #define WSA884X_VSENSE1_GAIN_VSENSE_FE_MASK 0xe0
  21. #define WSA884X_VSENSE1_VSENSE_AMP_IQ_CTL_1_MASK 0x10
  22. #define WSA884X_VSENSE1_IDLE_MODE_CTL_MASK 0x0c
  23. #define WSA884X_VSENSE1_VOCM_AMP_CTL_MASK 0x03
  24. /* WSA884X_ISENSE2 Fields: */
  25. #define WSA884X_ISENSE2_ISENSE_GAIN_CTL_MASK 0xe0
  26. #define WSA884X_ISENSE2_SUMAMP_IQ_CTL_MASK 0x10
  27. #define WSA884X_ISENSE2_SPARE_BITS_3_0_MASK 0x0f
  28. /* WSA884X_ADC_2 Fields: */
  29. #define WSA884X_ADC_2_ATEST_SEL_CAL_REF_MASK 0x80
  30. #define WSA884X_ADC_2_ISNS_LOAD_STORED_MASK 0x40
  31. #define WSA884X_ADC_2_EN_DET_MASK 0x20
  32. #define WSA884X_ADC_2_EN_ATEST_REF_MASK 0x10
  33. #define WSA884X_ADC_2_EN_ATEST_INT_MASK 0x0e
  34. #define WSA884X_ADC_2_D_ADC_REG_EN_MASK 0x01
  35. /* WSA884X_ADC_7 Fields: */
  36. #define WSA884X_ADC_7_CLAMPON_MASK 0x80
  37. #define WSA884X_ADC_7_CAL_LOOP_TRIM_MASK 0x70
  38. #define WSA884X_ADC_7_REG_TRIM_EN_MASK 0x08
  39. #define WSA884X_ADC_7_EN_AZ_REG_MASK 0x04
  40. #define WSA884X_ADC_7_EN_SAR_REG_MASK 0x02
  41. #define WSA884X_ADC_7_EN_SW_CURRENT_REG_MASK 0x01
  42. /* WSA884X_TOP_CTRL1 Fields: */
  43. #define WSA884X_TOP_CTRL1_IDLE_PWRSAV_OVERRIDE_MASK 0x80
  44. #define WSA884X_TOP_CTRL1_DAC_LDO_PROG_MASK 0x60
  45. #define WSA884X_TOP_CTRL1_DATA_INV_MASK 0x10
  46. #define WSA884X_TOP_CTRL1_DATA_RESET_MASK 0x08
  47. #define WSA884X_TOP_CTRL1_CLK_DIV2_MASK 0x04
  48. #define WSA884X_TOP_CTRL1_CLK_INV_MASK 0x02
  49. #define WSA884X_TOP_CTRL1_OCP_LOWVBAT_ITH_SEL_EN_MASK 0x01
  50. /* WSA884X_BOP_DEGLITCH_CTL Fields: */
  51. #define WSA884X_BOP_DEGLITCH_CTL_BOP_DEGLITCH_SETTING_MASK 0x1e
  52. #define WSA884X_BOP_DEGLITCH_CTL_BOP_DEGLITCH_EN_MASK 0x01
  53. /* WSA884X_CDC_SPK_DSM_A2_0 Fields: */
  54. #define WSA884X_CDC_SPK_DSM_A2_0_COEF_A2_MASK 0xff
  55. /* WSA884X_CDC_SPK_DSM_A2_1 Fields: */
  56. #define WSA884X_CDC_SPK_DSM_A2_1_COEF_A2_MASK 0x0f
  57. /* WSA884X_CDC_SPK_DSM_A3_0 Fields: */
  58. #define WSA884X_CDC_SPK_DSM_A3_0_COEF_A3_MASK 0xff
  59. /* WSA884X_CDC_SPK_DSM_A3_1 Fields: */
  60. #define WSA884X_CDC_SPK_DSM_A3_1_COEF_A3_MASK 0x07
  61. /* WSA884X_CDC_SPK_DSM_A4_0 Fields: */
  62. #define WSA884X_CDC_SPK_DSM_A4_0_COEF_A4_MASK 0xff
  63. /* WSA884X_CDC_SPK_DSM_A5_0 Fields: */
  64. #define WSA884X_CDC_SPK_DSM_A5_0_COEF_A5_MASK 0xff
  65. /* WSA884X_CDC_SPK_DSM_A6_0 Fields: */
  66. #define WSA884X_CDC_SPK_DSM_A6_0_COEF_A6_MASK 0xff
  67. /* WSA884X_CDC_SPK_DSM_A7_0 Fields: */
  68. #define WSA884X_CDC_SPK_DSM_A7_0_COEF_A7_MASK 0xff
  69. /* WSA884X_CDC_SPK_DSM_C_0 Fields: */
  70. #define WSA884X_CDC_SPK_DSM_C_0_COEF_C3_MASK 0xf0
  71. #define WSA884X_CDC_SPK_DSM_C_0_COEF_C2_MASK 0x0f
  72. /* WSA884X_CDC_SPK_DSM_C_2 Fields: */
  73. #define WSA884X_CDC_SPK_DSM_C_2_COEF_C7_MASK 0xf0
  74. #define WSA884X_CDC_SPK_DSM_C_2_COEF_C6_MASK 0x0f
  75. /* WSA884X_CDC_SPK_DSM_C_3 Fields: */
  76. #define WSA884X_CDC_SPK_DSM_C_3_COEF_C7_MASK 0x3f
  77. /* WSA884X_CDC_SPK_DSM_R1 Fields: */
  78. #define WSA884X_CDC_SPK_DSM_R1_SAT_LIMIT_R1_MASK 0xff
  79. /* WSA884X_CDC_SPK_DSM_R2 Fields: */
  80. #define WSA884X_CDC_SPK_DSM_R2_SAT_LIMIT_R2_MASK 0xff
  81. /* WSA884X_CDC_SPK_DSM_R3 Fields: */
  82. #define WSA884X_CDC_SPK_DSM_R3_SAT_LIMIT_R3_MASK 0xff
  83. /* WSA884X_CDC_SPK_DSM_R4 Fields: */
  84. #define WSA884X_CDC_SPK_DSM_R4_SAT_LIMIT_R4_MASK 0xff
  85. /* WSA884X_CDC_SPK_DSM_R5 Fields: */
  86. #define WSA884X_CDC_SPK_DSM_R5_SAT_LIMIT_R5_MASK 0xff
  87. /* WSA884X_CDC_SPK_DSM_R6 Fields: */
  88. #define WSA884X_CDC_SPK_DSM_R6_SAT_LIMIT_R6_MASK 0xff
  89. /* WSA884X_CDC_SPK_DSM_R7 Fields: */
  90. #define WSA884X_CDC_SPK_DSM_R7_SAT_LIMIT_R7_MASK 0xff
  91. /* WSA884X_DRE_CTL_0 Fields: */
  92. #define WSA884X_DRE_CTL_0_PROG_DELAY_MASK 0xf0
  93. #define WSA884X_DRE_CTL_0_OFFSET_MASK 0x07
  94. /* WSA884X_GAIN_RAMPING_MIN Fields: */
  95. #define WSA884X_GAIN_RAMPING_MIN_MIN_GAIN_MASK 0x1f
  96. /* WSA884X_CLSH_SOFT_MAX Fields: */
  97. #define WSA884X_CLSH_SOFT_MAX_SOFT_MAX_MASK 0xff
  98. /* WSA884X_CLSH_VTH1 Fields: */
  99. #define WSA884X_CLSH_VTH1_CLSH_VTH1_MASK 0xff
  100. /* WSA884X_CLSH_VTH10 Fields: */
  101. #define WSA884X_CLSH_VTH10_CLSH_VTH10_MASK 0xff
  102. /* WSA884X_CLSH_VTH11 Fields: */
  103. #define WSA884X_CLSH_VTH11_CLSH_VTH11_MASK 0xff
  104. /* WSA884X_CLSH_VTH12 Fields: */
  105. #define WSA884X_CLSH_VTH12_CLSH_VTH12_MASK 0xff
  106. /* WSA884X_CLSH_VTH13 Fields: */
  107. #define WSA884X_CLSH_VTH13_CLSH_VTH13_MASK 0xff
  108. /* WSA884X_CLSH_VTH14 Fields: */
  109. #define WSA884X_CLSH_VTH14_CLSH_VTH14_MASK 0xff
  110. /* WSA884X_CLSH_VTH15 Fields: */
  111. #define WSA884X_CLSH_VTH15_CLSH_VTH15_MASK 0xff
  112. /* WSA884X_ANA_WO_CTL_0 Fields: */
  113. #define WSA884X_ANA_WO_CTL_0_VPHX_SYS_EN_MASK 0xc0
  114. #define WSA884X_ANA_WO_CTL_0_PA_AUX_GAIN_MASK 0x3c
  115. #define WSA884X_ANA_WO_CTL_0_PA_MIN_GAIN_BYP_MASK 0x02
  116. #define WSA884X_ANA_WO_CTL_0_DAC_CM_CLAMP_EN_MASK 0x01
  117. /* WSA884X_ANA_WO_CTL_1 Fields: */
  118. #define WSA884X_ANA_WO_CTL_1_BOOST_SHARE_EN_MASK 0x08
  119. #define WSA884X_ANA_WO_CTL_1_EXT_VDDSPK_EN_MASK 0x07
  120. /* WSA884X_DRE_CTL_1 Fields: */
  121. #define WSA884X_DRE_CTL_1_CSR_GAIN_MASK 0x3e
  122. #define WSA884X_DRE_CTL_1_CSR_GAIN_EN_MASK 0x01
  123. /* WSA884X_VBAT_THRM_FLT_CTL Fields: */
  124. #define WSA884X_VBAT_THRM_FLT_CTL_THRM_COEF_SEL_MASK 0xe0
  125. #define WSA884X_VBAT_THRM_FLT_CTL_THRM_FLT_EN_MASK 0x10
  126. #define WSA884X_VBAT_THRM_FLT_CTL_VBAT_COEF_SEL_MASK 0x0e
  127. #define WSA884X_VBAT_THRM_FLT_CTL_VBAT_FLT_EN_MASK 0x01
  128. /* WSA884X_PDM_WD_CTL Fields: */
  129. #define WSA884X_PDM_WD_CTL_HOLD_OFF_MASK 0x04
  130. #define WSA884X_PDM_WD_CTL_TIME_OUT_SEL_MASK 0x02
  131. #define WSA884X_PDM_WD_CTL_PDM_WD_EN_MASK 0x01
  132. /* WSA884X_PA_FSM_BYP_CTL Fields: */
  133. #define WSA884X_PA_FSM_BYP_CTL_PA_FSM_BYP_MASK 0x01
  134. /* WSA884X_TADC_VALUE_CTL Fields: */
  135. #define WSA884X_TADC_VALUE_CTL_VBAT_VALUE_RD_EN_MASK 0x02
  136. #define WSA884X_TADC_VALUE_CTL_TEMP_VALUE_RD_EN_MASK 0x01
  137. /* WSA884X_CDC_PATH_MODE Fields: */
  138. #define WSA884X_CDC_PATH_MODE_RXD_MODE_MASK 0x02
  139. #define WSA884X_CDC_PATH_MODE_TXD_MODE_MASK 0x01
  140. /* WSA884X_PA_FSM_BYP0 Fields: */
  141. #define WSA884X_PA_FSM_BYP0_TSADC_EN_MASK 0x80
  142. #define WSA884X_PA_FSM_BYP0_SPKR_PROT_EN_MASK 0x40
  143. #define WSA884X_PA_FSM_BYP0_D_UNMUTE_MASK 0x20
  144. #define WSA884X_PA_FSM_BYP0_PA_EN_MASK 0x10
  145. #define WSA884X_PA_FSM_BYP0_BOOST_EN_MASK 0x08
  146. #define WSA884X_PA_FSM_BYP0_BG_EN_MASK 0x04
  147. #define WSA884X_PA_FSM_BYP0_CLK_WD_EN_MASK 0x02
  148. #define WSA884X_PA_FSM_BYP0_DC_CAL_EN_MASK 0x01
  149. /* WSA884X_PA_FSM_BYP1 Fields: */
  150. #define WSA884X_PA_FSM_BYP1_NG_MODE_MASK 0xc0
  151. #define WSA884X_PA_FSM_BYP1_PWRSAV_CTL_MASK 0x20
  152. #define WSA884X_PA_FSM_BYP1_RAMP_DOWN_MASK 0x10
  153. #define WSA884X_PA_FSM_BYP1_RAMP_UP_MASK 0x08
  154. #define WSA884X_PA_FSM_BYP1_BLEEDER_EN_MASK 0x04
  155. #define WSA884X_PA_FSM_BYP1_PA_MAIN_EN_MASK 0x02
  156. #define WSA884X_PA_FSM_BYP1_PA_AUX_EN_MASK 0x01
  157. /* WSA884X_PA_FSM_EN Fields: */
  158. #define WSA884X_PA_FSM_EN_GLOBAL_PA_EN_MASK 0x01
  159. /* WSA884X_OTP_REG_0 Fields: */
  160. #define WSA884X_OTP_REG_0_WSA884X_ID_MASK 0x0f
  161. /* WSA884X_CHIP_ID0 Fields: */
  162. #define WSA884X_CHIP_ID0_BYTE_0_MASK 0xff
  163. /* WSA884X_CHIP_ID1 Fields: */
  164. #define WSA884X_CHIP_ID1_BYTE_1_MASK 0xff
  165. /* WSA884X_CHIP_ID2 Fields: */
  166. #define WSA884X_CHIP_ID2_BYTE_2_MASK 0xff
  167. /* WSA884X_CHIP_ID3 Fields: */
  168. #define WSA884X_CHIP_ID3_BYTE_3_MASK 0xff
  169. /* WSA884X_OCP_CTL Fields: */
  170. #define WSA884X_OCP_CTL_OCP_EN_MASK 0x80
  171. #define WSA884X_OCP_CTL_OCP_CURR_LIMIT_MASK 0x70
  172. #define WSA884X_OCP_CTL_GLITCH_FILTER_MASK 0x0c
  173. #define WSA884X_OCP_CTL_OCP_P_HS_DLY_CTL_MASK 0x03
  174. /* WSA884X_ILIM_CTRL1 Fields: */
  175. #define WSA884X_ILIM_CTRL1_EN_AUTO_MAXD_SEL_MASK 0x80
  176. #define WSA884X_ILIM_CTRL1_EN_ILIM_SW_CLH_MASK 0x40
  177. #define WSA884X_ILIM_CTRL1_ILIM_OFFSET_CLH_MASK 0x38
  178. #define WSA884X_ILIM_CTRL1_ILIM_OFFSET_PB_MASK 0x07
  179. /* WSA884X_CLSH_CTL_0 Fields: */
  180. #define WSA884X_CLSH_CTL_0_CSR_GAIN_EN_MASK 0x80
  181. #define WSA884X_CLSH_CTL_0_DLY_CODE_MASK 0x70
  182. #define WSA884X_CLSH_CTL_0_DLY_RST_MASK 0x08
  183. #define WSA884X_CLSH_CTL_0_DLY_EN_MASK 0x04
  184. #define WSA884X_CLSH_CTL_0_INPUT_EN_MASK 0x02
  185. #define WSA884X_CLSH_CTL_0_CLSH_EN_MASK 0x01
  186. /* WSA884X_CLSH_CTL_1 Fields: */
  187. #define WSA884X_CLSH_CTL_1_SLR_MAX_MASK 0xf0
  188. #define WSA884X_CLSH_CTL_1_VERF_OVRD_EN_MASK 0x08
  189. #define WSA884X_CLSH_CTL_1_DECAY_RATE_MASK 0x07
  190. /* WSA884X_CLSH_V_HD_PA Fields: */
  191. #define WSA884X_CLSH_V_HD_PA_V_HD_PA_MASK 0x1f
  192. /* WSA884X_UVLO_PROG Fields: */
  193. #define WSA884X_UVLO_PROG_UVLO1_HYST_MASK 0xf0
  194. #define WSA884X_UVLO_PROG_UVLO1_VTH_MASK 0x0f
  195. /* WSA884X_DAC_VCM_CTRL_REG2 Fields: */
  196. #define WSA884X_DAC_VCM_CTRL_REG2_DAC_VCM_SHIFT_MASK 0xff
  197. /* WSA884X_DAC_VCM_CTRL_REG3 Fields: */
  198. #define WSA884X_DAC_VCM_CTRL_REG3_DAC_VCM_SHIFT_MASK 0xff
  199. /* WSA884X_DAC_VCM_CTRL_REG4 Fields: */
  200. #define WSA884X_DAC_VCM_CTRL_REG4_DAC_VCM_SHIFT_MASK 0xff
  201. /* WSA884X_DAC_VCM_CTRL_REG5 Fields: */
  202. #define WSA884X_DAC_VCM_CTRL_REG5_DAC_VCM_SHIFT_MASK 0xff
  203. /* WSA884X_DAC_VCM_CTRL_REG6 Fields: */
  204. #define WSA884X_DAC_VCM_CTRL_REG6_DAC_VCM_SHIFT_MASK 0xff
  205. /* WSA884X_DAC_VCM_CTRL_REG7 Fields: */
  206. #define WSA884X_DAC_VCM_CTRL_REG7_SPARE_BITS_7_2_MASK 0xfc
  207. #define WSA884X_DAC_VCM_CTRL_REG7_DAC_VCM_SHIFT_FINAL_OVERRIDE_MASK 0x02
  208. #define WSA884X_DAC_VCM_CTRL_REG7_DAC_VCM_SHIFT_ZONE_OVERRIDE_MASK 0x01
  209. /* WSA884X_STB_CTRL1 Fields: */
  210. #define WSA884X_STB_CTRL1_SLOPE_COMP_CURRENT_MASK 0xf8
  211. #define WSA884X_STB_CTRL1_VOUT_FS_MASK 0x07
  212. /* WSA884X_OTP_REG_38 Fields: */
  213. #define WSA884X_OTP_REG_38_RESERVER_MASK 0xf0
  214. #define WSA884X_OTP_REG_38_BST_CFG_SEL_MASK 0x08
  215. #define WSA884X_OTP_REG_38_BOOST_ILIM_TUNE_MASK 0x07
  216. /* WSA884X_OTP_REG_40 Fields: */
  217. #define WSA884X_OTP_REG_40_SPARE_TYPE2_MASK 0xc0
  218. #define WSA884X_OTP_REG_40_ISENSE_RESCAL_MASK 0x3c
  219. #define WSA884X_OTP_REG_40_ATE_BOOST_RDSON_TEST_MASK 0x02
  220. #define WSA884X_OTP_REG_40_ATE_CLASSD_RDSON_TEST_MASK 0x01
  221. /* WSA884X_CURRENT_LIMIT Fields: */
  222. #define WSA884X_CURRENT_LIMIT_CURRENT_LIMIT_OVRD_EN_MASK 0x80
  223. #define WSA884X_CURRENT_LIMIT_CURRENT_LIMIT_MASK 0x7c
  224. #define WSA884X_CURRENT_LIMIT_CLK_PHASE_MASK 0x03
  225. /* WSA884X_PWM_CLK_CTL Fields: */
  226. #define WSA884X_PWM_CLK_CTL_VCMO_INT1_IDLE_MODE_OVRT_MASK 0x80
  227. #define WSA884X_PWM_CLK_CTL_REG_MCLK_DIV_RATIO_MASK 0x40
  228. #define WSA884X_PWM_CLK_CTL_PWM_DEGLITCH_CLK_DELAY_CTRL_MASK 0x30
  229. #define WSA884X_PWM_CLK_CTL_PWM_CLK_FREQ_SEL_MASK 0x08
  230. #define WSA884X_PWM_CLK_CTL_PWM_CLK_DIV_RATIO_MASK 0x06
  231. #define WSA884X_PWM_CLK_CTL_PWM_CLK_DIV_BYPASS_MASK 0x01
  232. /* WSA884X_CKWD_CTL_1 Fields: */
  233. #define WSA884X_CKWD_CTL_1_SPARE_BITS_7_6_MASK 0xc0
  234. #define WSA884X_CKWD_CTL_1_VPP_SW_CTL_MASK 0x20
  235. #define WSA884X_CKWD_CTL_1_CKWD_VCOMP_VREF_SEL_MASK 0x1f
  236. /* WSA884X_VBAT_CAL_CTL Fields: */
  237. #define WSA884X_VBAT_CAL_CTL_RESERVE_MASK 0x0e
  238. #define WSA884X_VBAT_CAL_CTL_VBAT_CAL_EN_MASK 0x01
  239. /* WSA884X_REF_CTRL Fields: */
  240. #define WSA884X_REF_CTRL_DC_STARTUP_EN_MASK 0x80
  241. #define WSA884X_REF_CTRL_DC_STARTUP_HOLD_MASK 0x40
  242. #define WSA884X_REF_CTRL_TRAN_STARTUP_EN_CORE_MASK 0x20
  243. #define WSA884X_REF_CTRL_TRAN_STARTUP_EN_PTAT_MASK 0x10
  244. #define WSA884X_REF_CTRL_BG_EN_MASK 0x08
  245. #define WSA884X_REF_CTRL_BG_READY_FORCE_MASK 0x04
  246. #define WSA884X_REF_CTRL_BG_RDY_SEL_MASK 0x03
  247. /* WSA884X_ZX_CTRL1 Fields: */
  248. #define WSA884X_ZX_CTRL1_ZX_DET_EN_MASK 0x80
  249. #define WSA884X_ZX_CTRL1_ZX_DET_SW_EN_MASK 0x40
  250. #define WSA884X_ZX_CTRL1_ZX_DET_STAGE_DEFAULT_MASK 0x20
  251. #define WSA884X_ZX_CTRL1_ZX_DET_SW_SEL_MASK 0x18
  252. #define WSA884X_ZX_CTRL1_ZX_BYP_MASK_IGNORE_MASK 0x04
  253. #define WSA884X_ZX_CTRL1_ZX_BYP_MASK_DEL_MASK 0x02
  254. #define WSA884X_ZX_CTRL1_BOOTCAP_REFRESH_DIS_MASK 0x01
  255. #endif /* WSA884X_REG_MASKS_H */