summaryrefslogtreecommitdiff
path: root/common/battery.c
diff options
context:
space:
mode:
authorTommy Chung <tommy.chung@quanta.corp-partner.google.com>2021-10-14 09:15:15 +0800
committerCommit Bot <commit-bot@chromium.org>2021-10-28 00:55:53 +0000
commitdb63fb74ee0e4bc7c611033851759b41f44642fd (patch)
tree6276721df14d5b7466d7e4aae1de4f8a2c8c929e /common/battery.c
parentaa800465e8aa894086369cfc6df87341b179ce7d (diff)
downloadchrome-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.c32
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;