xref: /openbmc/u-boot/include/power/sandbox_pmic.h (revision 5d387d0d)
1*5d387d0dSPrzemyslaw Marczak /*
2*5d387d0dSPrzemyslaw Marczak  *  Copyright (C) 2015 Samsung Electronics
3*5d387d0dSPrzemyslaw Marczak  *  Przemyslaw Marczak  <p.marczak@samsung.com>
4*5d387d0dSPrzemyslaw Marczak  *
5*5d387d0dSPrzemyslaw Marczak  * SPDX-License-Identifier:	GPL-2.0+
6*5d387d0dSPrzemyslaw Marczak  */
7*5d387d0dSPrzemyslaw Marczak 
8*5d387d0dSPrzemyslaw Marczak #ifndef _SANDBOX_PMIC_H_
9*5d387d0dSPrzemyslaw Marczak #define  _SANDBOX_PMIC_H_
10*5d387d0dSPrzemyslaw Marczak 
11*5d387d0dSPrzemyslaw Marczak #define SANDBOX_LDO_DRIVER		"sandbox_ldo"
12*5d387d0dSPrzemyslaw Marczak #define SANDBOX_OF_LDO_PREFIX		"ldo"
13*5d387d0dSPrzemyslaw Marczak #define SANDBOX_BUCK_DRIVER		"sandbox_buck"
14*5d387d0dSPrzemyslaw Marczak #define SANDBOX_OF_BUCK_PREFIX		"buck"
15*5d387d0dSPrzemyslaw Marczak 
16*5d387d0dSPrzemyslaw Marczak #define SANDBOX_BUCK_COUNT	2
17*5d387d0dSPrzemyslaw Marczak #define SANDBOX_LDO_COUNT	2
18*5d387d0dSPrzemyslaw Marczak /*
19*5d387d0dSPrzemyslaw Marczak  * Sandbox PMIC registers:
20*5d387d0dSPrzemyslaw Marczak  * We have only 12 significant registers, but we alloc 16 for padding.
21*5d387d0dSPrzemyslaw Marczak  */
22*5d387d0dSPrzemyslaw Marczak enum {
23*5d387d0dSPrzemyslaw Marczak 	SANDBOX_PMIC_REG_BUCK1_UV = 0,
24*5d387d0dSPrzemyslaw Marczak 	SANDBOX_PMIC_REG_BUCK1_UA,
25*5d387d0dSPrzemyslaw Marczak 	SANDBOX_PMIC_REG_BUCK1_OM,
26*5d387d0dSPrzemyslaw Marczak 
27*5d387d0dSPrzemyslaw Marczak 	SANDBOX_PMIC_REG_BUCK2_UV,
28*5d387d0dSPrzemyslaw Marczak 	SANDBOX_PMIC_REG_BUCK2_UA,
29*5d387d0dSPrzemyslaw Marczak 	SANDBOX_PMIC_REG_BUCK2_OM,
30*5d387d0dSPrzemyslaw Marczak 
31*5d387d0dSPrzemyslaw Marczak 	SANDBOX_PMIC_REG_LDO_OFFSET,
32*5d387d0dSPrzemyslaw Marczak 	SANDBOX_PMIC_REG_LDO1_UV = SANDBOX_PMIC_REG_LDO_OFFSET,
33*5d387d0dSPrzemyslaw Marczak 	SANDBOX_PMIC_REG_LDO1_UA,
34*5d387d0dSPrzemyslaw Marczak 	SANDBOX_PMIC_REG_LDO1_OM,
35*5d387d0dSPrzemyslaw Marczak 
36*5d387d0dSPrzemyslaw Marczak 	SANDBOX_PMIC_REG_LDO2_UV,
37*5d387d0dSPrzemyslaw Marczak 	SANDBOX_PMIC_REG_LDO2_UA,
38*5d387d0dSPrzemyslaw Marczak 	SANDBOX_PMIC_REG_LDO2_OM,
39*5d387d0dSPrzemyslaw Marczak 
40*5d387d0dSPrzemyslaw Marczak 	SANDBOX_PMIC_REG_COUNT = 16,
41*5d387d0dSPrzemyslaw Marczak };
42*5d387d0dSPrzemyslaw Marczak 
43*5d387d0dSPrzemyslaw Marczak /* Register offset for output: micro Volts, micro Amps, Operation Mode */
44*5d387d0dSPrzemyslaw Marczak enum {
45*5d387d0dSPrzemyslaw Marczak 	OUT_REG_UV = 0,
46*5d387d0dSPrzemyslaw Marczak 	OUT_REG_UA,
47*5d387d0dSPrzemyslaw Marczak 	OUT_REG_OM,
48*5d387d0dSPrzemyslaw Marczak 	OUT_REG_COUNT,
49*5d387d0dSPrzemyslaw Marczak };
50*5d387d0dSPrzemyslaw Marczak 
51*5d387d0dSPrzemyslaw Marczak /* Buck operation modes */
52*5d387d0dSPrzemyslaw Marczak enum {
53*5d387d0dSPrzemyslaw Marczak 	BUCK_OM_OFF = 0,
54*5d387d0dSPrzemyslaw Marczak 	BUCK_OM_ON,
55*5d387d0dSPrzemyslaw Marczak 	BUCK_OM_PWM,
56*5d387d0dSPrzemyslaw Marczak 	BUCK_OM_COUNT,
57*5d387d0dSPrzemyslaw Marczak };
58*5d387d0dSPrzemyslaw Marczak 
59*5d387d0dSPrzemyslaw Marczak /* Ldo operation modes */
60*5d387d0dSPrzemyslaw Marczak enum {
61*5d387d0dSPrzemyslaw Marczak 	LDO_OM_OFF = 0,
62*5d387d0dSPrzemyslaw Marczak 	LDO_OM_ON,
63*5d387d0dSPrzemyslaw Marczak 	LDO_OM_SLEEP,
64*5d387d0dSPrzemyslaw Marczak 	LDO_OM_STANDBY,
65*5d387d0dSPrzemyslaw Marczak 	LDO_OM_COUNT,
66*5d387d0dSPrzemyslaw Marczak };
67*5d387d0dSPrzemyslaw Marczak 
68*5d387d0dSPrzemyslaw Marczak /* BUCK1 Voltage: min: 0.8V, step: 25mV, max 2.4V */
69*5d387d0dSPrzemyslaw Marczak #define OUT_BUCK1_UV_MIN	800000
70*5d387d0dSPrzemyslaw Marczak #define OUT_BUCK1_UV_MAX	2400000
71*5d387d0dSPrzemyslaw Marczak #define OUT_BUCK1_UV_STEP	25000
72*5d387d0dSPrzemyslaw Marczak 
73*5d387d0dSPrzemyslaw Marczak /* BUCK1 Amperage: min: 150mA, step: 25mA, max: 250mA */
74*5d387d0dSPrzemyslaw Marczak #define OUT_BUCK1_UA_MIN	150000
75*5d387d0dSPrzemyslaw Marczak #define OUT_BUCK1_UA_MAX	250000
76*5d387d0dSPrzemyslaw Marczak #define OUT_BUCK1_UA_STEP	25000
77*5d387d0dSPrzemyslaw Marczak 
78*5d387d0dSPrzemyslaw Marczak /* BUCK2 Voltage: min: 0.75V, step: 50mV, max 3.95V */
79*5d387d0dSPrzemyslaw Marczak #define OUT_BUCK2_UV_MIN	750000
80*5d387d0dSPrzemyslaw Marczak #define OUT_BUCK2_UV_MAX	3950000
81*5d387d0dSPrzemyslaw Marczak #define OUT_BUCK2_UV_STEP	50000
82*5d387d0dSPrzemyslaw Marczak 
83*5d387d0dSPrzemyslaw Marczak /* LDO1 Voltage: min: 0.8V, step: 25mV, max 2.4V */
84*5d387d0dSPrzemyslaw Marczak #define OUT_LDO1_UV_MIN		800000
85*5d387d0dSPrzemyslaw Marczak #define OUT_LDO1_UV_MAX		2400000
86*5d387d0dSPrzemyslaw Marczak #define OUT_LDO1_UV_STEP	25000
87*5d387d0dSPrzemyslaw Marczak 
88*5d387d0dSPrzemyslaw Marczak /* LDO1 Amperage: min: 100mA, step: 50mA, max: 200mA */
89*5d387d0dSPrzemyslaw Marczak #define OUT_LDO1_UA_MIN		100000
90*5d387d0dSPrzemyslaw Marczak #define OUT_LDO1_UA_MAX		200000
91*5d387d0dSPrzemyslaw Marczak #define OUT_LDO1_UA_STEP	50000
92*5d387d0dSPrzemyslaw Marczak 
93*5d387d0dSPrzemyslaw Marczak /* LDO2 Voltage: min: 0.75V, step: 50mV, max 3.95V */
94*5d387d0dSPrzemyslaw Marczak #define OUT_LDO2_UV_MIN		750000
95*5d387d0dSPrzemyslaw Marczak #define OUT_LDO2_UV_MAX		3950000
96*5d387d0dSPrzemyslaw Marczak #define OUT_LDO2_UV_STEP	50000
97*5d387d0dSPrzemyslaw Marczak 
98*5d387d0dSPrzemyslaw Marczak /* register <-> value conversion */
99*5d387d0dSPrzemyslaw Marczak #define REG2VAL(min, step, reg)		((min) + ((step) * (reg)))
100*5d387d0dSPrzemyslaw Marczak #define VAL2REG(min, step, val)		(((val) - (min)) / (step))
101*5d387d0dSPrzemyslaw Marczak 
102*5d387d0dSPrzemyslaw Marczak /* Operation mode id -> register value conversion */
103*5d387d0dSPrzemyslaw Marczak #define OM2REG(x)			(x)
104*5d387d0dSPrzemyslaw Marczak 
105*5d387d0dSPrzemyslaw Marczak #endif
106