xref: /rk3399_ARM-atf/include/drivers/st/stpmic2.h (revision 314aa18a7918375ab019beefeee15a661376a4d8)
1817f42f0SPascal Paillet /*
2817f42f0SPascal Paillet  * Copyright (C) 2024, STMicroelectronics - All Rights Reserved
3817f42f0SPascal Paillet  *
4817f42f0SPascal Paillet  * SPDX-License-Identifier: BSD-3-Clause
5817f42f0SPascal Paillet  */
6817f42f0SPascal Paillet 
7817f42f0SPascal Paillet #ifndef STPMIC2_H
8817f42f0SPascal Paillet #define STPMIC2_H
9817f42f0SPascal Paillet 
10817f42f0SPascal Paillet #include <drivers/st/stm32_i2c.h>
11817f42f0SPascal Paillet #include <lib/utils_def.h>
12817f42f0SPascal Paillet 
13817f42f0SPascal Paillet enum {
14817f42f0SPascal Paillet 	STPMIC2_BUCK1 = 0,
15817f42f0SPascal Paillet 	STPMIC2_BUCK2,
16817f42f0SPascal Paillet 	STPMIC2_BUCK3,
17817f42f0SPascal Paillet 	STPMIC2_BUCK4,
18817f42f0SPascal Paillet 	STPMIC2_BUCK5,
19817f42f0SPascal Paillet 	STPMIC2_BUCK6,
20817f42f0SPascal Paillet 	STPMIC2_BUCK7,
21817f42f0SPascal Paillet 	STPMIC2_REFDDR,
22817f42f0SPascal Paillet 	STPMIC2_LDO1,
23817f42f0SPascal Paillet 	STPMIC2_LDO2,
24817f42f0SPascal Paillet 	STPMIC2_LDO3,
25817f42f0SPascal Paillet 	STPMIC2_LDO4,
26817f42f0SPascal Paillet 	STPMIC2_LDO5,
27817f42f0SPascal Paillet 	STPMIC2_LDO6,
28817f42f0SPascal Paillet 	STPMIC2_LDO7,
29817f42f0SPascal Paillet 	STPMIC2_LDO8,
30817f42f0SPascal Paillet 	STPMIC2_NB_REG
31817f42f0SPascal Paillet };
32817f42f0SPascal Paillet 
33817f42f0SPascal Paillet /* Status Registers */
34817f42f0SPascal Paillet #define PRODUCT_ID		0x00
35817f42f0SPascal Paillet #define VERSION_SR		0x01
36817f42f0SPascal Paillet #define TURN_ON_SR		0x02
37817f42f0SPascal Paillet #define TURN_OFF_SR		0x03
38817f42f0SPascal Paillet #define RESTART_SR		0x04
39817f42f0SPascal Paillet #define OCP_SR1			0x05
40817f42f0SPascal Paillet #define OCP_SR2			0x06
41817f42f0SPascal Paillet #define EN_SR1			0x07
42817f42f0SPascal Paillet #define EN_SR2			0x08
43817f42f0SPascal Paillet #define FS_CNT_SR1		0x09
44817f42f0SPascal Paillet #define FS_CNT_SR2		0x0A
45817f42f0SPascal Paillet #define FS_CNT_SR3		0x0B
46817f42f0SPascal Paillet #define MODE_SR			0x0C
47817f42f0SPascal Paillet /* Control Registers */
48817f42f0SPascal Paillet #define MAIN_CR			0x10
49817f42f0SPascal Paillet #define VINLOW_CR		0x11
50817f42f0SPascal Paillet #define PKEY_LKP_CR		0x12
51817f42f0SPascal Paillet #define WDG_CR			0x13
52817f42f0SPascal Paillet #define WDG_TMR_CR		0x14
53817f42f0SPascal Paillet #define WDG_TMR_SR		0x15
54817f42f0SPascal Paillet #define FS_OCP_CR1		0x16
55817f42f0SPascal Paillet #define FS_OCP_CR2		0x17
56817f42f0SPascal Paillet #define PADS_PULL_CR		0x18
57817f42f0SPascal Paillet #define BUCKS_PD_CR1		0x19
58817f42f0SPascal Paillet #define BUCKS_PD_CR2		0x1A
59817f42f0SPascal Paillet #define LDOS_PD_CR1		0x1B
60817f42f0SPascal Paillet #define LDOS_PD_CR2		0x1C
61817f42f0SPascal Paillet #define BUCKS_MRST_CR		0x1D
62817f42f0SPascal Paillet #define LDOS_MRST_CR		0x1E
63817f42f0SPascal Paillet /* Buck CR */
64817f42f0SPascal Paillet #define BUCK1_MAIN_CR1		0x20
65817f42f0SPascal Paillet #define BUCK1_MAIN_CR2		0x21
66817f42f0SPascal Paillet #define BUCK1_ALT_CR1		0x22
67817f42f0SPascal Paillet #define BUCK1_ALT_CR2		0x23
68817f42f0SPascal Paillet #define BUCK1_PWRCTRL_CR	0x24
69817f42f0SPascal Paillet #define BUCK2_MAIN_CR1		0x25
70817f42f0SPascal Paillet #define BUCK2_MAIN_CR2		0x26
71817f42f0SPascal Paillet #define BUCK2_ALT_CR1		0x27
72817f42f0SPascal Paillet #define BUCK2_ALT_CR2		0x28
73817f42f0SPascal Paillet #define BUCK2_PWRCTRL_CR	0x29
74817f42f0SPascal Paillet #define BUCK3_MAIN_CR1		0x2A
75817f42f0SPascal Paillet #define BUCK3_MAIN_CR2		0x2B
76817f42f0SPascal Paillet #define BUCK3_ALT_CR1		0x2C
77817f42f0SPascal Paillet #define BUCK3_ALT_CR2		0x2D
78817f42f0SPascal Paillet #define BUCK3_PWRCTRL_CR	0x2E
79817f42f0SPascal Paillet #define BUCK4_MAIN_CR1		0x2F
80817f42f0SPascal Paillet #define BUCK4_MAIN_CR2		0x30
81817f42f0SPascal Paillet #define BUCK4_ALT_CR1		0x31
82817f42f0SPascal Paillet #define BUCK4_ALT_CR2		0x32
83817f42f0SPascal Paillet #define BUCK4_PWRCTRL_CR	0x33
84817f42f0SPascal Paillet #define BUCK5_MAIN_CR1		0x34
85817f42f0SPascal Paillet #define BUCK5_MAIN_CR2		0x35
86817f42f0SPascal Paillet #define BUCK5_ALT_CR1		0x36
87817f42f0SPascal Paillet #define BUCK5_ALT_CR2		0x37
88817f42f0SPascal Paillet #define BUCK5_PWRCTRL_CR	0x38
89817f42f0SPascal Paillet #define BUCK6_MAIN_CR1		0x39
90817f42f0SPascal Paillet #define BUCK6_MAIN_CR2		0x3A
91817f42f0SPascal Paillet #define BUCK6_ALT_CR1		0x3B
92817f42f0SPascal Paillet #define BUCK6_ALT_CR2		0x3C
93817f42f0SPascal Paillet #define BUCK6_PWRCTRL_CR	0x3D
94817f42f0SPascal Paillet #define BUCK7_MAIN_CR1		0x3E
95817f42f0SPascal Paillet #define BUCK7_MAIN_CR2		0x3F
96817f42f0SPascal Paillet #define BUCK7_ALT_CR1		0x40
97817f42f0SPascal Paillet #define BUCK7_ALT_CR2		0x41
98817f42f0SPascal Paillet #define BUCK7_PWRCTRL_CR	0x42
99817f42f0SPascal Paillet /* LDO CR */
100817f42f0SPascal Paillet #define LDO1_MAIN_CR		0x4C
101817f42f0SPascal Paillet #define LDO1_ALT_CR		0x4D
102817f42f0SPascal Paillet #define LDO1_PWRCTRL_CR		0x4E
103817f42f0SPascal Paillet #define LDO2_MAIN_CR		0x4F
104817f42f0SPascal Paillet #define LDO2_ALT_CR		0x50
105817f42f0SPascal Paillet #define LDO2_PWRCTRL_CR		0x51
106817f42f0SPascal Paillet #define LDO3_MAIN_CR		0x52
107817f42f0SPascal Paillet #define LDO3_ALT_CR		0x53
108817f42f0SPascal Paillet #define LDO3_PWRCTRL_CR		0x54
109817f42f0SPascal Paillet #define LDO4_MAIN_CR		0x55
110817f42f0SPascal Paillet #define LDO4_ALT_CR		0x56
111817f42f0SPascal Paillet #define LDO4_PWRCTRL_CR		0x57
112817f42f0SPascal Paillet #define LDO5_MAIN_CR		0x58
113817f42f0SPascal Paillet #define LDO5_ALT_CR		0x59
114817f42f0SPascal Paillet #define LDO5_PWRCTRL_CR		0x5A
115817f42f0SPascal Paillet #define LDO6_MAIN_CR		0x5B
116817f42f0SPascal Paillet #define LDO6_ALT_CR		0x5C
117817f42f0SPascal Paillet #define LDO6_PWRCTRL_CR		0x5D
118817f42f0SPascal Paillet #define LDO7_MAIN_CR		0x5E
119817f42f0SPascal Paillet #define LDO7_ALT_CR		0x5F
120817f42f0SPascal Paillet #define LDO7_PWRCTRL_CR		0x60
121817f42f0SPascal Paillet #define LDO8_MAIN_CR		0x61
122817f42f0SPascal Paillet #define LDO8_ALT_CR		0x62
123817f42f0SPascal Paillet #define LDO8_PWRCTRL_CR		0x63
124817f42f0SPascal Paillet #define REFDDR_MAIN_CR		0x64
125817f42f0SPascal Paillet #define REFDDR_ALT_CR		0x65
126817f42f0SPascal Paillet #define REFDDR_PWRCTRL_CR	0x66
127817f42f0SPascal Paillet /* INTERRUPT CR */
128817f42f0SPascal Paillet #define INT_PENDING_R1		0x70
129817f42f0SPascal Paillet #define INT_PENDING_R2		0x71
130817f42f0SPascal Paillet #define INT_PENDING_R3		0x72
131817f42f0SPascal Paillet #define INT_PENDING_R4		0x73
132817f42f0SPascal Paillet #define INT_CLEAR_R1		0x74
133817f42f0SPascal Paillet #define INT_CLEAR_R2		0x75
134817f42f0SPascal Paillet #define INT_CLEAR_R3		0x76
135817f42f0SPascal Paillet #define INT_CLEAR_R4		0x77
136817f42f0SPascal Paillet #define INT_MASK_R1		0x78
137817f42f0SPascal Paillet #define INT_MASK_R2		0x79
138817f42f0SPascal Paillet #define INT_MASK_R3		0x7A
139817f42f0SPascal Paillet #define INT_MASK_R4		0x7B
140817f42f0SPascal Paillet #define INT_SRC_R1		0x7C
141817f42f0SPascal Paillet #define INT_SRC_R2		0x7D
142817f42f0SPascal Paillet #define INT_SRC_R3		0x7E
143817f42f0SPascal Paillet #define INT_SRC_R4		0x7F
144817f42f0SPascal Paillet #define INT_DBG_LATCH_R1	0x80
145817f42f0SPascal Paillet #define INT_DBG_LATCH_R2	0x81
146817f42f0SPascal Paillet #define INT_DBG_LATCH_R3	0x82
147817f42f0SPascal Paillet #define INT_DBG_LATCH_R4	0x83
148817f42f0SPascal Paillet 
149*c1222e7bSBoerge Struempfel /* NVM user control registers */
150*c1222e7bSBoerge Struempfel #define NVM_SR			0x8E
151*c1222e7bSBoerge Struempfel #define NVM_CR			0x8F
152*c1222e7bSBoerge Struempfel 
153*c1222e7bSBoerge Struempfel /* NVM user shadow registers */
154*c1222e7bSBoerge Struempfel #define NVM_MAIN_CTRL_SHR1	0x90
155*c1222e7bSBoerge Struempfel #define NVM_MAIN_CTRL_SHR2	0x91
156*c1222e7bSBoerge Struempfel #define NVM_RANK_SHR1		0x92
157*c1222e7bSBoerge Struempfel #define NVM_RANK_SHR2		0x93
158*c1222e7bSBoerge Struempfel #define NVM_RANK_SHR3		0x94
159*c1222e7bSBoerge Struempfel #define NVM_RANK_SHR4		0x95
160*c1222e7bSBoerge Struempfel #define NVM_RANK_SHR5		0x96
161*c1222e7bSBoerge Struempfel #define NVM_RANK_SHR6		0x97
162*c1222e7bSBoerge Struempfel #define NVM_RANK_SHR7		0x98
163*c1222e7bSBoerge Struempfel #define NVM_RANK_SHR8		0x99
164*c1222e7bSBoerge Struempfel #define NVM_BUCK_MODE_SHR1	0x9A
165*c1222e7bSBoerge Struempfel #define NVM_BUCK_MODE_SHR2	0x9B
166*c1222e7bSBoerge Struempfel #define NVM_BUCK1_VOUT_SHR	0x9C
167*c1222e7bSBoerge Struempfel #define NVM_BUCK2_VOUT_SHR	0x9D
168*c1222e7bSBoerge Struempfel #define NVM_BUCK3_VOUT_SHR	0x9E
169*c1222e7bSBoerge Struempfel #define NVM_BUCK4_VOUT_SHR	0x9F
170*c1222e7bSBoerge Struempfel #define NVM_BUCK5_VOUT_SHR	0xA0
171*c1222e7bSBoerge Struempfel #define NVM_BUCK6_VOUT_SHR	0xA1
172*c1222e7bSBoerge Struempfel #define NVM_BUCK7_VOUT_SHR	0xA2
173*c1222e7bSBoerge Struempfel #define NVM_LDO2_SHR		0xA3
174*c1222e7bSBoerge Struempfel #define NVM_LDO3_SHR		0xA4
175*c1222e7bSBoerge Struempfel #define NVM_LDO5_SHR		0xA5
176*c1222e7bSBoerge Struempfel #define NVM_LDO6_SHR		0xA6
177*c1222e7bSBoerge Struempfel #define NVM_LDO7_SHR		0xA7
178*c1222e7bSBoerge Struempfel #define NVM_LDO8_SHR		0xA8
179*c1222e7bSBoerge Struempfel #define NVM_PD_SHR1		0xA9
180*c1222e7bSBoerge Struempfel #define NVM_PD_SHR2		0xAA
181*c1222e7bSBoerge Struempfel #define NVM_PD_SHR3		0xAB
182*c1222e7bSBoerge Struempfel #define NVM_BUCKS_IOUT_SHR1	0xAC
183*c1222e7bSBoerge Struempfel #define NVM_BUCKS_IOUT_SHR2	0xAD
184*c1222e7bSBoerge Struempfel #define NVM_LDOS_IOUT_SHR	0xAE
185*c1222e7bSBoerge Struempfel #define NVM_FS_OCP_SHR1	0xAF
186*c1222e7bSBoerge Struempfel #define NVM_FS_OCP_SHR2	0xB0
187*c1222e7bSBoerge Struempfel #define NVM_FS_SHR1		0xB1
188*c1222e7bSBoerge Struempfel #define NVM_FS_SHR2		0xB2
189*c1222e7bSBoerge Struempfel #define NVM_FS_SHR3		0xB3
190*c1222e7bSBoerge Struempfel #define NVM_I2C_ADDR_SHR	0xB5
191*c1222e7bSBoerge Struempfel #define NVM_USER_SHR1		0xB6
192*c1222e7bSBoerge Struempfel #define NVM_USER_SHR2		0xB7
193*c1222e7bSBoerge Struempfel 
194817f42f0SPascal Paillet /* BUCKS_MRST_CR bits definition */
195817f42f0SPascal Paillet #define BUCK1_MRST		BIT(0)
196817f42f0SPascal Paillet #define BUCK2_MRST		BIT(1)
197817f42f0SPascal Paillet #define BUCK3_MRST		BIT(2)
198817f42f0SPascal Paillet #define BUCK4_MRST		BIT(3)
199817f42f0SPascal Paillet #define BUCK5_MRST		BIT(4)
200817f42f0SPascal Paillet #define BUCK6_MRST		BIT(5)
201817f42f0SPascal Paillet #define BUCK7_MRST		BIT(6)
202817f42f0SPascal Paillet #define REFDDR_MRST		BIT(7)
203817f42f0SPascal Paillet 
204817f42f0SPascal Paillet /* LDOS_MRST_CR bits definition */
205817f42f0SPascal Paillet #define LDO1_MRST		BIT(0)
206817f42f0SPascal Paillet #define LDO2_MRST		BIT(1)
207817f42f0SPascal Paillet #define LDO3_MRST		BIT(2)
208817f42f0SPascal Paillet #define LDO4_MRST		BIT(3)
209817f42f0SPascal Paillet #define LDO5_MRST		BIT(4)
210817f42f0SPascal Paillet #define LDO6_MRST		BIT(5)
211817f42f0SPascal Paillet #define LDO7_MRST		BIT(6)
212817f42f0SPascal Paillet #define LDO8_MRST		BIT(7)
213817f42f0SPascal Paillet 
214817f42f0SPascal Paillet /* LDOx_MAIN_CR */
215817f42f0SPascal Paillet #define LDO_VOLT_SHIFT		1
216817f42f0SPascal Paillet #define LDO_BYPASS		BIT(6)
217817f42f0SPascal Paillet #define LDO1_INPUT_SRC		BIT(7)
218817f42f0SPascal Paillet #define LDO3_SNK_SRC		BIT(7)
219817f42f0SPascal Paillet #define LDO4_INPUT_SRC_SHIFT	6
220817f42f0SPascal Paillet #define LDO4_INPUT_SRC_MASK	GENMASK_32(7, 6)
221817f42f0SPascal Paillet 
222817f42f0SPascal Paillet /* PWRCTRL register bit definition */
223817f42f0SPascal Paillet #define PWRCTRL_EN		BIT(0)
224817f42f0SPascal Paillet #define PWRCTRL_RS		BIT(1)
225817f42f0SPascal Paillet #define PWRCTRL_SEL_SHIFT	2
226817f42f0SPascal Paillet #define PWRCTRL_SEL_MASK	GENMASK_32(3, 2)
227817f42f0SPascal Paillet 
228817f42f0SPascal Paillet /* BUCKx_MAIN_CR2 */
229817f42f0SPascal Paillet #define PREG_MODE_SHIFT		1
230817f42f0SPascal Paillet #define PREG_MODE_MASK		GENMASK_32(2, 1)
231817f42f0SPascal Paillet 
232817f42f0SPascal Paillet /* BUCKS_PD_CR1 */
233817f42f0SPascal Paillet #define BUCK1_PD_MASK		GENMASK_32(1, 0)
234817f42f0SPascal Paillet #define BUCK2_PD_MASK		GENMASK_32(3, 2)
235817f42f0SPascal Paillet #define BUCK3_PD_MASK		GENMASK_32(5, 4)
236817f42f0SPascal Paillet #define BUCK4_PD_MASK		GENMASK_32(7, 6)
237817f42f0SPascal Paillet 
238817f42f0SPascal Paillet #define BUCK1_PD_FAST		BIT(1)
239817f42f0SPascal Paillet #define BUCK2_PD_FAST		BIT(3)
240817f42f0SPascal Paillet #define BUCK3_PD_FAST		BIT(5)
241817f42f0SPascal Paillet #define BUCK4_PD_FAST		BIT(7)
242817f42f0SPascal Paillet 
243817f42f0SPascal Paillet /* BUCKS_PD_CR2 */
244817f42f0SPascal Paillet #define BUCK5_PD_MASK		GENMASK_32(1, 0)
245817f42f0SPascal Paillet #define BUCK6_PD_MASK		GENMASK_32(3, 2)
246817f42f0SPascal Paillet #define BUCK7_PD_MASK		GENMASK_32(5, 4)
247817f42f0SPascal Paillet 
248817f42f0SPascal Paillet #define BUCK5_PD_FAST		BIT(1)
249817f42f0SPascal Paillet #define BUCK6_PD_FAST		BIT(3)
250817f42f0SPascal Paillet #define BUCK7_PD_FAST		BIT(5)
251817f42f0SPascal Paillet 
252817f42f0SPascal Paillet /* LDOS_PD_CR1 */
253817f42f0SPascal Paillet #define LDO1_PD			BIT(0)
254817f42f0SPascal Paillet #define LDO2_PD			BIT(1)
255817f42f0SPascal Paillet #define LDO3_PD			BIT(2)
256817f42f0SPascal Paillet #define LDO4_PD			BIT(3)
257817f42f0SPascal Paillet #define LDO5_PD			BIT(4)
258817f42f0SPascal Paillet #define LDO6_PD			BIT(5)
259817f42f0SPascal Paillet #define LDO7_PD			BIT(6)
260817f42f0SPascal Paillet #define LDO8_PD			BIT(7)
261817f42f0SPascal Paillet 
262817f42f0SPascal Paillet /* LDOS_PD_CR2 */
263817f42f0SPascal Paillet #define REFDDR_PD		BIT(0)
264817f42f0SPascal Paillet 
265817f42f0SPascal Paillet /* FS_OCP_CR1 */
266817f42f0SPascal Paillet #define FS_OCP_BUCK1		BIT(0)
267817f42f0SPascal Paillet #define FS_OCP_BUCK2		BIT(1)
268817f42f0SPascal Paillet #define FS_OCP_BUCK3		BIT(2)
269817f42f0SPascal Paillet #define FS_OCP_BUCK4		BIT(3)
270817f42f0SPascal Paillet #define FS_OCP_BUCK5		BIT(4)
271817f42f0SPascal Paillet #define FS_OCP_BUCK6		BIT(5)
272817f42f0SPascal Paillet #define FS_OCP_BUCK7		BIT(6)
273817f42f0SPascal Paillet #define FS_OCP_REFDDR		BIT(7)
274817f42f0SPascal Paillet 
275817f42f0SPascal Paillet /* FS_OCP_CR2 */
276817f42f0SPascal Paillet #define FS_OCP_LDO1		BIT(0)
277817f42f0SPascal Paillet #define FS_OCP_LDO2		BIT(1)
278817f42f0SPascal Paillet #define FS_OCP_LDO3		BIT(2)
279817f42f0SPascal Paillet #define FS_OCP_LDO4		BIT(3)
280817f42f0SPascal Paillet #define FS_OCP_LDO5		BIT(4)
281817f42f0SPascal Paillet #define FS_OCP_LDO6		BIT(5)
282817f42f0SPascal Paillet #define FS_OCP_LDO7		BIT(6)
283817f42f0SPascal Paillet #define FS_OCP_LDO8		BIT(7)
284817f42f0SPascal Paillet 
285*c1222e7bSBoerge Struempfel /* NVM_CR */
286*c1222e7bSBoerge Struempfel #define NVM_CMD_MASK		GENMASK_32(1, 0)
287*c1222e7bSBoerge Struempfel 
288*c1222e7bSBoerge Struempfel #define NVM_CMD_PROGRAM		1
289*c1222e7bSBoerge Struempfel #define NVM_CMD_READ		2
290*c1222e7bSBoerge Struempfel 
291*c1222e7bSBoerge Struempfel /* NVM_SR */
292*c1222e7bSBoerge Struempfel #define NVM_BUSY		BIT(0)
293*c1222e7bSBoerge Struempfel #define NVM_WRITE_FAIL		BIT(1)
294*c1222e7bSBoerge Struempfel 
295817f42f0SPascal Paillet /* IRQ definitions */
296817f42f0SPascal Paillet #define IT_PONKEY_F	0
297817f42f0SPascal Paillet #define IT_PONKEY_R	1
298817f42f0SPascal Paillet #define IT_BUCK1_OCP	16
299817f42f0SPascal Paillet #define IT_BUCK2_OCP	17
300817f42f0SPascal Paillet #define IT_BUCK3_OCP	18
301817f42f0SPascal Paillet #define IT_BUCK4_OCP	19
302817f42f0SPascal Paillet #define IT_BUCK5_OCP	20
303817f42f0SPascal Paillet #define IT_BUCK6_OCP	21
304817f42f0SPascal Paillet #define IT_BUCK7_OCP	22
305817f42f0SPascal Paillet #define IT_REFDDR_OCP	23
306817f42f0SPascal Paillet #define IT_LDO1_OCP	24
307817f42f0SPascal Paillet #define IT_LDO2_OCP	25
308817f42f0SPascal Paillet #define IT_LDO3_OCP	26
309817f42f0SPascal Paillet #define IT_LDO4_OCP	27
310817f42f0SPascal Paillet #define IT_LDO5_OCP	28
311817f42f0SPascal Paillet #define IT_LDO6_OCP	29
312817f42f0SPascal Paillet #define IT_LDO7_OCP	30
313817f42f0SPascal Paillet #define IT_LDO8_OCP	31
314817f42f0SPascal Paillet 
315817f42f0SPascal Paillet enum stpmic2_prop_id {
316817f42f0SPascal Paillet 	STPMIC2_MASK_RESET = 0,
317817f42f0SPascal Paillet 	STPMIC2_PULL_DOWN,
318817f42f0SPascal Paillet 	STPMIC2_BYPASS,		/* arg: 1=set 0=reset */
319817f42f0SPascal Paillet 	STPMIC2_SINK_SOURCE,
320817f42f0SPascal Paillet 	STPMIC2_OCP,
321817f42f0SPascal Paillet };
322817f42f0SPascal Paillet 
323817f42f0SPascal Paillet struct pmic_handle_s {
324817f42f0SPascal Paillet 	struct i2c_handle_s *i2c_handle;
325817f42f0SPascal Paillet 	uint32_t i2c_addr;
326817f42f0SPascal Paillet 	unsigned int pmic_status;
327817f42f0SPascal Paillet };
328817f42f0SPascal Paillet 
329817f42f0SPascal Paillet int stpmic2_register_read(struct pmic_handle_s *pmic,
330817f42f0SPascal Paillet 			  uint8_t register_id, uint8_t *value);
331817f42f0SPascal Paillet int stpmic2_register_write(struct pmic_handle_s *pmic,
332817f42f0SPascal Paillet 			   uint8_t register_id, uint8_t value);
333817f42f0SPascal Paillet int stpmic2_register_update(struct pmic_handle_s *pmic,
334817f42f0SPascal Paillet 			    uint8_t register_id, uint8_t value, uint8_t mask);
335817f42f0SPascal Paillet 
336817f42f0SPascal Paillet int stpmic2_regulator_set_state(struct pmic_handle_s *pmic,
337817f42f0SPascal Paillet 				uint8_t id, bool enable);
338817f42f0SPascal Paillet int stpmic2_regulator_get_state(struct pmic_handle_s *pmic,
339817f42f0SPascal Paillet 				uint8_t id, bool *enabled);
340817f42f0SPascal Paillet 
341817f42f0SPascal Paillet int stpmic2_regulator_levels_mv(struct pmic_handle_s *pmic,
342817f42f0SPascal Paillet 				uint8_t id, const uint16_t **levels,
343817f42f0SPascal Paillet 				size_t *levels_count);
344817f42f0SPascal Paillet int stpmic2_regulator_get_voltage(struct pmic_handle_s *pmic,
345817f42f0SPascal Paillet 				  uint8_t id, uint16_t *val);
346817f42f0SPascal Paillet int stpmic2_regulator_set_voltage(struct pmic_handle_s *pmic,
347817f42f0SPascal Paillet 				  uint8_t id, uint16_t millivolts);
348817f42f0SPascal Paillet 
349817f42f0SPascal Paillet void stpmic2_dump_regulators(struct pmic_handle_s *pmic);
350817f42f0SPascal Paillet 
351817f42f0SPascal Paillet int stpmic2_get_version(struct pmic_handle_s *pmic, uint8_t *val);
352817f42f0SPascal Paillet int stpmic2_get_product_id(struct pmic_handle_s *pmic, uint8_t *val);
353817f42f0SPascal Paillet 
354817f42f0SPascal Paillet int stpmic2_regulator_get_prop(struct pmic_handle_s *pmic, uint8_t id,
355817f42f0SPascal Paillet 			       enum stpmic2_prop_id prop);
356817f42f0SPascal Paillet 
357817f42f0SPascal Paillet int stpmic2_regulator_set_prop(struct pmic_handle_s *pmic, uint8_t id,
358817f42f0SPascal Paillet 			       enum stpmic2_prop_id prop, uint32_t arg);
359817f42f0SPascal Paillet 
360817f42f0SPascal Paillet #endif /*STPMIC2_H*/
361