From ec1fdcdef98e43f2ca96693fe9a0d6ad9b400e89 Mon Sep 17 00:00:00 2001 From: Shunqing Chen Date: Wed, 30 Sep 2020 16:08:28 +0800 Subject: [PATCH] power: supply: cw2015_battery: add power supply property for Android R Signed-off-by: Shunqing Chen Change-Id: I905e0399e61c0d51ff6b167755a6099adc2697d2 --- drivers/power/supply/cw2015_battery.c | 28 +++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/drivers/power/supply/cw2015_battery.c b/drivers/power/supply/cw2015_battery.c index 1267d091ef0c..068e9a2788ff 100644 --- a/drivers/power/supply/cw2015_battery.c +++ b/drivers/power/supply/cw2015_battery.c @@ -601,6 +601,23 @@ static void cw_bat_work(struct work_struct *work) msecs_to_jiffies(cw_bat->monitor_sec)); } +static int cw_get_capacity_leve(struct cw_battery *cw_bat) +{ + if (cw_bat->bat_mode == MODE_VIRTUAL) + return POWER_SUPPLY_CAPACITY_LEVEL_NORMAL; + + if (cw_bat->capacity < 1) + return POWER_SUPPLY_CAPACITY_LEVEL_CRITICAL; + else if (cw_bat->capacity <= 20) + return POWER_SUPPLY_CAPACITY_LEVEL_LOW; + else if (cw_bat->capacity <= 70) + return POWER_SUPPLY_CAPACITY_LEVEL_NORMAL; + else if (cw_bat->capacity <= 90) + return POWER_SUPPLY_CAPACITY_LEVEL_HIGH; + else + return POWER_SUPPLY_CAPACITY_LEVEL_FULL; +} + static int cw_battery_get_property(struct power_supply *psy, enum power_supply_property psp, union power_supply_propval *val) @@ -615,6 +632,9 @@ static int cw_battery_get_property(struct power_supply *psy, if (cw_bat->bat_mode == MODE_VIRTUAL) val->intval = VIRTUAL_SOC; break; + case POWER_SUPPLY_PROP_CAPACITY_LEVEL: + val->intval = cw_get_capacity_leve(cw_bat); + break; case POWER_SUPPLY_PROP_STATUS: val->intval = cw_bat->status; if (cw_bat->bat_mode == MODE_VIRTUAL) @@ -651,9 +671,14 @@ static int cw_battery_get_property(struct power_supply *psy, break; case POWER_SUPPLY_PROP_CHARGE_FULL: + case POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN: val->intval = cw_bat->plat_data.design_capacity * 1000; break; + case POWER_SUPPLY_PROP_TIME_TO_FULL_NOW: + val->intval = 3600; + break; + case POWER_SUPPLY_PROP_TEMP: val->intval = VIRTUAL_TEMPERATURE; break; @@ -666,6 +691,7 @@ static int cw_battery_get_property(struct power_supply *psy, static enum power_supply_property cw_battery_properties[] = { POWER_SUPPLY_PROP_CAPACITY, + POWER_SUPPLY_PROP_CAPACITY_LEVEL, POWER_SUPPLY_PROP_STATUS, POWER_SUPPLY_PROP_HEALTH, POWER_SUPPLY_PROP_PRESENT, @@ -674,6 +700,8 @@ static enum power_supply_property cw_battery_properties[] = { POWER_SUPPLY_PROP_TECHNOLOGY, POWER_SUPPLY_PROP_CHARGE_COUNTER, POWER_SUPPLY_PROP_CHARGE_FULL, + POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN, + POWER_SUPPLY_PROP_TIME_TO_FULL_NOW, POWER_SUPPLY_PROP_TEMP, };