summaryrefslogtreecommitdiff
path: root/util
diff options
context:
space:
mode:
authorDave Parker <dparker@chromium.org>2013-07-01 14:52:27 -0700
committerChromeBot <chrome-bot@google.com>2013-07-19 10:58:18 -0700
commit7f1c49ab4be3c662a488d2c4e9acceef2c904465 (patch)
tree7a577cde20121529c213b3905f9dfb9fd28eade6 /util
parent5691ac816805781a27b5da84cab9c600b77b9dcb (diff)
downloadchrome-ec-7f1c49ab4be3c662a488d2c4e9acceef2c904465.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. 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>
Diffstat (limited to 'util')
-rw-r--r--util/ectool.c40
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},