diff options
author | Ting Shen <phoenixshen@google.com> | 2020-05-27 14:58:20 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-05-28 09:00:08 +0000 |
commit | 8d668ef4faf1da7b231ff28183a472fabe1acae0 (patch) | |
tree | 06778174b440310ec66b79b39e691131f02ed9d7 /board | |
parent | 69fb73897baf9148da757ed96e29e86abfbd2b67 (diff) | |
download | chrome-ec-8d668ef4faf1da7b231ff28183a472fabe1acae0.tar.gz |
kappa: implement battery_get_vendor_param to return oemdata
Kappa has a script (CL:*661617) that needs access of a non-standard
SBS command for supplier and manufacture information.
Implement a customized vendor param to expose this data to host.
Since battery_get_vendor_param can only return 4 bytes at once, the
command 0x70 is split into 16 separate calls (0x70~0x7F) to mimic the
read string operation. Commands outside this range are rejected.
BUG=b:155936029
TEST=1) `ectool batteryparam get <reg>`, where reg=0x70~0x7F
2) in ec console: `battparam <reg>`, where reg=0x70~0x7F
BRANCH=kukui
Signed-off-by: Ting Shen <phoenixshen@google.com>
Change-Id: I1ee505f7473711b15b2c1029261956c4bf1bea5d
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2215091
Reviewed-by: Eric Yilun Lin <yllin@chromium.org>
Commit-Queue: Ting Shen <phoenixshen@chromium.org>
Tested-by: Ting Shen <phoenixshen@chromium.org>
Diffstat (limited to 'board')
-rw-r--r-- | board/kappa/board.c | 21 | ||||
-rw-r--r-- | board/kappa/board.h | 1 |
2 files changed, 22 insertions, 0 deletions
diff --git a/board/kappa/board.c b/board/kappa/board.c index ea1821ee07..dc759146c4 100644 --- a/board/kappa/board.c +++ b/board/kappa/board.c @@ -289,3 +289,24 @@ static void board_chipset_shutdown(void) } DECLARE_HOOK(HOOK_CHIPSET_SHUTDOWN, board_chipset_shutdown, HOOK_PRIO_DEFAULT); +int battery_get_vendor_param(uint32_t param, uint32_t *value) +{ + int rv; + uint8_t data[16] = {}; + + /* only allow reading 0x70~0x7F, 16 byte data */ + if (param < 0x70 || param >= 0x80) + return EC_ERROR_ACCESS_DENIED; + + rv = sb_read_string(0x70, data, sizeof(data)); + if (rv) + return rv; + + *value = data[param - 0x70]; + return EC_SUCCESS; +} + +int battery_set_vendor_param(uint32_t param, uint32_t value) +{ + return EC_ERROR_UNIMPLEMENTED; +} diff --git a/board/kappa/board.h b/board/kappa/board.h index cab495c42c..cdd3b30cdc 100644 --- a/board/kappa/board.h +++ b/board/kappa/board.h @@ -22,6 +22,7 @@ #define CONFIG_CHIPSET_POWER_SEQ_VERSION 1 #define CONFIG_BATTERY_HW_PRESENT_CUSTOM +#define CONFIG_BATTERY_VENDOR_PARAM #define CONFIG_CHARGER_PSYS |