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 */
21enum {
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 */
43enum {
44	OUT_REG_UV = 0,
45	OUT_REG_UA,
46	OUT_REG_OM,
47	OUT_REG_COUNT,
48};
49
50/* Buck operation modes */
51enum {
52	BUCK_OM_OFF = 0,
53	BUCK_OM_ON,
54	BUCK_OM_PWM,
55	BUCK_OM_COUNT,
56};
57
58/* Ldo operation modes */
59enum {
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