power: Add property CHARGE_COUNTER_EXT and 64-bit precision properties
authorTodd Poynor <toddpoynor@google.com>
Thu, 12 Dec 2013 23:59:09 +0000 (15:59 -0800)
committerJohn Stultz <john.stultz@linaro.org>
Tue, 16 Feb 2016 21:53:37 +0000 (13:53 -0800)
Add POWER_SUPPLY_PROP_CHARGE_COUNTER_EXT that stores accumulated charge
in nAh units as a signed 64-bit value.

Add generic support for signed 64-bit property values.

Change-Id: I2bd34b1e95ffba24e7bfef81f398f22bd2aaf05e
Signed-off-by: Todd Poynor <toddpoynor@google.com>
drivers/power/power_supply_sysfs.c
include/linux/power_supply.h

index 6725a7f6a9a9ebf33ee3042e8947d30f6a5e3458..280018d59d5a60fab0b7d97145bbff25761bd8aa 100644 (file)
@@ -106,7 +106,10 @@ static ssize_t power_supply_show_property(struct device *dev,
        else if (off >= POWER_SUPPLY_PROP_MODEL_NAME)
                return sprintf(buf, "%s\n", value.strval);
 
-       return sprintf(buf, "%d\n", value.intval);
+       if (off == POWER_SUPPLY_PROP_CHARGE_COUNTER_EXT)
+               return sprintf(buf, "%lld\n", value.int64val);
+       else
+               return sprintf(buf, "%d\n", value.intval);
 }
 
 static ssize_t power_supply_store_property(struct device *dev,
@@ -201,6 +204,8 @@ static struct device_attribute power_supply_attrs[] = {
        POWER_SUPPLY_ATTR(usb_hc),
        POWER_SUPPLY_ATTR(usb_otg),
        POWER_SUPPLY_ATTR(charge_enabled),
+       /* Local extensions of type int64_t */
+       POWER_SUPPLY_ATTR(charge_counter_ext),
        /* Properties of type `const char *' */
        POWER_SUPPLY_ATTR(model_name),
        POWER_SUPPLY_ATTR(manufacturer),
index 6544861435d3b17317c60787de193523c11e399a..1c075892c6fdfb10518a52521c23e8a4e5f130b0 100644 (file)
@@ -18,6 +18,7 @@
 #include <linux/leds.h>
 #include <linux/spinlock.h>
 #include <linux/notifier.h>
+#include <linux/types.h>
 
 /*
  * All voltages, currents, charges, energies, time and temperatures in uV,
@@ -152,6 +153,8 @@ enum power_supply_property {
        POWER_SUPPLY_PROP_USB_HC,
        POWER_SUPPLY_PROP_USB_OTG,
        POWER_SUPPLY_PROP_CHARGE_ENABLED,
+       /* Local extensions of type int64_t */
+       POWER_SUPPLY_PROP_CHARGE_COUNTER_EXT,
        /* Properties of type `const char *' */
        POWER_SUPPLY_PROP_MODEL_NAME,
        POWER_SUPPLY_PROP_MANUFACTURER,
@@ -176,6 +179,7 @@ enum power_supply_notifier_events {
 union power_supply_propval {
        int intval;
        const char *strval;
+       int64_t int64val;
 };
 
 struct device_node;