|
@@ -2519,9 +2519,12 @@ int regulator_set_optimum_mode(struct regulator *regulator, int uA_load)
|
|
|
{
|
|
|
struct regulator_dev *rdev = regulator->rdev;
|
|
|
struct regulator *consumer;
|
|
|
- int ret, output_uV, input_uV, total_uA_load = 0;
|
|
|
+ int ret, output_uV, input_uV = 0, total_uA_load = 0;
|
|
|
unsigned int mode;
|
|
|
|
|
|
+ if (rdev->supply)
|
|
|
+ input_uV = regulator_get_voltage(rdev->supply);
|
|
|
+
|
|
|
mutex_lock(&rdev->mutex);
|
|
|
|
|
|
/*
|
|
@@ -2554,10 +2557,7 @@ int regulator_set_optimum_mode(struct regulator *regulator, int uA_load)
|
|
|
goto out;
|
|
|
}
|
|
|
|
|
|
- /* get input voltage */
|
|
|
- input_uV = 0;
|
|
|
- if (rdev->supply)
|
|
|
- input_uV = regulator_get_voltage(rdev->supply);
|
|
|
+ /* No supply? Use constraint voltage */
|
|
|
if (input_uV <= 0)
|
|
|
input_uV = rdev->constraints->input_uV;
|
|
|
if (input_uV <= 0) {
|