diff options
author | Vincent Palatin <vpalatin@chromium.org> | 2012-11-07 09:39:33 -0800 |
---|---|---|
committer | Gerrit <chrome-bot@google.com> | 2012-11-07 23:48:04 -0800 |
commit | 3c575ccb02ff58eaae3e7c3dd8e2e86ad25ac106 (patch) | |
tree | ace4aa3a4f1a924ab0c55aec799815847c146926 /util | |
parent | 7551e8f57f9b5b325fa00860f55bb236ff48c4e5 (diff) | |
download | chrome-ec-3c575ccb02ff58eaae3e7c3dd8e2e86ad25ac106.tar.gz |
link: allow to decrease maximum battery charging current
Add an interface to allow the CPU to cap the maximum battery charging
current.
The maximum is removed every time the machine goes to S3 or S5.
Signed-off-by: Vincent Palatin <vpalatin@chromium.org>
BRANCH=link
BUG=chrome-os-partner:16041
TEST=on Link, plug AC to charge the battery,
then run "ectool chargecurrentlimit 1200" and see
the charging current in "power-supply-info" decreasing to 1.2 A.
Change-Id: I10900e1c264d2db67809638ec0dcb836d721fa75
Reviewed-on: https://gerrit.chromium.org/gerrit/37532
Reviewed-by: Sameer Nanda <snanda@chromium.org>
Reviewed-by: Rong Chang <rongchang@chromium.org>
Commit-Ready: Vincent Palatin <vpalatin@chromium.org>
Tested-by: Vincent Palatin <vpalatin@chromium.org>
Diffstat (limited to 'util')
-rw-r--r-- | util/ectool.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/util/ectool.c b/util/ectool.c index eaf1147950..b8f7d45226 100644 --- a/util/ectool.c +++ b/util/ectool.c @@ -36,6 +36,8 @@ const char help_str[] = " Prints battery info\n" " batterycutoff\n" " Cut off battery output power\n" + " chargecurrentlimit\n" + " Set the maximum battery charging current\n" " chargedump\n" " Dump the context of charge state machine\n" " chargeforceidle\n" @@ -1974,6 +1976,29 @@ int cmd_lcd_backlight(int argc, char *argv[]) } +int cmd_charge_current_limit(int argc, char *argv[]) +{ + struct ec_params_current_limit p; + int rv; + char *e; + + if (argc != 2) { + fprintf(stderr, "Usage: %s <max_current_mA>\n", argv[0]); + return -1; + } + + p.limit = strtol(argv[1], &e, 0); + if (e && *e) { + fprintf(stderr, "Bad value.\n"); + return -1; + } + + rv = ec_command(EC_CMD_CHARGE_CURRENT_LIMIT, 0, &p, sizeof(p), + NULL, 0); + return rv; +} + + int cmd_charge_force_idle(int argc, char *argv[]) { struct ec_params_force_idle p; @@ -2669,6 +2694,7 @@ const struct command commands[] = { {"backlight", cmd_lcd_backlight}, {"battery", cmd_battery}, {"batterycutoff", cmd_battery_cut_off}, + {"chargecurrentlimit", cmd_charge_current_limit}, {"chargedump", cmd_charge_dump}, {"chargeforceidle", cmd_charge_force_idle}, {"chipinfo", cmd_chipinfo}, |