sbs-battery: fix power status when battery charging near dry
authorYH Huang <yh.huang@mediatek.com>
Wed, 6 Apr 2016 02:32:25 +0000 (10:32 +0800)
committerSebastian Reichel <sre@kernel.org>
Sun, 10 Apr 2016 15:22:35 +0000 (17:22 +0200)
POWER_SUPPLY_STATUS_NOT_CHARGING is used for AC connected, but
battery not charging (e.g. because battery temperature is out
of acceptable range).

When battery is charging near dry and BATTERY_FULL_DISCHARGED is set,
it is wrong to set as POWER_SUPPLY_STATUS_NOT_CHARGING.
Just use BATTERY_DISCHARGING to decide the power supply status is
discharging or charging.

Signed-off-by: YH Huang <yh.huang@mediatek.com>
Reviewed-by: Daniel Kurtz <djkurtz@chromium.org>
Signed-off-by: Sebastian Reichel <sre@kernel.org>
drivers/power/sbs-battery.c

index d6226d6..768b9fc 100644 (file)
@@ -382,8 +382,6 @@ static int sbs_get_battery_property(struct i2c_client *client,
 
                if (ret & BATTERY_FULL_CHARGED)
                        val->intval = POWER_SUPPLY_STATUS_FULL;
-               else if (ret & BATTERY_FULL_DISCHARGED)
-                       val->intval = POWER_SUPPLY_STATUS_NOT_CHARGING;
                else if (ret & BATTERY_DISCHARGING)
                        val->intval = POWER_SUPPLY_STATUS_DISCHARGING;
                else
@@ -702,8 +700,6 @@ static void sbs_delayed_work(struct work_struct *work)
 
        if (ret & BATTERY_FULL_CHARGED)
                ret = POWER_SUPPLY_STATUS_FULL;
-       else if (ret & BATTERY_FULL_DISCHARGED)
-               ret = POWER_SUPPLY_STATUS_NOT_CHARGING;
        else if (ret & BATTERY_DISCHARGING)
                ret = POWER_SUPPLY_STATUS_DISCHARGING;
        else