Skip to contentSkip to conversation

ACPI: battery: add sysfs serial number

PATCH Applied maximilian attems 4 participants 10 messages Jan 22, 2008 – Feb 6, 2008

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 ACPI: battery: add sysfs serial number

egrep serial /proc/acpi/battery/BAT0/info
serial number: 32090

serial number can tell you from the imminent danger of beeing set on fire.

---
 drivers/acpi/battery.c             |    5 +++++
 drivers/power/power_supply_sysfs.c |    1 +
 include/linux/power_supply.h       |    1 +
 3 files changed, 7 insertions(+), 0 deletions(-)
drivers/acpi/battery.c +5 -0
index c4a769d..f6215e8 100644
@@ -194,6 +194,9 @@ static int acpi_battery_get_property(struct power_supply *psy,
 	case POWER_SUPPLY_PROP_MANUFACTURER:
 		val->strval = battery->oem_info;
 		break;
+	case POWER_SUPPLY_PROP_SERIAL_NUMBER:
+		val->strval = battery->serial_number;
+		break;
 	default:
 		return -EINVAL;
 	}
@@ -212,6 +215,7 @@ static enum power_supply_property charge_battery_props[] = {
 	POWER_SUPPLY_PROP_CHARGE_NOW,
 	POWER_SUPPLY_PROP_MODEL_NAME,
 	POWER_SUPPLY_PROP_MANUFACTURER,
+	POWER_SUPPLY_PROP_SERIAL_NUMBER,
 };
 
 static enum power_supply_property energy_battery_props[] = {
@@ -226,6 +230,7 @@ static enum power_supply_property energy_battery_props[] = {
 	POWER_SUPPLY_PROP_ENERGY_NOW,
 	POWER_SUPPLY_PROP_MODEL_NAME,
 	POWER_SUPPLY_PROP_MANUFACTURER,
+	POWER_SUPPLY_PROP_SERIAL_NUMBER,
 };
 #endif
 
drivers/power/power_supply_sysfs.c +1 -0
index 249f61b..8feaa48 100644
@@ -117,6 +117,7 @@ static struct device_attribute power_supply_attrs[] = {
 	/* Properties of type `const char *' */
 	POWER_SUPPLY_ATTR(model_name),
 	POWER_SUPPLY_ATTR(manufacturer),
+	POWER_SUPPLY_ATTR(serial_number),
 };
 
 static ssize_t power_supply_show_static_attrs(struct device *dev,
include/linux/power_supply.h +1 -0
index 606c095..300159b 100644
@@ -101,6 +101,7 @@ enum power_supply_property {
 	/* Properties of type `const char *' */
 	POWER_SUPPLY_PROP_MODEL_NAME,
 	POWER_SUPPLY_PROP_MANUFACTURER,
+	POWER_SUPPLY_PROP_SERIAL_NUMBER,
 };
 
 enum power_supply_type {
Signature · 1 line
1.5.4.rc2-dirty
#1 lore raw

ACK

Quoted 67 lines · maximilian attems

egrep serial /proc/acpi/battery/BAT0/info
serial number: 32090

serial number can tell you from the imminent danger of beeing set on fire.

---
 drivers/acpi/battery.c             |    5 +++++
 drivers/power/power_supply_sysfs.c |    1 +
 include/linux/power_supply.h       |    1 +
 3 files changed, 7 insertions(+), 0 deletions(-)
drivers/acpi/battery.c +5 -0
index c4a769d..f6215e8 100644
@@ -194,6 +194,9 @@ static int acpi_battery_get_property(struct power_supply *psy,
 	case POWER_SUPPLY_PROP_MANUFACTURER:
 		val->strval = battery->oem_info;
 		break;
+	case POWER_SUPPLY_PROP_SERIAL_NUMBER:
+		val->strval = battery->serial_number;
+		break;
 	default:
 		return -EINVAL;
 	}
@@ -212,6 +215,7 @@ static enum power_supply_property charge_battery_props[] = {
 	POWER_SUPPLY_PROP_CHARGE_NOW,
 	POWER_SUPPLY_PROP_MODEL_NAME,
 	POWER_SUPPLY_PROP_MANUFACTURER,
+	POWER_SUPPLY_PROP_SERIAL_NUMBER,
 };
 
 static enum power_supply_property energy_battery_props[] = {
@@ -226,6 +230,7 @@ static enum power_supply_property energy_battery_props[] = {
 	POWER_SUPPLY_PROP_ENERGY_NOW,
 	POWER_SUPPLY_PROP_MODEL_NAME,
 	POWER_SUPPLY_PROP_MANUFACTURER,
+	POWER_SUPPLY_PROP_SERIAL_NUMBER,
 };
 #endif
 
drivers/power/power_supply_sysfs.c +1 -0
index 249f61b..8feaa48 100644
@@ -117,6 +117,7 @@ static struct device_attribute power_supply_attrs[] = {
 	/* Properties of type `const char *' */
 	POWER_SUPPLY_ATTR(model_name),
 	POWER_SUPPLY_ATTR(manufacturer),
+	POWER_SUPPLY_ATTR(serial_number),
 };
 
 static ssize_t power_supply_show_static_attrs(struct device *dev,
include/linux/power_supply.h +1 -0
index 606c095..300159b 100644
@@ -101,6 +101,7 @@ enum power_supply_property {
 	/* Properties of type `const char *' */
 	POWER_SUPPLY_PROP_MODEL_NAME,
 	POWER_SUPPLY_PROP_MANUFACTURER,
+	POWER_SUPPLY_PROP_SERIAL_NUMBER,
 };
 
 enum power_supply_type {
#2 lore raw
Quoted 1 line · Alexey Starikovskiy

ACK

thanks for your quick response!

while checking the missing bits of ACPI_SYSFS_POWER versus ACPI_PROCFS_POWER i also noticed capacity granularity. is that used by anyone?

if yes i can send another patch for that too.
want to switch debian to ACPI_SYSFS_POWER.

Signature · 1 line
maks
#3 lore raw
Quoted 8 lines · maximilian attems
Quoted 1 line · Alexey Starikovskiy

ACK

thanks for your quick response!

while checking the missing bits of ACPI_SYSFS_POWER versus ACPI_PROCFS_POWER i also noticed capacity granularity. is that used by anyone?

IMHO, nobody cares about it.

Quoted 2 lines

if yes i can send another patch for that too.

SBS (sbs.c) has cycle_count field, which might be useful too, so you might want to show it as well.

Quoted 1 line

want to switch debian to ACPI_SYSFS_POWER.

Good luck!

#4 lore raw

[ added debian hal maintainer on cc ]

Quoted 5 lines · Alexey Starikovskiy
Quoted 3 lines · maximilian attems

while checking the missing bits of ACPI_SYSFS_POWER versus ACPI_PROCFS_POWER i also noticed capacity granularity. is that used by anyone?

IMHO, nobody cares about it.

ack, will add if someone cries.

Quoted 3 lines
Quoted 1 line

if yes i can send another patch for that too.

SBS (sbs.c) has cycle_count field, which might be useful too, so you might want to show it as well.

i see, need to testboot to see if my first try went right.

Quoted 2 lines
Quoted 1 line

want to switch debian to ACPI_SYSFS_POWER.

Good luck!

done on the linux side.
thanks. :)

got the following question:
~/src/hal$ egrep 'voltage_(max|min)_design' -r .
./hald/linux/device.c: if (hal_util_get_int_from_file (path, "voltage_max_design", &voltage_design, 10)) {

any particular reason the kernel is calling it cat /sys/class/power_supply/BAT0/voltage_min_design 14400000

shall i send in a patch along the line:
- case POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN:
+ case POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN:

                val->intval = battery->design_voltage * 1000;

or is it hal beeing silly?

Signature · 1 line
maks
#5 lore raw
Quoted 12 lines · maximilian attems

got the following question:
~/src/hal$ egrep 'voltage_(max|min)_design' -r .
./hald/linux/device.c: if (hal_util_get_int_from_file (path, "voltage_max_design", &voltage_design, 10)) {

any particular reason the kernel is calling it
cat /sys/class/power_supply/BAT0/voltage_min_design 14400000

shall i send in a patch along the line:

(quoted diff) +1 -1
-       case POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN:
+       case POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN:
                val->intval = battery->design_voltage * 1000;
Quoted 2 lines

or is it hal beeing silly?

On most new batteries design voltage is less than current voltage, thus I've chosen VOLTAGE_MIN_DESIGN.
On older batteries, current voltage may become lower than design, so I think hal should not be very strict about how they relate to each other.

Alex.

#6 lore raw
Quoted 13 lines · Alexey Starikovskiy
Quoted 12 lines · maximilian attems

got the following question:
~/src/hal$ egrep 'voltage_(max|min)_design' -r .
./hald/linux/device.c: if (hal_util_get_int_from_file (path, "voltage_max_design", &voltage_design, 10)) {

any particular reason the kernel is calling it
cat /sys/class/power_supply/BAT0/voltage_min_design 14400000

shall i send in a patch along the line:

(quoted diff) +1 -1
-       case POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN:
+       case POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN:
                val->intval = battery->design_voltage * 1000;
Quoted 5 lines
Quoted 2 lines

or is it hal beeing silly?

On most new batteries design voltage is less than current voltage, thus I've chosen VOLTAGE_MIN_DESIGN. On older batteries, current voltage may become lower than design, so I
think hal should not be very strict about how they relate to each other.

I'll patch up hal to use voltage_min_design if there is no voltage_max_design available. Which should be fine as we already picked up the same value from procfs for this property.

What it does make me wonder about, is why there is a difference between MIN and MAX in the power_supply class. As this doesn't seem to have a strict meaning (or at least not for ACPI). So why not just voltage_design instead ?

Sjoerd

Signature · 2 lines
The solution to a problem changes the nature of the problem.
		-- Peer
#7 lore raw
Quoted 19 lines · Sjoerd Simons
Quoted 13 lines · Alexey Starikovskiy
Quoted 12 lines · maximilian attems

got the following question:
~/src/hal$ egrep 'voltage_(max|min)_design' -r .
./hald/linux/device.c: if (hal_util_get_int_from_file (path, "voltage_max_design", &voltage_design, 10)) {

any particular reason the kernel is calling it
cat /sys/class/power_supply/BAT0/voltage_min_design 14400000

shall i send in a patch along the line:

(quoted diff) +1 -1
-       case POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN:
+       case POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN:
                val->intval = battery->design_voltage * 1000;
Quoted 4 lines
Quoted 2 lines

or is it hal beeing silly?

On most new batteries design voltage is less than current voltage, thus I've chosen VOLTAGE_MIN_DESIGN.
On older batteries, current voltage may become lower than design, so I think hal should not be very strict about how they relate to each other.

Quoted 7 lines

I'll patch up hal to use voltage_min_design if there is no voltage_max_design available. Which should be fine as we already picked up the same value from procfs for this property.

What it does make me wonder about, is why there is a difference between MIN and MAX in the power_supply class. As this doesn't seem to have a strict meaning (or at least not for ACPI). So why not just voltage_design instead ?

Don't know, may be they had battery for which both min and max voltages are known and crossing each needs to be guarded...

Regards,
Alex.

#8 lore raw
In reply to Alexey Starikovskiy

Dear Len Brown,

could you please merged acked patch,
don't feel like merging sysfs file patches in Debian on my own.

thanks for feedback

Signature · 1 line
maks
Quoted 66 lines · Alexey Starikovskiy

ACK

Quoted 64 lines · maximilian attems

egrep serial /proc/acpi/battery/BAT0/info
serial number: 32090

serial number can tell you from the imminent danger of beeing set on fire.

---
 drivers/acpi/battery.c             |    5 +++++
 drivers/power/power_supply_sysfs.c |    1 +
 include/linux/power_supply.h       |    1 +
 3 files changed, 7 insertions(+), 0 deletions(-)
drivers/acpi/battery.c +5 -0
index c4a769d..f6215e8 100644
@@ -194,6 +194,9 @@ static int acpi_battery_get_property(struct power_supply *psy,
 	case POWER_SUPPLY_PROP_MANUFACTURER:
 		val->strval = battery->oem_info;
 		break;
+	case POWER_SUPPLY_PROP_SERIAL_NUMBER:
+		val->strval = battery->serial_number;
+		break;
 	default:
 		return -EINVAL;
 	}
@@ -212,6 +215,7 @@ static enum power_supply_property charge_battery_props[] = {
 	POWER_SUPPLY_PROP_CHARGE_NOW,
 	POWER_SUPPLY_PROP_MODEL_NAME,
 	POWER_SUPPLY_PROP_MANUFACTURER,
+	POWER_SUPPLY_PROP_SERIAL_NUMBER,
 };
  static enum power_supply_property energy_battery_props[] = {
@@ -226,6 +230,7 @@ static enum power_supply_property energy_battery_props[] = {
 	POWER_SUPPLY_PROP_ENERGY_NOW,
 	POWER_SUPPLY_PROP_MODEL_NAME,
 	POWER_SUPPLY_PROP_MANUFACTURER,
+	POWER_SUPPLY_PROP_SERIAL_NUMBER,
 };
 #endif
 diff --git a/drivers/power/power_supply_sysfs.c 

b/drivers/power/power_supply_sysfs.c
index 249f61b..8feaa48 100644

drivers/power/power_supply_sysfs.c +1 -0
@@ -117,6 +117,7 @@ static struct device_attribute power_supply_attrs[] = {
 	/* Properties of type `const char *' */
 	POWER_SUPPLY_ATTR(model_name),
 	POWER_SUPPLY_ATTR(manufacturer),
+	POWER_SUPPLY_ATTR(serial_number),
 };
  static ssize_t power_supply_show_static_attrs(struct device *dev,
include/linux/power_supply.h +1 -0
index 606c095..300159b 100644
@@ -101,6 +101,7 @@ enum power_supply_property {
 	/* Properties of type `const char *' */
 	POWER_SUPPLY_PROP_MODEL_NAME,
 	POWER_SUPPLY_PROP_MANUFACTURER,
+	POWER_SUPPLY_PROP_SERIAL_NUMBER,
 };
  enum power_supply_type {
reviewer Applied
#9 lore raw
In reply to Alexey Starikovskiy

Applied.

thanks,
-Len

Quoted 75 lines · Alexey Starikovskiy

ACK

Quoted 60 lines · maximilian attems

egrep serial /proc/acpi/battery/BAT0/info
serial number: 32090

serial number can tell you from the imminent danger of beeing set on fire.

---
 drivers/acpi/battery.c             |    5 +++++
 drivers/power/power_supply_sysfs.c |    1 +
 include/linux/power_supply.h       |    1 +
 3 files changed, 7 insertions(+), 0 deletions(-)
drivers/acpi/battery.c +5 -0
index c4a769d..f6215e8 100644
@@ -194,6 +194,9 @@ static int acpi_battery_get_property(struct power_supply *psy,
 	case POWER_SUPPLY_PROP_MANUFACTURER:
 		val->strval = battery->oem_info;
 		break;
+	case POWER_SUPPLY_PROP_SERIAL_NUMBER:
+		val->strval = battery->serial_number;
+		break;
 	default:
 		return -EINVAL;
 	}
@@ -212,6 +215,7 @@ static enum power_supply_property charge_battery_props[] = {
 	POWER_SUPPLY_PROP_CHARGE_NOW,
 	POWER_SUPPLY_PROP_MODEL_NAME,
 	POWER_SUPPLY_PROP_MANUFACTURER,
+	POWER_SUPPLY_PROP_SERIAL_NUMBER,
 };
 
 static enum power_supply_property energy_battery_props[] = {
@@ -226,6 +230,7 @@ static enum power_supply_property energy_battery_props[] = {
 	POWER_SUPPLY_PROP_ENERGY_NOW,
 	POWER_SUPPLY_PROP_MODEL_NAME,
 	POWER_SUPPLY_PROP_MANUFACTURER,
+	POWER_SUPPLY_PROP_SERIAL_NUMBER,
 };
 #endif
 
drivers/power/power_supply_sysfs.c +1 -0
index 249f61b..8feaa48 100644
@@ -117,6 +117,7 @@ static struct device_attribute power_supply_attrs[] = {
 	/* Properties of type `const char *' */
 	POWER_SUPPLY_ATTR(model_name),
 	POWER_SUPPLY_ATTR(manufacturer),
+	POWER_SUPPLY_ATTR(serial_number),
 };
 
 static ssize_t power_supply_show_static_attrs(struct device *dev,
include/linux/power_supply.h +0 -0
index 606c095..300159b 100644

include/linux/power_supply.h enum power_supply_property { · line 107

Quoted 7 lines
include/linux/power_supply.h +1 -0
@@ -101,6 +101,7 @@ enum power_supply_property {
 	/* Properties of type `const char *' */
 	POWER_SUPPLY_PROP_MODEL_NAME,
 	POWER_SUPPLY_PROP_MANUFACTURER,
+	POWER_SUPPLY_PROP_SERIAL_NUMBER,
 };
 
 enum power_supply_type {

-
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html