diff options
author | Duncan Laurie <dlaurie@chromium.org> | 2013-07-23 08:07:40 -0700 |
---|---|---|
committer | ChromeBot <chrome-bot@google.com> | 2013-07-23 08:14:13 -0700 |
commit | 4cb0f00be21fb4cdf16313c6dc4e0a84c7557427 (patch) | |
tree | 7a577cde20121529c213b3905f9dfb9fd28eade6 /util | |
parent | 10d0f2b35eab5aa9a6585a4324df960534407439 (diff) | |
download | chrome-ec-4cb0f00be21fb4cdf16313c6dc4e0a84c7557427.tar.gz |
Add ectool discharge command to Falco and Peppy.
Expands and renames ectool 'chargeforceidle' command to
'chargecontrol'. Board-specific calls are needed to enable and
disable the discharge while on AC power state.
BUG=chrome-os-partner:20506
BRANCH=falco,peppy
TEST=Run ectool chargecontrol command with each option (normal,
idle, discharge) on Falco and Peppy. Verifiy battery is discharging
in discharge mode via EC console 'battery' command.
Original-Change-Id: I7ac2b18b4f143bf6abc1e0bb878ad21a99f52100
Signed-off-by: Dave Parker <dparker@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/60689
Reviewed-by: Vic Yang <victoryang@chromium.org>
Reviewed-by: Randall Spangler <rspangler@chromium.org>
(cherry picked from commit 7f1c49ab4be3c662a488d2c4e9acceef2c904465)
Change-Id: I1ecf820dfc3b905d498ab5c65b39b7971803c9a5
Signed-off-by: Duncan Laurie <dlaurie@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/63023
Diffstat (limited to 'util')
-rw-r--r-- | util/ectool.c | 40 |
1 files changed, 27 insertions, 13 deletions
diff --git a/util/ectool.c b/util/ectool.c index b68b5007a3..60633e7aae 100644 --- a/util/ectool.c +++ b/util/ectool.c @@ -40,8 +40,8 @@ const char help_str[] = " Set the maximum battery charging current\n" " chargedump\n" " Dump the context of charge state machine\n" - " chargeforceidle\n" - " Force charge state machine to stop in idle mode\n" + " chargecontrol\n" + " Force the battery to stop charging or discharge\n" " chipinfo\n" " Prints chip info\n" " cmdversions <cmd>\n" @@ -2375,33 +2375,47 @@ int cmd_charge_current_limit(int argc, char *argv[]) } -int cmd_charge_force_idle(int argc, char *argv[]) +int cmd_charge_control(int argc, char *argv[]) { - struct ec_params_force_idle p; + struct ec_params_charge_control p; int rv; - char *e; if (argc != 2) { - fprintf(stderr, "Usage: %s <0|1>\n", argv[0]); + fprintf(stderr, "Usage: %s <normal | idle | discharge>\n", + argv[0]); return -1; } - p.enabled = strtol(argv[1], &e, 0); - if (e && *e) { + if (!strcasecmp(argv[1], "normal")) { + p.mode = CHARGE_CONTROL_NORMAL; + } else if (!strcasecmp(argv[1], "idle")) { + p.mode = CHARGE_CONTROL_IDLE; + } else if (!strcasecmp(argv[1], "discharge")) { + p.mode = CHARGE_CONTROL_DISCHARGE; + } else { fprintf(stderr, "Bad value.\n"); return -1; } - rv = ec_command(EC_CMD_CHARGE_FORCE_IDLE, 0, &p, sizeof(p), NULL, 0); + rv = ec_command(EC_CMD_CHARGE_CONTROL, 1, &p, sizeof(p), NULL, 0); if (rv < 0) { fprintf(stderr, "Is AC connected?\n"); return rv; } - if (p.enabled) - printf("Charge state machine force idle.\n"); - else + switch (p.mode) { + case CHARGE_CONTROL_NORMAL: printf("Charge state machine normal mode.\n"); + break; + case CHARGE_CONTROL_IDLE: + printf("Charge state machine force idle.\n"); + break; + case CHARGE_CONTROL_DISCHARGE: + printf("Charge state machine force discharge.\n"); + break; + default: + break; + } return 0; } @@ -3097,7 +3111,7 @@ const struct command commands[] = { {"batterycutoff", cmd_battery_cut_off}, {"chargecurrentlimit", cmd_charge_current_limit}, {"chargedump", cmd_charge_dump}, - {"chargeforceidle", cmd_charge_force_idle}, + {"chargecontrol", cmd_charge_control}, {"chipinfo", cmd_chipinfo}, {"cmdversions", cmd_cmdversions}, {"console", cmd_console}, |