summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/soc/intel/common/block/crashlog/crashlog.c14
-rw-r--r--src/soc/intel/common/block/include/intelblocks/crashlog.h3
2 files changed, 16 insertions, 1 deletions
diff --git a/src/soc/intel/common/block/crashlog/crashlog.c b/src/soc/intel/common/block/crashlog/crashlog.c
index 4412cbb17435..e3d85cde2268 100644
--- a/src/soc/intel/common/block/crashlog/crashlog.c
+++ b/src/soc/intel/common/block/crashlog/crashlog.c
@@ -154,6 +154,16 @@ int __weak cpu_cl_clear_data(void)
return cpu_cl_mailbox_cmd(CPU_CRASHLOG_CMD_CLEAR, 0);
}
+void __weak cpu_cl_rearm(void)
+{
+ /* empty implementation */
+}
+
+void __weak cpu_cl_cleanup(void)
+{
+ /* empty implementation */
+}
+
int pmc_cl_gen_descriptor_table(u32 desc_table_addr,
pmc_crashlog_desc_table_t *descriptor_table)
{
@@ -466,6 +476,10 @@ void cl_get_cpu_sram_data(void)
/* clear telemetry SRAM region */
cpu_cl_clear_data();
+ /* perform any SOC specific cleanup */
+ cpu_cl_cleanup();
+ /* rearm crashlog */
+ cpu_cl_rearm();
}
void collect_pmc_and_cpu_crashlog_from_srams(void)
diff --git a/src/soc/intel/common/block/include/intelblocks/crashlog.h b/src/soc/intel/common/block/include/intelblocks/crashlog.h
index 23d48615571d..e63a8cb506f2 100644
--- a/src/soc/intel/common/block/include/intelblocks/crashlog.h
+++ b/src/soc/intel/common/block/include/intelblocks/crashlog.h
@@ -138,7 +138,6 @@ typedef union {
u64 data;
} __packed cpu_crashlog_header_t;
-
/* Structures for CPU CrashLog mailbox interface */
typedef union {
struct {
@@ -192,6 +191,8 @@ u32 cl_gen_cpu_bar_addr(void);
int cpu_cl_poll_mailbox_ready(u32 cl_mailbox_addr);
int cpu_cl_mailbox_cmd(u8 cmd, u8 param);
int cpu_cl_clear_data(void);
+void cpu_cl_rearm(void);
+void cpu_cl_cleanup(void);
int pmc_cl_gen_descriptor_table(u32 desc_table_addr,
pmc_crashlog_desc_table_t *descriptor_table);
bool pmc_cl_discovery(void);