Commit 2f8a26c1 authored by Arnd Bergmann's avatar Arnd Bergmann Committed by Daniel Lezcano

clocksource: Improve GENERIC_CLOCKEVENTS dependency

We regularly run into build errors when a clocksource driver selects
CONFIG_TIMER_OF while CONFIG_GENERIC_CLOCKEVENTS is disabled:

In file included from drivers/clocksource/timer-of.c:25:0:
drivers/clocksource/timer-of.h:35:28: error: field 'clkevt' has incomplete type

At the moment, three drivers can show this behavior: ARMV7M_SYSTICK,
CLKSRC_ST_LPC and CLKSRC_NPS. We could add further dependencies as we did
many times, but I have looked a little bit more at what architectures
are left that don't use GENERIC_CLOCKEVENTS, and this shows that there
is a better solution.

On arch/frv and arch/ia64, we never select CONFIG_GENERIC_CLOCKEVENTS
and we also don't use ARCH_USES_GETTIMEOFFSET, which would
block the clocksource Kconfig menu. On m68k, some platforms use
CONFIG_GENERIC_CLOCKEVENTS, some use ARCH_USES_GETTIMEOFFSET, and some
use neither of them. The good news is that there is no configuration that
does not set CONFIG_GENERIC_CLOCKEVENTS but that wants to enable any of
the Kconfig symbols in the menu, so we can simply replace the dependency
with the stricter one. While in theory one could have a clocksource
driver without the clockevent infrastructure, this seems unlikely
to be relevant in the future any more.

We can probably drop some of the other dependencies as well now,
e.g. there should generally be no reason to depend on CONFIG_ARM
unless the driver uses architecture specific assembly.
Reported-by: default avatarRandy Dunlap <rdunlap@infradead.org>
Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
Reviewed-by: default avatarLinus Walleij <linus.walleij@linaro.org>
Signed-off-by: default avatarDaniel Lezcano <daniel.lezcano@linaro.org>
parent 2554828b
menu "Clock Source drivers" menu "Clock Source drivers"
depends on !ARCH_USES_GETTIMEOFFSET depends on GENERIC_CLOCKEVENTS
config TIMER_OF config TIMER_OF
bool bool
depends on GENERIC_CLOCKEVENTS
select TIMER_PROBE select TIMER_PROBE
config TIMER_ACPI config TIMER_ACPI
...@@ -30,21 +29,18 @@ config CLKSRC_MMIO ...@@ -30,21 +29,18 @@ config CLKSRC_MMIO
config BCM2835_TIMER config BCM2835_TIMER
bool "BCM2835 timer driver" if COMPILE_TEST bool "BCM2835 timer driver" if COMPILE_TEST
depends on GENERIC_CLOCKEVENTS
select CLKSRC_MMIO select CLKSRC_MMIO
help help
Enables the support for the BCM2835 timer driver. Enables the support for the BCM2835 timer driver.
config BCM_KONA_TIMER config BCM_KONA_TIMER
bool "BCM mobile timer driver" if COMPILE_TEST bool "BCM mobile timer driver" if COMPILE_TEST
depends on GENERIC_CLOCKEVENTS
select CLKSRC_MMIO select CLKSRC_MMIO
help help
Enables the support for the BCM Kona mobile timer driver. Enables the support for the BCM Kona mobile timer driver.
config DIGICOLOR_TIMER config DIGICOLOR_TIMER
bool "Digicolor timer driver" if COMPILE_TEST bool "Digicolor timer driver" if COMPILE_TEST
depends on GENERIC_CLOCKEVENTS
select CLKSRC_MMIO select CLKSRC_MMIO
depends on HAS_IOMEM depends on HAS_IOMEM
help help
...@@ -52,7 +48,6 @@ config DIGICOLOR_TIMER ...@@ -52,7 +48,6 @@ config DIGICOLOR_TIMER
config DW_APB_TIMER config DW_APB_TIMER
bool "DW APB timer driver" if COMPILE_TEST bool "DW APB timer driver" if COMPILE_TEST
depends on GENERIC_CLOCKEVENTS
help help
Enables the support for the dw_apb timer. Enables the support for the dw_apb timer.
...@@ -63,7 +58,6 @@ config DW_APB_TIMER_OF ...@@ -63,7 +58,6 @@ config DW_APB_TIMER_OF
config FTTMR010_TIMER config FTTMR010_TIMER
bool "Faraday Technology timer driver" if COMPILE_TEST bool "Faraday Technology timer driver" if COMPILE_TEST
depends on GENERIC_CLOCKEVENTS
depends on HAS_IOMEM depends on HAS_IOMEM
select CLKSRC_MMIO select CLKSRC_MMIO
select TIMER_OF select TIMER_OF
...@@ -90,7 +84,6 @@ config ARMADA_370_XP_TIMER ...@@ -90,7 +84,6 @@ config ARMADA_370_XP_TIMER
config MESON6_TIMER config MESON6_TIMER
bool "Meson6 timer driver" if COMPILE_TEST bool "Meson6 timer driver" if COMPILE_TEST
depends on GENERIC_CLOCKEVENTS
select CLKSRC_MMIO select CLKSRC_MMIO
help help
Enables the support for the Meson6 timer driver. Enables the support for the Meson6 timer driver.
...@@ -105,14 +98,12 @@ config ORION_TIMER ...@@ -105,14 +98,12 @@ config ORION_TIMER
config OWL_TIMER config OWL_TIMER
bool "Owl timer driver" if COMPILE_TEST bool "Owl timer driver" if COMPILE_TEST
depends on GENERIC_CLOCKEVENTS
select CLKSRC_MMIO select CLKSRC_MMIO
help help
Enables the support for the Actions Semi Owl timer driver. Enables the support for the Actions Semi Owl timer driver.
config SUN4I_TIMER config SUN4I_TIMER
bool "Sun4i timer driver" if COMPILE_TEST bool "Sun4i timer driver" if COMPILE_TEST
depends on GENERIC_CLOCKEVENTS
depends on HAS_IOMEM depends on HAS_IOMEM
select CLKSRC_MMIO select CLKSRC_MMIO
select TIMER_OF select TIMER_OF
...@@ -135,7 +126,6 @@ config TEGRA_TIMER ...@@ -135,7 +126,6 @@ config TEGRA_TIMER
config VT8500_TIMER config VT8500_TIMER
bool "VT8500 timer driver" if COMPILE_TEST bool "VT8500 timer driver" if COMPILE_TEST
depends on GENERIC_CLOCKEVENTS
depends on HAS_IOMEM depends on HAS_IOMEM
help help
Enables support for the VT8500 driver. Enables support for the VT8500 driver.
...@@ -148,7 +138,6 @@ config CADENCE_TTC_TIMER ...@@ -148,7 +138,6 @@ config CADENCE_TTC_TIMER
config ASM9260_TIMER config ASM9260_TIMER
bool "ASM9260 timer driver" if COMPILE_TEST bool "ASM9260 timer driver" if COMPILE_TEST
depends on GENERIC_CLOCKEVENTS
select CLKSRC_MMIO select CLKSRC_MMIO
select TIMER_OF select TIMER_OF
help help
...@@ -171,28 +160,24 @@ config CLKSRC_NOMADIK_MTU_SCHED_CLOCK ...@@ -171,28 +160,24 @@ config CLKSRC_NOMADIK_MTU_SCHED_CLOCK
config CLKSRC_DBX500_PRCMU config CLKSRC_DBX500_PRCMU
bool "Clocksource PRCMU Timer" if COMPILE_TEST bool "Clocksource PRCMU Timer" if COMPILE_TEST
depends on GENERIC_CLOCKEVENTS
depends on HAS_IOMEM depends on HAS_IOMEM
help help
Use the always on PRCMU Timer as clocksource Use the always on PRCMU Timer as clocksource
config CLPS711X_TIMER config CLPS711X_TIMER
bool "Cirrus logic timer driver" if COMPILE_TEST bool "Cirrus logic timer driver" if COMPILE_TEST
depends on GENERIC_CLOCKEVENTS
select CLKSRC_MMIO select CLKSRC_MMIO
help help
Enables support for the Cirrus Logic PS711 timer. Enables support for the Cirrus Logic PS711 timer.
config ATLAS7_TIMER config ATLAS7_TIMER
bool "Atlas7 timer driver" if COMPILE_TEST bool "Atlas7 timer driver" if COMPILE_TEST
depends on GENERIC_CLOCKEVENTS
select CLKSRC_MMIO select CLKSRC_MMIO
help help
Enables support for the Atlas7 timer. Enables support for the Atlas7 timer.
config MXS_TIMER config MXS_TIMER
bool "Mxs timer driver" if COMPILE_TEST bool "Mxs timer driver" if COMPILE_TEST
depends on GENERIC_CLOCKEVENTS
select CLKSRC_MMIO select CLKSRC_MMIO
select STMP_DEVICE select STMP_DEVICE
help help
...@@ -200,14 +185,12 @@ config MXS_TIMER ...@@ -200,14 +185,12 @@ config MXS_TIMER
config PRIMA2_TIMER config PRIMA2_TIMER
bool "Prima2 timer driver" if COMPILE_TEST bool "Prima2 timer driver" if COMPILE_TEST
depends on GENERIC_CLOCKEVENTS
select CLKSRC_MMIO select CLKSRC_MMIO
help help
Enables support for the Prima2 timer. Enables support for the Prima2 timer.
config U300_TIMER config U300_TIMER
bool "U300 timer driver" if COMPILE_TEST bool "U300 timer driver" if COMPILE_TEST
depends on GENERIC_CLOCKEVENTS
depends on ARM depends on ARM
select CLKSRC_MMIO select CLKSRC_MMIO
help help
...@@ -215,14 +198,12 @@ config U300_TIMER ...@@ -215,14 +198,12 @@ config U300_TIMER
config NSPIRE_TIMER config NSPIRE_TIMER
bool "NSpire timer driver" if COMPILE_TEST bool "NSpire timer driver" if COMPILE_TEST
depends on GENERIC_CLOCKEVENTS
select CLKSRC_MMIO select CLKSRC_MMIO
help help
Enables support for the Nspire timer. Enables support for the Nspire timer.
config KEYSTONE_TIMER config KEYSTONE_TIMER
bool "Keystone timer driver" if COMPILE_TEST bool "Keystone timer driver" if COMPILE_TEST
depends on GENERIC_CLOCKEVENTS
depends on ARM || ARM64 depends on ARM || ARM64
select CLKSRC_MMIO select CLKSRC_MMIO
help help
...@@ -230,7 +211,6 @@ config KEYSTONE_TIMER ...@@ -230,7 +211,6 @@ config KEYSTONE_TIMER
config INTEGRATOR_AP_TIMER config INTEGRATOR_AP_TIMER
bool "Integrator-ap timer driver" if COMPILE_TEST bool "Integrator-ap timer driver" if COMPILE_TEST
depends on GENERIC_CLOCKEVENTS
select CLKSRC_MMIO select CLKSRC_MMIO
help help
Enables support for the Integrator-ap timer. Enables support for the Integrator-ap timer.
...@@ -253,7 +233,7 @@ config CLKSRC_EFM32 ...@@ -253,7 +233,7 @@ config CLKSRC_EFM32
config CLKSRC_LPC32XX config CLKSRC_LPC32XX
bool "Clocksource for LPC32XX" if COMPILE_TEST bool "Clocksource for LPC32XX" if COMPILE_TEST
depends on GENERIC_CLOCKEVENTS && HAS_IOMEM depends on HAS_IOMEM
depends on ARM depends on ARM
select CLKSRC_MMIO select CLKSRC_MMIO
select TIMER_OF select TIMER_OF
...@@ -262,7 +242,7 @@ config CLKSRC_LPC32XX ...@@ -262,7 +242,7 @@ config CLKSRC_LPC32XX
config CLKSRC_PISTACHIO config CLKSRC_PISTACHIO
bool "Clocksource for Pistachio SoC" if COMPILE_TEST bool "Clocksource for Pistachio SoC" if COMPILE_TEST
depends on GENERIC_CLOCKEVENTS && HAS_IOMEM depends on HAS_IOMEM
select TIMER_OF select TIMER_OF
help help
Enables the clocksource for the Pistachio SoC. Enables the clocksource for the Pistachio SoC.
...@@ -298,7 +278,6 @@ config CLKSRC_MPS2 ...@@ -298,7 +278,6 @@ config CLKSRC_MPS2
config ARC_TIMERS config ARC_TIMERS
bool "Support for 32-bit TIMERn counters in ARC Cores" if COMPILE_TEST bool "Support for 32-bit TIMERn counters in ARC Cores" if COMPILE_TEST
depends on GENERIC_CLOCKEVENTS
select TIMER_OF select TIMER_OF
help help
These are legacy 32-bit TIMER0 and TIMER1 counters found on all ARC cores These are legacy 32-bit TIMER0 and TIMER1 counters found on all ARC cores
...@@ -307,7 +286,6 @@ config ARC_TIMERS ...@@ -307,7 +286,6 @@ config ARC_TIMERS
config ARC_TIMERS_64BIT config ARC_TIMERS_64BIT
bool "Support for 64-bit counters in ARC HS38 cores" if COMPILE_TEST bool "Support for 64-bit counters in ARC HS38 cores" if COMPILE_TEST
depends on GENERIC_CLOCKEVENTS
depends on ARC_TIMERS depends on ARC_TIMERS
select TIMER_OF select TIMER_OF
help help
...@@ -407,7 +385,6 @@ config ATMEL_PIT ...@@ -407,7 +385,6 @@ config ATMEL_PIT
config ATMEL_ST config ATMEL_ST
bool "Atmel ST timer support" if COMPILE_TEST bool "Atmel ST timer support" if COMPILE_TEST
depends on GENERIC_CLOCKEVENTS
select TIMER_OF select TIMER_OF
select MFD_SYSCON select MFD_SYSCON
help help
...@@ -426,7 +403,6 @@ config CLKSRC_EXYNOS_MCT ...@@ -426,7 +403,6 @@ config CLKSRC_EXYNOS_MCT
config CLKSRC_SAMSUNG_PWM config CLKSRC_SAMSUNG_PWM
bool "PWM timer driver for Samsung S3C, S5P" if COMPILE_TEST bool "PWM timer driver for Samsung S3C, S5P" if COMPILE_TEST
depends on GENERIC_CLOCKEVENTS
depends on HAS_IOMEM depends on HAS_IOMEM
help help
This is a new clocksource driver for the PWM timer found in This is a new clocksource driver for the PWM timer found in
...@@ -436,7 +412,6 @@ config CLKSRC_SAMSUNG_PWM ...@@ -436,7 +412,6 @@ config CLKSRC_SAMSUNG_PWM
config FSL_FTM_TIMER config FSL_FTM_TIMER
bool "Freescale FlexTimer Module driver" if COMPILE_TEST bool "Freescale FlexTimer Module driver" if COMPILE_TEST
depends on GENERIC_CLOCKEVENTS
depends on HAS_IOMEM depends on HAS_IOMEM
select CLKSRC_MMIO select CLKSRC_MMIO
help help
...@@ -450,7 +425,6 @@ config VF_PIT_TIMER ...@@ -450,7 +425,6 @@ config VF_PIT_TIMER
config OXNAS_RPS_TIMER config OXNAS_RPS_TIMER
bool "Oxford Semiconductor OXNAS RPS Timers driver" if COMPILE_TEST bool "Oxford Semiconductor OXNAS RPS Timers driver" if COMPILE_TEST
depends on GENERIC_CLOCKEVENTS
select TIMER_OF select TIMER_OF
select CLKSRC_MMIO select CLKSRC_MMIO
help help
...@@ -461,7 +435,7 @@ config SYS_SUPPORTS_SH_CMT ...@@ -461,7 +435,7 @@ config SYS_SUPPORTS_SH_CMT
config MTK_TIMER config MTK_TIMER
bool "Mediatek timer driver" if COMPILE_TEST bool "Mediatek timer driver" if COMPILE_TEST
depends on GENERIC_CLOCKEVENTS && HAS_IOMEM depends on HAS_IOMEM
select TIMER_OF select TIMER_OF
select CLKSRC_MMIO select CLKSRC_MMIO
help help
...@@ -479,7 +453,6 @@ config SYS_SUPPORTS_EM_STI ...@@ -479,7 +453,6 @@ config SYS_SUPPORTS_EM_STI
config CLKSRC_JCORE_PIT config CLKSRC_JCORE_PIT
bool "J-Core PIT timer driver" if COMPILE_TEST bool "J-Core PIT timer driver" if COMPILE_TEST
depends on OF depends on OF
depends on GENERIC_CLOCKEVENTS
depends on HAS_IOMEM depends on HAS_IOMEM
select CLKSRC_MMIO select CLKSRC_MMIO
help help
...@@ -488,7 +461,6 @@ config CLKSRC_JCORE_PIT ...@@ -488,7 +461,6 @@ config CLKSRC_JCORE_PIT
config SH_TIMER_CMT config SH_TIMER_CMT
bool "Renesas CMT timer driver" if COMPILE_TEST bool "Renesas CMT timer driver" if COMPILE_TEST
depends on GENERIC_CLOCKEVENTS
depends on HAS_IOMEM depends on HAS_IOMEM
default SYS_SUPPORTS_SH_CMT default SYS_SUPPORTS_SH_CMT
help help
...@@ -498,7 +470,6 @@ config SH_TIMER_CMT ...@@ -498,7 +470,6 @@ config SH_TIMER_CMT
config SH_TIMER_MTU2 config SH_TIMER_MTU2
bool "Renesas MTU2 timer driver" if COMPILE_TEST bool "Renesas MTU2 timer driver" if COMPILE_TEST
depends on GENERIC_CLOCKEVENTS
depends on HAS_IOMEM depends on HAS_IOMEM
default SYS_SUPPORTS_SH_MTU2 default SYS_SUPPORTS_SH_MTU2
help help
...@@ -508,14 +479,12 @@ config SH_TIMER_MTU2 ...@@ -508,14 +479,12 @@ config SH_TIMER_MTU2
config RENESAS_OSTM config RENESAS_OSTM
bool "Renesas OSTM timer driver" if COMPILE_TEST bool "Renesas OSTM timer driver" if COMPILE_TEST
depends on GENERIC_CLOCKEVENTS
select CLKSRC_MMIO select CLKSRC_MMIO
help help
Enables the support for the Renesas OSTM. Enables the support for the Renesas OSTM.
config SH_TIMER_TMU config SH_TIMER_TMU
bool "Renesas TMU timer driver" if COMPILE_TEST bool "Renesas TMU timer driver" if COMPILE_TEST
depends on GENERIC_CLOCKEVENTS
depends on HAS_IOMEM depends on HAS_IOMEM
default SYS_SUPPORTS_SH_TMU default SYS_SUPPORTS_SH_TMU
help help
...@@ -525,7 +494,7 @@ config SH_TIMER_TMU ...@@ -525,7 +494,7 @@ config SH_TIMER_TMU
config EM_TIMER_STI config EM_TIMER_STI
bool "Renesas STI timer driver" if COMPILE_TEST bool "Renesas STI timer driver" if COMPILE_TEST
depends on GENERIC_CLOCKEVENTS && HAS_IOMEM depends on HAS_IOMEM
default SYS_SUPPORTS_EM_STI default SYS_SUPPORTS_EM_STI
help help
This enables build of a clocksource and clockevent driver for This enables build of a clocksource and clockevent driver for
...@@ -566,7 +535,6 @@ config CLKSRC_TANGO_XTAL ...@@ -566,7 +535,6 @@ config CLKSRC_TANGO_XTAL
config CLKSRC_PXA config CLKSRC_PXA
bool "Clocksource for PXA or SA-11x0 platform" if COMPILE_TEST bool "Clocksource for PXA or SA-11x0 platform" if COMPILE_TEST
depends on GENERIC_CLOCKEVENTS
depends on HAS_IOMEM depends on HAS_IOMEM
select CLKSRC_MMIO select CLKSRC_MMIO
help help
...@@ -575,20 +543,20 @@ config CLKSRC_PXA ...@@ -575,20 +543,20 @@ config CLKSRC_PXA
config H8300_TMR8 config H8300_TMR8
bool "Clockevent timer for the H8300 platform" if COMPILE_TEST bool "Clockevent timer for the H8300 platform" if COMPILE_TEST
depends on GENERIC_CLOCKEVENTS && HAS_IOMEM depends on HAS_IOMEM
help help
This enables the 8 bits timer for the H8300 platform. This enables the 8 bits timer for the H8300 platform.
config H8300_TMR16 config H8300_TMR16
bool "Clockevent timer for the H83069 platform" if COMPILE_TEST bool "Clockevent timer for the H83069 platform" if COMPILE_TEST
depends on GENERIC_CLOCKEVENTS && HAS_IOMEM depends on HAS_IOMEM
help help
This enables the 16 bits timer for the H8300 platform with the This enables the 16 bits timer for the H8300 platform with the
H83069 cpu. H83069 cpu.
config H8300_TPU config H8300_TPU
bool "Clocksource for the H8300 platform" if COMPILE_TEST bool "Clocksource for the H8300 platform" if COMPILE_TEST
depends on GENERIC_CLOCKEVENTS && HAS_IOMEM depends on HAS_IOMEM
help help
This enables the clocksource for the H8300 platform with the This enables the clocksource for the H8300 platform with the
H8S2678 cpu. H8S2678 cpu.
...@@ -600,7 +568,7 @@ config CLKSRC_IMX_GPT ...@@ -600,7 +568,7 @@ config CLKSRC_IMX_GPT
config CLKSRC_IMX_TPM config CLKSRC_IMX_TPM
bool "Clocksource using i.MX TPM" if COMPILE_TEST bool "Clocksource using i.MX TPM" if COMPILE_TEST
depends on ARM && CLKDEV_LOOKUP && GENERIC_CLOCKEVENTS depends on ARM && CLKDEV_LOOKUP
select CLKSRC_MMIO select CLKSRC_MMIO
help help
Enable this option to use IMX Timer/PWM Module (TPM) timer as Enable this option to use IMX Timer/PWM Module (TPM) timer as
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment