xref: /openbmc/u-boot/include/power/sandbox_pmic.h (revision 83d290c56fab2d38cd1ab4c4cc7099559c1d5046)
1  /* SPDX-License-Identifier: GPL-2.0+ */
2  /*
3   *  Copyright (C) 2015 Samsung Electronics
4   *  Przemyslaw Marczak  <p.marczak@samsung.com>
5   */
6  
7  #ifndef _SANDBOX_PMIC_H_
8  #define  _SANDBOX_PMIC_H_
9  
10  #define SANDBOX_LDO_DRIVER		"sandbox_ldo"
11  #define SANDBOX_OF_LDO_PREFIX		"ldo"
12  #define SANDBOX_BUCK_DRIVER		"sandbox_buck"
13  #define SANDBOX_OF_BUCK_PREFIX		"buck"
14  
15  #define SANDBOX_BUCK_COUNT	3
16  #define SANDBOX_LDO_COUNT	2
17  /*
18   * Sandbox PMIC registers:
19   * We have only 12 significant registers, but we alloc 16 for padding.
20   */
21  enum {
22  	SANDBOX_PMIC_REG_BUCK1_UV = 0,
23  	SANDBOX_PMIC_REG_BUCK1_UA,
24  	SANDBOX_PMIC_REG_BUCK1_OM,
25  
26  	SANDBOX_PMIC_REG_BUCK2_UV,
27  	SANDBOX_PMIC_REG_BUCK2_UA,
28  	SANDBOX_PMIC_REG_BUCK2_OM,
29  
30  	SANDBOX_PMIC_REG_LDO_OFFSET,
31  	SANDBOX_PMIC_REG_LDO1_UV = SANDBOX_PMIC_REG_LDO_OFFSET,
32  	SANDBOX_PMIC_REG_LDO1_UA,
33  	SANDBOX_PMIC_REG_LDO1_OM,
34  
35  	SANDBOX_PMIC_REG_LDO2_UV,
36  	SANDBOX_PMIC_REG_LDO2_UA,
37  	SANDBOX_PMIC_REG_LDO2_OM,
38  
39  	SANDBOX_PMIC_REG_COUNT = 16,
40  };
41  
42  /* Register offset for output: micro Volts, micro Amps, Operation Mode */
43  enum {
44  	OUT_REG_UV = 0,
45  	OUT_REG_UA,
46  	OUT_REG_OM,
47  	OUT_REG_COUNT,
48  };
49  
50  /* Buck operation modes */
51  enum {
52  	BUCK_OM_OFF = 0,
53  	BUCK_OM_ON,
54  	BUCK_OM_PWM,
55  	BUCK_OM_COUNT,
56  };
57  
58  /* Ldo operation modes */
59  enum {
60  	LDO_OM_OFF = 0,
61  	LDO_OM_ON,
62  	LDO_OM_SLEEP,
63  	LDO_OM_STANDBY,
64  	LDO_OM_COUNT,
65  };
66  
67  /* BUCK1 Voltage: min: 0.8V, step: 25mV, max 2.4V */
68  #define OUT_BUCK1_UV_MIN	800000
69  #define OUT_BUCK1_UV_MAX	2400000
70  #define OUT_BUCK1_UV_STEP	25000
71  
72  /* BUCK1 Amperage: min: 150mA, step: 25mA, max: 250mA */
73  #define OUT_BUCK1_UA_MIN	150000
74  #define OUT_BUCK1_UA_MAX	250000
75  #define OUT_BUCK1_UA_STEP	25000
76  
77  /* BUCK2 Voltage: min: 0.75V, step: 50mV, max 3.95V */
78  #define OUT_BUCK2_UV_MIN	750000
79  #define OUT_BUCK2_UV_MAX	3950000
80  #define OUT_BUCK2_UV_STEP	50000
81  
82  /* LDO1 Voltage: min: 0.8V, step: 25mV, max 2.4V */
83  #define OUT_LDO1_UV_MIN		800000
84  #define OUT_LDO1_UV_MAX		2400000
85  #define OUT_LDO1_UV_STEP	25000
86  
87  /* LDO1 Amperage: min: 100mA, step: 50mA, max: 200mA */
88  #define OUT_LDO1_UA_MIN		100000
89  #define OUT_LDO1_UA_MAX		200000
90  #define OUT_LDO1_UA_STEP	50000
91  
92  /* LDO2 Voltage: min: 0.75V, step: 50mV, max 3.95V */
93  #define OUT_LDO2_UV_MIN		750000
94  #define OUT_LDO2_UV_MAX		3950000
95  #define OUT_LDO2_UV_STEP	50000
96  
97  /* register <-> value conversion */
98  #define REG2VAL(min, step, reg)		((min) + ((step) * (reg)))
99  #define VAL2REG(min, step, val)		(((val) - (min)) / (step))
100  
101  /* Operation mode id -> register value conversion */
102  #define OM2REG(x)			(x)
103  
104  /* Test data for: test/dm/power.c */
105  
106  /* BUCK names */
107  #define SANDBOX_BUCK1_DEVNAME	"buck1"
108  #define SANDBOX_BUCK1_PLATNAME	"SUPPLY_1.2V"
109  #define SANDBOX_BUCK2_DEVNAME	"buck2"
110  #define SANDBOX_BUCK2_PLATNAME	"SUPPLY_3.3V"
111  /* BUCK3: for testing fallback regulator prefix matching during bind */
112  #define SANDBOX_BUCK3_DEVNAME	"no_match_by_nodename"
113  #define SANDBOX_BUCK3_PLATNAME	"buck_SUPPLY_1.5V"
114  /* LDO names */
115  #define SANDBOX_LDO1_DEVNAME	"ldo1"
116  #define SANDBOX_LDO1_PLATNAME	"VDD_EMMC_1.8V"
117  #define SANDBOX_LDO2_DEVNAME	"ldo2"
118  #define SANDBOX_LDO2_PLATNAME	"VDD_LCD_3.3V"
119  
120  /*
121   * Expected regulators setup after call of:
122   * - regulator_autoset_by_name()
123   * - regulator_list_autoset()
124   */
125  
126  /* BUCK1: for testing regulator_autoset_by_name() */
127  #define SANDBOX_BUCK1_AUTOSET_EXPECTED_UV	1200000
128  #define SANDBOX_BUCK1_AUTOSET_EXPECTED_UA	200000
129  #define SANDBOX_BUCK1_AUTOSET_EXPECTED_ENABLE	true
130  
131  /* BUCK2: for testing sandbox ADC's supply */
132  #define SANDBOX_BUCK2_INITIAL_EXPECTED_UV	3000000
133  #define SANDBOX_BUCK2_SET_UV			3300000
134  
135  /* LDO1/2 for testing regulator_list_autoset() */
136  #define SANDBOX_LDO1_AUTOSET_EXPECTED_UV	1800000
137  #define SANDBOX_LDO1_AUTOSET_EXPECTED_UA	100000
138  #define SANDBOX_LDO1_AUTOSET_EXPECTED_ENABLE	true
139  
140  #define SANDBOX_LDO2_AUTOSET_EXPECTED_UV	3000000
141  #define SANDBOX_LDO2_AUTOSET_EXPECTED_UA	-ENOSYS
142  #define SANDBOX_LDO2_AUTOSET_EXPECTED_ENABLE	false
143  
144  #endif
145