1e8f339e0SPrzemyslaw Marczak /*
2e8f339e0SPrzemyslaw Marczak * Tests for the driver model regulator API
3e8f339e0SPrzemyslaw Marczak *
4e8f339e0SPrzemyslaw Marczak * Copyright (c) 2015 Samsung Electronics
5e8f339e0SPrzemyslaw Marczak * Przemyslaw Marczak <p.marczak@samsung.com>
6e8f339e0SPrzemyslaw Marczak *
7e8f339e0SPrzemyslaw Marczak * SPDX-License-Identifier: GPL-2.0+
8e8f339e0SPrzemyslaw Marczak */
9e8f339e0SPrzemyslaw Marczak
10e8f339e0SPrzemyslaw Marczak #include <common.h>
11e8f339e0SPrzemyslaw Marczak #include <errno.h>
12e8f339e0SPrzemyslaw Marczak #include <dm.h>
13e8f339e0SPrzemyslaw Marczak #include <fdtdec.h>
14e8f339e0SPrzemyslaw Marczak #include <malloc.h>
15e8f339e0SPrzemyslaw Marczak #include <dm/device-internal.h>
16e8f339e0SPrzemyslaw Marczak #include <dm/root.h>
17e8f339e0SPrzemyslaw Marczak #include <dm/util.h>
18e8f339e0SPrzemyslaw Marczak #include <dm/test.h>
19e8f339e0SPrzemyslaw Marczak #include <dm/uclass-internal.h>
20e8f339e0SPrzemyslaw Marczak #include <power/pmic.h>
21e8f339e0SPrzemyslaw Marczak #include <power/regulator.h>
22e8f339e0SPrzemyslaw Marczak #include <power/sandbox_pmic.h>
23e721b882SJoe Hershberger #include <test/ut.h>
24e8f339e0SPrzemyslaw Marczak
25e8f339e0SPrzemyslaw Marczak DECLARE_GLOBAL_DATA_PTR;
26e8f339e0SPrzemyslaw Marczak
27e8f339e0SPrzemyslaw Marczak enum {
28e8f339e0SPrzemyslaw Marczak BUCK1,
29e8f339e0SPrzemyslaw Marczak BUCK2,
30*29b69173SFelix Brack BUCK3,
31e8f339e0SPrzemyslaw Marczak LDO1,
32e8f339e0SPrzemyslaw Marczak LDO2,
33e8f339e0SPrzemyslaw Marczak OUTPUT_COUNT,
34e8f339e0SPrzemyslaw Marczak };
35e8f339e0SPrzemyslaw Marczak
36e8f339e0SPrzemyslaw Marczak enum {
37e8f339e0SPrzemyslaw Marczak DEVNAME = 0,
38e8f339e0SPrzemyslaw Marczak PLATNAME,
39e8f339e0SPrzemyslaw Marczak OUTPUT_NAME_COUNT,
40e8f339e0SPrzemyslaw Marczak };
41e8f339e0SPrzemyslaw Marczak
42e8f339e0SPrzemyslaw Marczak static const char *regulator_names[OUTPUT_COUNT][OUTPUT_NAME_COUNT] = {
43e8f339e0SPrzemyslaw Marczak /* devname, platname */
44e8f339e0SPrzemyslaw Marczak { SANDBOX_BUCK1_DEVNAME, SANDBOX_BUCK1_PLATNAME },
45e8f339e0SPrzemyslaw Marczak { SANDBOX_BUCK2_DEVNAME, SANDBOX_BUCK2_PLATNAME },
46*29b69173SFelix Brack { SANDBOX_BUCK3_DEVNAME, SANDBOX_BUCK3_PLATNAME },
47e8f339e0SPrzemyslaw Marczak { SANDBOX_LDO1_DEVNAME, SANDBOX_LDO1_PLATNAME},
48e8f339e0SPrzemyslaw Marczak { SANDBOX_LDO2_DEVNAME, SANDBOX_LDO2_PLATNAME},
49e8f339e0SPrzemyslaw Marczak };
50e8f339e0SPrzemyslaw Marczak
51e8f339e0SPrzemyslaw Marczak /* Test regulator get method */
dm_test_power_regulator_get(struct unit_test_state * uts)52e721b882SJoe Hershberger static int dm_test_power_regulator_get(struct unit_test_state *uts)
53e8f339e0SPrzemyslaw Marczak {
54e8f339e0SPrzemyslaw Marczak struct dm_regulator_uclass_platdata *uc_pdata;
55e8f339e0SPrzemyslaw Marczak struct udevice *dev_by_devname;
56e8f339e0SPrzemyslaw Marczak struct udevice *dev_by_platname;
57e8f339e0SPrzemyslaw Marczak const char *devname;
58e8f339e0SPrzemyslaw Marczak const char *platname;
59e8f339e0SPrzemyslaw Marczak int i;
60e8f339e0SPrzemyslaw Marczak
61e8f339e0SPrzemyslaw Marczak for (i = 0; i < OUTPUT_COUNT; i++) {
62e8f339e0SPrzemyslaw Marczak /*
63e8f339e0SPrzemyslaw Marczak * Do the test for each regulator's devname and platname,
64e8f339e0SPrzemyslaw Marczak * which are related to a single device.
65e8f339e0SPrzemyslaw Marczak */
66e8f339e0SPrzemyslaw Marczak devname = regulator_names[i][DEVNAME];
67e8f339e0SPrzemyslaw Marczak platname = regulator_names[i][PLATNAME];
68e8f339e0SPrzemyslaw Marczak
69e8f339e0SPrzemyslaw Marczak /*
70e8f339e0SPrzemyslaw Marczak * Check, that regulator_get_by_devname() function, returns
71e8f339e0SPrzemyslaw Marczak * a device with the name equal to the requested one.
72e8f339e0SPrzemyslaw Marczak */
73e8f339e0SPrzemyslaw Marczak ut_assertok(regulator_get_by_devname(devname, &dev_by_devname));
74e8f339e0SPrzemyslaw Marczak ut_asserteq_str(devname, dev_by_devname->name);
75e8f339e0SPrzemyslaw Marczak
76e8f339e0SPrzemyslaw Marczak /*
77e8f339e0SPrzemyslaw Marczak * Check, that regulator_get_by_platname() function, returns
78e8f339e0SPrzemyslaw Marczak * a device with the name equal to the requested one.
79e8f339e0SPrzemyslaw Marczak */
80e8f339e0SPrzemyslaw Marczak ut_assertok(regulator_get_by_platname(platname, &dev_by_platname));
81e8f339e0SPrzemyslaw Marczak uc_pdata = dev_get_uclass_platdata(dev_by_platname);
82e8f339e0SPrzemyslaw Marczak ut_assert(uc_pdata);
83e8f339e0SPrzemyslaw Marczak ut_asserteq_str(platname, uc_pdata->name);
84e8f339e0SPrzemyslaw Marczak
85e8f339e0SPrzemyslaw Marczak /*
86e8f339e0SPrzemyslaw Marczak * Check, that the pointers returned by both get functions,
87e8f339e0SPrzemyslaw Marczak * points to the same regulator device.
88e8f339e0SPrzemyslaw Marczak */
89e8f339e0SPrzemyslaw Marczak ut_asserteq_ptr(dev_by_devname, dev_by_platname);
90e8f339e0SPrzemyslaw Marczak }
91e8f339e0SPrzemyslaw Marczak
92e8f339e0SPrzemyslaw Marczak return 0;
93e8f339e0SPrzemyslaw Marczak }
94e8f339e0SPrzemyslaw Marczak DM_TEST(dm_test_power_regulator_get, DM_TESTF_SCAN_FDT);
95e8f339e0SPrzemyslaw Marczak
96e8f339e0SPrzemyslaw Marczak /* Test regulator set and get Voltage method */
dm_test_power_regulator_set_get_voltage(struct unit_test_state * uts)97e721b882SJoe Hershberger static int dm_test_power_regulator_set_get_voltage(struct unit_test_state *uts)
98e8f339e0SPrzemyslaw Marczak {
99e8f339e0SPrzemyslaw Marczak struct dm_regulator_uclass_platdata *uc_pdata;
100e8f339e0SPrzemyslaw Marczak struct udevice *dev;
101e8f339e0SPrzemyslaw Marczak const char *platname;
102e8f339e0SPrzemyslaw Marczak int val_set, val_get;
103e8f339e0SPrzemyslaw Marczak
104e8f339e0SPrzemyslaw Marczak /* Set and get Voltage of BUCK1 - set to 'min' constraint */
105e8f339e0SPrzemyslaw Marczak platname = regulator_names[BUCK1][PLATNAME];
106e8f339e0SPrzemyslaw Marczak ut_assertok(regulator_get_by_platname(platname, &dev));
107e8f339e0SPrzemyslaw Marczak
108e8f339e0SPrzemyslaw Marczak uc_pdata = dev_get_uclass_platdata(dev);
109e8f339e0SPrzemyslaw Marczak ut_assert(uc_pdata);
110e8f339e0SPrzemyslaw Marczak
111e8f339e0SPrzemyslaw Marczak val_set = uc_pdata->min_uV;
112e8f339e0SPrzemyslaw Marczak ut_assertok(regulator_set_value(dev, val_set));
113e8f339e0SPrzemyslaw Marczak
114e8f339e0SPrzemyslaw Marczak val_get = regulator_get_value(dev);
115e8f339e0SPrzemyslaw Marczak ut_assert(val_get >= 0);
116e8f339e0SPrzemyslaw Marczak
117e8f339e0SPrzemyslaw Marczak ut_asserteq(val_set, val_get);
118e8f339e0SPrzemyslaw Marczak
119e8f339e0SPrzemyslaw Marczak return 0;
120e8f339e0SPrzemyslaw Marczak }
121e8f339e0SPrzemyslaw Marczak DM_TEST(dm_test_power_regulator_set_get_voltage, DM_TESTF_SCAN_FDT);
122e8f339e0SPrzemyslaw Marczak
123e8f339e0SPrzemyslaw Marczak /* Test regulator set and get Current method */
dm_test_power_regulator_set_get_current(struct unit_test_state * uts)124e721b882SJoe Hershberger static int dm_test_power_regulator_set_get_current(struct unit_test_state *uts)
125e8f339e0SPrzemyslaw Marczak {
126e8f339e0SPrzemyslaw Marczak struct dm_regulator_uclass_platdata *uc_pdata;
127e8f339e0SPrzemyslaw Marczak struct udevice *dev;
128e8f339e0SPrzemyslaw Marczak const char *platname;
129e8f339e0SPrzemyslaw Marczak int val_set, val_get;
130e8f339e0SPrzemyslaw Marczak
131e8f339e0SPrzemyslaw Marczak /* Set and get the Current of LDO1 - set to 'min' constraint */
132e8f339e0SPrzemyslaw Marczak platname = regulator_names[LDO1][PLATNAME];
133e8f339e0SPrzemyslaw Marczak ut_assertok(regulator_get_by_platname(platname, &dev));
134e8f339e0SPrzemyslaw Marczak
135e8f339e0SPrzemyslaw Marczak uc_pdata = dev_get_uclass_platdata(dev);
136e8f339e0SPrzemyslaw Marczak ut_assert(uc_pdata);
137e8f339e0SPrzemyslaw Marczak
138e8f339e0SPrzemyslaw Marczak val_set = uc_pdata->min_uA;
139e8f339e0SPrzemyslaw Marczak ut_assertok(regulator_set_current(dev, val_set));
140e8f339e0SPrzemyslaw Marczak
141e8f339e0SPrzemyslaw Marczak val_get = regulator_get_current(dev);
142e8f339e0SPrzemyslaw Marczak ut_assert(val_get >= 0);
143e8f339e0SPrzemyslaw Marczak
144e8f339e0SPrzemyslaw Marczak ut_asserteq(val_set, val_get);
145e8f339e0SPrzemyslaw Marczak
146e8f339e0SPrzemyslaw Marczak /* Check LDO2 current limit constraints - should be -ENODATA */
147e8f339e0SPrzemyslaw Marczak platname = regulator_names[LDO2][PLATNAME];
148e8f339e0SPrzemyslaw Marczak ut_assertok(regulator_get_by_platname(platname, &dev));
149e8f339e0SPrzemyslaw Marczak
150e8f339e0SPrzemyslaw Marczak uc_pdata = dev_get_uclass_platdata(dev);
151e8f339e0SPrzemyslaw Marczak ut_assert(uc_pdata);
152e8f339e0SPrzemyslaw Marczak ut_asserteq(-ENODATA, uc_pdata->min_uA);
153e8f339e0SPrzemyslaw Marczak ut_asserteq(-ENODATA, uc_pdata->max_uA);
154e8f339e0SPrzemyslaw Marczak
155e8f339e0SPrzemyslaw Marczak /* Try set the Current of LDO2 - should return -ENOSYS */
156e8f339e0SPrzemyslaw Marczak ut_asserteq(-ENOSYS, regulator_set_current(dev, 0));
157e8f339e0SPrzemyslaw Marczak
158e8f339e0SPrzemyslaw Marczak return 0;
159e8f339e0SPrzemyslaw Marczak }
160e8f339e0SPrzemyslaw Marczak DM_TEST(dm_test_power_regulator_set_get_current, DM_TESTF_SCAN_FDT);
161e8f339e0SPrzemyslaw Marczak
162e8f339e0SPrzemyslaw Marczak /* Test regulator set and get Enable method */
dm_test_power_regulator_set_get_enable(struct unit_test_state * uts)163e721b882SJoe Hershberger static int dm_test_power_regulator_set_get_enable(struct unit_test_state *uts)
164e8f339e0SPrzemyslaw Marczak {
165e8f339e0SPrzemyslaw Marczak const char *platname;
166e8f339e0SPrzemyslaw Marczak struct udevice *dev;
167e8f339e0SPrzemyslaw Marczak bool val_set = true;
168e8f339e0SPrzemyslaw Marczak
169e8f339e0SPrzemyslaw Marczak /* Set the Enable of LDO1 - default is disabled */
170e8f339e0SPrzemyslaw Marczak platname = regulator_names[LDO1][PLATNAME];
171e8f339e0SPrzemyslaw Marczak ut_assertok(regulator_get_by_platname(platname, &dev));
172e8f339e0SPrzemyslaw Marczak ut_assertok(regulator_set_enable(dev, val_set));
173e8f339e0SPrzemyslaw Marczak
174e8f339e0SPrzemyslaw Marczak /* Get the Enable state of LDO1 and compare it with the requested one */
175e8f339e0SPrzemyslaw Marczak ut_asserteq(regulator_get_enable(dev), val_set);
176e8f339e0SPrzemyslaw Marczak
177e8f339e0SPrzemyslaw Marczak return 0;
178e8f339e0SPrzemyslaw Marczak }
179e8f339e0SPrzemyslaw Marczak DM_TEST(dm_test_power_regulator_set_get_enable, DM_TESTF_SCAN_FDT);
180e8f339e0SPrzemyslaw Marczak
181e8f339e0SPrzemyslaw Marczak /* Test regulator set and get mode method */
dm_test_power_regulator_set_get_mode(struct unit_test_state * uts)182e721b882SJoe Hershberger static int dm_test_power_regulator_set_get_mode(struct unit_test_state *uts)
183e8f339e0SPrzemyslaw Marczak {
184e8f339e0SPrzemyslaw Marczak const char *platname;
185e8f339e0SPrzemyslaw Marczak struct udevice *dev;
186e8f339e0SPrzemyslaw Marczak int val_set = LDO_OM_SLEEP;
187e8f339e0SPrzemyslaw Marczak
188e8f339e0SPrzemyslaw Marczak /* Set the mode id to LDO_OM_SLEEP of LDO1 - default is LDO_OM_OFF */
189e8f339e0SPrzemyslaw Marczak platname = regulator_names[LDO1][PLATNAME];
190e8f339e0SPrzemyslaw Marczak ut_assertok(regulator_get_by_platname(platname, &dev));
191e8f339e0SPrzemyslaw Marczak ut_assertok(regulator_set_mode(dev, val_set));
192e8f339e0SPrzemyslaw Marczak
193e8f339e0SPrzemyslaw Marczak /* Get the mode id of LDO1 and compare it with the requested one */
194e8f339e0SPrzemyslaw Marczak ut_asserteq(regulator_get_mode(dev), val_set);
195e8f339e0SPrzemyslaw Marczak
196e8f339e0SPrzemyslaw Marczak return 0;
197e8f339e0SPrzemyslaw Marczak }
198e8f339e0SPrzemyslaw Marczak DM_TEST(dm_test_power_regulator_set_get_mode, DM_TESTF_SCAN_FDT);
199e8f339e0SPrzemyslaw Marczak
200e8f339e0SPrzemyslaw Marczak /* Test regulator autoset method */
dm_test_power_regulator_autoset(struct unit_test_state * uts)201e721b882SJoe Hershberger static int dm_test_power_regulator_autoset(struct unit_test_state *uts)
202e8f339e0SPrzemyslaw Marczak {
203e8f339e0SPrzemyslaw Marczak const char *platname;
204e8f339e0SPrzemyslaw Marczak struct udevice *dev, *dev_autoset;
205e8f339e0SPrzemyslaw Marczak
206e8f339e0SPrzemyslaw Marczak /*
207e8f339e0SPrzemyslaw Marczak * Test the BUCK1 with fdt properties
208e8f339e0SPrzemyslaw Marczak * - min-microvolt = max-microvolt = 1200000
209e8f339e0SPrzemyslaw Marczak * - min-microamp = max-microamp = 200000
210e8f339e0SPrzemyslaw Marczak * - always-on = set
211e8f339e0SPrzemyslaw Marczak * - boot-on = not set
212e8f339e0SPrzemyslaw Marczak * Expected output state: uV=1200000; uA=200000; output enabled
213e8f339e0SPrzemyslaw Marczak */
214e8f339e0SPrzemyslaw Marczak platname = regulator_names[BUCK1][PLATNAME];
2153b55d30fSSimon Glass ut_assertok(regulator_autoset_by_name(platname, &dev_autoset));
216e8f339e0SPrzemyslaw Marczak
217e8f339e0SPrzemyslaw Marczak /* Check, that the returned device is proper */
218e8f339e0SPrzemyslaw Marczak ut_assertok(regulator_get_by_platname(platname, &dev));
219e8f339e0SPrzemyslaw Marczak ut_asserteq_ptr(dev, dev_autoset);
220e8f339e0SPrzemyslaw Marczak
221e8f339e0SPrzemyslaw Marczak /* Check the setup after autoset */
222e8f339e0SPrzemyslaw Marczak ut_asserteq(regulator_get_value(dev),
223e8f339e0SPrzemyslaw Marczak SANDBOX_BUCK1_AUTOSET_EXPECTED_UV);
224e8f339e0SPrzemyslaw Marczak ut_asserteq(regulator_get_current(dev),
225e8f339e0SPrzemyslaw Marczak SANDBOX_BUCK1_AUTOSET_EXPECTED_UA);
226e8f339e0SPrzemyslaw Marczak ut_asserteq(regulator_get_enable(dev),
227e8f339e0SPrzemyslaw Marczak SANDBOX_BUCK1_AUTOSET_EXPECTED_ENABLE);
228e8f339e0SPrzemyslaw Marczak
229e8f339e0SPrzemyslaw Marczak return 0;
230e8f339e0SPrzemyslaw Marczak }
231e8f339e0SPrzemyslaw Marczak DM_TEST(dm_test_power_regulator_autoset, DM_TESTF_SCAN_FDT);
232e8f339e0SPrzemyslaw Marczak
233e8f339e0SPrzemyslaw Marczak /*
234e8f339e0SPrzemyslaw Marczak * Struct setting: to keep the expected output settings.
235e8f339e0SPrzemyslaw Marczak * @voltage: Voltage value [uV]
236e8f339e0SPrzemyslaw Marczak * @current: Current value [uA]
237e8f339e0SPrzemyslaw Marczak * @enable: output enable state: true/false
238e8f339e0SPrzemyslaw Marczak */
239e8f339e0SPrzemyslaw Marczak struct setting {
240e8f339e0SPrzemyslaw Marczak int voltage;
241e8f339e0SPrzemyslaw Marczak int current;
242e8f339e0SPrzemyslaw Marczak bool enable;
243e8f339e0SPrzemyslaw Marczak };
244e8f339e0SPrzemyslaw Marczak
245e8f339e0SPrzemyslaw Marczak /*
246e8f339e0SPrzemyslaw Marczak * platname_list: an array of regulator platform names.
247e8f339e0SPrzemyslaw Marczak * For testing regulator_list_autoset() for outputs:
248e8f339e0SPrzemyslaw Marczak * - LDO1
249e8f339e0SPrzemyslaw Marczak * - LDO2
250e8f339e0SPrzemyslaw Marczak */
251e8f339e0SPrzemyslaw Marczak static const char *platname_list[] = {
252e8f339e0SPrzemyslaw Marczak SANDBOX_LDO1_PLATNAME,
253e8f339e0SPrzemyslaw Marczak SANDBOX_LDO2_PLATNAME,
254e8f339e0SPrzemyslaw Marczak NULL,
255e8f339e0SPrzemyslaw Marczak };
256e8f339e0SPrzemyslaw Marczak
257e8f339e0SPrzemyslaw Marczak /*
258e8f339e0SPrzemyslaw Marczak * expected_setting_list: an array of regulator output setting, expected after
259e8f339e0SPrzemyslaw Marczak * call of the regulator_list_autoset() for the "platname_list" array.
260e8f339e0SPrzemyslaw Marczak * For testing results of regulator_list_autoset() for outputs:
261e8f339e0SPrzemyslaw Marczak * - LDO1
262e8f339e0SPrzemyslaw Marczak * - LDO2
263e8f339e0SPrzemyslaw Marczak * The settings are defined in: include/power/sandbox_pmic.h
264e8f339e0SPrzemyslaw Marczak */
265e8f339e0SPrzemyslaw Marczak static const struct setting expected_setting_list[] = {
266e8f339e0SPrzemyslaw Marczak [0] = { /* LDO1 */
267e8f339e0SPrzemyslaw Marczak .voltage = SANDBOX_LDO1_AUTOSET_EXPECTED_UV,
268e8f339e0SPrzemyslaw Marczak .current = SANDBOX_LDO1_AUTOSET_EXPECTED_UA,
269e8f339e0SPrzemyslaw Marczak .enable = SANDBOX_LDO1_AUTOSET_EXPECTED_ENABLE,
270e8f339e0SPrzemyslaw Marczak },
271e8f339e0SPrzemyslaw Marczak [1] = { /* LDO2 */
272e8f339e0SPrzemyslaw Marczak .voltage = SANDBOX_LDO2_AUTOSET_EXPECTED_UV,
273e8f339e0SPrzemyslaw Marczak .current = SANDBOX_LDO2_AUTOSET_EXPECTED_UA,
274e8f339e0SPrzemyslaw Marczak .enable = SANDBOX_LDO2_AUTOSET_EXPECTED_ENABLE,
275e8f339e0SPrzemyslaw Marczak },
276e8f339e0SPrzemyslaw Marczak };
277e8f339e0SPrzemyslaw Marczak
278e8f339e0SPrzemyslaw Marczak static int list_count = ARRAY_SIZE(expected_setting_list);
279e8f339e0SPrzemyslaw Marczak
280e8f339e0SPrzemyslaw Marczak /* Test regulator list autoset method */
dm_test_power_regulator_autoset_list(struct unit_test_state * uts)281e721b882SJoe Hershberger static int dm_test_power_regulator_autoset_list(struct unit_test_state *uts)
282e8f339e0SPrzemyslaw Marczak {
283e8f339e0SPrzemyslaw Marczak struct udevice *dev_list[2], *dev;
284e8f339e0SPrzemyslaw Marczak int i;
285e8f339e0SPrzemyslaw Marczak
286e8f339e0SPrzemyslaw Marczak /*
287e8f339e0SPrzemyslaw Marczak * Test the settings of the regulator list:
288e8f339e0SPrzemyslaw Marczak * LDO1 with fdt properties:
289e8f339e0SPrzemyslaw Marczak * - min-microvolt = max-microvolt = 1800000
290e8f339e0SPrzemyslaw Marczak * - min-microamp = max-microamp = 100000
291e8f339e0SPrzemyslaw Marczak * - always-on = not set
292e8f339e0SPrzemyslaw Marczak * - boot-on = set
293e8f339e0SPrzemyslaw Marczak * Expected output state: uV=1800000; uA=100000; output enabled
294e8f339e0SPrzemyslaw Marczak *
295e8f339e0SPrzemyslaw Marczak * LDO2 with fdt properties:
296e8f339e0SPrzemyslaw Marczak * - min-microvolt = max-microvolt = 3300000
297e8f339e0SPrzemyslaw Marczak * - always-on = not set
298e8f339e0SPrzemyslaw Marczak * - boot-on = not set
299e8f339e0SPrzemyslaw Marczak * Expected output state: uV=300000(default); output disabled(default)
300e8f339e0SPrzemyslaw Marczak * The expected settings are defined in: include/power/sandbox_pmic.h.
301e8f339e0SPrzemyslaw Marczak */
302e8f339e0SPrzemyslaw Marczak ut_assertok(regulator_list_autoset(platname_list, dev_list, false));
303e8f339e0SPrzemyslaw Marczak
304e8f339e0SPrzemyslaw Marczak for (i = 0; i < list_count; i++) {
305e8f339e0SPrzemyslaw Marczak /* Check, that the returned device is non-NULL */
306e8f339e0SPrzemyslaw Marczak ut_assert(dev_list[i]);
307e8f339e0SPrzemyslaw Marczak
308e8f339e0SPrzemyslaw Marczak /* Check, that the returned device is proper */
309e8f339e0SPrzemyslaw Marczak ut_assertok(regulator_get_by_platname(platname_list[i], &dev));
310e8f339e0SPrzemyslaw Marczak ut_asserteq_ptr(dev_list[i], dev);
311e8f339e0SPrzemyslaw Marczak
312e8f339e0SPrzemyslaw Marczak /* Check, that regulator output Voltage value is as expected */
313e8f339e0SPrzemyslaw Marczak ut_asserteq(regulator_get_value(dev_list[i]),
314e8f339e0SPrzemyslaw Marczak expected_setting_list[i].voltage);
315e8f339e0SPrzemyslaw Marczak
316e8f339e0SPrzemyslaw Marczak /* Check, that regulator output Current value is as expected */
317e8f339e0SPrzemyslaw Marczak ut_asserteq(regulator_get_current(dev_list[i]),
318e8f339e0SPrzemyslaw Marczak expected_setting_list[i].current);
319e8f339e0SPrzemyslaw Marczak
320e8f339e0SPrzemyslaw Marczak /* Check, that regulator output Enable state is as expected */
321e8f339e0SPrzemyslaw Marczak ut_asserteq(regulator_get_enable(dev_list[i]),
322e8f339e0SPrzemyslaw Marczak expected_setting_list[i].enable);
323e8f339e0SPrzemyslaw Marczak }
324e8f339e0SPrzemyslaw Marczak
325e8f339e0SPrzemyslaw Marczak return 0;
326e8f339e0SPrzemyslaw Marczak }
327e8f339e0SPrzemyslaw Marczak DM_TEST(dm_test_power_regulator_autoset_list, DM_TESTF_SCAN_FDT);
328