summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBill Richardson <wfrichar@chromium.org>2013-11-05 07:00:17 -0800
committerchrome-internal-fetch <chrome-internal-fetch@google.com>2013-11-05 22:45:21 +0000
commitd64de2bb1b903214ce19951918910a9f9ff10abf (patch)
tree6086702c7cac39ca78e04888703ead871be8e5ca
parent48dfd8c5ee5679c13b3931cac843b4e3dc1f9ed4 (diff)
downloadchrome-ec-d64de2bb1b903214ce19951918910a9f9ff10abf.tar.gz
Show smart battery status with 'battery' command
The smart battery status register holds some useful info. This displays it along with all the other stuff. This decodes the alarm and status bits, but not the error code, since that field is only valid immediately after a failed i2c transaction (that's how the battery indicates error). Since we do all sorts of automatic battery probing in other threads, that value will never be reliable when we run the "battery" console command. BUG=none BRANCH=none TEST=manual Run "battery". You should see a new line amongst the output: Status: 0x00c0 DCHG INIT Change-Id: I5e684198af2cf7767f89786c91a7d946ad95d4c2 Signed-off-by: Bill Richardson <wfrichar@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/175659
-rw-r--r--common/battery.c24
-rw-r--r--driver/battery/bq27541.c5
-rw-r--r--include/battery.h6
-rw-r--r--include/battery_smart.h2
4 files changed, 33 insertions, 4 deletions
diff --git a/common/battery.c b/common/battery.c
index 25c4bcf1f9..0d47378f94 100644
--- a/common/battery.c
+++ b/common/battery.c
@@ -38,6 +38,30 @@ static int print_battery_info(void)
char text[32];
const char *unit;
+ print_item_name("Status:");
+ if (check_print_error(battery_status(&value))) {
+ const char * const st[] = {"EMPTY", "FULL", "DCHG", "INIT",};
+ const char * const al[] = {"RT", "RC", "--", "TD",
+ "OT", "--", "TC", "OC"};
+ int i;
+ ccprintf("0x%04x", value);
+
+ /* bits 0-3 are only valid when the previous transaction
+ * failed, so ignore them */
+
+ /* bits 4-7 are status */
+ for (i = 0; i < 4; i++)
+ if (value & (1 << (i+4)))
+ ccprintf(" %s", st[i]);
+
+ /* bits 15-8 are alarms */
+ for (i = 0; i < 8; i++)
+ if (value & (1 << (i+8)))
+ ccprintf(" %s", al[i]);
+
+ ccprintf("\n");
+ }
+
print_item_name("Temp:");
if (check_print_error(battery_temperature(&value)))
ccprintf("0x%04x = %.1d K (%.1d C)\n",
diff --git a/driver/battery/bq27541.c b/driver/battery/bq27541.c
index 42397135d0..1060a6ba13 100644
--- a/driver/battery/bq27541.c
+++ b/driver/battery/bq27541.c
@@ -205,6 +205,11 @@ int battery_get_mode(int *mode)
return EC_ERROR_UNIMPLEMENTED;
}
+int battery_status(int *status)
+{
+ return EC_ERROR_UNIMPLEMENTED;
+}
+
int battery_is_in_10mw_mode(int *val)
{
/* Always using mAh unit */
diff --git a/include/battery.h b/include/battery.h
index 10d0b6dcd0..b5056cf9d4 100644
--- a/include/battery.h
+++ b/include/battery.h
@@ -86,7 +86,7 @@ int battery_is_connected(void);
/**
* Get battery mode.
*
- * See MODE_* constants in smart_battery.h
+ * See MODE_* constants in battery_smart.h
*
* @param mode Destination for current mode.
* @return non-zero if error.
@@ -96,7 +96,7 @@ int battery_get_mode(int *mode);
/**
* Set battery mode.
*
- * See MODE_* constants in smart_battery.h
+ * See MODE_* constants in battery_smart.h
*
* @param mode New mode.
* @return non-zero if error.
@@ -267,7 +267,7 @@ int battery_charging_allowed(int *allowed);
/**
* Read battery status.
*
- * @param status Destination for status; see STATUS_* in smart_battery.h.
+ * @param status Destination for status; see STATUS_* in battery_smart.h.
* @return non-zero if error.
*/
int battery_status(int *status);
diff --git a/include/battery_smart.h b/include/battery_smart.h
index 6324f1c31d..3e031b8f60 100644
--- a/include/battery_smart.h
+++ b/include/battery_smart.h
@@ -80,7 +80,7 @@
#define STATUS_FULLY_DISCHARGED (1 << 4)
#define STATUS_FULLY_CHARGED (1 << 5)
#define STATUS_DISCHARGING (1 << 6)
-#define STATUS_INITIALIZING (1 << 7)
+#define STATUS_INITIALIZED (1 << 7)
#define STATUS_REMAINING_TIME_ALARM (1 << 8)
#define STATUS_REMAINING_CAPACITY_ALARM (1 << 9)
#define STATUS_TERMINATE_DISCHARGE_ALARM (1 << 11)