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