summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Hendricks <dhendrix@chromium.org>2012-08-29 12:03:56 -0700
committerDavid Hendricks <dhendrix@chromium.org>2012-08-29 21:15:53 -0700
commit91bceaef03d70d45abe8d902fea6d86ae0345ad0 (patch)
treec92d798ac95b3a9b0a36ae6aa58366d4bc04c3d5
parent61e747bad4bbaeb8250a47d801db232d4454f754 (diff)
downloadchrome-ec-91bceaef03d70d45abe8d902fea6d86ae0345ad0.tar.gz
add a new hook for pre-chipset startup
This adds a new hook that is intended to be called immediately before host chipset/AP startup to initialize components such as the PMU. Signed-off-by: David Hendricks <dhendrix@chromium.org> BRANCH=snow BUG=chrome-os-partner:13315 TEST=tested in subsequent patches Change-Id: I2b38208de9f0f51abc0b22c49547ee0c4c889b82 Reviewed-on: https://gerrit.chromium.org/gerrit/31738 Reviewed-by: Charlie Mooney <charliemooney@chromium.org> Reviewed-by: Vincent Palatin <vpalatin@chromium.org> Commit-Ready: David Hendricks <dhendrix@chromium.org> Tested-by: David Hendricks <dhendrix@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/31791
-rw-r--r--common/hooks.c1
-rw-r--r--core/cortex-m/ec.lds.S4
-rw-r--r--core/cortex-m/link_defs.h2
-rw-r--r--include/hooks.h2
4 files changed, 9 insertions, 0 deletions
diff --git a/common/hooks.c b/common/hooks.c
index 30154a1060..e51503ed31 100644
--- a/common/hooks.c
+++ b/common/hooks.c
@@ -20,6 +20,7 @@ static const struct hook_ptrs hook_list[] = {
{__hooks_init, __hooks_init_end},
{__hooks_freq_change, __hooks_freq_change_end},
{__hooks_sysjump, __hooks_sysjump_end},
+ {__hooks_chipset_pre_init, __hooks_chipset_pre_init_end},
{__hooks_chipset_startup, __hooks_chipset_startup_end},
{__hooks_chipset_resume, __hooks_chipset_resume_end},
{__hooks_chipset_suspend, __hooks_chipset_suspend_end},
diff --git a/core/cortex-m/ec.lds.S b/core/cortex-m/ec.lds.S
index 393c6c4bc6..be0e20fdd8 100644
--- a/core/cortex-m/ec.lds.S
+++ b/core/cortex-m/ec.lds.S
@@ -68,6 +68,10 @@ SECTIONS
*(.rodata.HOOK_SYSJUMP)
__hooks_sysjump_end = .;
+ __hooks_chipset_pre_init = .;
+ *(.rodata.HOOK_CHIPSET_PRE_INIT)
+ __hooks_chipset_pre_init_end = .;
+
__hooks_chipset_startup = .;
*(.rodata.HOOK_CHIPSET_STARTUP)
__hooks_chipset_startup_end = .;
diff --git a/core/cortex-m/link_defs.h b/core/cortex-m/link_defs.h
index 7f029ec667..86c6b0a311 100644
--- a/core/cortex-m/link_defs.h
+++ b/core/cortex-m/link_defs.h
@@ -24,6 +24,8 @@ extern const struct hook_data __hooks_freq_change[];
extern const struct hook_data __hooks_freq_change_end[];
extern const struct hook_data __hooks_sysjump[];
extern const struct hook_data __hooks_sysjump_end[];
+extern const struct hook_data __hooks_chipset_pre_init[];
+extern const struct hook_data __hooks_chipset_pre_init_end[];
extern const struct hook_data __hooks_chipset_startup[];
extern const struct hook_data __hooks_chipset_startup_end[];
extern const struct hook_data __hooks_chipset_resume[];
diff --git a/include/hooks.h b/include/hooks.h
index b8ed296529..a3b35385a3 100644
--- a/include/hooks.h
+++ b/include/hooks.h
@@ -34,6 +34,8 @@ enum hook_type {
*
* NOTE: This hook is called with interrupts
* disabled! */
+ HOOK_CHIPSET_PRE_INIT, /* Initialization for components such as PMU to
+ * be done before host chipset/AP starts up. */
HOOK_CHIPSET_STARTUP, /* System is starting up. All suspend rails are
* now on. */
HOOK_CHIPSET_RESUME, /* System is resuming from suspend, or booting