From 7842b6a91ece2484475d94487ec2b63a2832a4cf Mon Sep 17 00:00:00 2001 From: Andre Przywara Date: Thu, 12 Apr 2018 04:24:46 +0300 Subject: [PATCH] arm: move SYS_ARCH_TIMER to KConfig SYS_ARCH_TIMER guards the usage of the ARM Generic Timer (aka arch timer) in U-Boot. At the moment it is mandatory for ARMv8 and used by a few ARMv7 boards. Add a proper Kconfig symbol to express this dependency properly, allowing certain board configuration to later disable arch timer in case there are any problems with it. Signed-off-by: Andre Przywara [tuomas: rebase + fix conflicts and resync with moveconfig & use select] Signed-off-by: Tuomas Tynkkynen --- arch/arm/Kconfig | 11 +++++++++++ arch/arm/cpu/armv8/Makefile | 2 +- arch/arm/mach-imx/mx7ulp/Kconfig | 1 + arch/arm/mach-qemu/Kconfig | 1 + arch/arm/mach-stm32mp/Kconfig | 1 + include/configs/mx7ulp_evk.h | 1 - include/configs/qemu-arm.h | 1 - include/configs/stm32mp1.h | 1 - include/configs/ti_armv7_keystone2.h | 1 - scripts/config_whitelist.txt | 1 - 10 files changed, 15 insertions(+), 6 deletions(-) diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 6812cdd..35fcd24 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -242,6 +242,16 @@ config SYS_CACHELINE_SIZE default 64 if SYS_CACHE_SHIFT_6 default 32 if SYS_CACHE_SHIFT_5 +config SYS_ARCH_TIMER + bool "ARM Generic Timer support" + depends on CPU_V7 || ARM64 + default y if ARM64 + help + The ARM Generic Timer (aka arch-timer) provides an architected + interface to a timer source on an SoC. + It is mandantory for ARMv8 implementation and widely available + on ARMv7 systems. + config ARM_SMCCC bool "Support for ARM SMC Calling Convention (SMCCC)" depends on CPU_V7 || ARM64 @@ -570,6 +580,7 @@ config ARCH_KEYSTONE select SUPPORT_SPL select SYS_THUMB_BUILD select CMD_POWEROFF + select SYS_ARCH_TIMER imply CMD_MTDPARTS imply FIT imply CMD_SAVES diff --git a/arch/arm/cpu/armv8/Makefile b/arch/arm/cpu/armv8/Makefile index 1249547..d18b38e 100644 --- a/arch/arm/cpu/armv8/Makefile +++ b/arch/arm/cpu/armv8/Makefile @@ -9,7 +9,7 @@ extra-y := start.o obj-y += cpu.o ifndef CONFIG_$(SPL_TPL_)TIMER -obj-y += generic_timer.o +obj-$(CONFIG_SYS_ARCH_TIMER) += generic_timer.o endif obj-y += cache_v8.o obj-y += exceptions.o diff --git a/arch/arm/mach-imx/mx7ulp/Kconfig b/arch/arm/mach-imx/mx7ulp/Kconfig index 1bdc85a..d4b0299 100644 --- a/arch/arm/mach-imx/mx7ulp/Kconfig +++ b/arch/arm/mach-imx/mx7ulp/Kconfig @@ -9,6 +9,7 @@ choice config TARGET_MX7ULP_EVK bool "Support mx7ulp EVK board" + select SYS_ARCH_TIMER endchoice diff --git a/arch/arm/mach-qemu/Kconfig b/arch/arm/mach-qemu/Kconfig index 133163a..226dfa3 100644 --- a/arch/arm/mach-qemu/Kconfig +++ b/arch/arm/mach-qemu/Kconfig @@ -16,6 +16,7 @@ config TARGET_QEMU_ARM_32BIT depends on ARCH_QEMU select CPU_V7 select ARCH_SUPPORT_PSCI + select SYS_ARCH_TIMER config TARGET_QEMU_ARM_64BIT bool "Support qemu_arm64" diff --git a/arch/arm/mach-stm32mp/Kconfig b/arch/arm/mach-stm32mp/Kconfig index 8ca97bf..4d59480 100644 --- a/arch/arm/mach-stm32mp/Kconfig +++ b/arch/arm/mach-stm32mp/Kconfig @@ -27,6 +27,7 @@ config TARGET_STM32MP1 select CPU_V7 select PINCTRL_STM32 select STM32_RESET + select SYS_ARCH_TIMER select SYSRESET_SYSCON help target STMicroelectronics SOC STM32MP1 family diff --git a/include/configs/mx7ulp_evk.h b/include/configs/mx7ulp_evk.h index c2223bd..3dcda9e 100644 --- a/include/configs/mx7ulp_evk.h +++ b/include/configs/mx7ulp_evk.h @@ -46,7 +46,6 @@ /* Using ULP WDOG for reset */ #define WDOG_BASE_ADDR WDG1_RBASE -#define CONFIG_SYS_ARCH_TIMER #define CONFIG_SYS_HZ_CLOCK 1000000 /* Fixed at 1Mhz from TSTMR */ #define CONFIG_INITRD_TAG diff --git a/include/configs/qemu-arm.h b/include/configs/qemu-arm.h index b29a54e..f306b41 100644 --- a/include/configs/qemu-arm.h +++ b/include/configs/qemu-arm.h @@ -20,7 +20,6 @@ #define CONFIG_SYS_MALLOC_LEN SZ_16M /* For timer, QEMU emulates an ARMv7/ARMv8 architected timer */ -#define CONFIG_SYS_ARCH_TIMER #define CONFIG_SYS_HZ 1000 /* For block devices, QEMU emulates an ICH9 AHCI controller over PCI */ diff --git a/include/configs/stm32mp1.h b/include/configs/stm32mp1.h index da0e259..b2b654c 100644 --- a/include/configs/stm32mp1.h +++ b/include/configs/stm32mp1.h @@ -17,7 +17,6 @@ * Number of clock ticks in 1 sec */ #define CONFIG_SYS_HZ 1000 -#define CONFIG_SYS_ARCH_TIMER /* * malloc() pool size diff --git a/include/configs/ti_armv7_keystone2.h b/include/configs/ti_armv7_keystone2.h index e87acca..6f2a33e 100644 --- a/include/configs/ti_armv7_keystone2.h +++ b/include/configs/ti_armv7_keystone2.h @@ -17,7 +17,6 @@ /* SoC Configuration */ #define CONFIG_ARCH_CPU_INIT -#define CONFIG_SYS_ARCH_TIMER #define CONFIG_SPL_TARGET "u-boot-spi.gph" #define CONFIG_SYS_DCACHE_OFF diff --git a/scripts/config_whitelist.txt b/scripts/config_whitelist.txt index 901bf0d..bbc44e3 100644 --- a/scripts/config_whitelist.txt +++ b/scripts/config_whitelist.txt @@ -2074,7 +2074,6 @@ CONFIG_SYS_APP1_BASE CONFIG_SYS_APP1_SIZE CONFIG_SYS_APP2_BASE CONFIG_SYS_APP2_SIZE -CONFIG_SYS_ARCH_TIMER CONFIG_SYS_ARM_CACHE_WRITETHROUGH CONFIG_SYS_AT91_CPU_NAME CONFIG_SYS_AT91_MAIN_CLOCK