soc: rockchip: rk_camera: reduce the code risk

below code would cause endless loop when regulator is set 'always-on':

while (regulator_is_enabled(ldo_18) > 0)
    regulator_disable(ldo_18);

Change-Id: Ia3b6f72969ada774a1cf6a46a20ec9b3efb841a0
Signed-off-by: Zhang Yunlong <dalon.zhang@rock-chips.com>
This commit is contained in:
Zhang Yunlong
2018-05-08 11:43:44 +08:00
committed by Tao Huang
parent 3842b4d628
commit 8b2f70a7d4

View File

@@ -463,12 +463,11 @@ static int sensor_power_default_cb (struct rk29camera_gpio_res *res, int on)
if (on) {
regulator_set_voltage(ldo_28, power_pmu_voltage1, power_pmu_voltage1);
ret = regulator_enable(ldo_28);
//printk("%s set ldo7 vcc28_cif=%dmV end\n", __func__, regulator_get_voltage(ldo_28));
regulator_put(ldo_28);
msleep(10);
} else {
while(regulator_is_enabled(ldo_28) > 0)
if (regulator_is_enabled(ldo_28) > 0)
regulator_disable(ldo_28);
regulator_put(ldo_28);
}
@@ -480,12 +479,11 @@ static int sensor_power_default_cb (struct rk29camera_gpio_res *res, int on)
regulator_set_voltage(ldo_18, power_pmu_voltage2, power_pmu_voltage2);
//regulator_set_suspend_voltage(ldo, 1800000);
ret = regulator_enable(ldo_18);
//printk("%s set ldo1 vcc18_cif=%dmV end\n", __func__, regulator_get_voltage(ldo_18));
regulator_put(ldo_18);
msleep(10);
} else {
while(regulator_is_enabled(ldo_18) > 0)
if (regulator_is_enabled(ldo_18) > 0)
regulator_disable(ldo_18);
regulator_put(ldo_18);
}
@@ -584,7 +582,7 @@ static int sensor_powerdown_default_cb (struct rk29camera_gpio_res *res, int on)
ret = regulator_enable(powerdown_pmu);
regulator_put(powerdown_pmu);
} else {
while(regulator_is_enabled(powerdown_pmu) > 0)
if (regulator_is_enabled(powerdown_pmu) > 0)
regulator_disable(powerdown_pmu);
regulator_put(powerdown_pmu);
}