These two are needed by UPower. For CHARGE_NOW we violate the power supply class definition (as we already do for CAPACITY though it isn't as obvious there), but this is the best we can do without adding rather sophisticated algorithms to either the EC or UPower. --- drivers/power/olpc_battery.c | 14 ++++++++++++++ 1 files changed, 14 insertions(+), 0 deletions(-)
diff --git a/drivers/power/olpc_battery.c b/drivers/power/olpc_battery.c index 753c170..7e78ac6 100644 --- a/drivers/power/olpc_battery.c +++ b/drivers/power/olpc_battery.c @@ -49,6 +49,9 @@ #define BAT_ADDR_MFR_TYPE 0x5F +#define CHARGE_FULL_DESIGN 3000000 /* 3Ah */ + + /********************************************************************* * Power *********************************************************************/ @@ -293,6 +296,15 @@ static int olpc_bat_get_property(struct power_supply *psy, else val->intval = POWER_SUPPLY_CAPACITY_LEVEL_NORMAL; break; + case POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN: + val->intval = CHARGE_FULL_DESIGN; + break; + case POWER_SUPPLY_PROP_CHARGE_AVG: + ret = olpc_ec_cmd(EC_BAT_SOC, NULL, 0, &ec_byte, 1); + if (ret) + return ret; + val->intval = ec_byte * (CHARGE_FULL_DESIGN / 100); + break; case POWER_SUPPLY_PROP_TEMP: ret = olpc_ec_cmd(EC_BAT_TEMP, NULL, 0, (void *)&ec_word, 2); if (ret) @@ -342,6 +354,8 @@ static enum power_supply_property olpc_bat_props[] = { POWER_SUPPLY_PROP_CURRENT_AVG, POWER_SUPPLY_PROP_CAPACITY, POWER_SUPPLY_PROP_CAPACITY_LEVEL, + POWER_SUPPLY_PROP_CHARGE_AVG, + POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN, POWER_SUPPLY_PROP_TEMP, #ifndef CONFIG_OLPC_XO_1_5 POWER_SUPPLY_PROP_TEMP_AMBIENT, -- 1.7.0 _______________________________________________ Devel mailing list Devel@lists.laptop.org http://lists.laptop.org/listinfo/devel