diff options
author | Dave Parker <dparker@chromium.org> | 2014-04-19 14:04:03 -0700 |
---|---|---|
committer | chrome-internal-fetch <chrome-internal-fetch@google.com> | 2014-04-30 03:21:55 +0000 |
commit | f64887bda0289905c81bcb2050b5741c718795da (patch) | |
tree | 7d6a5817a9b93dab2a92c01fcce821eb3c2ff9d7 /common/battery.c | |
parent | dc6a36d371056d2af6026e63b1ebfd9e4950b10a (diff) | |
download | chrome-ec-f64887bda0289905c81bcb2050b5741c718795da.tar.gz |
Add host command to set battery vendor parametersstabilize-zako-5712.88.Bstabilize-5712.89.Bstabilize-5712.61.Bstabilize-5712.49.Brelease-R35-5712.B
Also adds 'battparam' console command.
BUG=chrome-os-partner:25145
BRANCH=ToT
TEST=Run 'ectool batteryparam set 0 0x1234'
'ectool batteryparam get 0'
and on the console:
'battparam 0'
'battparam 0 0x1234'
on a board that implements parameter 0.
Change-Id: I9cc54d001631f53dd39ae64cfdeececaa1747181
Original-Change-Id: Ib2812f57f2484309d613b23dab12ad43e0417bd2
Signed-off-by: Dave Parker <dparker@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/195824
Reviewed-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/197162
(cherry picked from commit 4e1472e3037602beec0eb5849ab76fb055d5a657)
Reviewed-on: https://chromium-review.googlesource.com/197590
Commit-Queue: Bernie Thompson <bhthompson@chromium.org>
Tested-by: Bernie Thompson <bhthompson@chromium.org>
Diffstat (limited to 'common/battery.c')
-rw-r--r-- | common/battery.c | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/common/battery.c b/common/battery.c index 1f8b757929..5195bc7cf1 100644 --- a/common/battery.c +++ b/common/battery.c @@ -237,3 +237,69 @@ DECLARE_CONSOLE_COMMAND(battery, command_battery, "<repeat_count> <sleep_ms>", "Print battery info", NULL); + +#ifdef CONFIG_BATTERY_VENDOR_PARAM +static int console_command_battery_vendor_param(int argc, char **argv) +{ + uint32_t param; + uint32_t value; + char *e; + int rv; + + if (argc < 2) + return EC_ERROR_INVAL; + + param = strtoi(argv[1], &e, 0); + if (*e) { + ccputs("Invalid param\n"); + return EC_ERROR_INVAL; + } + + if (argc > 2) { + value = strtoi(argv[2], &e, 0); + if (*e) { + ccputs("Invalid value\n"); + return EC_ERROR_INVAL; + } + rv = battery_set_vendor_param(param, value); + if (rv != EC_SUCCESS) + return rv; + } + + rv = battery_get_vendor_param(param, &value); + if (rv != EC_SUCCESS) + return rv; + + ccprintf("0x%08x\n", value); + return EC_SUCCESS; +} +DECLARE_CONSOLE_COMMAND(battparam, console_command_battery_vendor_param, + "<param> [value]", + "Get or set battery vendor parameters", + NULL); + +static int host_command_battery_vendor_param(struct host_cmd_handler_args *args) +{ + int rv; + const struct ec_params_battery_vendor_param *p = args->params; + struct ec_response_battery_vendor_param *r = args->response; + + args->response_size = sizeof(*r); + + if (p->mode != BATTERY_VENDOR_PARAM_MODE_GET && + p->mode != BATTERY_VENDOR_PARAM_MODE_SET) + return EC_RES_INVALID_PARAM; + + if (p->mode == BATTERY_VENDOR_PARAM_MODE_SET) { + rv = battery_set_vendor_param(p->param, p->value); + if (rv != EC_SUCCESS) + return rv; + } + + rv = battery_get_vendor_param(p->param, &r->value); + return rv; +} +DECLARE_HOST_COMMAND(EC_CMD_BATTERY_VENDOR_PARAM, + host_command_battery_vendor_param, + EC_VER_MASK(0)); +#endif /* CONFIG_BATTERY_VENDOR_PARAM */ |