diff options
author | Tommy Chung <tommy.chung@quanta.corp-partner.google.com> | 2021-10-14 09:15:15 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-10-28 00:55:53 +0000 |
commit | db63fb74ee0e4bc7c611033851759b41f44642fd (patch) | |
tree | 6276721df14d5b7466d7e4aae1de4f8a2c8c929e /common/battery.c | |
parent | aa800465e8aa894086369cfc6df87341b179ce7d (diff) | |
download | chrome-ec-db63fb74ee0e4bc7c611033851759b41f44642fd.tar.gz |
battery: Move battery get/set vendor param to common/battery.c
Since the functions are copied by many boards, move them to common.
The specific param regs are defined in each specific boards.
BUG=b:203031618
BRANCH=none
TEST=make BOARD=burnet/coachz/eve/homestar/kappa/mrbland/quackingstick/
wormdingler.
Signed-off-by: Tommy Chung <tommy.chung@quanta.corp-partner.google.com>
Change-Id: I77c070663ad3e800ec484bd21865c5d911a2c48b
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3220718
Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org>
Diffstat (limited to 'common/battery.c')
-rw-r--r-- | common/battery.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/common/battery.c b/common/battery.c index 6339573d2e..01478d5b52 100644 --- a/common/battery.c +++ b/common/battery.c @@ -395,6 +395,38 @@ int battery_is_cut_off(void) #endif /* CONFIG_BATTERY_CUT_OFF */ #ifdef CONFIG_BATTERY_VENDOR_PARAM +__overridable int battery_get_vendor_param(uint32_t param, uint32_t *value) +{ + const struct battery_info *bi = battery_get_info(); + struct battery_static_info *bs = &battery_static[BATT_IDX_MAIN]; + uint8_t *data = bs->vendor_param; + int rv; + + if (param < bi->vendor_param_start) + return EC_ERROR_ACCESS_DENIED; + + /* Skip read if cache is valid. */ + if (!data[0]) { + rv = sb_read_string(bi->vendor_param_start, data, + sizeof(bs->vendor_param)); + if (rv) { + data[0] = 0; + return rv; + } + } + + if (param > bi->vendor_param_start + strlen(data)) + return EC_ERROR_INVAL; + + *value = data[param - bi->vendor_param_start]; + return EC_SUCCESS; +} + +__overridable int battery_set_vendor_param(uint32_t param, uint32_t value) +{ + return EC_ERROR_UNIMPLEMENTED; +} + static int console_command_battery_vendor_param(int argc, char **argv) { uint32_t param; |