summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--common/charge_state.c1
-rw-r--r--common/hooks.c1
-rw-r--r--core/cortex-m/ec.lds.S4
-rw-r--r--core/host/host_exe.lds4
-rw-r--r--include/hooks.h7
-rw-r--r--include/link_defs.h2
6 files changed, 19 insertions, 0 deletions
diff --git a/common/charge_state.c b/common/charge_state.c
index c234ced434..3a9cf252ca 100644
--- a/common/charge_state.c
+++ b/common/charge_state.c
@@ -689,6 +689,7 @@ void charger_task(void)
CPRINTF("[%T Charge state %s -> %s]\n",
state_name[ctx->prev.state],
state_name[new_state]);
+ hook_notify(HOOK_CHARGE_STATE_CHANGE);
}
#ifdef HAS_TASK_POWERBTN
diff --git a/common/hooks.c b/common/hooks.c
index 7dbe08b5fe..cd2941434c 100644
--- a/common/hooks.c
+++ b/common/hooks.c
@@ -43,6 +43,7 @@ static const struct hook_ptrs hook_list[] = {
{__hooks_ac_change, __hooks_ac_change_end},
{__hooks_lid_change, __hooks_lid_change_end},
{__hooks_pwrbtn_change, __hooks_pwrbtn_change_end},
+ {__hooks_charge_state_change, __hooks_charge_state_change_end},
{__hooks_tick, __hooks_tick_end},
{__hooks_second, __hooks_second_end},
};
diff --git a/core/cortex-m/ec.lds.S b/core/cortex-m/ec.lds.S
index 9a8f09c9ba..c5d90265ce 100644
--- a/core/cortex-m/ec.lds.S
+++ b/core/cortex-m/ec.lds.S
@@ -100,6 +100,10 @@ SECTIONS
*(.rodata.HOOK_POWER_BUTTON_CHANGE)
__hooks_pwrbtn_change_end = .;
+ __hooks_charge_state_change = .;
+ *(.rodata.HOOK_CHARGE_STATE_CHANGE)
+ __hooks_charge_state_change_end = .;
+
__hooks_tick = .;
*(.rodata.HOOK_TICK)
__hooks_tick_end = .;
diff --git a/core/host/host_exe.lds b/core/host/host_exe.lds
index 40d1001661..04e605287b 100644
--- a/core/host/host_exe.lds
+++ b/core/host/host_exe.lds
@@ -64,6 +64,10 @@ SECTIONS {
*(.rodata.HOOK_POWER_BUTTON_CHANGE)
__hooks_pwrbtn_change_end = .;
+ __hooks_charge_state_change = .;
+ *(.rodata.HOOK_CHARGE_STATE_CHANGE)
+ __hooks_charge_state_change_end = .;
+
__hooks_tick = .;
*(.rodata.HOOK_TICK)
__hooks_tick_end = .;
diff --git a/include/hooks.h b/include/hooks.h
index 59f982eaee..1481a756a0 100644
--- a/include/hooks.h
+++ b/include/hooks.h
@@ -116,6 +116,13 @@ enum hook_type {
HOOK_POWER_BUTTON_CHANGE,
/*
+ * Charge state machine status changed.
+ *
+ * Hook routines are called from the charger task.
+ */
+ HOOK_CHARGE_STATE_CHANGE,
+
+ /*
* Periodic tick, every HOOK_TICK_INTERVAL.
*
* Hook routines will be called from the TICK task.
diff --git a/include/link_defs.h b/include/link_defs.h
index a8c54d4afe..a9c9e97e41 100644
--- a/include/link_defs.h
+++ b/include/link_defs.h
@@ -40,6 +40,8 @@ extern const struct hook_data __hooks_lid_change[];
extern const struct hook_data __hooks_lid_change_end[];
extern const struct hook_data __hooks_pwrbtn_change[];
extern const struct hook_data __hooks_pwrbtn_change_end[];
+extern const struct hook_data __hooks_charge_state_change[];
+extern const struct hook_data __hooks_charge_state_change_end[];
extern const struct hook_data __hooks_tick[];
extern const struct hook_data __hooks_tick_end[];
extern const struct hook_data __hooks_second[];