summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Parker <dparker@chromium.org>2013-07-25 22:39:13 -0700
committerChromeBot <chrome-bot@google.com>2013-08-01 11:07:58 -0700
commit8e28efa7ac4bc6cec969a928d1b34b6d423d582f (patch)
tree1c3e7cb6f28a38119bd1e798bc5595734a9fa661
parent706f1211468ebfcd0fc9890b83f8443994a9f7f0 (diff)
downloadchrome-ec-8e28efa7ac4bc6cec969a928d1b34b6d423d582f.tar.gz
Add hook for changes in the charge state machine
BUG=chrome-os-partner:20145 BRANCH=falco,peppy TEST=Manual. Tested with charging timeout logic. Change-Id: Iab1c9746dcab5820fcdeb3e0d94bfcb0c47e57f2 Signed-off-by: Dave Parker <dparker@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/63537 Reviewed-by: Randall Spangler <rspangler@chromium.org>
-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[];