summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaisuke Nojiri <dnojiri@chromium.org>2019-03-22 11:46:56 -0700
committerChromeOS Commit Bot <chromeos-commit-bot@chromium.org>2019-04-02 18:45:55 +0000
commita3ff5d1beebcc8db0f487d240d8c11821d140077 (patch)
tree2d7c9a6e5ddc01c6688dab103de2e2bf54fd3b7c
parentd57ee96ba4cec26fd89c82a30811435b42720f07 (diff)
downloadchrome-ec-a3ff5d1beebcc8db0f487d240d8c11821d140077.tar.gz
chgstv2: Add callback for board to check power for booting OS
This patch adds a callback function which allows a board to decide whether power is ready for the OS to boot. Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> BUG=b/122896801 BRANCH=nami TEST=buildall Change-Id: I32af4c2f88c9d3215edb9c622f1409dce6262b80 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1548507 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.c14
-rw-r--r--include/charge_state_v2.h14
2 files changed, 21 insertions, 7 deletions
diff --git a/common/charge_state_v2.c b/common/charge_state_v2.c
index 3b75111fe6..9bbfdd3fc3 100644
--- a/common/charge_state_v2.c
+++ b/common/charge_state_v2.c
@@ -2251,12 +2251,7 @@ 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)
+int charge_state_limit_power(void)
{
#ifdef CONFIG_CHARGER_LIMIT_POWER_THRESH_CHG_MW
if ((curr.batt.is_present == BP_YES) &&
@@ -2277,6 +2272,11 @@ static int charge_state_limit_power(void)
#endif
}
+__attribute__((weak)) int board_check_os_boot_power(void)
+{
+ return charge_state_limit_power();
+}
+
static int charge_command_charge_state(struct host_cmd_handler_args *args)
{
const struct ec_params_charge_state *in = args->params;
@@ -2331,7 +2331,7 @@ static int charge_command_charge_state(struct host_cmd_handler_args *args)
val = curr.chg.option;
break;
case CS_PARAM_LIMIT_POWER:
- val = charge_state_limit_power();
+ val = board_check_os_boot_power();
break;
default:
rv = EC_RES_INVALID_PARAM;
diff --git a/include/charge_state_v2.h b/include/charge_state_v2.h
index 4bf0d6a776..b1896ff106 100644
--- a/include/charge_state_v2.h
+++ b/include/charge_state_v2.h
@@ -126,4 +126,18 @@ enum critical_shutdown {
enum critical_shutdown board_critical_shutdown_check(
struct charge_state_data *curr);
+/**
+ * Check whether enough power is available for the OS to boot.
+ *
+ * @return 0: Power is good. 1: Power is short.
+ */
+int charge_state_limit_power(void);
+
+/**
+ * Callback which allows a board to decide whether power is ready for OS
+ *
+ * @return 0: Power is good. 1: Power is short.
+ */
+int board_check_os_boot_power(void);
+
#endif /* __CROS_EC_CHARGE_STATE_V2_H */