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