diff options
Diffstat (limited to 'common/charge_manager.c')
-rw-r--r-- | common/charge_manager.c | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/common/charge_manager.c b/common/charge_manager.c index 651cf3af5e..4b400f137c 100644 --- a/common/charge_manager.c +++ b/common/charge_manager.c @@ -347,6 +347,8 @@ int charge_manager_set_override(int port) ASSERT(port >= OVERRIDE_DONT_CHARGE && port < PD_PORT_COUNT); + CPRINTS("Charge Override: %d", port); + /* Supersede any pending delayed overrides. */ if (delayed_override_port != OVERRIDE_OFF) { if (delayed_override_port != port) @@ -387,6 +389,17 @@ int charge_manager_set_override(int port) return retval; } +/** + * Get the override port. OVERRIDE_OFF if no override port. + * OVERRIDE_DONT_CHARGE if override is set for no port. + * + * @return override port + */ +int charge_manager_get_override(void) +{ + return override_port; +} + int charge_manager_get_active_charge_port(void) { return charge_port; @@ -508,16 +521,19 @@ DECLARE_HOST_COMMAND(EC_CMD_PD_CHARGE_PORT_OVERRIDE, static int command_charge_port_override(int argc, char **argv) { int port = OVERRIDE_OFF; + int ret = EC_SUCCESS; char *e; if (argc >= 2) { port = strtoi(argv[1], &e, 0); if (*e || port < OVERRIDE_DONT_CHARGE || port >= PD_PORT_COUNT) return EC_ERROR_PARAM1; + ret = charge_manager_set_override(port); } - ccprintf("Set override: %d\n", port); - return charge_manager_set_override(port); + ccprintf("Override: %d\n", (argc >= 2 && ret == EC_SUCCESS) ? + port : override_port); + return ret; } DECLARE_CONSOLE_COMMAND(chgoverride, command_charge_port_override, "[port | -1 | -2]", |