pca9450.h 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  1. /* SPDX-License-Identifier: GPL-2.0-or-later */
  2. /* Copyright 2020 NXP. */
  3. #ifndef __LINUX_REG_PCA9450_H__
  4. #define __LINUX_REG_PCA9450_H__
  5. #include <linux/regmap.h>
  6. enum pca9450_chip_type {
  7. PCA9450_TYPE_PCA9450A = 0,
  8. PCA9450_TYPE_PCA9450BC,
  9. PCA9450_TYPE_AMOUNT,
  10. };
  11. enum {
  12. PCA9450_BUCK1 = 0,
  13. PCA9450_BUCK2,
  14. PCA9450_BUCK3,
  15. PCA9450_BUCK4,
  16. PCA9450_BUCK5,
  17. PCA9450_BUCK6,
  18. PCA9450_LDO1,
  19. PCA9450_LDO2,
  20. PCA9450_LDO3,
  21. PCA9450_LDO4,
  22. PCA9450_LDO5,
  23. PCA9450_REGULATOR_CNT,
  24. };
  25. enum {
  26. PCA9450_DVS_LEVEL_RUN = 0,
  27. PCA9450_DVS_LEVEL_STANDBY,
  28. PCA9450_DVS_LEVEL_MAX,
  29. };
  30. #define PCA9450_BUCK1_VOLTAGE_NUM 0x80
  31. #define PCA9450_BUCK2_VOLTAGE_NUM 0x80
  32. #define PCA9450_BUCK3_VOLTAGE_NUM 0x80
  33. #define PCA9450_BUCK4_VOLTAGE_NUM 0x80
  34. #define PCA9450_BUCK5_VOLTAGE_NUM 0x80
  35. #define PCA9450_BUCK6_VOLTAGE_NUM 0x80
  36. #define PCA9450_LDO1_VOLTAGE_NUM 0x08
  37. #define PCA9450_LDO2_VOLTAGE_NUM 0x08
  38. #define PCA9450_LDO3_VOLTAGE_NUM 0x20
  39. #define PCA9450_LDO4_VOLTAGE_NUM 0x20
  40. #define PCA9450_LDO5_VOLTAGE_NUM 0x10
  41. enum {
  42. PCA9450_REG_DEV_ID = 0x00,
  43. PCA9450_REG_INT1 = 0x01,
  44. PCA9450_REG_INT1_MSK = 0x02,
  45. PCA9450_REG_STATUS1 = 0x03,
  46. PCA9450_REG_STATUS2 = 0x04,
  47. PCA9450_REG_PWRON_STAT = 0x05,
  48. PCA9450_REG_SWRST = 0x06,
  49. PCA9450_REG_PWRCTRL = 0x07,
  50. PCA9450_REG_RESET_CTRL = 0x08,
  51. PCA9450_REG_CONFIG1 = 0x09,
  52. PCA9450_REG_CONFIG2 = 0x0A,
  53. PCA9450_REG_BUCK123_DVS = 0x0C,
  54. PCA9450_REG_BUCK1OUT_LIMIT = 0x0D,
  55. PCA9450_REG_BUCK2OUT_LIMIT = 0x0E,
  56. PCA9450_REG_BUCK3OUT_LIMIT = 0x0F,
  57. PCA9450_REG_BUCK1CTRL = 0x10,
  58. PCA9450_REG_BUCK1OUT_DVS0 = 0x11,
  59. PCA9450_REG_BUCK1OUT_DVS1 = 0x12,
  60. PCA9450_REG_BUCK2CTRL = 0x13,
  61. PCA9450_REG_BUCK2OUT_DVS0 = 0x14,
  62. PCA9450_REG_BUCK2OUT_DVS1 = 0x15,
  63. PCA9450_REG_BUCK3CTRL = 0x16,
  64. PCA9450_REG_BUCK3OUT_DVS0 = 0x17,
  65. PCA9450_REG_BUCK3OUT_DVS1 = 0x18,
  66. PCA9450_REG_BUCK4CTRL = 0x19,
  67. PCA9450_REG_BUCK4OUT = 0x1A,
  68. PCA9450_REG_BUCK5CTRL = 0x1B,
  69. PCA9450_REG_BUCK5OUT = 0x1C,
  70. PCA9450_REG_BUCK6CTRL = 0x1D,
  71. PCA9450_REG_BUCK6OUT = 0x1E,
  72. PCA9450_REG_LDO_AD_CTRL = 0x20,
  73. PCA9450_REG_LDO1CTRL = 0x21,
  74. PCA9450_REG_LDO2CTRL = 0x22,
  75. PCA9450_REG_LDO3CTRL = 0x23,
  76. PCA9450_REG_LDO4CTRL = 0x24,
  77. PCA9450_REG_LDO5CTRL_L = 0x25,
  78. PCA9450_REG_LDO5CTRL_H = 0x26,
  79. PCA9450_REG_LOADSW_CTRL = 0x2A,
  80. PCA9450_REG_VRFLT1_STS = 0x2B,
  81. PCA9450_REG_VRFLT2_STS = 0x2C,
  82. PCA9450_REG_VRFLT1_MASK = 0x2D,
  83. PCA9450_REG_VRFLT2_MASK = 0x2E,
  84. PCA9450_MAX_REGISTER = 0x2F,
  85. };
  86. /* PCA9450 BUCK ENMODE bits */
  87. #define BUCK_ENMODE_OFF 0x00
  88. #define BUCK_ENMODE_ONREQ 0x01
  89. #define BUCK_ENMODE_ONREQ_STBYREQ 0x02
  90. #define BUCK_ENMODE_ON 0x03
  91. /* PCA9450_REG_BUCK1_CTRL bits */
  92. #define BUCK1_RAMP_MASK 0xC0
  93. #define BUCK1_RAMP_25MV 0x0
  94. #define BUCK1_RAMP_12P5MV 0x1
  95. #define BUCK1_RAMP_6P25MV 0x2
  96. #define BUCK1_RAMP_3P125MV 0x3
  97. #define BUCK1_DVS_CTRL 0x10
  98. #define BUCK1_AD 0x08
  99. #define BUCK1_FPWM 0x04
  100. #define BUCK1_ENMODE_MASK 0x03
  101. /* PCA9450_REG_BUCK2_CTRL bits */
  102. #define BUCK2_RAMP_MASK 0xC0
  103. #define BUCK2_RAMP_25MV 0x0
  104. #define BUCK2_RAMP_12P5MV 0x1
  105. #define BUCK2_RAMP_6P25MV 0x2
  106. #define BUCK2_RAMP_3P125MV 0x3
  107. #define BUCK2_DVS_CTRL 0x10
  108. #define BUCK2_AD 0x08
  109. #define BUCK2_FPWM 0x04
  110. #define BUCK2_ENMODE_MASK 0x03
  111. /* PCA9450_REG_BUCK3_CTRL bits */
  112. #define BUCK3_RAMP_MASK 0xC0
  113. #define BUCK3_RAMP_25MV 0x0
  114. #define BUCK3_RAMP_12P5MV 0x1
  115. #define BUCK3_RAMP_6P25MV 0x2
  116. #define BUCK3_RAMP_3P125MV 0x3
  117. #define BUCK3_DVS_CTRL 0x10
  118. #define BUCK3_AD 0x08
  119. #define BUCK3_FPWM 0x04
  120. #define BUCK3_ENMODE_MASK 0x03
  121. /* PCA9450_REG_BUCK4_CTRL bits */
  122. #define BUCK4_AD 0x08
  123. #define BUCK4_FPWM 0x04
  124. #define BUCK4_ENMODE_MASK 0x03
  125. /* PCA9450_REG_BUCK5_CTRL bits */
  126. #define BUCK5_AD 0x08
  127. #define BUCK5_FPWM 0x04
  128. #define BUCK5_ENMODE_MASK 0x03
  129. /* PCA9450_REG_BUCK6_CTRL bits */
  130. #define BUCK6_AD 0x08
  131. #define BUCK6_FPWM 0x04
  132. #define BUCK6_ENMODE_MASK 0x03
  133. /* PCA9450_REG_BUCK123_PRESET_EN bit */
  134. #define BUCK123_PRESET_EN 0x80
  135. /* PCA9450_BUCK1OUT_DVS0 bits */
  136. #define BUCK1OUT_DVS0_MASK 0x7F
  137. #define BUCK1OUT_DVS0_DEFAULT 0x14
  138. /* PCA9450_BUCK1OUT_DVS1 bits */
  139. #define BUCK1OUT_DVS1_MASK 0x7F
  140. #define BUCK1OUT_DVS1_DEFAULT 0x14
  141. /* PCA9450_BUCK2OUT_DVS0 bits */
  142. #define BUCK2OUT_DVS0_MASK 0x7F
  143. #define BUCK2OUT_DVS0_DEFAULT 0x14
  144. /* PCA9450_BUCK2OUT_DVS1 bits */
  145. #define BUCK2OUT_DVS1_MASK 0x7F
  146. #define BUCK2OUT_DVS1_DEFAULT 0x14
  147. /* PCA9450_BUCK3OUT_DVS0 bits */
  148. #define BUCK3OUT_DVS0_MASK 0x7F
  149. #define BUCK3OUT_DVS0_DEFAULT 0x14
  150. /* PCA9450_BUCK3OUT_DVS1 bits */
  151. #define BUCK3OUT_DVS1_MASK 0x7F
  152. #define BUCK3OUT_DVS1_DEFAULT 0x14
  153. /* PCA9450_REG_BUCK4OUT bits */
  154. #define BUCK4OUT_MASK 0x7F
  155. #define BUCK4OUT_DEFAULT 0x6C
  156. /* PCA9450_REG_BUCK5OUT bits */
  157. #define BUCK5OUT_MASK 0x7F
  158. #define BUCK5OUT_DEFAULT 0x30
  159. /* PCA9450_REG_BUCK6OUT bits */
  160. #define BUCK6OUT_MASK 0x7F
  161. #define BUCK6OUT_DEFAULT 0x14
  162. /* PCA9450_REG_LDO1_VOLT bits */
  163. #define LDO1_EN_MASK 0xC0
  164. #define LDO1OUT_MASK 0x07
  165. /* PCA9450_REG_LDO2_VOLT bits */
  166. #define LDO2_EN_MASK 0xC0
  167. #define LDO2OUT_MASK 0x07
  168. /* PCA9450_REG_LDO3_VOLT bits */
  169. #define LDO3_EN_MASK 0xC0
  170. #define LDO3OUT_MASK 0x1F
  171. /* PCA9450_REG_LDO4_VOLT bits */
  172. #define LDO4_EN_MASK 0xC0
  173. #define LDO4OUT_MASK 0x1F
  174. /* PCA9450_REG_LDO5_VOLT bits */
  175. #define LDO5L_EN_MASK 0xC0
  176. #define LDO5LOUT_MASK 0x0F
  177. #define LDO5H_EN_MASK 0xC0
  178. #define LDO5HOUT_MASK 0x0F
  179. /* PCA9450_REG_IRQ bits */
  180. #define IRQ_PWRON 0x80
  181. #define IRQ_WDOGB 0x40
  182. #define IRQ_RSVD 0x20
  183. #define IRQ_VR_FLT1 0x10
  184. #define IRQ_VR_FLT2 0x08
  185. #define IRQ_LOWVSYS 0x04
  186. #define IRQ_THERM_105 0x02
  187. #define IRQ_THERM_125 0x01
  188. /* PCA9450_REG_RESET_CTRL bits */
  189. #define WDOG_B_CFG_MASK 0xC0
  190. #define WDOG_B_CFG_NONE 0x00
  191. #define WDOG_B_CFG_WARM 0x40
  192. #define WDOG_B_CFG_COLD_LDO12 0x80
  193. #define WDOG_B_CFG_COLD 0xC0
  194. /* PCA9450_REG_CONFIG2 bits */
  195. #define I2C_LT_MASK 0x03
  196. #define I2C_LT_FORCE_DISABLE 0x00
  197. #define I2C_LT_ON_STANDBY_RUN 0x01
  198. #define I2C_LT_ON_RUN 0x02
  199. #define I2C_LT_FORCE_ENABLE 0x03
  200. #endif /* __LINUX_REG_PCA9450_H__ */