From: Jonghwa Lee <jonghwa3....@samsung.com>

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....@samsung.com>
Signed-off-by: Krzysztof Kozlowski <k.kozlow...@samsung.com>
Signed-off-by: Jonathan Bakker <xc-rac...@live.ca>
---
 drivers/power/supply/charger-manager.c | 40 ++++++++------------------
 1 file changed, 12 insertions(+), 28 deletions(-)

diff --git a/drivers/power/supply/charger-manager.c 
b/drivers/power/supply/charger-manager.c
index 6a5ae1d0ef92..80d1699c938a 100644
--- a/drivers/power/supply/charger-manager.c
+++ b/drivers/power/supply/charger-manager.c
@@ -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,
@@ -1583,6 +1561,12 @@ static int charger_manager_probe(struct platform_device 
*pdev)
                        desc->psy_fuel_gauge);
                return -ENODEV;
        }
+       if (!power_supply_get_property(fuel_gauge,
+                                       POWER_SUPPLY_PROP_CHARGE_FULL, &val)) {
+               
cm->charger_psy_desc.properties[cm->charger_psy_desc.num_properties] =
+                               POWER_SUPPLY_PROP_CHARGE_FULL;
+               cm->charger_psy_desc.num_properties++;
+       }
        if (!power_supply_get_property(fuel_gauge,
                                          POWER_SUPPLY_PROP_CHARGE_NOW, &val)) {
                
cm->charger_psy_desc.properties[cm->charger_psy_desc.num_properties] =
-- 
2.20.1

Reply via email to