aboutsummaryrefslogtreecommitdiff
path: root/src/soc/intel/common/reset.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/soc/intel/common/reset.c')
-rw-r--r--src/soc/intel/common/reset.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/soc/intel/common/reset.c b/src/soc/intel/common/reset.c
index 79547c6edb..08f36b6560 100644
--- a/src/soc/intel/common/reset.c
+++ b/src/soc/intel/common/reset.c
@@ -25,8 +25,17 @@
#define RST_CPU (1 << 2)
#define SYS_RST (1 << 1)
+#ifdef __ROMCC__
+#define WEAK
+#else
+#define WEAK __attribute__((weak))
+#endif
+
+void WEAK reset_prepare(void) { /* do nothing */ }
+
void hard_reset(void)
{
+ reset_prepare();
/* S0->S5->S0 trip. */
outb(RST_CPU | SYS_RST | FULL_RST, RST_CNT);
while (1)
@@ -35,6 +44,7 @@ void hard_reset(void)
void soft_reset(void)
{
+ reset_prepare();
/* PMC_PLTRST# asserted. */
outb(RST_CPU | SYS_RST, RST_CNT);
while (1)
@@ -43,6 +53,7 @@ void soft_reset(void)
void cpu_reset(void)
{
+ reset_prepare();
/* Sends INIT# to CPU */
outb(RST_CPU, RST_CNT);
while (1)