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