mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 03:01:39 -04:00
power_supply: add CHARGE_COUNTER property and olpc_battery support for it
This adds PROP_CHARGE_COUNTER to the power supply class (documenting it as well). The OLPC battery driver uses this for spitting out its ACR values (in uAh). We have some rounding errors (the data sheet claims 416.7, the math actually works out to 416.666667, so we're forced to choose between overflows or precision loss. I chose precision loss, and stuck w/ data sheet values), but I don't think anyone will care that much. Signed-off-by: Andres Salomon <[email protected]> Signed-off-by: Anton Vorontsov <[email protected]>
This commit is contained in:
parent
484d6d50cc
commit
8e552c36d9
4 changed files with 16 additions and 1 deletions
|
|
@ -19,7 +19,7 @@
|
|||
|
||||
#define EC_BAT_VOLTAGE 0x10 /* uint16_t, *9.76/32, mV */
|
||||
#define EC_BAT_CURRENT 0x11 /* int16_t, *15.625/120, mA */
|
||||
#define EC_BAT_ACR 0x12
|
||||
#define EC_BAT_ACR 0x12 /* int16_t, *416.7, µAh */
|
||||
#define EC_BAT_TEMP 0x13 /* uint16_t, *100/256, °C */
|
||||
#define EC_AMB_TEMP 0x14 /* uint16_t, *100/256, °C */
|
||||
#define EC_BAT_STATUS 0x15 /* uint8_t, bitmask */
|
||||
|
|
@ -289,6 +289,14 @@ static int olpc_bat_get_property(struct power_supply *psy,
|
|||
ec_word = be16_to_cpu(ec_word);
|
||||
val->intval = ec_word * 100 / 256;
|
||||
break;
|
||||
case POWER_SUPPLY_PROP_CHARGE_COUNTER:
|
||||
ret = olpc_ec_cmd(EC_BAT_ACR, NULL, 0, (void *)&ec_word, 2);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ec_word = be16_to_cpu(ec_word);
|
||||
val->intval = ec_word * 4167 / 10;
|
||||
break;
|
||||
case POWER_SUPPLY_PROP_SERIAL_NUMBER:
|
||||
ret = olpc_ec_cmd(EC_BAT_SERIAL, NULL, 0, (void *)&ser_buf, 8);
|
||||
if (ret)
|
||||
|
|
@ -317,6 +325,7 @@ static enum power_supply_property olpc_bat_props[] = {
|
|||
POWER_SUPPLY_PROP_TEMP_AMBIENT,
|
||||
POWER_SUPPLY_PROP_MANUFACTURER,
|
||||
POWER_SUPPLY_PROP_SERIAL_NUMBER,
|
||||
POWER_SUPPLY_PROP_CHARGE_COUNTER,
|
||||
};
|
||||
|
||||
/* EEPROM reading goes completely around the power_supply API, sadly */
|
||||
|
|
|
|||
|
|
@ -99,6 +99,7 @@ static struct device_attribute power_supply_attrs[] = {
|
|||
POWER_SUPPLY_ATTR(charge_empty),
|
||||
POWER_SUPPLY_ATTR(charge_now),
|
||||
POWER_SUPPLY_ATTR(charge_avg),
|
||||
POWER_SUPPLY_ATTR(charge_counter),
|
||||
POWER_SUPPLY_ATTR(energy_full_design),
|
||||
POWER_SUPPLY_ATTR(energy_empty_design),
|
||||
POWER_SUPPLY_ATTR(energy_full),
|
||||
|
|
|
|||
Loading…
Reference in a new issue