From 3208edcdfe5046333bd9d7e39d26e72de44fdf28 Mon Sep 17 00:00:00 2001 From: Soby Mathew Date: Mon, 11 Jun 2018 16:40:36 +0100 Subject: [PATCH] ARM platforms: Initialize cntfrq for BL1 Firmware update Currenly the CNTFRQ register and system timer is initialized in BL31 for use by the normal world. During firmware update, the NS-BL1 or NS-BL2U may need to access the system timer. Hence this patch duplicates the CNTFRQ and system timer initialization in BL1 as well. Signed-off-by: Soby Mathew Change-Id: I1ede78b4ae64080fb418cb93f3e48b26d7b724dc --- docs/firmware-design.rst | 2 ++ plat/arm/common/arm_bl1_setup.c | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/docs/firmware-design.rst b/docs/firmware-design.rst index e3500c27b..8aa762278 100644 --- a/docs/firmware-design.rst +++ b/docs/firmware-design.rst @@ -306,6 +306,8 @@ On Arm platforms, BL1 performs the following platform initializations: - If the BL1 dynamic configuration file, ``TB_FW_CONFIG``, is available, then load it to the platform defined address and make it available to BL2 via ``arg0``. +- Configure the system timer and program the `CNTFRQ_EL0` for use by NS-BL1U + and NS-BL2U firmware update images. Firmware Update detection and execution ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/plat/arm/common/arm_bl1_setup.c b/plat/arm/common/arm_bl1_setup.c index e5e730417..d141f647e 100644 --- a/plat/arm/common/arm_bl1_setup.c +++ b/plat/arm/common/arm_bl1_setup.c @@ -118,6 +118,12 @@ void arm_bl1_platform_setup(void) #if LOAD_IMAGE_V2 arm_load_tb_fw_config(); #endif + /* + * Allow access to the System counter timer module and program + * counter frequency for non secure images during FWU + */ + arm_configure_sys_timer(); + write_cntfrq_el0(plat_get_syscnt_freq2()); } void bl1_platform_setup(void)