diff options
author | Dave Parker <dparker@chromium.org> | 2013-07-25 22:39:13 -0700 |
---|---|---|
committer | ChromeBot <chrome-bot@google.com> | 2013-08-01 11:07:58 -0700 |
commit | 8e28efa7ac4bc6cec969a928d1b34b6d423d582f (patch) | |
tree | 1c3e7cb6f28a38119bd1e798bc5595734a9fa661 | |
parent | 706f1211468ebfcd0fc9890b83f8443994a9f7f0 (diff) | |
download | chrome-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.c | 1 | ||||
-rw-r--r-- | common/hooks.c | 1 | ||||
-rw-r--r-- | core/cortex-m/ec.lds.S | 4 | ||||
-rw-r--r-- | core/host/host_exe.lds | 4 | ||||
-rw-r--r-- | include/hooks.h | 7 | ||||
-rw-r--r-- | include/link_defs.h | 2 |
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[]; |