diff options
-rw-r--r-- | include/plat/arm/common/plat_arm.h | 4 | ||||
-rw-r--r-- | plat/arm/board/fvp/fvp_bl1_setup.c | 13 | ||||
-rw-r--r-- | plat/arm/board/fvp/platform.mk | 3 | ||||
-rw-r--r-- | plat/arm/board/fvp_ve/fvp_ve_bl1_setup.c | 12 | ||||
-rw-r--r-- | plat/arm/board/juno/juno_bl1_setup.c | 11 | ||||
-rw-r--r-- | plat/arm/board/juno/platform.mk | 1 | ||||
-rw-r--r-- | plat/arm/board/n1sdp/include/platform_def.h | 4 | ||||
-rw-r--r-- | plat/arm/board/n1sdp/n1sdp_plat.c | 10 | ||||
-rw-r--r-- | plat/arm/board/n1sdp/platform.mk | 1 | ||||
-rw-r--r-- | plat/arm/common/arm_bl1_setup.c | 5 | ||||
-rw-r--r-- | plat/arm/common/arm_common.mk | 3 | ||||
-rw-r--r-- | plat/arm/css/sgi/include/sgi_base_platform_def.h | 3 | ||||
-rw-r--r-- | plat/arm/css/sgi/sgi-common.mk | 3 | ||||
-rw-r--r-- | plat/arm/css/sgi/sgi_plat.c | 12 | ||||
-rw-r--r-- | plat/arm/css/sgm/sgm-common.mk | 3 | ||||
-rw-r--r-- | plat/arm/css/sgm/sgm_bl1_setup.c | 13 |
16 files changed, 91 insertions, 10 deletions
diff --git a/include/plat/arm/common/plat_arm.h b/include/plat/arm/common/plat_arm.h index 527375f6..97e67225 100644 --- a/include/plat/arm/common/plat_arm.h +++ b/include/plat/arm/common/plat_arm.h @@ -295,4 +295,8 @@ extern plat_psci_ops_t plat_arm_psci_pm_ops; extern const mmap_region_t plat_arm_mmap[]; extern const unsigned int arm_pm_idle_states[]; +/* secure watchdog */ +void plat_arm_secure_wdt_start(void); +void plat_arm_secure_wdt_stop(void); + #endif /* PLAT_ARM_H */ diff --git a/plat/arm/board/fvp/fvp_bl1_setup.c b/plat/arm/board/fvp/fvp_bl1_setup.c index 75090e87..aa567166 100644 --- a/plat/arm/board/fvp/fvp_bl1_setup.c +++ b/plat/arm/board/fvp/fvp_bl1_setup.c @@ -5,9 +5,10 @@ */ #include <common/tbbr/tbbr_img_def.h> +#include <drivers/arm/sp805.h> #include <plat/arm/common/plat_arm.h> +#include <plat/arm/common/arm_def.h> #include <plat/common/platform.h> - #include "fvp_private.h" /******************************************************************************* @@ -30,3 +31,13 @@ void bl1_early_platform_setup(void) */ fvp_interconnect_enable(); } + +void plat_arm_secure_wdt_start(void) +{ + sp805_start(ARM_SP805_TWDG_BASE, ARM_TWDG_LOAD_VAL); +} + +void plat_arm_secure_wdt_stop(void) +{ + sp805_stop(ARM_SP805_TWDG_BASE); +} diff --git a/plat/arm/board/fvp/platform.mk b/plat/arm/board/fvp/platform.mk index 1a63e874..c11d848e 100644 --- a/plat/arm/board/fvp/platform.mk +++ b/plat/arm/board/fvp/platform.mk @@ -112,7 +112,8 @@ else FVP_CPU_LIBS += lib/cpus/aarch32/cortex_a32.S endif -BL1_SOURCES += drivers/io/io_semihosting.c \ +BL1_SOURCES += drivers/arm/sp805/sp805.c \ + drivers/io/io_semihosting.c \ lib/semihosting/semihosting.c \ lib/semihosting/${ARCH}/semihosting_call.S \ plat/arm/board/fvp/${ARCH}/fvp_helpers.S \ diff --git a/plat/arm/board/fvp_ve/fvp_ve_bl1_setup.c b/plat/arm/board/fvp_ve/fvp_ve_bl1_setup.c index 47cd8762..4338f6f2 100644 --- a/plat/arm/board/fvp_ve/fvp_ve_bl1_setup.c +++ b/plat/arm/board/fvp_ve/fvp_ve_bl1_setup.c @@ -4,8 +4,10 @@ * SPDX-License-Identifier: BSD-3-Clause */ +#include <drivers/arm/sp805.h> #include <plat/arm/common/plat_arm.h> #include <plat/common/platform.h> +#include <platform_def.h> /******************************************************************************* * Perform any BL1 specific platform actions. @@ -14,3 +16,13 @@ void bl1_early_platform_setup(void) { arm_bl1_early_platform_setup(); } + +void plat_arm_secure_wdt_start(void) +{ + sp805_start(ARM_SP805_TWDG_BASE, ARM_TWDG_LOAD_VAL); +} + +void plat_arm_secure_wdt_stop(void) +{ + sp805_stop(ARM_SP805_TWDG_BASE); +} diff --git a/plat/arm/board/juno/juno_bl1_setup.c b/plat/arm/board/juno/juno_bl1_setup.c index 33f5c479..7a3d22de 100644 --- a/plat/arm/board/juno/juno_bl1_setup.c +++ b/plat/arm/board/juno/juno_bl1_setup.c @@ -12,6 +12,7 @@ #include <drivers/arm/css/sds.h> #include <drivers/arm/sp805.h> #include <plat/arm/common/plat_arm.h> +#include <plat/arm/common/arm_def.h> #include <plat/common/platform.h> #include <platform_def.h> @@ -112,3 +113,13 @@ void bl1_plat_prepare_exit(entry_point_info_t *ep_info) juno_reset_to_aarch32_state(); } #endif /* JUNO_AARCH32_EL3_RUNTIME */ + +void plat_arm_secure_wdt_start(void) +{ + sp805_start(ARM_SP805_TWDG_BASE, ARM_TWDG_LOAD_VAL); +} + +void plat_arm_secure_wdt_stop(void) +{ + sp805_stop(ARM_SP805_TWDG_BASE); +} diff --git a/plat/arm/board/juno/platform.mk b/plat/arm/board/juno/platform.mk index e44791b4..40e62644 100644 --- a/plat/arm/board/juno/platform.mk +++ b/plat/arm/board/juno/platform.mk @@ -62,6 +62,7 @@ BL1_SOURCES += lib/cpus/aarch64/cortex_a53.S \ lib/cpus/aarch64/cortex_a72.S \ plat/arm/board/juno/juno_err.c \ plat/arm/board/juno/juno_bl1_setup.c \ + drivers/arm/sp805/sp805.c \ ${JUNO_INTERCONNECT_SOURCES} \ ${JUNO_SECURITY_SOURCES} diff --git a/plat/arm/board/n1sdp/include/platform_def.h b/plat/arm/board/n1sdp/include/platform_def.h index 03bd3803..adb957e5 100644 --- a/plat/arm/board/n1sdp/include/platform_def.h +++ b/plat/arm/board/n1sdp/include/platform_def.h @@ -87,4 +87,8 @@ /* Platform ID address */ #define SSC_VERSION (SSC_REG_BASE + SSC_VERSION_OFFSET) +/* Secure Watchdog Constants */ +#define SBSA_SECURE_WDOG_BASE UL(0x2A480000) +#define SBSA_SECURE_WDOG_TIMEOUT UL(100) + #endif /* PLATFORM_DEF_H */ diff --git a/plat/arm/board/n1sdp/n1sdp_plat.c b/plat/arm/board/n1sdp/n1sdp_plat.c index 6905896c..f36f9e25 100644 --- a/plat/arm/board/n1sdp/n1sdp_plat.c +++ b/plat/arm/board/n1sdp/n1sdp_plat.c @@ -10,6 +10,7 @@ #include <common/debug.h> #include <plat/arm/common/plat_arm.h> #include <plat/common/platform.h> +#include <drivers/arm/sbsa.h> /* * Table of regions to map using the MMU. @@ -22,3 +23,12 @@ const mmap_region_t plat_arm_mmap[] = { {0} }; +void plat_arm_secure_wdt_start(void) +{ + sbsa_wdog_start(SBSA_SECURE_WDOG_BASE, SBSA_SECURE_WDOG_TIMEOUT); +} + +void plat_arm_secure_wdt_stop(void) +{ + sbsa_wdog_stop(SBSA_SECURE_WDOG_BASE); +} diff --git a/plat/arm/board/n1sdp/platform.mk b/plat/arm/board/n1sdp/platform.mk index 653d0810..d0c34c8f 100644 --- a/plat/arm/board/n1sdp/platform.mk +++ b/plat/arm/board/n1sdp/platform.mk @@ -25,6 +25,7 @@ N1SDP_GIC_SOURCES := drivers/arm/gic/common/gic_common.c \ PLAT_BL_COMMON_SOURCES := ${N1SDP_BASE}/n1sdp_plat.c \ ${N1SDP_BASE}/aarch64/n1sdp_helper.S +BL1_SOURCES += drivers/arm/sbsa/sbsa.c BL31_SOURCES := ${N1SDP_CPU_SOURCES} \ ${INTERCONNECT_SOURCES} \ diff --git a/plat/arm/common/arm_bl1_setup.c b/plat/arm/common/arm_bl1_setup.c index 1e9edefd..8e0c046f 100644 --- a/plat/arm/common/arm_bl1_setup.c +++ b/plat/arm/common/arm_bl1_setup.c @@ -11,7 +11,6 @@ #include <arch.h> #include <bl1/bl1.h> #include <common/bl_common.h> -#include <drivers/arm/sp805.h> #include <lib/utils.h> #include <lib/xlat_tables/xlat_tables_compat.h> #include <plat/arm/common/plat_arm.h> @@ -67,7 +66,7 @@ void arm_bl1_early_platform_setup(void) #if !ARM_DISABLE_TRUSTED_WDOG /* Enable watchdog */ - sp805_start(ARM_SP805_TWDG_BASE, ARM_TWDG_LOAD_VAL); + plat_arm_secure_wdt_start(); #endif /* Initialize the console to provide early debug support */ @@ -172,7 +171,7 @@ void bl1_plat_prepare_exit(entry_point_info_t *ep_info) { #if !ARM_DISABLE_TRUSTED_WDOG /* Disable watchdog before leaving BL1 */ - sp805_stop(ARM_SP805_TWDG_BASE); + plat_arm_secure_wdt_stop(); #endif #ifdef EL3_PAYLOAD_BASE diff --git a/plat/arm/common/arm_common.mk b/plat/arm/common/arm_common.mk index 5e890ed1..c3d9e030 100644 --- a/plat/arm/common/arm_common.mk +++ b/plat/arm/common/arm_common.mk @@ -158,8 +158,7 @@ include lib/xlat_tables_v2/xlat_tables.mk PLAT_BL_COMMON_SOURCES += ${XLAT_TABLES_LIB_SRCS} endif -BL1_SOURCES += drivers/arm/sp805/sp805.c \ - drivers/io/io_fip.c \ +BL1_SOURCES += drivers/io/io_fip.c \ drivers/io/io_memmap.c \ drivers/io/io_storage.c \ plat/arm/common/arm_bl1_setup.c \ diff --git a/plat/arm/css/sgi/include/sgi_base_platform_def.h b/plat/arm/css/sgi/include/sgi_base_platform_def.h index c0e65558..032a1f47 100644 --- a/plat/arm/css/sgi/include/sgi_base_platform_def.h +++ b/plat/arm/css/sgi/include/sgi_base_platform_def.h @@ -208,5 +208,8 @@ #define PLAT_ARM_MEM_PROT_ADDR (V2M_FLASH0_BASE + \ V2M_FLASH0_SIZE - V2M_FLASH_BLOCK_SIZE) +/*Secure Watchdog Constants */ +#define SBSA_SECURE_WDOG_BASE UL(0x2A480000) +#define SBSA_SECURE_WDOG_TIMEOUT UL(100) #endif /* SGI_BASE_PLATFORM_DEF_H */ diff --git a/plat/arm/css/sgi/sgi-common.mk b/plat/arm/css/sgi/sgi-common.mk index 613d3d5f..b736b0bb 100644 --- a/plat/arm/css/sgi/sgi-common.mk +++ b/plat/arm/css/sgi/sgi-common.mk @@ -33,7 +33,8 @@ ENT_GIC_SOURCES := drivers/arm/gic/common/gic_common.c \ PLAT_BL_COMMON_SOURCES += ${CSS_ENT_BASE}/sgi_plat.c \ ${CSS_ENT_BASE}/aarch64/sgi_helper.S -BL1_SOURCES += ${INTERCONNECT_SOURCES} +BL1_SOURCES += ${INTERCONNECT_SOURCES} \ + drivers/arm/sbsa/sbsa.c BL2_SOURCES += ${CSS_ENT_BASE}/sgi_image_load.c diff --git a/plat/arm/css/sgi/sgi_plat.c b/plat/arm/css/sgi/sgi_plat.c index 42eff866..3e207ecc 100644 --- a/plat/arm/css/sgi/sgi_plat.c +++ b/plat/arm/css/sgi/sgi_plat.c @@ -13,6 +13,8 @@ #include <drivers/arm/ccn.h> #include <plat/arm/common/plat_arm.h> #include <plat/common/platform.h> +#include <drivers/arm/sbsa.h> +#include <sgi_base_platform_def.h> #include <services/secure_partition.h> #define SGI_MAP_FLASH0_RO MAP_REGION_FLAT(V2M_FLASH0_BASE,\ @@ -139,3 +141,13 @@ int plat_get_mbedtls_heap(void **heap_addr, size_t *heap_size) return arm_get_mbedtls_heap(heap_addr, heap_size); } #endif + +void plat_arm_secure_wdt_start(void) +{ + sbsa_wdog_start(SBSA_SECURE_WDOG_BASE, SBSA_SECURE_WDOG_TIMEOUT); +} + +void plat_arm_secure_wdt_stop(void) +{ + sbsa_wdog_stop(SBSA_SECURE_WDOG_BASE); +} diff --git a/plat/arm/css/sgm/sgm-common.mk b/plat/arm/css/sgm/sgm-common.mk index 0a136e63..34e78b2f 100644 --- a/plat/arm/css/sgm/sgm-common.mk +++ b/plat/arm/css/sgm/sgm-common.mk @@ -31,7 +31,8 @@ SGM_GIC_SOURCES := drivers/arm/gic/common/gic_common.c \ BL1_SOURCES += $(SGM_CPU_SOURCES) \ ${INTERCONNECT_SOURCES} \ ${CSS_SGM_BASE}/sgm_bl1_setup.c \ - ${CSS_SGM_BASE}/sgm_plat_config.c + ${CSS_SGM_BASE}/sgm_plat_config.c \ + drivers/arm/sp805/sp805.c BL2_SOURCES += ${SECURITY_SOURCES} \ ${CSS_SGM_BASE}/sgm_plat_config.c diff --git a/plat/arm/css/sgm/sgm_bl1_setup.c b/plat/arm/css/sgm/sgm_bl1_setup.c index 20365159..5fd96552 100644 --- a/plat/arm/css/sgm/sgm_bl1_setup.c +++ b/plat/arm/css/sgm/sgm_bl1_setup.c @@ -8,7 +8,8 @@ #include <common/debug.h> #include <plat/arm/common/plat_arm.h> #include <plat/arm/soc/common/soc_css.h> - +#include <plat/arm/common/arm_def.h> +#include <drivers/arm/sp805.h> #include <sgm_plat_config.h> void bl1_early_platform_setup(void) @@ -32,3 +33,13 @@ void bl1_early_platform_setup(void) plat_arm_interconnect_enter_coherency(); #endif } + +void plat_arm_secure_wdt_start(void) +{ + sp805_start(ARM_SP805_TWDG_BASE, ARM_TWDG_LOAD_VAL); +} + +void plat_arm_secure_wdt_stop(void) +{ + sp805_stop(ARM_SP805_TWDG_BASE); +} |