diff options
author | Henry Hsu <Henry.Hsu@quantatw.com> | 2014-04-25 10:21:10 +0800 |
---|---|---|
committer | chrome-internal-fetch <chrome-internal-fetch@google.com> | 2014-04-25 17:53:37 +0000 |
commit | 67dfa4fbd75fa25bbc6b3ffcdf77179d2a2347ca (patch) | |
tree | e56f7caec11311782642a14210a428777db67af8 | |
parent | d6e43a834e46e2769ba94afd09dc47892a8ef423 (diff) | |
download | chrome-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.c | 40 | ||||
-rw-r--r-- | board/glimmer/board.h | 1 |
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 |