From 3a48d6e1a1fc93016433e2d615334832c3d386a0 Mon Sep 17 00:00:00 2001 From: Michael Rogenmoser Date: Wed, 1 Feb 2023 11:30:10 +0100 Subject: [PATCH] HMR: Add config helper functions --- include/archi/hmr/hmr_v1.h | 2 ++ include/hal/hmr/hmr_v1.h | 27 +++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/include/archi/hmr/hmr_v1.h b/include/archi/hmr/hmr_v1.h index 92ed91b..f0ff03d 100644 --- a/include/archi/hmr/hmr_v1.h +++ b/include/archi/hmr/hmr_v1.h @@ -25,6 +25,8 @@ #define HMR_TMR_OFFSET 0x300 #define HMR_CORE_INCREMENT 0x008 +#define HMR_DMR_INCREMENT 0x010 +#define HMR_DMR_SLL 0x004 #define HMR_TMR_INCREMENT 0x010 #define HMR_TMR_SLL 0x004 diff --git a/include/hal/hmr/hmr_v1.h b/include/hal/hmr/hmr_v1.h index 1ec5c69..419f612 100644 --- a/include/hal/hmr/hmr_v1.h +++ b/include/hal/hmr/hmr_v1.h @@ -19,6 +19,7 @@ #include "archi/hmr/hmr_v1.h" #include "archi/pulp.h" +#include #define NUM_TMR_GROUPS (ARCHI_CLUSTER_NB_PE/3) #define NUM_TMR_CORES (ARCHI_CLUSTER_NB_PE-(ARCHI_CLUSTER_NB_PE%3)) @@ -88,6 +89,16 @@ static inline void hmr_disable_all_dmr(unsigned int cid) { hmr_set_dmr_status_all(cid, 0); } +static inline void hmr_set_dmr_config(unsigned int cid, unsigned int dmr_id, bool rapid_recovery) { + pulp_write32(ARCHI_HMR_GLOBAL_ADDR(cid) + HMR_DMR_OFFSET + HMR_DMR_INCREMENT*dmr_id + HMR_DMR_REGS_DMR_CONFIG_REG_OFFSET, + (rapid_recovery ? 1<