]> git.karo-electronics.de Git - linux-beck.git/commitdiff
charger-manager: Disable regulator when charger cable is detached
authorChanwoo Choi <cw00.choi@samsung.com>
Fri, 27 Jul 2012 05:01:34 +0000 (14:01 +0900)
committerAnton Vorontsov <anton.vorontsov@linaro.org>
Thu, 23 Aug 2012 03:08:28 +0000 (20:08 -0700)
This patch disable regulator for charging when charger cable is detached
before stopping charging forcibly on abnormal battery state and check
return value of regulator_enable/disable() function to confirm correct
operation of enabling or disabling regulator for charging.

Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
Signed-off-by: Myungjoo Ham <myungjoo.ham@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Anton Vorontsov <anton.vorontsov@linaro.org>
drivers/power/charger-manager.c

index 526e5c9312945bdf480f57a4673b478d22250be8..240de49934f1d75dc8ebbbabc30726ab4068f670 100644 (file)
@@ -271,9 +271,24 @@ static int try_charger_enable(struct charger_manager *cm, bool enable)
        if (enable) {
                if (cm->emergency_stop)
                        return -EAGAIN;
-               for (i = 0 ; i < desc->num_charger_regulators ; i++)
-                       regulator_enable(desc->charger_regulators[i].consumer);
+               for (i = 0 ; i < desc->num_charger_regulators ; i++) {
+                       err = regulator_enable(desc->charger_regulators[i].consumer);
+                       if (err < 0) {
+                               dev_warn(cm->dev,
+                                       "Cannot enable %s regulator\n",
+                                       desc->charger_regulators[i].regulator_name);
+                       }
+               }
        } else {
+               for (i = 0 ; i < desc->num_charger_regulators ; i++) {
+                       err = regulator_disable(desc->charger_regulators[i].consumer);
+                       if (err < 0) {
+                               dev_warn(cm->dev,
+                                       "Cannot disable %s regulator\n",
+                                       desc->charger_regulators[i].regulator_name);
+                       }
+               }
+
                /*
                 * Abnormal battery state - Stop charging forcibly,
                 * even if charger was enabled at the other places