Re: [PATCH 1/5] Revert "power: removePOWER_SUPPLY_PROP_CAPACITY_LEVEL"

From: Anton Vorontsov
Date: Tue Jun 30 2009 - 19:02:40 EST


On Tue, Jun 30, 2009 at 02:13:01AM -0400, Andres Salomon wrote:
>
> This reverts commit 8efe444038a205e79b38b7ad03878824901849a8 and
> 4cbc76eadf56399cd11fb736b33c53aec9caab8c.
>
> Richard@xxxxxxxxxx was apparently using CAPACITY_LEVEL for debugging
> battery/EC problems, and was upset that it was removed. This readds it.
>
> Conflicts:
>
> Documentation/power_supply_class.txt
>
> Signed-off-by: Andres Salomon <dilinger@xxxxxxxxxxxxxxx>
> ---

1/5 and 3/5 applied to battery-2.6.git (i.e. -next).

Thanks for your work Andres!

> Documentation/power/power_supply_class.txt | 2 ++
> drivers/power/olpc_battery.c | 9 +++++++++
> drivers/power/power_supply_sysfs.c | 7 +++++++
> include/linux/power_supply.h | 10 ++++++++++
> 4 files changed, 28 insertions(+), 0 deletions(-)
>
> diff --git a/Documentation/power/power_supply_class.txt b/Documentation/power/power_supply_class.txt
> index c6cd495..709d955 100644
> --- a/Documentation/power/power_supply_class.txt
> +++ b/Documentation/power/power_supply_class.txt
> @@ -108,6 +108,8 @@ relative, time-based measurements.
> ENERGY_FULL, ENERGY_EMPTY - same as above but for energy.
>
> CAPACITY - capacity in percents.
> +CAPACITY_LEVEL - capacity level. This corresponds to
> +POWER_SUPPLY_CAPACITY_LEVEL_*.
>
> TEMP - temperature of the power supply.
> TEMP_AMBIENT - ambient temperature.
> diff --git a/drivers/power/olpc_battery.c b/drivers/power/olpc_battery.c
> index 5fbca26..0d1928d 100644
> --- a/drivers/power/olpc_battery.c
> +++ b/drivers/power/olpc_battery.c
> @@ -272,6 +272,14 @@ static int olpc_bat_get_property(struct power_supply *psy,
> return ret;
> val->intval = ec_byte;
> break;
> + case POWER_SUPPLY_PROP_CAPACITY_LEVEL:
> + if (ec_byte & BAT_STAT_FULL)
> + val->intval = POWER_SUPPLY_CAPACITY_LEVEL_FULL;
> + else if (ec_byte & BAT_STAT_LOW)
> + val->intval = POWER_SUPPLY_CAPACITY_LEVEL_LOW;
> + else
> + val->intval = POWER_SUPPLY_CAPACITY_LEVEL_NORMAL;
> + break;
> case POWER_SUPPLY_PROP_TEMP:
> ret = olpc_ec_cmd(EC_BAT_TEMP, NULL, 0, (void *)&ec_word, 2);
> if (ret)
> @@ -317,6 +325,7 @@ static enum power_supply_property olpc_bat_props[] = {
> POWER_SUPPLY_PROP_VOLTAGE_AVG,
> POWER_SUPPLY_PROP_CURRENT_AVG,
> POWER_SUPPLY_PROP_CAPACITY,
> + POWER_SUPPLY_PROP_CAPACITY_LEVEL,
> POWER_SUPPLY_PROP_TEMP,
> POWER_SUPPLY_PROP_TEMP_AMBIENT,
> POWER_SUPPLY_PROP_MANUFACTURER,
> diff --git a/drivers/power/power_supply_sysfs.c b/drivers/power/power_supply_sysfs.c
> index da73591..d30e591 100644
> --- a/drivers/power/power_supply_sysfs.c
> +++ b/drivers/power/power_supply_sysfs.c
> @@ -51,6 +51,9 @@ static ssize_t power_supply_show_property(struct device *dev,
> "Unknown", "NiMH", "Li-ion", "Li-poly", "LiFe", "NiCd",
> "LiMn"
> };
> + static char *capacity_level_text[] = {
> + "Unknown", "Critical", "Low", "Normal", "High", "Full"
> + };
> ssize_t ret;
> struct power_supply *psy = dev_get_drvdata(dev);
> const ptrdiff_t off = attr - power_supply_attrs;
> @@ -71,6 +74,9 @@ static ssize_t power_supply_show_property(struct device *dev,
> return sprintf(buf, "%s\n", health_text[value.intval]);
> else if (off == POWER_SUPPLY_PROP_TECHNOLOGY)
> return sprintf(buf, "%s\n", technology_text[value.intval]);
> + else if (off == POWER_SUPPLY_PROP_CAPACITY_LEVEL)
> + return sprintf(buf, "%s\n",
> + capacity_level_text[value.intval]);
> else if (off >= POWER_SUPPLY_PROP_MODEL_NAME)
> return sprintf(buf, "%s\n", value.strval);
>
> @@ -109,6 +115,7 @@ static struct device_attribute power_supply_attrs[] = {
> POWER_SUPPLY_ATTR(energy_now),
> POWER_SUPPLY_ATTR(energy_avg),
> POWER_SUPPLY_ATTR(capacity),
> + POWER_SUPPLY_ATTR(capacity_level),
> POWER_SUPPLY_ATTR(temp),
> POWER_SUPPLY_ATTR(temp_ambient),
> POWER_SUPPLY_ATTR(time_to_empty_now),
> diff --git a/include/linux/power_supply.h b/include/linux/power_supply.h
> index 594c494..0ab6aa1 100644
> --- a/include/linux/power_supply.h
> +++ b/include/linux/power_supply.h
> @@ -58,6 +58,15 @@ enum {
> POWER_SUPPLY_TECHNOLOGY_LiMn,
> };
>
> +enum {
> + POWER_SUPPLY_CAPACITY_LEVEL_UNKNOWN = 0,
> + POWER_SUPPLY_CAPACITY_LEVEL_CRITICAL,
> + POWER_SUPPLY_CAPACITY_LEVEL_LOW,
> + POWER_SUPPLY_CAPACITY_LEVEL_NORMAL,
> + POWER_SUPPLY_CAPACITY_LEVEL_HIGH,
> + POWER_SUPPLY_CAPACITY_LEVEL_FULL,
> +};
> +
> enum power_supply_property {
> /* Properties of type `int' */
> POWER_SUPPLY_PROP_STATUS = 0,
> @@ -89,6 +98,7 @@ enum power_supply_property {
> POWER_SUPPLY_PROP_ENERGY_NOW,
> POWER_SUPPLY_PROP_ENERGY_AVG,
> POWER_SUPPLY_PROP_CAPACITY, /* in percents! */
> + POWER_SUPPLY_PROP_CAPACITY_LEVEL,
> POWER_SUPPLY_PROP_TEMP,
> POWER_SUPPLY_PROP_TEMP_AMBIENT,
> POWER_SUPPLY_PROP_TIME_TO_EMPTY_NOW,
> --
> 1.5.6.5
>
>

--
Anton Vorontsov
email: cbouatmailru@xxxxxxxxx
irc://irc.freenode.net/bd2
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/