From 8cb10aaf5b9dc20517d74cbde2267cbd03b779c7 Mon Sep 17 00:00:00 2001 From: David Hendricks Date: Wed, 29 Aug 2012 12:03:56 -0700 Subject: 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 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 Reviewed-by: Vincent Palatin Commit-Ready: David Hendricks Tested-by: David Hendricks --- common/hooks.c | 1 + core/cortex-m/ec.lds.S | 4 ++++ core/cortex-m/link_defs.h | 2 ++ include/hooks.h | 2 ++ 4 files changed, 9 insertions(+) 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 -- cgit v1.2.1