diff --git a/drivers/power/cw2015_battery.c b/drivers/power/cw2015_battery.c index 6594b5989ade..21f29fc870ba 100644 --- a/drivers/power/cw2015_battery.c +++ b/drivers/power/cw2015_battery.c @@ -495,6 +495,8 @@ static void cw_update_charge_status(struct cw_battery *cw_bat) if (cw_bat->charger_mode != cw_charger_mode) { cw_bat->charger_mode = cw_charger_mode; cw_bat->bat_change = 1; + if (cw_charger_mode) + cw_bat->charge_count++; } } @@ -515,10 +517,8 @@ static void cw_update_vol(struct cw_battery *cw_bat) int ret; ret = cw_get_voltage(cw_bat); - if ((ret >= 0) && (cw_bat->voltage != ret)) { + if ((ret >= 0) && (cw_bat->voltage != ret)) cw_bat->voltage = ret; - cw_bat->bat_change = 1; - } } static void cw_update_status(struct cw_battery *cw_bat) @@ -646,6 +646,14 @@ static int cw_battery_get_property(struct power_supply *psy, val->intval = POWER_SUPPLY_TECHNOLOGY_LION; break; + case POWER_SUPPLY_PROP_CHARGE_COUNTER: + val->intval = cw_bat->charge_count; + break; + + case POWER_SUPPLY_PROP_TEMP: + val->intval = VIRTUAL_TEMPERATURE; + break; + default: break; } @@ -660,6 +668,8 @@ static enum power_supply_property cw_battery_properties[] = { POWER_SUPPLY_PROP_VOLTAGE_NOW, POWER_SUPPLY_PROP_TIME_TO_EMPTY_NOW, POWER_SUPPLY_PROP_TECHNOLOGY, + POWER_SUPPLY_PROP_CHARGE_COUNTER, + POWER_SUPPLY_PROP_TEMP, }; static const struct power_supply_desc cw2015_bat_desc = { diff --git a/include/linux/power/cw2015_battery.h b/include/linux/power/cw2015_battery.h index 52a802584e90..938dda818e72 100644 --- a/include/linux/power/cw2015_battery.h +++ b/include/linux/power/cw2015_battery.h @@ -112,6 +112,7 @@ struct cw_battery { u32 bat_mode; int bat_change; bool dual_battery; + int charge_count; }; #endif