From 8b2f70a7d4bd7c10db32cc5c0a09b6f5d5ea6990 Mon Sep 17 00:00:00 2001 From: Zhang Yunlong Date: Tue, 8 May 2018 11:43:44 +0800 Subject: [PATCH] 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 --- drivers/soc/rockchip/rk_camera.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/drivers/soc/rockchip/rk_camera.c b/drivers/soc/rockchip/rk_camera.c index 29739a2a0917..95595f1bc774 100644 --- a/drivers/soc/rockchip/rk_camera.c +++ b/drivers/soc/rockchip/rk_camera.c @@ -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); }