summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWeilun Du <wdu@google.com>2017-07-18 11:34:23 -0700
committerRoman Kiryanov <rkir@google.com>2020-04-07 18:07:30 -0700
commitf21844d8b0d5e15dc7eb7a4cc14e6bce1dc5f32f (patch)
treeca0be69d644777504cf107ff3b95abed6089f5b0
parenta215f7533c918c383bb3df1e533ce19644cc2464 (diff)
downloadgoldfish-f21844d8b0d5e15dc7eb7a4cc14e6bce1dc5f32f.tar.gz
goldfish_battery: Adding more properties for read
Add voltage, temperature, charge counter, voltage max and current max properties to goldfish battery for read. Added POWER_SUPPLY_PROP_CURRENT_NOW,POWER_SUPPLY_PROP_CURRENT_AVG, POWER_SUPPLY_PROP_CHARGE_FULL, POWER_SUPPLY_PROP_CYCLE_COUNT. Use hard-coded values in goldfish-battery driver to avoid error logs in host emulator. Bug: 78225751 Bug: 37465083 Bug: 153210465 Signed-off-by: Weilun Du <wdu@google.com> Signed-off-by: Roman Kiryanov <rkir@google.com> Change-Id: I171d681920db9e6c15284c2c9cf2cd9c09410e33 Signed-off-by: Roman Kiryanov <rkir@google.com>
-rw-r--r--drivers/power/supply/goldfish_battery.c48
1 files changed, 46 insertions, 2 deletions
diff --git a/drivers/power/supply/goldfish_battery.c b/drivers/power/supply/goldfish_battery.c
index f5c525e4482a..08f789c99803 100644
--- a/drivers/power/supply/goldfish_battery.c
+++ b/drivers/power/supply/goldfish_battery.c
@@ -26,6 +26,9 @@
#include <linux/io.h>
#include <linux/acpi.h>
+#define POWER_SUPPLY_CURRENT_UA (900000) /* in uAmp */
+#define POWER_SUPPLY_CHARGE_FULL_UAH (300000) /* in uAmp*H */
+
struct goldfish_battery_data {
void __iomem *reg_base;
int irq;
@@ -51,13 +54,16 @@ enum {
BATTERY_INT_STATUS = 0x00,
/* set this to enable IRQ */
BATTERY_INT_ENABLE = 0x04,
-
BATTERY_AC_ONLINE = 0x08,
BATTERY_STATUS = 0x0C,
BATTERY_HEALTH = 0x10,
BATTERY_PRESENT = 0x14,
BATTERY_CAPACITY = 0x18,
-
+ BATTERY_VOLTAGE = 0x1C,
+ BATTERY_TEMP = 0x20,
+ BATTERY_CHARGE_COUNTER = 0x24,
+ BATTERY_VOLTAGE_MAX = 0x28,
+ BATTERY_CURRENT_MAX = 0x2c,
BATTERY_STATUS_CHANGED = 1U << 0,
AC_STATUS_CHANGED = 1U << 1,
BATTERY_INT_MASK = BATTERY_STATUS_CHANGED | AC_STATUS_CHANGED,
@@ -75,6 +81,13 @@ static int goldfish_ac_get_property(struct power_supply *psy,
case POWER_SUPPLY_PROP_ONLINE:
val->intval = GOLDFISH_BATTERY_READ(data, BATTERY_AC_ONLINE);
break;
+
+ case POWER_SUPPLY_PROP_VOLTAGE_MAX:
+ val->intval = GOLDFISH_BATTERY_READ(data, BATTERY_VOLTAGE_MAX);
+ break;
+ case POWER_SUPPLY_PROP_CURRENT_MAX:
+ val->intval = GOLDFISH_BATTERY_READ(data, BATTERY_CURRENT_MAX);
+ break;
default:
ret = -EINVAL;
break;
@@ -105,6 +118,28 @@ static int goldfish_battery_get_property(struct power_supply *psy,
case POWER_SUPPLY_PROP_CAPACITY:
val->intval = GOLDFISH_BATTERY_READ(data, BATTERY_CAPACITY);
break;
+ case POWER_SUPPLY_PROP_VOLTAGE_NOW:
+ val->intval = GOLDFISH_BATTERY_READ(data, BATTERY_VOLTAGE);
+ break;
+ case POWER_SUPPLY_PROP_TEMP:
+ val->intval = GOLDFISH_BATTERY_READ(data, BATTERY_TEMP);
+ break;
+ case POWER_SUPPLY_PROP_CHARGE_COUNTER:
+ val->intval = GOLDFISH_BATTERY_READ(data,
+ BATTERY_CHARGE_COUNTER);
+ break;
+ case POWER_SUPPLY_PROP_CURRENT_NOW:
+ val->intval = POWER_SUPPLY_CURRENT_UA;
+ break;
+ case POWER_SUPPLY_PROP_CURRENT_AVG:
+ val->intval = POWER_SUPPLY_CURRENT_UA;
+ break;
+ case POWER_SUPPLY_PROP_CHARGE_FULL:
+ val->intval = POWER_SUPPLY_CHARGE_FULL_UAH;
+ break;
+ case POWER_SUPPLY_PROP_CYCLE_COUNT:
+ val->intval = 10;
+ break;
default:
ret = -EINVAL;
break;
@@ -119,10 +154,19 @@ static enum power_supply_property goldfish_battery_props[] = {
POWER_SUPPLY_PROP_PRESENT,
POWER_SUPPLY_PROP_TECHNOLOGY,
POWER_SUPPLY_PROP_CAPACITY,
+ POWER_SUPPLY_PROP_VOLTAGE_NOW,
+ POWER_SUPPLY_PROP_TEMP,
+ POWER_SUPPLY_PROP_CHARGE_COUNTER,
+ POWER_SUPPLY_PROP_CURRENT_NOW,
+ POWER_SUPPLY_PROP_CURRENT_AVG,
+ POWER_SUPPLY_PROP_CHARGE_FULL,
+ POWER_SUPPLY_PROP_CYCLE_COUNT,
};
static enum power_supply_property goldfish_ac_props[] = {
POWER_SUPPLY_PROP_ONLINE,
+ POWER_SUPPLY_PROP_VOLTAGE_MAX,
+ POWER_SUPPLY_PROP_CURRENT_MAX,
};
static irqreturn_t goldfish_battery_interrupt(int irq, void *dev_id)