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*bf802f5dSFelix 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*bf802f5dSFelix 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 */ 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 */ 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 */ 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 */ 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 */ 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 */ 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 */ 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