max77686_pmic.h 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  1. /* SPDX-License-Identifier: GPL-2.0+ */
  2. /*
  3. * Copyright (C) 2012 Samsung Electronics
  4. * Rajeshwari Shinde <rajeshwari.s@samsung.com>
  5. */
  6. #ifndef __MAX77686_H_
  7. #define __MAX77686_H_
  8. #include <power/pmic.h>
  9. enum {
  10. MAX77686_REG_PMIC_ID = 0x0,
  11. MAX77686_REG_PMIC_INTSRC,
  12. MAX77686_REG_PMIC_INT1,
  13. MAX77686_REG_PMIC_INT2,
  14. MAX77686_REG_PMIC_INT1MSK,
  15. MAX77686_REG_PMIC_INT2MSK,
  16. MAX77686_REG_PMIC_STATUS1,
  17. MAX77686_REG_PMIC_STATUS2,
  18. MAX77686_REG_PMIC_PWRON,
  19. MAX77686_REG_PMIC_ONOFFDELAY,
  20. MAX77686_REG_PMIC_MRSTB,
  21. MAX77686_REG_PMIC_BUCK1CRTL = 0x10,
  22. MAX77686_REG_PMIC_BUCK1OUT,
  23. MAX77686_REG_PMIC_BUCK2CTRL1,
  24. MAX77686_REG_PMIC_BUCK234FREQ,
  25. MAX77686_REG_PMIC_BUCK2DVS1,
  26. MAX77686_REG_PMIC_BUCK2DVS2,
  27. MAX77686_REG_PMIC_BUCK2DVS3,
  28. MAX77686_REG_PMIC_BUCK2DVS4,
  29. MAX77686_REG_PMIC_BUCK2DVS5,
  30. MAX77686_REG_PMIC_BUCK2DVS6,
  31. MAX77686_REG_PMIC_BUCK2DVS7,
  32. MAX77686_REG_PMIC_BUCK2DVS8,
  33. MAX77686_REG_PMIC_BUCK3CTRL,
  34. MAX77686_REG_PMIC_BUCK3DVS1 = 0x1e,
  35. MAX77686_REG_PMIC_BUCK3DVS2,
  36. MAX77686_REG_PMIC_BUCK3DVS3,
  37. MAX77686_REG_PMIC_BUCK3DVS4,
  38. MAX77686_REG_PMIC_BUCK3DVS5,
  39. MAX77686_REG_PMIC_BUCK3DVS6,
  40. MAX77686_REG_PMIC_BUCK3DVS7,
  41. MAX77686_REG_PMIC_BUCK3DVS8,
  42. MAX77686_REG_PMIC_BUCK4CTRL1,
  43. MAX77686_REG_PMIC_BUCK4DVS1 = 0x28,
  44. MAX77686_REG_PMIC_BUCK4DVS2,
  45. MAX77686_REG_PMIC_BUCK4DVS3,
  46. MAX77686_REG_PMIC_BUCK4DVS4,
  47. MAX77686_REG_PMIC_BUCK4DVS5,
  48. MAX77686_REG_PMIC_BUCK4DVS6,
  49. MAX77686_REG_PMIC_BUCK4DVS7,
  50. MAX77686_REG_PMIC_BUCK4DVS8,
  51. MAX77686_REG_PMIC_BUCK5CTRL,
  52. MAX77686_REG_PMIC_BUCK5OUT,
  53. MAX77686_REG_PMIC_BUCK6CRTL,
  54. MAX77686_REG_PMIC_BUCK6OUT,
  55. MAX77686_REG_PMIC_BUCK7CRTL,
  56. MAX77686_REG_PMIC_BUCK7OUT,
  57. MAX77686_REG_PMIC_BUCK8CRTL,
  58. MAX77686_REG_PMIC_BUCK8OUT,
  59. MAX77686_REG_PMIC_BUCK9CRTL,
  60. MAX77686_REG_PMIC_BUCK9OUT,
  61. MAX77686_REG_PMIC_LDO1CTRL1 = 0x40,
  62. MAX77686_REG_PMIC_LDO2CTRL1,
  63. MAX77686_REG_PMIC_LDO3CTRL1,
  64. MAX77686_REG_PMIC_LDO4CTRL1,
  65. MAX77686_REG_PMIC_LDO5CTRL1,
  66. MAX77686_REG_PMIC_LDO6CTRL1,
  67. MAX77686_REG_PMIC_LDO7CTRL1,
  68. MAX77686_REG_PMIC_LDO8CTRL1,
  69. MAX77686_REG_PMIC_LDO9CTRL1,
  70. MAX77686_REG_PMIC_LDO10CTRL1,
  71. MAX77686_REG_PMIC_LDO11CTRL1,
  72. MAX77686_REG_PMIC_LDO12CTRL1,
  73. MAX77686_REG_PMIC_LDO13CTRL1,
  74. MAX77686_REG_PMIC_LDO14CTRL1,
  75. MAX77686_REG_PMIC_LDO15CTRL1,
  76. MAX77686_REG_PMIC_LDO16CTRL1,
  77. MAX77686_REG_PMIC_LDO17CTRL1,
  78. MAX77686_REG_PMIC_LDO18CTRL1,
  79. MAX77686_REG_PMIC_LDO19CTRL1,
  80. MAX77686_REG_PMIC_LDO20CTRL1,
  81. MAX77686_REG_PMIC_LDO21CTRL1,
  82. MAX77686_REG_PMIC_LDO22CTRL1,
  83. MAX77686_REG_PMIC_LDO23CTRL1,
  84. MAX77686_REG_PMIC_LDO24CTRL1,
  85. MAX77686_REG_PMIC_LDO25CTRL1,
  86. MAX77686_REG_PMIC_LDO26CTRL1,
  87. MAX77686_REG_PMIC_LDO1CTRL2,
  88. MAX77686_REG_PMIC_LDO2CTRL2,
  89. MAX77686_REG_PMIC_LDO3CTRL2,
  90. MAX77686_REG_PMIC_LDO4CTRL2,
  91. MAX77686_REG_PMIC_LDO5CTRL2,
  92. MAX77686_REG_PMIC_LDO6CTRL2,
  93. MAX77686_REG_PMIC_LDO7CTRL2,
  94. MAX77686_REG_PMIC_LDO8CTRL2,
  95. MAX77686_REG_PMIC_LDO9CTRL2,
  96. MAX77686_REG_PMIC_LDO10CTRL2,
  97. MAX77686_REG_PMIC_LDO11CTRL2,
  98. MAX77686_REG_PMIC_LDO12CTRL2,
  99. MAX77686_REG_PMIC_LDO13CTRL2,
  100. MAX77686_REG_PMIC_LDO14CTRL2,
  101. MAX77686_REG_PMIC_LDO15CTRL2,
  102. MAX77686_REG_PMIC_LDO16CTRL2,
  103. MAX77686_REG_PMIC_LDO17CTRL2,
  104. MAX77686_REG_PMIC_LDO18CTRL2,
  105. MAX77686_REG_PMIC_LDO19CTRL2,
  106. MAX77686_REG_PMIC_LDO20CTRL2,
  107. MAX77686_REG_PMIC_LDO21CTRL2,
  108. MAX77686_REG_PMIC_LDO22CTRL2,
  109. MAX77686_REG_PMIC_LDO23CTRL2,
  110. MAX77686_REG_PMIC_LDO24CTRL2,
  111. MAX77686_REG_PMIC_LDO25CTRL2,
  112. MAX77686_REG_PMIC_LDO26CTRL2,
  113. MAX77686_REG_PMIC_BBAT = 0x7e,
  114. MAX77686_REG_PMIC_32KHZ,
  115. MAX77686_NUM_OF_REGS,
  116. };
  117. /* I2C device address for pmic max77686 */
  118. #define MAX77686_I2C_ADDR (0x12 >> 1)
  119. #define MAX77686_LDO_NUM 26
  120. #define MAX77686_BUCK_NUM 9
  121. /* Drivers name */
  122. #define MAX77686_LDO_DRIVER "max77686_ldo"
  123. #define MAX77686_BUCK_DRIVER "max77686_buck"
  124. enum {
  125. REG_DISABLE = 0,
  126. REG_ENABLE
  127. };
  128. enum {
  129. LDO_OFF = 0,
  130. LDO_ON,
  131. DIS_LDO = (0x00 << 6),
  132. EN_LDO = (0x3 << 6),
  133. };
  134. enum {
  135. OPMODE_OFF = 0,
  136. OPMODE_LPM,
  137. OPMODE_STANDBY,
  138. OPMODE_STANDBY_LPM,
  139. OPMODE_ON,
  140. };
  141. #ifdef CONFIG_POWER
  142. int max77686_set_ldo_voltage(struct pmic *p, int ldo, ulong uV);
  143. int max77686_set_ldo_mode(struct pmic *p, int ldo, char opmode);
  144. int max77686_set_buck_voltage(struct pmic *p, int buck, ulong uV);
  145. int max77686_set_buck_mode(struct pmic *p, int buck, char opmode);
  146. #endif
  147. #define MAX77686_LDO_VOLT_MAX_HEX 0x3f
  148. #define MAX77686_LDO_VOLT_MASK 0x3f
  149. #define MAX77686_LDO_MODE_MASK 0xc0
  150. #define MAX77686_LDO_MODE_OFF (0x00 << 0x06)
  151. #define MAX77686_LDO_MODE_LPM (0x01 << 0x06)
  152. #define MAX77686_LDO_MODE_STANDBY (0x01 << 0x06)
  153. #define MAX77686_LDO_MODE_STANDBY_LPM (0x02 << 0x06)
  154. #define MAX77686_LDO_MODE_ON (0x03 << 0x06)
  155. #define MAX77686_BUCK234_VOLT_MAX_HEX 0xff
  156. #define MAX77686_BUCK234_VOLT_MASK 0xff
  157. #define MAX77686_BUCK_VOLT_MAX_HEX 0x3f
  158. #define MAX77686_BUCK_VOLT_MASK 0x3f
  159. #define MAX77686_BUCK_MODE_MASK 0x03
  160. #define MAX77686_BUCK_MODE_SHIFT_1 0x00
  161. #define MAX77686_BUCK_MODE_SHIFT_2 0x04
  162. #define MAX77686_BUCK_MODE_OFF 0x00
  163. #define MAX77686_BUCK_MODE_STANDBY 0x01
  164. #define MAX77686_BUCK_MODE_LPM 0x02
  165. #define MAX77686_BUCK_MODE_ON 0x03
  166. /* For regulator hex<->volt conversion */
  167. #define MAX77686_LDO_UV_MIN 800000 /* Minimum LDO uV value */
  168. #define MAX77686_LDO_UV_LSTEP 25000 /* uV lower value step */
  169. #define MAX77686_LDO_UV_HSTEP 50000 /* uV higher value step */
  170. #define MAX77686_BUCK_UV_LMIN 600000 /* Lower minimun BUCK value */
  171. #define MAX77686_BUCK_UV_HMIN 750000 /* Higher minimun BUCK value */
  172. #define MAX77686_BUCK_UV_LSTEP 12500 /* uV lower value step */
  173. #define MAX77686_BUCK_UV_HSTEP 50000 /* uV higher value step */
  174. /* Buck1 1 volt value */
  175. #define MAX77686_BUCK1OUT_1V 0x5
  176. /* Buck1 1.05 volt value */
  177. #define MAX77686_BUCK1OUT_1_05V 0x6
  178. #define MAX77686_BUCK1CTRL_EN (3 << 0)
  179. /* Buck2 1.3 volt value */
  180. #define MAX77686_BUCK2DVS1_1_3V 0x38
  181. #define MAX77686_BUCK2CTRL_ON (1 << 4)
  182. /* Buck3 1.0125 volt value */
  183. #define MAX77686_BUCK3DVS1_1_0125V 0x21
  184. #define MAX77686_BUCK3CTRL_ON (1 << 4)
  185. /* Buck4 1.2 volt value */
  186. #define MAX77686_BUCK4DVS1_1_2V 0x30
  187. #define MAX77686_BUCK4CTRL_ON (1 << 4)
  188. /* LDO2 1.5 volt value */
  189. #define MAX77686_LD02CTRL1_1_5V 0x1c
  190. /* LDO3 1.8 volt value */
  191. #define MAX77686_LD03CTRL1_1_8V 0x14
  192. /* LDO5 1.8 volt value */
  193. #define MAX77686_LD05CTRL1_1_8V 0x14
  194. /* LDO10 1.8 volt value */
  195. #define MAX77686_LD10CTRL1_1_8V 0x14
  196. /*
  197. * MAX77686_REG_PMIC_32KHZ set to 32KH CP
  198. * output is activated
  199. */
  200. #define MAX77686_32KHCP_EN (1 << 1)
  201. /*
  202. * MAX77686_REG_PMIC_BBAT set to
  203. * Back up batery charger on and
  204. * limit voltage setting to 3.5v
  205. */
  206. #define MAX77686_BBCHOSTEN (1 << 0)
  207. #define MAX77686_BBCVS_3_5V (3 << 3)
  208. #endif /* __MAX77686_PMIC_H_ */