1 # SPDX-License-Identifier: GPL-2.0-only
2 menu "Clock Source drivers"
3 depends on GENERIC_CLOCKEVENTS
29 def_bool y if CLKSRC_I8253 || CLKEVT_I8253 || I8253_LOCK
35 bool "BCM2835 timer driver" if COMPILE_TEST
38 Enables the support for the BCM2835 timer driver.
41 bool "BCM mobile timer driver" if COMPILE_TEST
44 Enables the support for the BCM Kona mobile timer driver.
47 bool "Texas Instruments DaVinci timer driver" if COMPILE_TEST
49 Enables the support for the TI DaVinci timer driver.
51 config DIGICOLOR_TIMER
52 bool "Digicolor timer driver" if COMPILE_TEST
56 Enables the support for the digicolor timer driver.
59 bool "DW APB timer driver" if COMPILE_TEST
61 Enables the support for the dw_apb timer.
63 config DW_APB_TIMER_OF
69 bool "Faraday Technology timer driver" if COMPILE_TEST
75 Enables support for the Faraday Technology timer block
79 bool "Intel XScale IXP4xx timer driver" if COMPILE_TEST
83 Enables support for the Intel XScale IXP4xx SoC timer.
86 bool "Rockchip timer driver" if COMPILE_TEST
87 depends on ARM || ARM64
91 Enables the support for the Rockchip timer driver.
93 config ARMADA_370_XP_TIMER
94 bool "Armada 370 and XP timer driver" if COMPILE_TEST
99 Enables the support for the Armada 370 and XP timer driver.
102 bool "Meson6 timer driver" if COMPILE_TEST
105 Enables the support for the Meson6 timer driver.
108 bool "Orion timer driver" if COMPILE_TEST
113 Enables the support for the Orion timer driver
116 bool "Owl timer driver" if COMPILE_TEST
119 Enables the support for the Actions Semi Owl timer driver.
122 bool "RDA timer driver" if COMPILE_TEST
123 depends on GENERIC_CLOCKEVENTS
127 Enables the support for the RDA Micro timer driver.
130 bool "Sun4i timer driver" if COMPILE_TEST
135 Enables support for the Sun4i timer.
138 bool "Sun5i timer driver" if COMPILE_TEST
140 depends on COMMON_CLK
142 Enables support the Sun5i timer.
145 bool "Tegra timer driver" if COMPILE_TEST
148 depends on ARCH_TEGRA || COMPILE_TEST
150 Enables support for the Tegra driver.
153 bool "VT8500 timer driver" if COMPILE_TEST
156 Enables support for the VT8500 driver.
159 bool "NPCM7xx timer driver" if COMPILE_TEST
164 Enable 24-bit TIMER0 and TIMER1 counters in the NPCM7xx architecture,
165 where TIMER0 serves as clockevent and TIMER1 serves as clocksource.
167 config CADENCE_TTC_TIMER
168 bool "Cadence TTC timer driver" if COMPILE_TEST
169 depends on COMMON_CLK
171 Enables support for the Cadence TTC driver.
174 bool "ASM9260 timer driver" if COMPILE_TEST
178 Enables support for the ASM9260 timer.
180 config CLKSRC_NOMADIK_MTU
181 bool "Nomakdik clocksource driver" if COMPILE_TEST
185 Support for Multi Timer Unit. MTU provides access
186 to multiple interrupt generating programmable
187 32-bit free running decrementing counters.
189 config CLKSRC_DBX500_PRCMU
190 bool "Clocksource PRCMU Timer" if COMPILE_TEST
193 Use the always on PRCMU Timer as clocksource.
195 config CLPS711X_TIMER
196 bool "Cirrus Logic timer driver" if COMPILE_TEST
199 Enables support for the Cirrus Logic PS711 timer.
202 bool "Atlas7 timer driver" if COMPILE_TEST
205 Enables support for the Atlas7 timer.
208 bool "MXS timer driver" if COMPILE_TEST
212 Enables support for the MXS timer.
215 bool "Prima2 timer driver" if COMPILE_TEST
218 Enables support for the Prima2 timer.
221 bool "U300 timer driver" if COMPILE_TEST
225 Enables support for the U300 timer.
228 bool "NSpire timer driver" if COMPILE_TEST
231 Enables support for the Nspire timer.
233 config KEYSTONE_TIMER
234 bool "Keystone timer driver" if COMPILE_TEST
235 depends on ARM || ARM64
238 Enables support for the Keystone timer.
240 config INTEGRATOR_AP_TIMER
241 bool "Integrator-AP timer driver" if COMPILE_TEST
244 Enables support for the Integrator-AP timer.
247 bool "Clocksource for Energy Micro's EFM32 SoCs" if !ARCH_EFM32
248 depends on OF && ARM && (ARCH_EFM32 || COMPILE_TEST)
252 Support to use the timers of EFM32 SoCs as clock source and clock
255 config CLKSRC_LPC32XX
256 bool "Clocksource for LPC32XX" if COMPILE_TEST
262 Support for the LPC32XX clocksource.
264 config CLKSRC_PISTACHIO
265 bool "Clocksource for Pistachio SoC" if COMPILE_TEST
269 Enables the clocksource for the Pistachio SoC.
272 bool "Texas Instruments 32.768 Hz Clocksource" if COMPILE_TEST
273 depends on GENERIC_SCHED_CLOCK
274 select TIMER_OF if OF
276 This option enables support for Texas Instruments 32.768 Hz clocksource
277 available on many OMAP-like platforms.
280 bool "NPS400 clocksource driver" if COMPILE_TEST
281 depends on !PHYS_ADDR_T_64BIT
283 select TIMER_OF if OF
285 NPS400 clocksource support.
286 It has a 64-bit counter with update rate up to 1000MHz.
287 This counter is accessed via couple of 32-bit memory-mapped registers.
290 bool "Clocksource for STM32 SoCs" if !ARCH_STM32
291 depends on OF && ARM && (ARCH_STM32 || COMPILE_TEST)
296 bool "Clocksource for MPS2 SoCs" if COMPILE_TEST
297 depends on GENERIC_SCHED_CLOCK
302 bool "Support for 32-bit TIMERn counters in ARC Cores" if COMPILE_TEST
303 depends on GENERIC_SCHED_CLOCK
306 These are legacy 32-bit TIMER0 and TIMER1 counters found on all ARC cores
307 (ARC700 as well as ARC HS38).
308 TIMER0 serves as clockevent while TIMER1 provides clocksource.
310 config ARC_TIMERS_64BIT
311 bool "Support for 64-bit counters in ARC HS38 cores" if COMPILE_TEST
312 depends on ARC_TIMERS
315 This enables 2 different 64-bit timers: RTC (for UP) and GFRC (for SMP).
316 RTC is implemented inside the core, while GFRC sits outside the core in
317 ARConnect IP block. Driver automatically picks one of them for clocksource
320 config ARM_ARCH_TIMER
322 select TIMER_OF if OF
323 select TIMER_ACPI if ACPI
325 config ARM_ARCH_TIMER_EVTSTREAM
326 bool "Enable ARM architected timer event stream generation by default"
327 default y if ARM_ARCH_TIMER
328 depends on ARM_ARCH_TIMER
330 This option enables support by default for event stream generation
331 based on the ARM architected timer. It is used for waking up CPUs
332 executing the wfe instruction at a frequency represented as a
333 power-of-2 divisor of the clock rate. The behaviour can also be
334 overridden on the command line using the
335 clocksource.arm_arch_timer.evtstream parameter.
336 The main use of the event stream is wfe-based timeouts of userspace
337 locking implementations. It might also be useful for imposing timeout
338 on wfe to safeguard against any programming errors in case an expected
339 event is not generated.
340 This must be disabled for hardware validation purposes to detect any
341 hardware anomalies of missing events.
343 config ARM_ARCH_TIMER_OOL_WORKAROUND
346 config FSL_ERRATUM_A008585
347 bool "Workaround for Freescale/NXP Erratum A-008585"
349 depends on ARM_ARCH_TIMER && ARM64
350 select ARM_ARCH_TIMER_OOL_WORKAROUND
352 This option enables a workaround for Freescale/NXP Erratum
353 A-008585 ("ARM generic timer may contain an erroneous
354 value"). The workaround will only be active if the
355 fsl,erratum-a008585 property is found in the timer node.
357 config HISILICON_ERRATUM_161010101
358 bool "Workaround for Hisilicon Erratum 161010101"
360 select ARM_ARCH_TIMER_OOL_WORKAROUND
361 depends on ARM_ARCH_TIMER && ARM64
363 This option enables a workaround for Hisilicon Erratum
364 161010101. The workaround will be active if the hisilicon,erratum-161010101
365 property is found in the timer node.
367 config ARM64_ERRATUM_858921
368 bool "Workaround for Cortex-A73 erratum 858921"
370 select ARM_ARCH_TIMER_OOL_WORKAROUND
371 depends on ARM_ARCH_TIMER && ARM64
373 This option enables a workaround applicable to Cortex-A73
374 (all versions), whose counter may return incorrect values.
375 The workaround will be dynamically enabled when an affected
378 config SUN50I_ERRATUM_UNKNOWN1
379 bool "Workaround for Allwinner A64 erratum UNKNOWN1"
381 depends on ARM_ARCH_TIMER && ARM64 && ARCH_SUNXI
382 select ARM_ARCH_TIMER_OOL_WORKAROUND
384 This option enables a workaround for instability in the timer on
385 the Allwinner A64 SoC. The workaround will only be active if the
386 allwinner,erratum-unknown1 property is found in the timer node.
388 config ARM_GLOBAL_TIMER
389 bool "Support for the ARM global timer" if COMPILE_TEST
390 select TIMER_OF if OF
393 This option enables support for the ARM global timer unit.
395 config ARM_TIMER_SP804
396 bool "Support for Dual Timer SP804 module" if COMPILE_TEST
397 depends on GENERIC_SCHED_CLOCK && CLKDEV_LOOKUP
399 select TIMER_OF if OF
401 config CLKSRC_ARM_GLOBAL_TIMER_SCHED_CLOCK
403 depends on ARM_GLOBAL_TIMER
406 Use ARM global timer clock source as sched_clock.
408 config ARMV7M_SYSTICK
409 bool "Support for the ARMv7M system time" if COMPILE_TEST
410 select TIMER_OF if OF
413 This option enables support for the ARMv7M system timer unit.
416 bool "Atmel PIT support" if COMPILE_TEST
418 select TIMER_OF if OF
420 Support for the Periodic Interval Timer found on Atmel SoCs.
423 bool "Atmel ST timer support" if COMPILE_TEST
428 Support for the Atmel ST timer.
430 config ATMEL_TCB_CLKSRC
431 bool "Atmel TC Block timer driver" if COMPILE_TEST
432 depends on ARM && HAS_IOMEM
433 select TIMER_OF if OF
435 Support for Timer Counter Blocks on Atmel SoCs.
437 config CLKSRC_EXYNOS_MCT
438 bool "Exynos multi core timer driver" if COMPILE_TEST
439 depends on ARM || ARM64
441 Support for Multi Core Timer controller on Exynos SoCs.
443 config CLKSRC_SAMSUNG_PWM
444 bool "PWM timer driver for Samsung S3C, S5P" if COMPILE_TEST
447 This is a new clocksource driver for the PWM timer found in
448 Samsung S3C, S5P and Exynos SoCs, replacing an earlier driver
449 for all devicetree enabled platforms. This driver will be
450 needed only on systems that do not have the Exynos MCT available.
453 bool "Freescale FlexTimer Module driver" if COMPILE_TEST
457 Support for Freescale FlexTimer Module (FTM) timer.
463 Support for Periodic Interrupt Timer on Freescale Vybrid Family SoCs.
465 config OXNAS_RPS_TIMER
466 bool "Oxford Semiconductor OXNAS RPS Timers driver" if COMPILE_TEST
470 This enables support for the Oxford Semiconductor OXNAS RPS timers.
472 config SYS_SUPPORTS_SH_CMT
476 bool "Mediatek timer driver" if COMPILE_TEST
481 Support for Mediatek timer driver.
484 bool "Spreadtrum timer driver" if EXPERT
486 depends on (ARCH_SPRD || COMPILE_TEST)
490 Enables support for the Spreadtrum timer driver.
492 config SYS_SUPPORTS_SH_MTU2
495 config SYS_SUPPORTS_SH_TMU
498 config SYS_SUPPORTS_EM_STI
501 config CLKSRC_JCORE_PIT
502 bool "J-Core PIT timer driver" if COMPILE_TEST
507 This enables build of clocksource and clockevent driver for
508 the integrated PIT in the J-Core synthesizable, open source SoC.
511 bool "Renesas CMT timer driver" if COMPILE_TEST
513 default SYS_SUPPORTS_SH_CMT
515 This enables build of a clocksource and clockevent driver for
516 the Compare Match Timer (CMT) hardware available in 16/32/48-bit
517 variants on a wide range of Mobile and Automotive SoCs from Renesas.
520 bool "Renesas MTU2 timer driver" if COMPILE_TEST
522 default SYS_SUPPORTS_SH_MTU2
524 This enables build of a clockevent driver for the Multi-Function
525 Timer Pulse Unit 2 (MTU2) hardware available on SoCs from Renesas.
526 This hardware comes with 16-bit timer registers.
529 bool "Renesas OSTM timer driver" if COMPILE_TEST
533 Enables the support for the Renesas OSTM.
536 bool "Renesas TMU timer driver" if COMPILE_TEST
538 default SYS_SUPPORTS_SH_TMU
540 This enables build of a clocksource and clockevent driver for
541 the 32-bit Timer Unit (TMU) hardware available on a wide range
545 bool "Renesas STI timer driver" if COMPILE_TEST
547 default SYS_SUPPORTS_EM_STI
549 This enables build of a clocksource and clockevent driver for
550 the 48-bit System Timer (STI) hardware available on a SoCs
551 such as EMEV2 from former NEC Electronics.
554 bool "Qualcomm MSM timer" if COMPILE_TEST
558 This enables the clocksource and the per CPU clockevent driver for the
561 config CLKSRC_VERSATILE
562 bool "ARM Versatile (Express) reference platforms clock source" if COMPILE_TEST
563 depends on GENERIC_SCHED_CLOCK && !ARCH_USES_GETTIMEOFFSET
565 default y if MFD_VEXPRESS_SYSREG
567 This option enables clock source based on free running
568 counter available in the "System Registers" block of
569 ARM Versatile, RealView and Versatile Express reference
572 config CLKSRC_MIPS_GIC
577 config CLKSRC_TANGO_XTAL
578 bool "Clocksource for Tango SoC" if COMPILE_TEST
583 This enables the clocksource for Tango SoC.
586 bool "Clocksource for PXA or SA-11x0 platform" if COMPILE_TEST
590 This enables OST0 support available on PXA and SA-11x0
594 bool "Clockevent timer for the H8300 platform" if COMPILE_TEST
597 This enables the 8 bits timer for the H8300 platform.
600 bool "Clockevent timer for the H83069 platform" if COMPILE_TEST
603 This enables the 16 bits timer for the H8300 platform with the
607 bool "Clocksource for the H8300 platform" if COMPILE_TEST
610 This enables the clocksource for the H8300 platform with the
613 config CLKSRC_IMX_GPT
614 bool "Clocksource using i.MX GPT" if COMPILE_TEST
615 depends on (ARM || ARM64) && CLKDEV_LOOKUP
618 config CLKSRC_IMX_TPM
619 bool "Clocksource using i.MX TPM" if COMPILE_TEST
620 depends on ARM && CLKDEV_LOOKUP
623 Enable this option to use IMX Timer/PWM Module (TPM) timer as
626 config TIMER_IMX_SYS_CTR
627 bool "i.MX system counter timer" if COMPILE_TEST
630 Enable this option to use i.MX system counter timer as a
634 bool "Low power clocksource found in the LPC" if COMPILE_TEST
635 select TIMER_OF if OF
639 Enable this option to use the Low Power controller timer
642 config ATCPIT100_TIMER
643 bool "ATCPIT100 timer driver"
644 depends on NDS32 || COMPILE_TEST
649 This option enables support for the Andestech ATCPIT100 timers.
652 bool "Timer for the RISC-V platform"
653 depends on GENERIC_SCHED_CLOCK && RISCV
658 This enables the per-hart timer built into all RISC-V systems, which
659 is accessed via both the SBI and the rdcycle instruction. This is
660 required for all RISC-V systems.
663 bool "SMP Timer for the C-SKY platform" if COMPILE_TEST
667 Say yes here to enable C-SKY SMP timer driver used for C-SKY SMP
669 csky,mptimer is not only used in SMP system, it also could be used in
670 single core system. It's not a mmio reg and it uses mtcr/mfcr instruction.
673 bool "Gx6605s SOC system timer driver" if COMPILE_TEST
678 This option enables support for gx6605s SOC's timer.
680 config MILBEAUT_TIMER
681 bool "Milbeaut timer driver" if COMPILE_TEST
687 Enables the support for Milbeaut timer driver.
690 bool "Clocksource/timer using the TCU in Ingenic JZ SoCs"
692 depends on MIPS || COMPILE_TEST
693 depends on COMMON_CLK
698 Support for the timer/counter unit of the Ingenic JZ SoCs.
700 config MICROCHIP_PIT64B
701 bool "Microchip PIT64B support"
702 depends on OF || COMPILE_TEST
705 This option enables Microchip PIT64B timer for Atmel
706 based system. It supports the oneshot, the periodic
707 modes and high resolution. It is used as a clocksource