static int command_chgstate(int argc, char **argv) { int rv; int val; if (argc > 1) { if (!strcasecmp(argv[1], "idle")) { if (argc <= 2) return EC_ERROR_PARAM_COUNT; if (!parse_bool(argv[2], &val)) return EC_ERROR_PARAM2; rv = set_chg_ctrl_mode(val ? CHARGE_CONTROL_IDLE : CHARGE_CONTROL_NORMAL); if (rv) return rv; #ifdef CONFIG_CHARGER_DISCHARGE_ON_AC } else if (!strcasecmp(argv[1], "discharge")) { if (argc <= 2) return EC_ERROR_PARAM_COUNT; if (!parse_bool(argv[2], &val)) return EC_ERROR_PARAM2; rv = set_chg_ctrl_mode(val ? CHARGE_CONTROL_DISCHARGE : CHARGE_CONTROL_NORMAL); if (rv) return rv; #ifdef CONFIG_CHARGER_DISCHARGE_ON_AC_CUSTOM rv = board_discharge_on_ac(val); #else rv = charger_discharge_on_ac(val); #endif /* CONFIG_CHARGER_DISCHARGE_ON_AC_CUSTOM */ if (rv) return rv; #endif /* CONFIG_CHARGER_DISCHARGE_ON_AC */ } else if (!strcasecmp(argv[1], "debug")) { if (argc <= 2) return EC_ERROR_PARAM_COUNT; if (!parse_bool(argv[2], &debugging)) return EC_ERROR_PARAM2; } else { return EC_ERROR_PARAM1; } } dump_charge_state(); return EC_SUCCESS; }
static int charge_command_charge_control(struct host_cmd_handler_args *args) { const struct ec_params_charge_control *p = args->params; int rv; if (system_is_locked()) return EC_RES_ACCESS_DENIED; rv = charge_force_idle(p->mode != CHARGE_CONTROL_NORMAL); if (rv != EC_SUCCESS) return rv; #ifdef CONFIG_CHARGER_DISCHARGE_ON_AC rv = board_discharge_on_ac(p->mode == CHARGE_CONTROL_DISCHARGE); if (rv != EC_SUCCESS) return rv; #endif return EC_RES_SUCCESS; }
static int charge_command_charge_control(struct host_cmd_handler_args *args) { const struct ec_params_charge_control *p = args->params; int rv; if (system_is_locked()) return EC_RES_ACCESS_DENIED; rv = set_chg_ctrl_mode(p->mode); if (rv != EC_SUCCESS) return EC_RES_ERROR; #ifdef CONFIG_CHARGER_DISCHARGE_ON_AC #ifdef CONFIG_CHARGER_DISCHARGE_ON_AC_CUSTOM rv = board_discharge_on_ac(p->mode == CHARGE_CONTROL_DISCHARGE); #else rv = charger_discharge_on_ac(p->mode == CHARGE_CONTROL_DISCHARGE); #endif if (rv != EC_SUCCESS) return EC_RES_ERROR; #endif return EC_RES_SUCCESS; }