summaryrefslogtreecommitdiff
path: root/util/ectool.c
diff options
context:
space:
mode:
authorShawn Nematbakhsh <shawnn@chromium.org>2014-11-19 15:58:30 -0800
committerchrome-internal-fetch <chrome-internal-fetch@google.com>2014-11-20 02:55:41 +0000
commitb3bf2a61a385bf9aee3b231b1a0051d9ea349811 (patch)
tree5cad03b32da38ea1140253fc3b1724026e20c2d7 /util/ectool.c
parentd5803a02693f72a80da64193a729a71ac585df6b (diff)
downloadchrome-ec-b3bf2a61a385bf9aee3b231b1a0051d9ea349811.tar.gz
charge_manager: Add PD_CHARGE_PORT_OVERRIDE host command
Add host command to set charge port override. BUG=chrome-os-partner:32003 BRANCH=Samus TEST=Manual on Samus. Insert PD charger in port1 and BC1.2 charger in port0. ./ectool --name=cros_pd chargeoverride 0 --> Charges from port 0 ./ectool --name=cros_pd chargeoverride off --> Charges from port 1 ./ectool --name=cros_pd chargeoverride dontcharge --> No charge port ./ectool --name=cros_pd chargeoverride 1 --> Charges from port 1 ./ectool --name=cros_pd chargeoverride 2 --> Correctly returns error Signed-off-by: Shawn Nematbakhsh <shawnn@chromium.org> Change-Id: Ib35f797a4a24e96fd2e3c008ace3fd6291b89d25 Reviewed-on: https://chromium-review.googlesource.com/230910 Reviewed-by: Alec Berg <alecaberg@chromium.org>
Diffstat (limited to 'util/ectool.c')
-rw-r--r--util/ectool.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/util/ectool.c b/util/ectool.c
index 0222720d00..9901358b5d 100644
--- a/util/ectool.c
+++ b/util/ectool.c
@@ -60,6 +60,8 @@ const char help_str[] =
" Set the maximum battery charging current\n"
" chargecontrol\n"
" Force the battery to stop charging or discharge\n"
+ " chargeoverride\n"
+ " Overrides charge port selection logic\n"
" chargestate\n"
" Handle commands related to charge state v2 (and later)\n"
" chipinfo\n"
@@ -5159,6 +5161,39 @@ int cmd_force_lid_open(int argc, char *argv[])
return 0;
}
+int cmd_charge_port_override(int argc, char *argv[])
+{
+ struct ec_params_charge_port_override p;
+ char *e;
+ int rv;
+
+ if (argc < 2) {
+ fprintf(stderr, "Usage: %s <port# | dontcharge | off>\n",
+ argv[0]);
+ return -1;
+ }
+
+ if (!strcasecmp(argv[1], "dontcharge"))
+ p.override_port = OVERRIDE_DONT_CHARGE;
+ else if (!strcasecmp(argv[1], "off"))
+ p.override_port = OVERRIDE_OFF;
+ else {
+ p.override_port = strtol(argv[1], &e, 0);
+ if (e && *e) {
+ fprintf(stderr, "Bad parameter.\n");
+ return -1;
+ }
+ }
+
+ rv = ec_command(EC_CMD_PD_CHARGE_PORT_OVERRIDE, 0, &p, sizeof(p),
+ NULL, 0);
+ if (rv < 0)
+ return rv;
+
+ printf("Override port set to %d\n", p.override_port);
+ return 0;
+}
+
/* NULL-terminated list of commands */
const struct command commands[] = {
{"extpwrcurrentlimit", cmd_ext_power_current_limit},
@@ -5170,6 +5205,7 @@ const struct command commands[] = {
{"boardversion", cmd_board_version},
{"chargecurrentlimit", cmd_charge_current_limit},
{"chargecontrol", cmd_charge_control},
+ {"chargeoverride", cmd_charge_port_override},
{"chargestate", cmd_charge_state},
{"chipinfo", cmd_chipinfo},
{"cmdversions", cmd_cmdversions},