diff options
author | Daisuke Nojiri <dnojiri@chromium.org> | 2019-03-22 11:33:18 -0700 |
---|---|---|
committer | ChromeOS Commit Bot <chromeos-commit-bot@chromium.org> | 2019-04-02 18:20:29 +0000 |
commit | d57ee96ba4cec26fd89c82a30811435b42720f07 (patch) | |
tree | e5a1800de50fbd4d9c8402854a445be26b141c71 | |
parent | 68b80ba1349d8b690ff65dc895e56d59e53caaca (diff) | |
download | chrome-ec-d57ee96ba4cec26fd89c82a30811435b42720f07.tar.gz |
chgstv2: Refactor OS boot power check
This patch refactors the code which checks whether the power is enough
to boot the OS or not. There is no functional change.
Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org>
BUG=b/122896801
BRANCH=nami
TEST=buildall
Change-Id: I48177ac311f362c9912119ccc3b07b460dc4478e
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1548506
Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org>
Commit-Queue: Daisuke Nojiri <dnojiri@chromium.org>
Tested-by: Daisuke Nojiri <dnojiri@chromium.org>
-rw-r--r-- | common/charge_state_v2.c | 42 |
1 files changed, 27 insertions, 15 deletions
diff --git a/common/charge_state_v2.c b/common/charge_state_v2.c index 5ebbdf31d9..3b75111fe6 100644 --- a/common/charge_state_v2.c +++ b/common/charge_state_v2.c @@ -2251,6 +2251,32 @@ static int charge_command_current_limit(struct host_cmd_handler_args *args) DECLARE_HOST_COMMAND(EC_CMD_CHARGE_CURRENT_LIMIT, charge_command_current_limit, EC_VER_MASK(0)); +/** + * Check whether enough power is available for the OS to boot. + * + * @return 0: Power is good. 1: Power is short. + */ +static int charge_state_limit_power(void) +{ +#ifdef CONFIG_CHARGER_LIMIT_POWER_THRESH_CHG_MW + if ((curr.batt.is_present == BP_YES) && + CONFIG_CHARGER_LIMIT_POWER_THRESH_BAT_PCT <= + curr.batt.state_of_charge) + return 0; + + if (CONFIG_CHARGER_LIMIT_POWER_THRESH_CHG_MW * 1000 + <= charge_manager_get_power_limit_uw()) + return 0; + + if (!system_is_locked()) + return 0; + + return 1; +#else + return 0; +#endif +} + static int charge_command_charge_state(struct host_cmd_handler_args *args) { const struct ec_params_charge_state *in = args->params; @@ -2305,21 +2331,7 @@ static int charge_command_charge_state(struct host_cmd_handler_args *args) val = curr.chg.option; break; case CS_PARAM_LIMIT_POWER: -#ifdef CONFIG_CHARGER_LIMIT_POWER_THRESH_BAT_PCT - /* - * LIMIT_POWER status is based on battery level - * and external charger power. - */ - if ((curr.batt.is_present != BP_YES || - curr.batt.state_of_charge < - CONFIG_CHARGER_LIMIT_POWER_THRESH_BAT_PCT) - && charge_manager_get_power_limit_uw() < - CONFIG_CHARGER_LIMIT_POWER_THRESH_CHG_MW - * 1000 && system_is_locked()) - val = 1; - else -#endif - val = 0; + val = charge_state_limit_power(); break; default: rv = EC_RES_INVALID_PARAM; |