diff options
author | Bruce <Bruce.Wan@quantatw.com> | 2016-11-14 14:32:35 +0800 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2016-11-16 16:47:46 -0800 |
commit | 2051adae6d6b357b03e890d80455a9cd5b13fce8 (patch) | |
tree | 9bf1d3875fae1b3737b8be3c02e1ead60a9456ae | |
parent | 8feb3ab4ec68d230493c45b1d43835d04a37b398 (diff) | |
download | chrome-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.c | 41 | ||||
-rw-r--r-- | board/pyro/board.h | 1 |
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 |