>From 6b84f9b12f449df2131bf446f4f1e1f12148ef2f Mon Sep 17 00:00:00 2001 From: Felipe Balbi Date: Wed, 8 Jul 2009 13:45:02 +0300 Subject: [PATCH 14/15] power: bq27200: add time to empty/full the chip reports time to empty and time to full in minutes, so we multiply the result by 60 to get it in seconds as requested by power_supply interface. Signed-off-by: Felipe Balbi --- drivers/power/bq27200_battery.c | 34 ++++++++++++++++++++++++++++++++++ 1 files changed, 34 insertions(+), 0 deletions(-) diff --git a/drivers/power/bq27200_battery.c b/drivers/power/bq27200_battery.c index 442d81a..26ef2be 100644 --- a/drivers/power/bq27200_battery.c +++ b/drivers/power/bq27200_battery.c @@ -75,6 +75,8 @@ static enum power_supply_property bq27200_props[] = { POWER_SUPPLY_PROP_CAPACITY, POWER_SUPPLY_PROP_TEMP, POWER_SUPPLY_PROP_POWER_AVG, + POWER_SUPPLY_PROP_TIME_TO_EMPTY_AVG, + POWER_SUPPLY_PROP_TIME_TO_FULL_AVG, }; /* @@ -181,6 +183,32 @@ static int bq27200_power(struct bq27200 *bq) return (ret * BQ27200_POWER_CONSTANT) / BQ27200_SENSING_RESISTOR; } +static int bq27200_time_to_empty(struct bq27200 *bq) +{ + int ret; + + ret = bq27200_readw(bq, BQ27200_REG_TTE); + if (ret < 0) { + dev_err(&bq->client->dev, "error reading time to empty\n"); + return ret; + } + + return ret * 60; +} + +static int bq27200_time_to_full(struct bq27200 *bq) +{ + int ret; + + ret = bq27200_readw(bq, BQ27200_REG_TTF); + if (ret < 0) { + dev_err(&bq->client->dev, "error reading time to full\n"); + return ret; + } + + return ret * 60; +} + static int bq27200_get_property(struct power_supply *psy, enum power_supply_property psp, union power_supply_propval *val) { @@ -208,6 +236,12 @@ static int bq27200_get_property(struct power_supply *psy, case POWER_SUPPLY_PROP_POWER_AVG: val->intval = bq27200_power(bq); break; + case POWER_SUPPLY_PROP_TIME_TO_EMPTY_AVG: + val->intval = bq27200_time_to_empty(bq); + break; + case POWER_SUPPLY_PROP_TIME_TO_FULL_AVG: + val->intval = bq27200_time_to_full(bq); + break; default: return -EINVAL; } -- 1.6.4.rc0.17.gd9eb0