summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaisuke Nojiri <dnojiri@chromium.org>2019-03-22 11:33:18 -0700
committerChromeOS Commit Bot <chromeos-commit-bot@chromium.org>2019-04-02 18:20:29 +0000
commitd57ee96ba4cec26fd89c82a30811435b42720f07 (patch)
treee5a1800de50fbd4d9c8402854a445be26b141c71
parent68b80ba1349d8b690ff65dc895e56d59e53caaca (diff)
downloadchrome-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.c42
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;