From fddfb3baf7c9e6e5e6d3462e71df6ba9d292f142 Mon Sep 17 00:00:00 2001 From: Madhukar Pappireddy Date: Wed, 12 Aug 2020 13:18:19 -0500 Subject: [PATCH] plat/arm: Use common build flag for using generic sp804 driver SP804 TIMER is not platform specific, and current code base adds multiple defines to use this driver. Like FVP_USE_SP804_TIMER and FVP_VE_USE_SP804_TIMER. This patch removes platform specific build flag and adds generic flag `USE_SP804_TIMER` to be set to 1 by platform if needed. Change-Id: I5ab792c189885fd1b98ddd187f3a38ebdd0baba2 Signed-off-by: Madhukar Pappireddy --- Makefile | 2 ++ docs/getting_started/build-options.rst | 4 ++++ docs/plat/arm/fvp/index.rst | 4 ---- make_helpers/defaults.mk | 3 +++ plat/arm/board/fvp/fvp_common.c | 4 ++-- plat/arm/board/fvp/platform.mk | 14 ++++---------- plat/arm/board/fvp_ve/fvp_ve_bl2_setup.c | 4 ++-- plat/arm/board/fvp_ve/platform.mk | 3 +-- 8 files changed, 18 insertions(+), 20 deletions(-) diff --git a/Makefile b/Makefile index f4589d9b2..1b986c4f5 100644 --- a/Makefile +++ b/Makefile @@ -914,6 +914,7 @@ $(eval $(call assert_boolean,ENCRYPT_BL32)) $(eval $(call assert_boolean,ERRATA_SPECULATIVE_AT)) $(eval $(call assert_boolean,RAS_TRAP_LOWER_EL_ERR_ACCESS)) $(eval $(call assert_boolean,COT_DESC_IN_DTB)) +$(eval $(call assert_boolean,USE_SP804_TIMER)) $(eval $(call assert_numeric,ARM_ARCH_MAJOR)) $(eval $(call assert_numeric,ARM_ARCH_MINOR)) @@ -995,6 +996,7 @@ $(eval $(call add_define,USE_SPINLOCK_CAS)) $(eval $(call add_define,ERRATA_SPECULATIVE_AT)) $(eval $(call add_define,RAS_TRAP_LOWER_EL_ERR_ACCESS)) $(eval $(call add_define,COT_DESC_IN_DTB)) +$(eval $(call add_define,USE_SP804_TIMER)) ifeq (${SANITIZE_UB},trap) $(eval $(call add_define,MONITOR_TRAPS)) diff --git a/docs/getting_started/build-options.rst b/docs/getting_started/build-options.rst index 0acc8867b..ae328c779 100644 --- a/docs/getting_started/build-options.rst +++ b/docs/getting_started/build-options.rst @@ -725,6 +725,10 @@ Common build options path on the host machine which is used to build certificate generation and firmware encryption tool. +- ``USE_SP804_TIMER``: Use the SP804 timer instead of the Generic Timer for + functions that wait for an arbitrary time length (udelay and mdelay). The + default value is 0. + GICv3 driver options -------------------- diff --git a/docs/plat/arm/fvp/index.rst b/docs/plat/arm/fvp/index.rst index 745e31f9e..e3bf42ad9 100644 --- a/docs/plat/arm/fvp/index.rst +++ b/docs/plat/arm/fvp/index.rst @@ -123,10 +123,6 @@ Arm FVP Platform Specific Build Options - ``FVP_GICV2`` : The GICv2 only driver is selected - ``FVP_GICV3`` : The GICv3 only driver is selected (default option) -- ``FVP_USE_SP804_TIMER`` : Use the SP804 timer instead of the Generic Timer - for functions that wait for an arbitrary time length (udelay and mdelay). - The default value is 0. - - ``FVP_HW_CONFIG_DTS`` : Specify the path to the DTS file to be compiled to DTB and packaged in FIP as the HW_CONFIG. See :ref:`Firmware Design` for details on HW_CONFIG. By default, this is initialized to a sensible DTS diff --git a/make_helpers/defaults.mk b/make_helpers/defaults.mk index caf5990f2..27f8f2a51 100644 --- a/make_helpers/defaults.mk +++ b/make_helpers/defaults.mk @@ -311,3 +311,6 @@ COT_DESC_IN_DTB := 0 # Build option to provide openssl directory path OPENSSL_DIR := /usr + +# Build option to use the SP804 timer instead of the generic one +USE_SP804_TIMER := 0 diff --git a/plat/arm/board/fvp/fvp_common.c b/plat/arm/board/fvp/fvp_common.c index cb717e053..6f439b8e2 100644 --- a/plat/arm/board/fvp/fvp_common.c +++ b/plat/arm/board/fvp/fvp_common.c @@ -420,7 +420,7 @@ int plat_get_mbedtls_heap(void **heap_addr, size_t *heap_size) void fvp_timer_init(void) { -#if FVP_USE_SP804_TIMER +#if USE_SP804_TIMER /* Enable the clock override for SP804 timer 0, which means that no * clock dividers are applied and the raw (35MHz) clock will be used. */ @@ -435,5 +435,5 @@ void fvp_timer_init(void) /* Enable System level generic timer */ mmio_write_32(ARM_SYS_CNTCTL_BASE + CNTCR_OFF, CNTCR_FCREQ(0U) | CNTCR_EN); -#endif /* FVP_USE_SP804_TIMER */ +#endif /* USE_SP804_TIMER */ } diff --git a/plat/arm/board/fvp/platform.mk b/plat/arm/board/fvp/platform.mk index f75f556a8..a7d18252d 100644 --- a/plat/arm/board/fvp/platform.mk +++ b/plat/arm/board/fvp/platform.mk @@ -7,9 +7,6 @@ # Use the GICv3 driver on the FVP by default FVP_USE_GIC_DRIVER := FVP_GICV3 -# Use the SP804 timer instead of the generic one -FVP_USE_SP804_TIMER := 0 - # Default cluster count for FVP FVP_CLUSTER_COUNT := 2 @@ -21,9 +18,6 @@ FVP_MAX_PE_PER_CPU := 1 FVP_DT_PREFIX := fvp-base-gicv3-psci -$(eval $(call assert_boolean,FVP_USE_SP804_TIMER)) -$(eval $(call add_define,FVP_USE_SP804_TIMER)) - # The FVP platform depends on this macro to build with correct GIC driver. $(eval $(call add_define,FVP_USE_GIC_DRIVER)) @@ -155,7 +149,7 @@ BL1_SOURCES += drivers/arm/smmu/smmu_v3.c \ ${FVP_CPU_LIBS} \ ${FVP_INTERCONNECT_SOURCES} -ifeq (${FVP_USE_SP804_TIMER},1) +ifeq (${USE_SP804_TIMER},1) BL1_SOURCES += drivers/arm/sp804/sp804_delay_timer.c else BL1_SOURCES += drivers/delay_timer/generic_delay_timer.c @@ -182,14 +176,14 @@ BL2_SOURCES += plat/arm/board/fvp/${ARCH}/fvp_helpers.S \ ${FVP_INTERCONNECT_SOURCES} endif -ifeq (${FVP_USE_SP804_TIMER},1) +ifeq (${USE_SP804_TIMER},1) BL2_SOURCES += drivers/arm/sp804/sp804_delay_timer.c endif BL2U_SOURCES += plat/arm/board/fvp/fvp_bl2u_setup.c \ ${FVP_SECURITY_SOURCES} -ifeq (${FVP_USE_SP804_TIMER},1) +ifeq (${USE_SP804_TIMER},1) BL2U_SOURCES += drivers/arm/sp804/sp804_delay_timer.c endif @@ -223,7 +217,7 @@ endif endif -ifeq (${FVP_USE_SP804_TIMER},1) +ifeq (${USE_SP804_TIMER},1) BL31_SOURCES += drivers/arm/sp804/sp804_delay_timer.c else BL31_SOURCES += drivers/delay_timer/generic_delay_timer.c diff --git a/plat/arm/board/fvp_ve/fvp_ve_bl2_setup.c b/plat/arm/board/fvp_ve/fvp_ve_bl2_setup.c index 25e096417..4ccae27a2 100644 --- a/plat/arm/board/fvp_ve/fvp_ve_bl2_setup.c +++ b/plat/arm/board/fvp_ve/fvp_ve_bl2_setup.c @@ -25,7 +25,7 @@ void bl2_platform_setup(void) { arm_bl2_platform_setup(); -#ifdef FVP_VE_USE_SP804_TIMER +#if USE_SP804_TIMER /* * Enable the clock override for SP804 timer 0, which means that no * clock dividers are applied and the raw (35 MHz) clock will be used @@ -37,5 +37,5 @@ void bl2_platform_setup(void) SP804_TIMER_CLKMULT, SP804_TIMER_CLKDIV); #else generic_delay_timer_init(); -#endif /* FVP_VE_USE_SP804_TIMER */ +#endif /* USE_SP804_TIMER */ } diff --git a/plat/arm/board/fvp_ve/platform.mk b/plat/arm/board/fvp_ve/platform.mk index f8e38ffc0..0aa1de4b8 100644 --- a/plat/arm/board/fvp_ve/platform.mk +++ b/plat/arm/board/fvp_ve/platform.mk @@ -6,8 +6,7 @@ ifdef ARM_CORTEX_A5 # Use the SP804 timer instead of the generic one -FVP_VE_USE_SP804_TIMER := 1 -$(eval $(call add_define,FVP_VE_USE_SP804_TIMER)) +USE_SP804_TIMER := 1 BL2_SOURCES += drivers/arm/sp804/sp804_delay_timer.c endif