summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorLokesh Vutla <lokeshvutla@ti.com>2019-01-11 15:15:51 +0530
committerSimon Glass <sjg@chromium.org>2019-02-09 12:50:22 -0700
commitcc4a224af226b2ea818d32af26742aaad8a3983e (patch)
tree2cb0c9c521146746ee924e14f83a2f8a3e318be3 /test
parentf93fab312615ce0bc9aac33f9dcd876a3fed1290 (diff)
downloadu-boot-cc4a224af226b2ea818d32af26742aaad8a3983e.tar.gz
u-boot-cc4a224af226b2ea818d32af26742aaad8a3983e.tar.bz2
u-boot-cc4a224af226b2ea818d32af26742aaad8a3983e.zip
power: regulator: Introduce regulator_set_enable_if_allowed api
regulator_set_enable() api throws an error in the following three cases: - when requested to disable an always-on regulator - when set_enable() ops not provided by regulator driver - when enabling is actually failed.(Error returned by the regulator driver) Sometimes consumer drivers doesn't want to track the first two scenarios and just need to worry about the case where enabling is actually failed. But it is also a good practice to have an error value returned in the first two cases. So introduce an api regulator_set_enable_if_allowed() which ignores the first two error cases and returns an error as given by regulator driver. Consumer drivers can use this api need not worry about the first two error conditions. Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com> Reviewed-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'test')
-rw-r--r--test/dm/regulator.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/test/dm/regulator.c b/test/dm/regulator.c
index 5d11e946b2..e510539542 100644
--- a/test/dm/regulator.c
+++ b/test/dm/regulator.c
@@ -175,6 +175,27 @@ static int dm_test_power_regulator_set_get_enable(struct unit_test_state *uts)
}
DM_TEST(dm_test_power_regulator_set_get_enable, DM_TESTF_SCAN_FDT);
+/* Test regulator set and get enable if allowed method */
+static
+int dm_test_power_regulator_set_enable_if_allowed(struct unit_test_state *uts)
+{
+ const char *platname;
+ struct udevice *dev, *dev_autoset;
+ bool val_set = false;
+
+ /* Get BUCK1 - always on regulator */
+ platname = regulator_names[BUCK1][PLATNAME];
+ ut_assertok(regulator_autoset_by_name(platname, &dev_autoset));
+ ut_assertok(regulator_get_by_platname(platname, &dev));
+
+ /* Try disabling always-on regulator */
+ ut_assertok(regulator_set_enable_if_allowed(dev, val_set));
+ ut_asserteq(regulator_get_enable(dev), !val_set);
+
+ return 0;
+}
+DM_TEST(dm_test_power_regulator_set_enable_if_allowed, DM_TESTF_SCAN_FDT);
+
/* Test regulator set and get mode method */
static int dm_test_power_regulator_set_get_mode(struct unit_test_state *uts)
{