summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/power/regulator/regulator-uclass.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/power/regulator/regulator-uclass.c b/drivers/power/regulator/regulator-uclass.c
index 88a8525b3c4..03d39587b31 100644
--- a/drivers/power/regulator/regulator-uclass.c
+++ b/drivers/power/regulator/regulator-uclass.c
@@ -60,6 +60,8 @@ int regulator_set_value(struct udevice *dev, int uV)
return -EINVAL;
if (uc_pdata->max_uV != -ENODATA && uV > uc_pdata->max_uV)
return -EINVAL;
+ if (uV == -ENODATA)
+ return -EINVAL;
if (!ops || !ops->set_value)
return -ENOSYS;
@@ -90,6 +92,8 @@ int regulator_set_suspend_value(struct udevice *dev, int uV)
return -EINVAL;
if (uc_pdata->max_uV != -ENODATA && uV > uc_pdata->max_uV)
return -EINVAL;
+ if (uV == -ENODATA)
+ return -EINVAL;
if (!ops->set_suspend_value)
return -ENOSYS;
@@ -141,6 +145,8 @@ int regulator_set_current(struct udevice *dev, int uA)
return -EINVAL;
if (uc_pdata->max_uA != -ENODATA && uA > uc_pdata->max_uA)
return -EINVAL;
+ if (uA == -ENODATA)
+ return -EINVAL;
if (!ops || !ops->set_current)
return -ENOSYS;
@@ -299,7 +305,7 @@ int regulator_autoset(struct udevice *dev)
if (ret == -ENOSYS)
ret = 0;
- if (!ret && uc_pdata->suspend_on) {
+ if (!ret && uc_pdata->suspend_on && uc_pdata->suspend_uV != -ENODATA) {
ret = regulator_set_suspend_value(dev, uc_pdata->suspend_uV);
if (ret == -ENOSYS)
ret = 0;