From 8d668ef4faf1da7b231ff28183a472fabe1acae0 Mon Sep 17 00:00:00 2001 From: Ting Shen Date: Wed, 27 May 2020 14:58:20 +0800 Subject: 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 `, where reg=0x70~0x7F 2) in ec console: `battparam `, where reg=0x70~0x7F BRANCH=kukui Signed-off-by: Ting Shen Change-Id: I1ee505f7473711b15b2c1029261956c4bf1bea5d Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2215091 Reviewed-by: Eric Yilun Lin Commit-Queue: Ting Shen Tested-by: Ting Shen --- board/kappa/board.c | 21 +++++++++++++++++++++ board/kappa/board.h | 1 + 2 files changed, 22 insertions(+) (limited to 'board/kappa') 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 -- cgit v1.2.1