summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruce <Bruce.Wan@quantatw.com>2015-12-23 14:20:23 +0800
committerChromeOS bot <3su6n15k.default@developer.gserviceaccount.com>2015-12-27 22:50:44 +0000
commitb0808565e065bca7d39da082cf2c52636074645a (patch)
tree90314a8c060f244d9837bcb1d9bb7c216ebf5d3e
parent4d9e1e342bc0fd8dd3de666c5f62d7bf62f3acca (diff)
downloadchrome-ec-b0808565e065bca7d39da082cf2c52636074645a.tar.gz
Ultima: Add battery FUD support
Add battery FUD support BUG=chrome-os-partner:44053 BRANCH=firmware-strago-7287.B TEST=make buildall Change-Id: I8ead1672f5caf93d8699bacbcdedc489406c24a9 Signed-off-by: Bruce.Wan <Bruce.Wan@quantatw.com> Reviewed-on: https://chromium-review.googlesource.com/319722 Reviewed-by: Shawn N <shawnn@chromium.org> Commit-Queue: Keith Tzeng <keith.tzeng@quantatw.com> Tested-by: Keith Tzeng <keith.tzeng@quantatw.com>
-rw-r--r--board/ultima/battery.c40
-rw-r--r--board/ultima/board.h1
2 files changed, 41 insertions, 0 deletions
diff --git a/board/ultima/battery.c b/board/ultima/battery.c
index 4a8bf7d331..c80b3b9f0b 100644
--- a/board/ultima/battery.c
+++ b/board/ultima/battery.c
@@ -23,6 +23,9 @@
#define SB_FETON_DATA2 0x4000
#define BATTERY_FETOFF 0x0100
+/* First use day base */
+#define BATT_FUD_BASE 0x38
+
/*
* Green book support parameter
* Enable this will make battery meet JEITA standard
@@ -91,3 +94,40 @@ 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;
+ }
+}
diff --git a/board/ultima/board.h b/board/ultima/board.h
index c3b59615a7..1b5e1e4570 100644
--- a/board/ultima/board.h
+++ b/board/ultima/board.h
@@ -50,6 +50,7 @@
#define CONFIG_BATTERY_CUT_OFF
#define CONFIG_BATTERY_PRESENT_GPIO GPIO_BAT_PRESENT_L
#define CONFIG_BATTERY_SMART
+#define CONFIG_BATTERY_VENDOR_PARAM
#define CONFIG_CHARGER
#define CONFIG_CHARGER_V2
#define CONFIG_CHARGER_BQ24770