public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/5] Revert "power: remove POWER_SUPPLY_PROP_CAPACITY_LEVEL"
@ 2009-06-30  6:13 Andres Salomon
  2009-06-30 23:02 ` Anton Vorontsov
  0 siblings, 1 reply; 2+ messages in thread
From: Andres Salomon @ 2009-06-30  6:13 UTC (permalink / raw)
  To: cbou; +Cc: dwmw2, linux-kernel, richard, Andrew Morton, Paul Fox, dsaxena


This reverts commit 8efe444038a205e79b38b7ad03878824901849a8 and
4cbc76eadf56399cd11fb736b33c53aec9caab8c.

Richard@laptop.org 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@collabora.co.uk>
---
 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



^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH 1/5] Revert "power: remove POWER_SUPPLY_PROP_CAPACITY_LEVEL"
  2009-06-30  6:13 [PATCH 1/5] Revert "power: remove POWER_SUPPLY_PROP_CAPACITY_LEVEL" Andres Salomon
@ 2009-06-30 23:02 ` Anton Vorontsov
  0 siblings, 0 replies; 2+ messages in thread
From: Anton Vorontsov @ 2009-06-30 23:02 UTC (permalink / raw)
  To: Andres Salomon
  Cc: cbou, dwmw2, linux-kernel, richard, Andrew Morton, Paul Fox,
	dsaxena

On Tue, Jun 30, 2009 at 02:13:01AM -0400, Andres Salomon wrote:
> 
> This reverts commit 8efe444038a205e79b38b7ad03878824901849a8 and
> 4cbc76eadf56399cd11fb736b33c53aec9caab8c.
> 
> Richard@laptop.org 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@collabora.co.uk>
> ---

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@gmail.com
irc://irc.freenode.net/bd2

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2009-06-30 23:02 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-06-30  6:13 [PATCH 1/5] Revert "power: remove POWER_SUPPLY_PROP_CAPACITY_LEVEL" Andres Salomon
2009-06-30 23:02 ` Anton Vorontsov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox