power: supply: charger-manager: Correct usage of CHARGE_NOW/FULL
authorJonghwa Lee <jonghwa3.lee@samsung.com>
Thu, 14 May 2020 23:04:29 +0000 (16:04 -0700)
committerSebastian Reichel <sebastian.reichel@collabora.com>
Fri, 28 Aug 2020 17:07:42 +0000 (19:07 +0200)
The POWER_SUPPLY_CHARGE_NOW/FULL property reflects battery's charges
in uAh unit, but charger-manager has been used it wrongly as a
status field.

Signed-off-by: Jonghwa Lee <jonghwa3.lee@samsung.com>
Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
drivers/power/supply/charger-manager.c

index 1edeb56..34817df 100644 (file)
@@ -846,35 +846,13 @@ static int charger_get_property(struct power_supply *psy,
                        val->intval = 0;
                break;
        case POWER_SUPPLY_PROP_CHARGE_FULL:
-               if (is_full_charged(cm))
-                       val->intval = 1;
-               else
-                       val->intval = 0;
-               ret = 0;
-               break;
        case POWER_SUPPLY_PROP_CHARGE_NOW:
-               if (is_charging(cm)) {
-                       fuel_gauge = power_supply_get_by_name(
-                                       cm->desc->psy_fuel_gauge);
-                       if (!fuel_gauge) {
-                               ret = -ENODEV;
-                               break;
-                       }
-
-                       ret = power_supply_get_property(fuel_gauge,
-                                               POWER_SUPPLY_PROP_CHARGE_NOW,
-                                               val);
-                       if (ret) {
-                               val->intval = 1;
-                               ret = 0;
-                       } else {
-                               /* If CHARGE_NOW is supplied, use it */
-                               val->intval = (val->intval > 0) ?
-                                               val->intval : 1;
-                       }
-               } else {
-                       val->intval = 0;
+               fuel_gauge = power_supply_get_by_name(cm->desc->psy_fuel_gauge);
+               if (!fuel_gauge) {
+                       ret = -ENODEV;
+                       break;
                }
+               ret = power_supply_get_property(fuel_gauge, psp, val);
                break;
        default:
                return -EINVAL;
@@ -893,9 +871,9 @@ static enum power_supply_property default_charger_props[] = {
        POWER_SUPPLY_PROP_VOLTAGE_NOW,
        POWER_SUPPLY_PROP_CAPACITY,
        POWER_SUPPLY_PROP_ONLINE,
-       POWER_SUPPLY_PROP_CHARGE_FULL,
        /*
         * Optional properties are:
+        * POWER_SUPPLY_PROP_CHARGE_FULL,
         * POWER_SUPPLY_PROP_CHARGE_NOW,
         * POWER_SUPPLY_PROP_CURRENT_NOW,
         * POWER_SUPPLY_PROP_TEMP,
@@ -1585,6 +1563,12 @@ static int charger_manager_probe(struct platform_device *pdev)
                return -ENODEV;
        }
        if (!power_supply_get_property(fuel_gauge,
+                                       POWER_SUPPLY_PROP_CHARGE_FULL, &val)) {
+               properties[num_properties] =
+                               POWER_SUPPLY_PROP_CHARGE_FULL;
+               num_properties++;
+       }
+       if (!power_supply_get_property(fuel_gauge,
                                          POWER_SUPPLY_PROP_CHARGE_NOW, &val)) {
                properties[num_properties] =
                                POWER_SUPPLY_PROP_CHARGE_NOW;