lkml.org 
[lkml]   [2011]   [Oct]   [31]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5/9] bq27x00: Cache temperature value in converted unit
    Date
    Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
    ---
    drivers/power/bq27x00_battery.c | 45 ++++++++++++++++++++------------------
    1 files changed, 24 insertions(+), 21 deletions(-)

    diff --git a/drivers/power/bq27x00_battery.c b/drivers/power/bq27x00_battery.c
    index e9aeb53..a22124a 100644
    --- a/drivers/power/bq27x00_battery.c
    +++ b/drivers/power/bq27x00_battery.c
    @@ -248,6 +248,28 @@ static int bq27x00_battery_read_energy(struct bq27x00_device_info *di)
    }

    /*
    + * Return the battery temperature in tenths of degree Celsius
    + * Or < 0 if something fails.
    + */
    +static int bq27x00_battery_read_temperature(struct bq27x00_device_info *di)
    +{
    + int temp;
    +
    + temp = bq27x00_read(di, BQ27x00_REG_TEMP, false);
    + if (temp < 0) {
    + dev_err(di->dev, "error reading temperature\n");
    + return temp;
    + }
    +
    + if (di->chip == BQ27500)
    + temp -= 2731;
    + else
    + temp = ((temp * 5) - 5463) / 2;
    +
    + return temp;
    +}
    +
    +/*
    * Return the battery Cycle count total
    * Or < 0 if something fails.
    */
    @@ -304,7 +326,7 @@ static void bq27x00_update(struct bq27x00_device_info *di)
    cache.time_to_full = bq27x00_battery_read_time(di, BQ27x00_REG_TTF);
    cache.charge_full = bq27x00_battery_read_lmd(di);
    }
    - cache.temperature = bq27x00_read(di, BQ27x00_REG_TEMP, false);
    + cache.temperature = bq27x00_battery_read_temperature(di);
    cache.cycle_count = bq27x00_battery_read_cyct(di);

    /* We only have to read charge design full once */
    @@ -334,25 +356,6 @@ static void bq27x00_battery_poll(struct work_struct *work)
    }
    }

    -
    -/*
    - * Return the battery temperature in tenths of degree Celsius
    - * Or < 0 if something fails.
    - */
    -static int bq27x00_battery_temperature(struct bq27x00_device_info *di,
    - union power_supply_propval *val)
    -{
    - if (di->cache.temperature < 0)
    - return di->cache.temperature;
    -
    - if (di->chip == BQ27500)
    - val->intval = di->cache.temperature - 2731;
    - else
    - val->intval = ((di->cache.temperature * 5) - 5463) / 2;
    -
    - return 0;
    -}
    -
    /*
    * Return the battery average current in µA
    * Note that current can be negative signed as well
    @@ -511,7 +514,7 @@ static int bq27x00_battery_get_property(struct power_supply *psy,
    ret = bq27x00_battery_capacity_level(di, val);
    break;
    case POWER_SUPPLY_PROP_TEMP:
    - ret = bq27x00_battery_temperature(di, val);
    + ret = bq27x00_simple_value(di->cache.temperature, val);
    break;
    case POWER_SUPPLY_PROP_TIME_TO_EMPTY_NOW:
    ret = bq27x00_simple_value(di->cache.time_to_empty, val);
    --
    1.7.5.4
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2011-11-01 01:51    [W:0.042 / U:0.204 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site