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