summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--common/charge_state.c13
-rw-r--r--common/power_button_x86.c14
2 files changed, 14 insertions, 13 deletions
diff --git a/common/charge_state.c b/common/charge_state.c
index f425bb6509..d7a809e735 100644
--- a/common/charge_state.c
+++ b/common/charge_state.c
@@ -705,19 +705,6 @@ void charger_task(void)
hook_notify(HOOK_CHARGE_STATE_CHANGE);
}
-#ifdef HAS_TASK_POWERBTN
- /*
- * After first init, wake the power button task so it can
- * power on the AP if necessary.
- *
- * TODO(rspangler): API, instead of assuming power button task
- * exists
- */
- if (ctx->prev.state == PWR_STATE_INIT &&
- new_state != PWR_STATE_INIT)
- task_wake(TASK_ID_POWERBTN);
-#endif
-
switch (new_state) {
case PWR_STATE_IDLE0:
/*
diff --git a/common/power_button_x86.c b/common/power_button_x86.c
index 2d353b74ed..e37fb6f81f 100644
--- a/common/power_button_x86.c
+++ b/common/power_button_x86.c
@@ -397,3 +397,17 @@ static void powerbtn_x86_changed(void)
task_wake(TASK_ID_POWERBTN);
}
DECLARE_HOOK(HOOK_POWER_BUTTON_CHANGE, powerbtn_x86_changed, HOOK_PRIO_DEFAULT);
+
+/**
+ * Handle charge state changes
+ */
+static void powerbtn_x86_charge(void)
+{
+ /*
+ * If we were waiting for the charge state machine to init before we
+ * powered on the chipset, we can stop waiting.
+ */
+ if (pwrbtn_state == PWRBTN_STATE_INIT_ON)
+ task_wake(TASK_ID_POWERBTN);
+}
+DECLARE_HOOK(HOOK_CHARGE_STATE_CHANGE, powerbtn_x86_charge, HOOK_PRIO_DEFAULT);