summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHenry Hsu <Henry.Hsu@quantatw.com>2014-04-25 10:21:10 +0800
committerchrome-internal-fetch <chrome-internal-fetch@google.com>2014-04-25 17:53:37 +0000
commit67dfa4fbd75fa25bbc6b3ffcdf77179d2a2347ca (patch)
treee56f7caec11311782642a14210a428777db67af8
parentd6e43a834e46e2769ba94afd09dc47892a8ef423 (diff)
downloadchrome-ec-67dfa4fbd75fa25bbc6b3ffcdf77179d2a2347ca.tar.gz
Glimmer: Support write first use day function
Only support write function. BUG=chrome-os-partner:25145 BRANCH=glimmer TEST=clean correspondence register to 0, run "ectool batteryparam set 0 0x1234", and check the register. The register change to 0x1234. Command "ectool batteryparam set 0 0x1234" return 2 because we have no get function. Change-Id: I2d8c66fc41ddb45c45ff993eaed1e067689b1268 Signed-off-by: Henry Hsu <Henry.Hsu@quantatw.com> Reviewed-on: https://chromium-review.googlesource.com/196973 Reviewed-by: Dave Parker <dparker@chromium.org>
-rw-r--r--board/glimmer/battery.c40
-rw-r--r--board/glimmer/board.h1
2 files changed, 41 insertions, 0 deletions
diff --git a/board/glimmer/battery.c b/board/glimmer/battery.c
index 1c5562af8f..009a047237 100644
--- a/board/glimmer/battery.c
+++ b/board/glimmer/battery.c
@@ -25,6 +25,9 @@
#define SB_FETON_DATA2 0x4000
#define BATTERY_FETOFF 0x0100
+/* First use day base */
+#define BATT_FUD_BASE 0x38
+
static const struct battery_info info = {
.voltage_max = 8400, /* mV */
.voltage_normal = 7400,
@@ -113,3 +116,40 @@ static void charger_init(void)
}
}
DECLARE_HOOK(HOOK_CHARGE_STATE_CHANGE, charger_init, HOOK_PRIO_DEFAULT);
+
+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/glimmer/board.h b/board/glimmer/board.h
index 717eabebd1..ac8095d49c 100644
--- a/board/glimmer/board.h
+++ b/board/glimmer/board.h
@@ -14,6 +14,7 @@
#define CONFIG_BACKLIGHT_LID
#define CONFIG_BATTERY_PRESENT_GPIO GPIO_BAT_PRESENT_L
#define CONFIG_BATTERY_SMART
+#define CONFIG_BATTERY_VENDOR_PARAM
#define CONFIG_BOARD_VERSION
#define CONFIG_BUTTON_COUNT 2
#define CONFIG_CHARGER