da9121-regulator.h 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321
  1. /* SPDX-License-Identifier: GPL-2.0+ */
  2. /*
  3. * DA9121 Single-channel dual-phase 10A buck converter
  4. * DA9130 Single-channel dual-phase 10A buck converter (Automotive)
  5. * DA9217 Single-channel dual-phase 6A buck converter
  6. * DA9122 Dual-channel single-phase 5A buck converter
  7. * DA9131 Dual-channel single-phase 5A buck converter (Automotive)
  8. * DA9220 Dual-channel single-phase 3A buck converter
  9. * DA9132 Dual-channel single-phase 3A buck converter (Automotive)
  10. *
  11. * Copyright (C) 2020 Dialog Semiconductor
  12. *
  13. * Authors: Steve Twiss, Dialog Semiconductor
  14. * Adam Ward, Dialog Semiconductor
  15. */
  16. #ifndef __DA9121_REGISTERS_H__
  17. #define __DA9121_REGISTERS_H__
  18. /* Values for: DA9121_REG_BUCK_BUCKx_4 registers, fields CHx_y_MODE
  19. * DA9121_REG_BUCK_BUCKx_7 registers, fields CHx_RIPPLE_CANCEL
  20. */
  21. #include <dt-bindings/regulator/dlg,da9121-regulator.h>
  22. enum da9121_variant {
  23. DA9121_TYPE_DA9121_DA9130,
  24. DA9121_TYPE_DA9220_DA9132,
  25. DA9121_TYPE_DA9122_DA9131,
  26. DA9121_TYPE_DA9217,
  27. DA9121_TYPE_DA9141,
  28. DA9121_TYPE_DA9142
  29. };
  30. enum da9121_subvariant {
  31. DA9121_SUBTYPE_DA9121,
  32. DA9121_SUBTYPE_DA9130,
  33. DA9121_SUBTYPE_DA9220,
  34. DA9121_SUBTYPE_DA9132,
  35. DA9121_SUBTYPE_DA9122,
  36. DA9121_SUBTYPE_DA9131,
  37. DA9121_SUBTYPE_DA9217,
  38. DA9121_SUBTYPE_DA9141,
  39. DA9121_SUBTYPE_DA9142
  40. };
  41. /* Minimum, maximum and default polling millisecond periods are provided
  42. * here as an example. It is expected that any final implementation will
  43. * include a modification of these settings to match the required
  44. * application.
  45. */
  46. #define DA9121_DEFAULT_POLLING_PERIOD_MS 3000
  47. #define DA9121_MAX_POLLING_PERIOD_MS 10000
  48. #define DA9121_MIN_POLLING_PERIOD_MS 1000
  49. /* Registers */
  50. #define DA9121_REG_SYS_STATUS_0 0x01
  51. #define DA9121_REG_SYS_STATUS_1 0x02
  52. #define DA9121_REG_SYS_STATUS_2 0x03
  53. #define DA9121_REG_SYS_EVENT_0 0x04
  54. #define DA9121_REG_SYS_EVENT_1 0x05
  55. #define DA9121_REG_SYS_EVENT_2 0x06
  56. #define DA9121_REG_SYS_MASK_0 0x07
  57. #define DA9121_REG_SYS_MASK_1 0x08
  58. #define DA9121_REG_SYS_MASK_2 0x09
  59. #define DA9121_REG_SYS_MASK_3 0x0A
  60. #define DA9121_REG_SYS_CONFIG_0 0x0B
  61. #define DA9121_REG_SYS_CONFIG_1 0x0C
  62. #define DA9121_REG_SYS_CONFIG_2 0x0D
  63. #define DA9121_REG_SYS_CONFIG_3 0x0E
  64. #define DA9121_REG_SYS_GPIO0_0 0x10
  65. #define DA9121_REG_SYS_GPIO0_1 0x11
  66. #define DA9121_REG_SYS_GPIO1_0 0x12
  67. #define DA9121_REG_SYS_GPIO1_1 0x13
  68. #define DA9121_REG_SYS_GPIO2_0 0x14
  69. #define DA9121_REG_SYS_GPIO2_1 0x15
  70. #define DA914x_REG_SYS_GPIO3_0 0x16
  71. #define DA914x_REG_SYS_GPIO3_1 0x17
  72. #define DA914x_REG_SYS_GPIO4_0 0x18
  73. #define DA914x_REG_SYS_GPIO4_1 0x19
  74. #define DA914x_REG_SYS_ADMUX1_0 0x1A
  75. #define DA914x_REG_SYS_ADMUX1_1 0x1B
  76. #define DA914x_REG_SYS_ADMUX2_0 0x1C
  77. #define DA914x_REG_SYS_ADMUX2_1 0x1D
  78. #define DA9121_REG_BUCK_BUCK1_0 0x20
  79. #define DA9121_REG_BUCK_BUCK1_1 0x21
  80. #define DA9121_REG_BUCK_BUCK1_2 0x22
  81. #define DA9121_REG_BUCK_BUCK1_3 0x23
  82. #define DA9121_REG_BUCK_BUCK1_4 0x24
  83. #define DA9121_REG_BUCK_BUCK1_5 0x25
  84. #define DA9121_REG_BUCK_BUCK1_6 0x26
  85. #define DA9121_REG_BUCK_BUCK1_7 0x27
  86. #define DA9xxx_REG_BUCK_BUCK2_0 0x28
  87. #define DA9xxx_REG_BUCK_BUCK2_1 0x29
  88. #define DA9xxx_REG_BUCK_BUCK2_2 0x2A
  89. #define DA9xxx_REG_BUCK_BUCK2_3 0x2B
  90. #define DA9xxx_REG_BUCK_BUCK2_4 0x2C
  91. #define DA9xxx_REG_BUCK_BUCK2_5 0x2D
  92. #define DA9xxx_REG_BUCK_BUCK2_6 0x2E
  93. #define DA9xxx_REG_BUCK_BUCK2_7 0x2F
  94. #define DA9121_REG_OTP_DEVICE_ID 0x48
  95. #define DA9121_REG_OTP_VARIANT_ID 0x49
  96. #define DA9121_REG_OTP_CUSTOMER_ID 0x4A
  97. #define DA9121_REG_OTP_CONFIG_ID 0x4B
  98. /* Register bits */
  99. /* DA9121_REG_SYS_STATUS_0 */
  100. #define DA9xxx_MASK_SYS_STATUS_0_SG BIT(2)
  101. #define DA9121_MASK_SYS_STATUS_0_TEMP_CRIT BIT(1)
  102. #define DA9121_MASK_SYS_STATUS_0_TEMP_WARN BIT(0)
  103. /* DA9121_REG_SYS_STATUS_1 */
  104. #define DA9xxx_MASK_SYS_STATUS_1_PG2 BIT(7)
  105. #define DA9xxx_MASK_SYS_STATUS_1_OV2 BIT(6)
  106. #define DA9xxx_MASK_SYS_STATUS_1_UV2 BIT(5)
  107. #define DA9xxx_MASK_SYS_STATUS_1_OC2 BIT(4)
  108. #define DA9121_MASK_SYS_STATUS_1_PG1 BIT(3)
  109. #define DA9121_MASK_SYS_STATUS_1_OV1 BIT(2)
  110. #define DA9121_MASK_SYS_STATUS_1_UV1 BIT(1)
  111. #define DA9121_MASK_SYS_STATUS_1_OC1 BIT(0)
  112. /* DA9121_REG_SYS_STATUS_2 */
  113. #define DA9121_MASK_SYS_STATUS_2_GPIO2 BIT(2)
  114. #define DA9121_MASK_SYS_STATUS_2_GPIO1 BIT(1)
  115. #define DA9121_MASK_SYS_STATUS_2_GPIO0 BIT(0)
  116. /* DA9121_REG_SYS_EVENT_0 */
  117. #define DA9xxx_MASK_SYS_EVENT_0_E_SG BIT(2)
  118. #define DA9121_MASK_SYS_EVENT_0_E_TEMP_CRIT BIT(1)
  119. #define DA9121_MASK_SYS_EVENT_0_E_TEMP_WARN BIT(0)
  120. /* DA9121_REG_SYS_EVENT_1 */
  121. #define DA9xxx_MASK_SYS_EVENT_1_E_PG2 BIT(7)
  122. #define DA9xxx_MASK_SYS_EVENT_1_E_OV2 BIT(6)
  123. #define DA9xxx_MASK_SYS_EVENT_1_E_UV2 BIT(5)
  124. #define DA9xxx_MASK_SYS_EVENT_1_E_OC2 BIT(4)
  125. #define DA9121_MASK_SYS_EVENT_1_E_PG1 BIT(3)
  126. #define DA9121_MASK_SYS_EVENT_1_E_OV1 BIT(2)
  127. #define DA9121_MASK_SYS_EVENT_1_E_UV1 BIT(1)
  128. #define DA9121_MASK_SYS_EVENT_1_E_OC1 BIT(0)
  129. /* DA9121_REG_SYS_EVENT_2 */
  130. #define DA9121_MASK_SYS_EVENT_2_E_GPIO2 BIT(2)
  131. #define DA9121_MASK_SYS_EVENT_2_E_GPIO1 BIT(1)
  132. #define DA9121_MASK_SYS_EVENT_2_E_GPIO0 BIT(0)
  133. /* DA9121_REG_SYS_MASK_0 */
  134. #define DA9xxx_MASK_SYS_MASK_0_M_SG BIT(2)
  135. #define DA9121_MASK_SYS_MASK_0_M_TEMP_CRIT BIT(1)
  136. #define DA9121_MASK_SYS_MASK_0_M_TEMP_WARN BIT(0)
  137. /* DA9121_REG_SYS_MASK_1 */
  138. #define DA9xxx_MASK_SYS_MASK_1_M_PG2 BIT(7)
  139. #define DA9xxx_MASK_SYS_MASK_1_M_OV2 BIT(6)
  140. #define DA9xxx_MASK_SYS_MASK_1_M_UV2 BIT(5)
  141. #define DA9xxx_MASK_SYS_MASK_1_M_OC2 BIT(4)
  142. #define DA9121_MASK_SYS_MASK_1_M_PG1 BIT(3)
  143. #define DA9121_MASK_SYS_MASK_1_M_OV1 BIT(2)
  144. #define DA9121_MASK_SYS_MASK_1_M_UV1 BIT(1)
  145. #define DA9121_MASK_SYS_MASK_1_M_OC1 BIT(0)
  146. /* DA9121_REG_SYS_MASK_2 */
  147. #define DA9121_MASK_SYS_MASK_2_M_GPIO2 BIT(2)
  148. #define DA9121_MASK_SYS_MASK_2_M_GPIO1 BIT(1)
  149. #define DA9121_MASK_SYS_MASK_2_M_GPIO0 BIT(0)
  150. /* DA9122_REG_SYS_MASK_3 */
  151. #define DA9121_MASK_SYS_MASK_3_M_VR_HOT BIT(3)
  152. #define DA9xxx_MASK_SYS_MASK_3_M_SG_STAT BIT(2)
  153. #define DA9xxx_MASK_SYS_MASK_3_M_PG2_STAT BIT(1)
  154. #define DA9121_MASK_SYS_MASK_3_M_PG1_STAT BIT(0)
  155. /* DA9121_REG_SYS_CONFIG_0 */
  156. #define DA9121_MASK_SYS_CONFIG_0_CH1_DIS_DLY 0xF0
  157. #define DA9121_MASK_SYS_CONFIG_0_CH1_EN_DLY 0x0F
  158. /* DA9xxx_REG_SYS_CONFIG_1 */
  159. #define DA9xxx_MASK_SYS_CONFIG_1_CH2_DIS_DLY 0xF0
  160. #define DA9xxx_MASK_SYS_CONFIG_1_CH2_EN_DLY 0x0F
  161. /* DA9121_REG_SYS_CONFIG_2 */
  162. #define DA9121_MASK_SYS_CONFIG_2_OC_LATCHOFF 0x60
  163. #define DA9121_MASK_SYS_CONFIG_2_OC_DVC_MASK BIT(4)
  164. #define DA9121_MASK_SYS_CONFIG_2_PG_DVC_MASK 0x0C
  165. /* DA9121_REG_SYS_CONFIG_3 */
  166. #define DA9121_MASK_SYS_CONFIG_3_OSC_TUNE 0X70
  167. #define DA9121_MASK_SYS_CONFIG_3_I2C_TIMEOUT BIT(1)
  168. /* DA9121_REG_SYS_GPIO0_0 */
  169. #define DA9121_MASK_SYS_GPIO0_0_GPIO0_MODE 0X1E
  170. #define DA9121_MASK_SYS_GPIO0_0_GPIO0_OBUF BIT(0)
  171. /* DA9121_REG_SYS_GPIO0_1 */
  172. #define DA9121_MASK_SYS_GPIO0_1_GPIO0_DEB_FALL BIT(7)
  173. #define DA9121_MASK_SYS_GPIO0_1_GPIO0_DEB_RISE BIT(6)
  174. #define DA9121_MASK_SYS_GPIO0_1_GPIO0_DEB 0x30
  175. #define DA9121_MASK_SYS_GPIO0_1_GPIO0_PUPD BIT(3)
  176. #define DA9121_MASK_SYS_GPIO0_1_GPIO0_POL BIT(2)
  177. #define DA9121_MASK_SYS_GPIO0_1_GPIO0_TRIG 0x03
  178. /* DA9121_REG_SYS_GPIO1_0 */
  179. #define DA9121_MASK_SYS_GPIO1_0_GPIO1_MODE 0x1E
  180. #define DA9121_MASK_SYS_GPIO1_0_GPIO1_OBUF BIT(0)
  181. /* DA9121_REG_SYS_GPIO1_1 */
  182. #define DA9121_MASK_SYS_GPIO1_1_GPIO1_DEB_FALL BIT(7)
  183. #define DA9121_MASK_SYS_GPIO1_1_GPIO1_DEB_RISE BIT(6)
  184. #define DA9121_MASK_SYS_GPIO1_1_GPIO1_DEB 0x30
  185. #define DA9121_MASK_SYS_GPIO1_1_GPIO1_PUPD BIT(3)
  186. #define DA9121_MASK_SYS_GPIO1_1_GPIO1_POL BIT(2)
  187. #define DA9121_MASK_SYS_GPIO1_1_GPIO1_TRIG 0x03
  188. /* DA9121_REG_SYS_GPIO2_0 */
  189. #define DA9121_MASK_SYS_GPIO2_0_GPIO2_MODE 0x1E
  190. #define DA9121_MASK_SYS_GPIO2_0_GPIO2_OBUF BIT(0)
  191. /* DA9121_REG_SYS_GPIO2_1 */
  192. #define DA9121_MASK_SYS_GPIO2_1_GPIO2_DEB_FALL BIT(7)
  193. #define DA9121_MASK_SYS_GPIO2_1_GPIO2_DEB_RISE BIT(6)
  194. #define DA9121_MASK_SYS_GPIO2_1_GPIO2_DEB 0x30
  195. #define DA9121_MASK_SYS_GPIO2_1_GPIO2_PUPD BIT(3)
  196. #define DA9121_MASK_SYS_GPIO2_1_GPIO2_POL BIT(2)
  197. #define DA9121_MASK_SYS_GPIO2_1_GPIO2_TRIG 0x03
  198. /* DA9121_REG_BUCK_BUCK1_0 / DA9xxx_REG_BUCK_BUCK2_0 */
  199. #define DA9121_MASK_BUCK_BUCKx_0_CHx_SR_DVC_DWN 0x70
  200. #define DA9121_MASK_BUCK_BUCKx_0_CHx_SR_DVC_UP 0x0E
  201. #define DA9121_MASK_BUCK_BUCKx_0_CHx_EN BIT(0)
  202. /* DA9121_REG_BUCK_BUCK1_1 / DA9xxx_REG_BUCK_BUCK2_1 */
  203. #define DA9121_MASK_BUCK_BUCKx_1_CHx_SR_SHDN 0x70
  204. #define DA9121_MASK_BUCK_BUCKx_1_CHx_SR_STARTUP 0x0E
  205. #define DA9121_MASK_BUCK_BUCKx_1_CHx_PD_DIS BIT(0)
  206. /* DA9121_REG_BUCK_BUCK1_2 / DA9xxx_REG_BUCK_BUCK2_2 */
  207. #define DA9121_MASK_BUCK_BUCKx_2_CHx_ILIM 0x0F
  208. /* DA9121_REG_BUCK_BUCK1_3 / DA9xxx_REG_BUCK_BUCK2_3 */
  209. #define DA9121_MASK_BUCK_BUCKx_3_CHx_VMAX 0xFF
  210. /* DA9121_REG_BUCK_BUCK1_4 / DA9xxx_REG_BUCK_BUCK2_4 */
  211. #define DA9121_MASK_BUCK_BUCKx_4_CHx_VSEL BIT(4)
  212. #define DA9121_MASK_BUCK_BUCKx_4_CHx_B_MODE 0x0C
  213. #define DA9121_MASK_BUCK_BUCKx_4_CHx_A_MODE 0x03
  214. /* DA9121_REG_BUCK_BUCK1_5 / DA9xxx_REG_BUCK_BUCK2_5 */
  215. #define DA9121_MASK_BUCK_BUCKx_5_CHx_A_VOUT 0xFF
  216. /* DA9121_REG_BUCK_BUCK1_6 / DA9xxx_REG_BUCK_BUCK2_6 */
  217. #define DA9121_MASK_BUCK_BUCKx_6_CHx_B_VOUT 0xFF
  218. /* DA9121_REG_BUCK_BUCK1_7 / DA9xxx_REG_BUCK_BUCK2_7 */
  219. #define DA9xxx_MASK_BUCK_BUCKx_7_CHx_RIPPLE_CANCEL 0x03
  220. /* DA9121_REG_OTP_DEVICE_ID */
  221. #define DA9121_MASK_OTP_DEVICE_ID_DEV_ID 0xFF
  222. #define DA9121_DEVICE_ID 0x05
  223. #define DA914x_DEVICE_ID 0x26
  224. /* DA9121_REG_OTP_VARIANT_ID */
  225. #define DA9121_SHIFT_OTP_VARIANT_ID_MRC 4
  226. #define DA9121_MASK_OTP_VARIANT_ID_MRC 0xF0
  227. #define DA9121_SHIFT_OTP_VARIANT_ID_VRC 0
  228. #define DA9121_MASK_OTP_VARIANT_ID_VRC 0x0F
  229. #define DA9121_VARIANT_MRC_BASE 0x2
  230. #define DA9121_VARIANT_VRC 0x1
  231. #define DA9220_VARIANT_VRC 0x0
  232. #define DA9122_VARIANT_VRC 0x2
  233. #define DA9217_VARIANT_VRC 0x7
  234. #define DA9130_VARIANT_VRC 0x0
  235. #define DA9131_VARIANT_VRC 0x1
  236. #define DA9132_VARIANT_VRC 0x2
  237. #define DA914x_VARIANT_MRC_BASE 0x0
  238. #define DA9141_VARIANT_VRC 0x1
  239. #define DA9142_VARIANT_VRC 0x2
  240. /* DA9121_REG_OTP_CUSTOMER_ID */
  241. #define DA9121_MASK_OTP_CUSTOMER_ID_CUST_ID 0xFF
  242. /* DA9121_REG_OTP_CONFIG_ID */
  243. #define DA9121_MASK_OTP_CONFIG_ID_CONFIG_REV 0xFF
  244. #endif /* __DA9121_REGISTERS_H__ */