Commit 20fd9830 authored by Sascha Silbe's avatar Sascha Silbe Committed by Anton Vorontsov

olpc_battery: Add support for CHARGE_NOW

CHARGE_NOW is needed by some user space software (read: UPower) for
internal calculations.

This patch violates 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.
Signed-off-by: default avatarSascha Silbe <sascha-pgp@silbe.org>
Signed-off-by: default avatarPaul Fox <pgf@laptop.org>
Signed-off-by: default avatarAnton Vorontsov <cbouatmailru@gmail.com>
parent b202a5e6
...@@ -249,6 +249,24 @@ static int olpc_bat_get_charge_full_design(union power_supply_propval *val) ...@@ -249,6 +249,24 @@ static int olpc_bat_get_charge_full_design(union power_supply_propval *val)
return ret; return ret;
} }
static int olpc_bat_get_charge_now(union power_supply_propval *val)
{
uint8_t soc;
union power_supply_propval full;
int ret;
ret = olpc_ec_cmd(EC_BAT_SOC, NULL, 0, &soc, 1);
if (ret)
return ret;
ret = olpc_bat_get_charge_full_design(&full);
if (ret)
return ret;
val->intval = soc * (full.intval / 100);
return 0;
}
/********************************************************************* /*********************************************************************
* Battery properties * Battery properties
*********************************************************************/ *********************************************************************/
...@@ -347,6 +365,11 @@ static int olpc_bat_get_property(struct power_supply *psy, ...@@ -347,6 +365,11 @@ static int olpc_bat_get_property(struct power_supply *psy,
if (ret) if (ret)
return ret; return ret;
break; break;
case POWER_SUPPLY_PROP_CHARGE_NOW:
ret = olpc_bat_get_charge_now(val);
if (ret)
return ret;
break;
case POWER_SUPPLY_PROP_TEMP: case POWER_SUPPLY_PROP_TEMP:
ret = olpc_ec_cmd(EC_BAT_TEMP, NULL, 0, (void *)&ec_word, 2); ret = olpc_ec_cmd(EC_BAT_TEMP, NULL, 0, (void *)&ec_word, 2);
if (ret) if (ret)
...@@ -395,6 +418,7 @@ static enum power_supply_property olpc_xo1_bat_props[] = { ...@@ -395,6 +418,7 @@ static enum power_supply_property olpc_xo1_bat_props[] = {
POWER_SUPPLY_PROP_CAPACITY, POWER_SUPPLY_PROP_CAPACITY,
POWER_SUPPLY_PROP_CAPACITY_LEVEL, POWER_SUPPLY_PROP_CAPACITY_LEVEL,
POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN, POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN,
POWER_SUPPLY_PROP_CHARGE_NOW,
POWER_SUPPLY_PROP_TEMP, POWER_SUPPLY_PROP_TEMP,
POWER_SUPPLY_PROP_TEMP_AMBIENT, POWER_SUPPLY_PROP_TEMP_AMBIENT,
POWER_SUPPLY_PROP_MANUFACTURER, POWER_SUPPLY_PROP_MANUFACTURER,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment