# SPDX-License-Identifier: GPL-2.0-only
menu "Clock Source drivers"
	depends on GENERIC_CLOCKEVENTS

config TIMER_OF
	bool
	select TIMER_PROBE

config TIMER_ACPI
	bool
	select TIMER_PROBE

config TIMER_PROBE
	bool

config CLKSRC_I8253
	bool

config CLKEVT_I8253
	bool

config I8253_LOCK
	bool

config OMAP_DM_SYSTIMER
	bool
	select TIMER_OF

config CLKBLD_I8253
	def_bool y if CLKSRC_I8253 || CLKEVT_I8253 || I8253_LOCK

config CLKSRC_MMIO
	bool

config BCM2835_TIMER
	bool "BCM2835 timer driver" if COMPILE_TEST
	select CLKSRC_MMIO
	help
	  Enables the support for the BCM2835 timer driver.

config BCM_KONA_TIMER
	bool "BCM mobile timer driver" if COMPILE_TEST
	select CLKSRC_MMIO
	help
	  Enables the support for the BCM Kona mobile timer driver.

config DAVINCI_TIMER
	bool "Texas Instruments DaVinci timer driver" if COMPILE_TEST
	help
	  Enables the support for the TI DaVinci timer driver.

config DIGICOLOR_TIMER
	bool "Digicolor timer driver" if COMPILE_TEST
	select CLKSRC_MMIO
	depends on HAS_IOMEM
	help
	  Enables the support for the digicolor timer driver.

config OMAP_DM_TIMER
	bool "OMAP dual-mode timer driver" if ARCH_K3 || COMPILE_TEST
	default y if ARCH_K3
	select TIMER_OF
	help
	  Enables the support for the TI dual-mode timer driver.

config DW_APB_TIMER
	bool "DW APB timer driver" if COMPILE_TEST
	help
	  Enables the support for the dw_apb timer.

config DW_APB_TIMER_OF
	bool
	select DW_APB_TIMER
	select TIMER_OF

config FTTMR010_TIMER
	bool "Faraday Technology timer driver" if COMPILE_TEST
	depends on HAS_IOMEM
	select CLKSRC_MMIO
	select TIMER_OF
	select MFD_SYSCON
	help
	  Enables support for the Faraday Technology timer block
	  FTTMR010.

config IXP4XX_TIMER
	bool "Intel XScale IXP4xx timer driver" if COMPILE_TEST
	depends on HAS_IOMEM
	select CLKSRC_MMIO
	select TIMER_OF
	help
	  Enables support for the Intel XScale IXP4xx SoC timer.

config ROCKCHIP_TIMER
	bool "Rockchip timer driver" if COMPILE_TEST
	depends on ARM || ARM64
	select TIMER_OF
	select CLKSRC_MMIO
	help
	  Enables the support for the Rockchip timer driver.

config ARMADA_370_XP_TIMER
	bool "Armada 370 and XP timer driver" if COMPILE_TEST
	depends on ARM
	select TIMER_OF
	select CLKSRC_MMIO
	help
	  Enables the support for the Armada 370 and XP timer driver.

config MESON6_TIMER
	bool "Meson6 timer driver" if COMPILE_TEST
	select CLKSRC_MMIO
	help
	  Enables the support for the Meson6 timer driver.

config ORION_TIMER
	bool "Orion timer driver" if COMPILE_TEST
	depends on ARM
	select TIMER_OF
	select CLKSRC_MMIO
	help
	  Enables the support for the Orion timer driver

config OWL_TIMER
	bool "Owl timer driver" if COMPILE_TEST
	select CLKSRC_MMIO
	help
	  Enables the support for the Actions Semi Owl timer driver.

config RDA_TIMER
	bool "RDA timer driver" if COMPILE_TEST
	select CLKSRC_MMIO
	select TIMER_OF
	help
	  Enables the support for the RDA Micro timer driver.

config REALTEK_OTTO_TIMER
	bool "Clocksource/timer for the Realtek Otto platform" if COMPILE_TEST
	select TIMER_OF
	help
	  This driver adds support for the timers found in the Realtek RTL83xx
	  and RTL93xx SoCs series. This includes chips such as RTL8380, RTL8381
	  and RTL832, as well as chips from the RTL839x series, such as RTL8390
	  RT8391, RTL8392, RTL8393 and RTL8396 and chips of the RTL930x series
	  such as RTL9301, RTL9302 or RTL9303.

config SUN4I_TIMER
	bool "Sun4i timer driver"
	depends on HAS_IOMEM
	select CLKSRC_MMIO
	select TIMER_OF
	help
	  Enables support for the Sun4i timer.

config SUN5I_HSTIMER
	bool "Sun5i timer driver" if COMPILE_TEST
	select CLKSRC_MMIO
	depends on COMMON_CLK
	help
	  Enables support the Sun5i timer.

config TEGRA_TIMER
	bool "Tegra timer driver" if COMPILE_TEST
	select CLKSRC_MMIO
	select TIMER_OF
	depends on ARCH_TEGRA || COMPILE_TEST
	help
	  Enables support for the Tegra driver.

config TEGRA186_TIMER
	bool "NVIDIA Tegra186 timer driver"
	depends on ARCH_TEGRA || COMPILE_TEST
	depends on WATCHDOG && WATCHDOG_CORE
	help
	  Enables support for the timers and watchdogs found on NVIDIA
	  Tegra186 and later SoCs.

config VT8500_TIMER
	bool "VT8500 timer driver" if COMPILE_TEST
	depends on HAS_IOMEM
	help
	  Enables support for the VT8500 driver.

config NPCM7XX_TIMER
	bool "NPCM7xx timer driver" if COMPILE_TEST
	depends on HAS_IOMEM
	select TIMER_OF
	select CLKSRC_MMIO
	help
	  Enable 24-bit TIMER0 and TIMER1 counters in the NPCM7xx architecture,
	  where TIMER0 serves as clockevent and TIMER1 serves as clocksource.

config CADENCE_TTC_TIMER
	bool "Cadence TTC timer driver" if COMPILE_TEST
	depends on COMMON_CLK
	help
	  Enables support for the Cadence TTC driver.

config ASM9260_TIMER
	bool "ASM9260 timer driver" if COMPILE_TEST
	select CLKSRC_MMIO
	select TIMER_OF
	help
	  Enables support for the ASM9260 timer.

config CLKSRC_NOMADIK_MTU
	bool "Nomakdik clocksource driver" if COMPILE_TEST
	depends on ARM
	select CLKSRC_MMIO
	help
	  Support for Multi Timer Unit. MTU provides access
	  to multiple interrupt generating programmable
	  32-bit free running decrementing counters.

config CLKSRC_DBX500_PRCMU
	bool "Clocksource PRCMU Timer" if COMPILE_TEST
	depends on HAS_IOMEM
	help
	  Use the always on PRCMU Timer as clocksource.

config CLPS711X_TIMER
	bool "Cirrus Logic timer driver" if COMPILE_TEST
	select CLKSRC_MMIO
	help
	  Enables support for the Cirrus Logic PS711 timer.

config MXS_TIMER
	bool "MXS timer driver" if COMPILE_TEST
	select CLKSRC_MMIO
	select STMP_DEVICE
	help
	  Enables support for the MXS timer.

config NSPIRE_TIMER
	bool "NSpire timer driver" if COMPILE_TEST
	select CLKSRC_MMIO
	help
	  Enables support for the Nspire timer.

config KEYSTONE_TIMER
	bool "Keystone timer driver" if COMPILE_TEST
	depends on ARM || ARM64
	select CLKSRC_MMIO
	help
	  Enables support for the Keystone timer.

config INTEGRATOR_AP_TIMER
	bool "Integrator-AP timer driver" if COMPILE_TEST
	select CLKSRC_MMIO
	help
	  Enables support for the Integrator-AP timer.

config CLKSRC_LPC32XX
	bool "Clocksource for LPC32XX" if COMPILE_TEST
	depends on HAS_IOMEM
	depends on ARM
	select CLKSRC_MMIO
	select TIMER_OF
	help
	  Support for the LPC32XX clocksource.

config CLKSRC_PISTACHIO
	bool "Clocksource for Pistachio SoC"
	depends on HAS_IOMEM
	depends on MIPS || COMPILE_TEST
	select TIMER_OF
	help
	  Enables the clocksource for the Pistachio SoC.

config CLKSRC_TI_32K
	bool "Texas Instruments 32.768 Hz Clocksource" if COMPILE_TEST
	depends on GENERIC_SCHED_CLOCK
	select TIMER_OF if OF
	help
	  This option enables support for Texas Instruments 32.768 Hz clocksource
	  available on many OMAP-like platforms.

config CLKSRC_STM32
	bool "Clocksource for STM32 SoCs" if !ARCH_STM32
	depends on OF && ARM && (ARCH_STM32 || COMPILE_TEST)
	select CLKSRC_MMIO
	select TIMER_OF

config CLKSRC_STM32_LP
	bool "Low power clocksource for STM32 SoCs"
	depends on MFD_STM32_LPTIMER || COMPILE_TEST

config CLKSRC_MPS2
	bool "Clocksource for MPS2 SoCs" if COMPILE_TEST
	depends on GENERIC_SCHED_CLOCK
	select CLKSRC_MMIO
	select TIMER_OF

config ARC_TIMERS
	bool "Support for 32-bit TIMERn counters in ARC Cores" if COMPILE_TEST
	depends on GENERIC_SCHED_CLOCK
	select TIMER_OF
	help
	  These are legacy 32-bit TIMER0 and TIMER1 counters found on all ARC cores
	  (ARC700 as well as ARC HS38).
	  TIMER0 serves as clockevent while TIMER1 provides clocksource.

config ARC_TIMERS_64BIT
	bool "Support for 64-bit counters in ARC HS38 cores" if COMPILE_TEST
	depends on ARC_TIMERS
	select TIMER_OF
	help
	  This enables 2 different 64-bit timers: RTC (for UP) and GFRC (for SMP).
	  RTC is implemented inside the core, while GFRC sits outside the core in
	  ARConnect IP block. Driver automatically picks one of them for clocksource
	  as appropriate.

config ARM_ARCH_TIMER
	bool
	select TIMER_OF if OF
	select TIMER_ACPI if ACPI

config ARM_ARCH_TIMER_EVTSTREAM
	bool "Enable ARM architected timer event stream generation by default"
	default y if ARM_ARCH_TIMER
	depends on ARM_ARCH_TIMER
	help
	  This option enables support by default for event stream generation
	  based on the ARM architected timer. It is used for waking up CPUs
	  executing the wfe instruction at a frequency represented as a
	  power-of-2 divisor of the clock rate. The behaviour can also be
	  overridden on the command line using the
	  clocksource.arm_arch_timer.evtstream parameter.
	  The main use of the event stream is wfe-based timeouts of userspace
	  locking implementations. It might also be useful for imposing timeout
	  on wfe to safeguard against any programming errors in case an expected
	  event is not generated.
	  This must be disabled for hardware validation purposes to detect any
	  hardware anomalies of missing events.

config ARM_ARCH_TIMER_OOL_WORKAROUND
	bool

config FSL_ERRATUM_A008585
	bool "Workaround for Freescale/NXP Erratum A-008585"
	default y
	depends on ARM_ARCH_TIMER && ARM64
	select ARM_ARCH_TIMER_OOL_WORKAROUND
	help
	  This option enables a workaround for Freescale/NXP Erratum
	  A-008585 ("ARM generic timer may contain an erroneous
	  value").  The workaround will only be active if the
	  fsl,erratum-a008585 property is found in the timer node.

config HISILICON_ERRATUM_161010101
	bool "Workaround for Hisilicon Erratum 161010101"
	default y
	select ARM_ARCH_TIMER_OOL_WORKAROUND
	depends on ARM_ARCH_TIMER && ARM64
	help
	  This option enables a workaround for Hisilicon Erratum
	  161010101. The workaround will be active if the hisilicon,erratum-161010101
	  property is found in the timer node.

config ARM64_ERRATUM_858921
	bool "Workaround for Cortex-A73 erratum 858921"
	default y
	select ARM_ARCH_TIMER_OOL_WORKAROUND
	depends on ARM_ARCH_TIMER && ARM64
	help
	  This option enables a workaround applicable to Cortex-A73
	  (all versions), whose counter may return incorrect values.
	  The workaround will be dynamically enabled when an affected
	  core is detected.

config SUN50I_ERRATUM_UNKNOWN1
	bool "Workaround for Allwinner A64 erratum UNKNOWN1"
	default y
	depends on ARM_ARCH_TIMER && ARM64 && ARCH_SUNXI
	select ARM_ARCH_TIMER_OOL_WORKAROUND
	help
	  This option enables a workaround for instability in the timer on
	  the Allwinner A64 SoC. The workaround will only be active if the
	  allwinner,erratum-unknown1 property is found in the timer node.

config ARM_GLOBAL_TIMER
	bool "Support for the ARM global timer" if COMPILE_TEST
	select TIMER_OF if OF
	depends on ARM
	help
	  This option enables support for the ARM global timer unit.

config ARM_GT_INITIAL_PRESCALER_VAL
	int "ARM global timer initial prescaler value"
	default 2 if ARCH_ZYNQ
	default 1
	depends on ARM_GLOBAL_TIMER
	help
	  When the ARM global timer initializes, its current rate is declared
	  to the kernel and maintained forever. Should its parent clock
	  change, the driver tries to fix the timer's internal prescaler.
	  On some machs (i.e. Zynq) the initial prescaler value thus poses
	  bounds about how much the parent clock is allowed to decrease or
	  increase wrt the initial clock value.
	  This affects CPU_FREQ max delta from the initial frequency.

config ARM_TIMER_SP804
	bool "Support for Dual Timer SP804 module" if COMPILE_TEST
	depends on GENERIC_SCHED_CLOCK && HAVE_CLK
	select CLKSRC_MMIO
	select TIMER_OF if OF

config CLKSRC_ARM_GLOBAL_TIMER_SCHED_CLOCK
	bool
	depends on ARM_GLOBAL_TIMER
	default y
	help
	  Use ARM global timer clock source as sched_clock.

config ARMV7M_SYSTICK
	bool "Support for the ARMv7M system time" if COMPILE_TEST
	select TIMER_OF if OF
	select CLKSRC_MMIO
	help
	  This option enables support for the ARMv7M system timer unit.

config ATMEL_PIT
	bool "Atmel PIT support" if COMPILE_TEST
	depends on HAS_IOMEM
	select TIMER_OF if OF
	help
	  Support for the Periodic Interval Timer found on Atmel SoCs.

config ATMEL_ST
	bool "Atmel ST timer support" if COMPILE_TEST
	depends on HAS_IOMEM
	select TIMER_OF
	select MFD_SYSCON
	help
	  Support for the Atmel ST timer.

config ATMEL_TCB_CLKSRC
	bool "Atmel TC Block timer driver" if COMPILE_TEST
	depends on ARM && HAS_IOMEM
	select TIMER_OF if OF
	help
	  Support for Timer Counter Blocks on Atmel SoCs.

config CLKSRC_EXYNOS_MCT
	bool "Exynos multi core timer driver" if COMPILE_TEST
	depends on ARM || ARM64
	depends on ARCH_ARTPEC || ARCH_EXYNOS || COMPILE_TEST
	help
	  Support for Multi Core Timer controller on Exynos SoCs.

config CLKSRC_SAMSUNG_PWM
	bool "PWM timer driver for Samsung S3C, S5P" if COMPILE_TEST
	depends on HAS_IOMEM
	depends on ARCH_EXYNOS || ARCH_S3C64XX || ARCH_S5PV210 || COMPILE_TEST
	help
	  This is a new clocksource driver for the PWM timer found in
	  Samsung S3C, S5P and Exynos SoCs, replacing an earlier driver
	  for all devicetree enabled platforms. This driver will be
	  needed only on systems that do not have the Exynos MCT available.

config FSL_FTM_TIMER
	bool "Freescale FlexTimer Module driver" if COMPILE_TEST
	depends on HAS_IOMEM
	select CLKSRC_MMIO
	help
	  Support for Freescale FlexTimer Module (FTM) timer.

config VF_PIT_TIMER
	bool
	select CLKSRC_MMIO
	help
	  Support for Periodic Interrupt Timer on Freescale Vybrid Family SoCs.

config SYS_SUPPORTS_SH_CMT
	bool

config MTK_TIMER
	bool "Mediatek timer driver" if COMPILE_TEST
	depends on HAS_IOMEM
	select TIMER_OF
	select CLKSRC_MMIO
	help
	  Support for Mediatek timer driver.

config MTK_CPUX_TIMER
	bool "MediaTek CPUX timer driver" if COMPILE_TEST
	depends on HAS_IOMEM
	default ARCH_MEDIATEK
	select TIMER_OF
	select CLKSRC_MMIO
	help
	  Support for MediaTek CPUXGPT timer driver.

config SPRD_TIMER
	bool "Spreadtrum timer driver" if EXPERT
	depends on HAS_IOMEM
	depends on (ARCH_SPRD || COMPILE_TEST)
	default ARCH_SPRD
	select TIMER_OF
	help
	  Enables support for the Spreadtrum timer driver.

config SYS_SUPPORTS_SH_MTU2
	bool

config SYS_SUPPORTS_SH_TMU
	bool

config SYS_SUPPORTS_EM_STI
	bool

config CLKSRC_JCORE_PIT
	bool "J-Core PIT timer driver" if COMPILE_TEST
	depends on OF
	depends on HAS_IOMEM
	select CLKSRC_MMIO
	help
	  This enables build of clocksource and clockevent driver for
	  the integrated PIT in the J-Core synthesizable, open source SoC.

config SH_TIMER_CMT
	bool "Renesas CMT timer driver" if COMPILE_TEST
	depends on HAS_IOMEM
	default SYS_SUPPORTS_SH_CMT
	help
	  This enables build of a clocksource and clockevent driver for
	  the Compare Match Timer (CMT) hardware available in 16/32/48-bit
	  variants on a wide range of Mobile and Automotive SoCs from Renesas.

config SH_TIMER_MTU2
	bool "Renesas MTU2 timer driver" if COMPILE_TEST
	depends on HAS_IOMEM
	default SYS_SUPPORTS_SH_MTU2
	help
	  This enables build of a clockevent driver for the Multi-Function
	  Timer Pulse Unit 2 (MTU2) hardware available on SoCs from Renesas.
	  This hardware comes with 16-bit timer registers.

config RENESAS_OSTM
	bool "Renesas OSTM timer driver"
	depends on ARCH_RENESAS || COMPILE_TEST
	select CLKSRC_MMIO
	select TIMER_OF
	help
	  Enables the support for the Renesas OSTM.

config SH_TIMER_TMU
	bool "Renesas TMU timer driver" if COMPILE_TEST
	depends on HAS_IOMEM
	default SYS_SUPPORTS_SH_TMU
	help
	  This enables build of a clocksource and clockevent driver for
	  the 32-bit Timer Unit (TMU) hardware available on a wide range
	  SoCs from Renesas.

config EM_TIMER_STI
	bool "Renesas STI timer driver" if COMPILE_TEST
	depends on HAS_IOMEM
	default SYS_SUPPORTS_EM_STI
	help
	  This enables build of a clocksource and clockevent driver for
	  the 48-bit System Timer (STI) hardware available on a SoCs
	  such as EMEV2 from former NEC Electronics.

config CLKSRC_QCOM
	bool "Qualcomm MSM timer" if COMPILE_TEST
	depends on ARM
	select TIMER_OF
	help
	  This enables the clocksource and the per CPU clockevent driver for the
	  Qualcomm SoCs.

config CLKSRC_VERSATILE
	bool "ARM Versatile (Express) reference platforms clock source" if COMPILE_TEST
	depends on GENERIC_SCHED_CLOCK
	select TIMER_OF
	default y if (ARCH_VEXPRESS || ARCH_VERSATILE) && ARM
	help
	  This option enables clock source based on free running
	  counter available in the "System Registers" block of
	  ARM Versatile and Versatile Express reference platforms.

config CLKSRC_MIPS_GIC
	bool
	depends on MIPS_GIC
	select CLOCKSOURCE_WATCHDOG
	select TIMER_OF

config CLKSRC_PXA
	bool "Clocksource for PXA or SA-11x0 platform" if COMPILE_TEST
	depends on HAS_IOMEM
	select CLKSRC_MMIO
	help
	  This enables OST0 support available on PXA and SA-11x0
	  platforms.

config CLKSRC_IMX_GPT
	bool "Clocksource using i.MX GPT" if COMPILE_TEST
	depends on (ARM || ARM64) && HAVE_CLK
	select CLKSRC_MMIO

config CLKSRC_IMX_TPM
	bool "Clocksource using i.MX TPM" if COMPILE_TEST
	depends on (ARM || ARM64) && HAVE_CLK
	select CLKSRC_MMIO
	select TIMER_OF
	help
	  Enable this option to use IMX Timer/PWM Module (TPM) timer as
	  clocksource.

config TIMER_IMX_SYS_CTR
	bool "i.MX system counter timer" if COMPILE_TEST
	select TIMER_OF
	help
	  Enable this option to use i.MX system counter timer as a
	  clockevent.

config CLKSRC_LOONGSON1_PWM
	bool "Clocksource using Loongson1 PWM"
	depends on MACH_LOONGSON32 || COMPILE_TEST
	select MIPS_EXTERNAL_TIMER
	select TIMER_OF
	help
	  Enable this option to use Loongson1 PWM timer as clocksource
	  instead of the performance counter.

config CLKSRC_ST_LPC
	bool "Low power clocksource found in the LPC" if COMPILE_TEST
	select TIMER_OF if OF
	depends on HAS_IOMEM
	select CLKSRC_MMIO
	help
	  Enable this option to use the Low Power controller timer
	  as clocksource.

config GXP_TIMER
	bool "GXP timer driver" if COMPILE_TEST && !ARCH_HPE
	default ARCH_HPE
	select TIMER_OF if OF
	help
	  Provides a driver for the timer control found on HPE
	  GXP SOCs. This is required for all GXP SOCs.

config RISCV_TIMER
	bool "Timer for the RISC-V platform" if COMPILE_TEST
	depends on GENERIC_SCHED_CLOCK && RISCV && RISCV_SBI
	select TIMER_PROBE
	select TIMER_OF
	help
	  This enables the per-hart timer built into all RISC-V systems, which
	  is accessed via both the SBI and the rdcycle instruction.  This is
	  required for all RISC-V systems.

config CLINT_TIMER
	bool "CLINT Timer for the RISC-V platform" if COMPILE_TEST
	depends on GENERIC_SCHED_CLOCK && RISCV
	select TIMER_PROBE
	select TIMER_OF
	help
	  This option enables the CLINT timer for RISC-V systems.  The CLINT
	  driver is usually used for NoMMU RISC-V systems.

config CSKY_MP_TIMER
	bool "SMP Timer for the C-SKY platform" if COMPILE_TEST
	depends on CSKY
	select TIMER_OF
	help
	  Say yes here to enable C-SKY SMP timer driver used for C-SKY SMP
	  system.
	  csky,mptimer is not only used in SMP system, it also could be used in
	  single core system. It's not a mmio reg and it uses mtcr/mfcr instruction.

config GX6605S_TIMER
	bool "Gx6605s SOC system timer driver" if COMPILE_TEST
	depends on CSKY
	select CLKSRC_MMIO
	select TIMER_OF
	help
	  This option enables support for gx6605s SOC's timer.

config MILBEAUT_TIMER
	bool "Milbeaut timer driver" if COMPILE_TEST
	depends on OF
	depends on ARM
	select TIMER_OF
	select CLKSRC_MMIO
	help
	  Enables the support for Milbeaut timer driver.

config MSC313E_TIMER
	bool "MSC313E timer driver" if COMPILE_TEST
	select TIMER_OF
	select CLKSRC_MMIO
	help
	  Enables support for the MStar MSC313E timer driver.
	  This provides access to multiple interrupt generating
	  programmable 32-bit free running incrementing counters.

config INGENIC_TIMER
	bool "Clocksource/timer using the TCU in Ingenic JZ SoCs"
	default MACH_INGENIC
	depends on MIPS || COMPILE_TEST
	depends on COMMON_CLK
	select MFD_SYSCON
	select TIMER_OF
	select IRQ_DOMAIN
	help
	  Support for the timer/counter unit of the Ingenic JZ SoCs.

config INGENIC_SYSOST
	bool "Clocksource/timer using the SYSOST in Ingenic X SoCs"
	depends on MIPS || COMPILE_TEST
	depends on COMMON_CLK
	select MFD_SYSCON
	select TIMER_OF
	select IRQ_DOMAIN
	help
	  Support for the SYSOST of the Ingenic X Series SoCs.

config INGENIC_OST
	bool "Clocksource using the OST in Ingenic JZ SoCs"
	depends on MIPS || COMPILE_TEST
	depends on COMMON_CLK
	select MFD_SYSCON
	help
	  Support for the Operating System Timer of the Ingenic JZ SoCs.

config MICROCHIP_PIT64B
	bool "Microchip PIT64B support"
	depends on OF && ARM
	select TIMER_OF
	help
	  This option enables Microchip PIT64B timer for Atmel
	  based system. It supports the oneshot, the periodic
	  modes and high resolution. It is used as a clocksource
	  and a clockevent.

config GOLDFISH_TIMER
	bool "Clocksource using goldfish-rtc"
	depends on M68K || COMPILE_TEST
	depends on RTC_DRV_GOLDFISH
	help
	  Support for the timer/counter of goldfish-rtc

config EP93XX_TIMER
	bool "Cirrus Logic ep93xx timer driver" if COMPILE_TEST
	depends on ARCH_EP93XX
	depends on GENERIC_CLOCKEVENTS
	depends on HAS_IOMEM
	select CLKSRC_MMIO
	select TIMER_OF
	help
	  Enables support for the Cirrus Logic timer block
	  EP93XX.

endmenu
