summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruce <Bruce.Wan@quantatw.com>2016-11-14 14:32:35 +0800
committerchrome-bot <chrome-bot@chromium.org>2016-11-16 16:47:46 -0800
commit2051adae6d6b357b03e890d80455a9cd5b13fce8 (patch)
tree9bf1d3875fae1b3737b8be3c02e1ead60a9456ae
parent8feb3ab4ec68d230493c45b1d43835d04a37b398 (diff)
downloadchrome-ec-2051adae6d6b357b03e890d80455a9cd5b13fce8.tar.gz
Pyro: Add battery FUD support
Add battery FUD support BUG=chrome-os-partner:59771 BRANCH=None TEST=make buildall Change-Id: I0969b3c25d187f1de025f53f9a61fd298c9631c4 Signed-off-by: Bruce.Wan <Bruce.Wan@quantatw.com> Reviewed-on: https://chromium-review.googlesource.com/410963 Commit-Ready: Keith Tzeng <keith.tzeng@quantatw.com> Tested-by: Keith Tzeng <keith.tzeng@quantatw.com> Reviewed-by: Shawn N <shawnn@chromium.org>
-rw-r--r--board/pyro/battery.c41
-rw-r--r--board/pyro/board.h1
2 files changed, 42 insertions, 0 deletions
diff --git a/board/pyro/battery.c b/board/pyro/battery.c
index 83931a0822..5e13f09621 100644
--- a/board/pyro/battery.c
+++ b/board/pyro/battery.c
@@ -26,6 +26,9 @@
#define SB_FETON_DATA2 0x4000
#define BATTERY_FETOFF 0x0100
+/* First use day base */
+#define BATT_FUD_BASE 0x38
+
#define GREEN_BOOK_SUPPORT (1 << 2)
/* Shutdown mode parameter to write to manufacturer access register */
@@ -98,6 +101,44 @@ int board_cut_off_battery(void)
return cutoff();
}
+int battery_get_vendor_param(uint32_t param, uint32_t *value)
+{
+ return EC_ERROR_UNIMPLEMENTED;
+}
+
+/* parameter 0 for first use day */
+int battery_set_vendor_param(uint32_t param, uint32_t value)
+{
+ if (param == 0) {
+ int rv, ymd;
+
+ rv = sb_read(BATT_FUD_BASE, &ymd);
+ if (rv != EC_SUCCESS)
+ return EC_ERROR_UNKNOWN;
+ if (ymd == 0)
+ return sb_write(BATT_FUD_BASE, value) ?
+ EC_ERROR_UNKNOWN : EC_SUCCESS;
+
+ rv = sb_read(BATT_FUD_BASE | 0x03, &ymd);
+ if (rv != EC_SUCCESS)
+ return EC_ERROR_UNKNOWN;
+ if (ymd == 0)
+ return sb_write(BATT_FUD_BASE | 0x03, value) ?
+ EC_ERROR_UNKNOWN : EC_SUCCESS;
+
+ rv = sb_read(BATT_FUD_BASE | 0x07, &ymd);
+ if (rv != EC_SUCCESS)
+ return EC_ERROR_UNKNOWN;
+ if (ymd == 0)
+ return sb_write(BATT_FUD_BASE | 0x07, value) ?
+ EC_ERROR_UNKNOWN : EC_SUCCESS;
+
+ return EC_ERROR_UNKNOWN;
+ } else {
+ return EC_ERROR_UNIMPLEMENTED;
+ }
+}
+
enum battery_disconnect_state battery_get_disconnect_state(void)
{
uint8_t data[6];
diff --git a/board/pyro/board.h b/board/pyro/board.h
index 0fe54ab393..40533f0e05 100644
--- a/board/pyro/board.h
+++ b/board/pyro/board.h
@@ -49,6 +49,7 @@
#define CONFIG_BATTERY_PRESENT_CUSTOM
#define CONFIG_BATTERY_REVIVE_DISCONNECT
#define CONFIG_BATTERY_SMART
+#define CONFIG_BATTERY_VENDOR_PARAM
/* Charger */
#define CONFIG_CHARGE_MANAGER