1 # SPDX-License-Identifier: GPL-2.0-only
2 menu "Clock Source drivers"
3 depends on GENERIC_CLOCKEVENTS
25 config OMAP_DM_SYSTIMER
30 def_bool y if CLKSRC_I8253 || CLKEVT_I8253 || I8253_LOCK
36 bool "BCM2835 timer driver" if COMPILE_TEST
39 Enables the support for the BCM2835 timer driver.
42 bool "BCM mobile timer driver" if COMPILE_TEST
45 Enables the support for the BCM Kona mobile timer driver.
48 bool "Texas Instruments DaVinci timer driver" if COMPILE_TEST
50 Enables the support for the TI DaVinci timer driver.
52 config DIGICOLOR_TIMER
53 bool "Digicolor timer driver" if COMPILE_TEST
57 Enables the support for the digicolor timer driver.
60 bool "OMAP dual-mode timer driver" if ARCH_K3 || COMPILE_TEST
64 Enables the support for the TI dual-mode timer driver.
67 bool "DW APB timer driver" if COMPILE_TEST
69 Enables the support for the dw_apb timer.
71 config DW_APB_TIMER_OF
77 bool "Faraday Technology timer driver" if COMPILE_TEST
83 Enables support for the Faraday Technology timer block
87 bool "Intel XScale IXP4xx timer driver" if COMPILE_TEST
92 Enables support for the Intel XScale IXP4xx SoC timer.
95 bool "Rockchip timer driver" if COMPILE_TEST
96 depends on ARM || ARM64
100 Enables the support for the Rockchip timer driver.
102 config ARMADA_370_XP_TIMER
103 bool "Armada 370 and XP timer driver" if COMPILE_TEST
108 Enables the support for the Armada 370 and XP timer driver.
111 bool "Meson6 timer driver" if COMPILE_TEST
114 Enables the support for the Meson6 timer driver.
117 bool "Orion timer driver" if COMPILE_TEST
122 Enables the support for the Orion timer driver
125 bool "Owl timer driver" if COMPILE_TEST
128 Enables the support for the Actions Semi Owl timer driver.
131 bool "RDA timer driver" if COMPILE_TEST
135 Enables the support for the RDA Micro timer driver.
138 bool "Sun4i timer driver" if COMPILE_TEST
143 Enables support for the Sun4i timer.
146 bool "Sun5i timer driver" if COMPILE_TEST
148 depends on COMMON_CLK
150 Enables support the Sun5i timer.
153 bool "Tegra timer driver" if COMPILE_TEST
156 depends on ARCH_TEGRA || COMPILE_TEST
158 Enables support for the Tegra driver.
160 config TEGRA186_TIMER
161 bool "NVIDIA Tegra186 timer driver"
162 depends on ARCH_TEGRA || COMPILE_TEST
163 depends on WATCHDOG && WATCHDOG_CORE
165 Enables support for the timers and watchdogs found on NVIDIA
166 Tegra186 and later SoCs.
169 bool "VT8500 timer driver" if COMPILE_TEST
172 Enables support for the VT8500 driver.
175 bool "NPCM7xx timer driver" if COMPILE_TEST
180 Enable 24-bit TIMER0 and TIMER1 counters in the NPCM7xx architecture,
181 where TIMER0 serves as clockevent and TIMER1 serves as clocksource.
183 config CADENCE_TTC_TIMER
184 bool "Cadence TTC timer driver" if COMPILE_TEST
185 depends on COMMON_CLK
187 Enables support for the Cadence TTC driver.
190 bool "ASM9260 timer driver" if COMPILE_TEST
194 Enables support for the ASM9260 timer.
196 config CLKSRC_NOMADIK_MTU
197 bool "Nomakdik clocksource driver" if COMPILE_TEST
201 Support for Multi Timer Unit. MTU provides access
202 to multiple interrupt generating programmable
203 32-bit free running decrementing counters.
205 config CLKSRC_DBX500_PRCMU
206 bool "Clocksource PRCMU Timer" if COMPILE_TEST
209 Use the always on PRCMU Timer as clocksource.
211 config CLPS711X_TIMER
212 bool "Cirrus Logic timer driver" if COMPILE_TEST
215 Enables support for the Cirrus Logic PS711 timer.
218 bool "MXS timer driver" if COMPILE_TEST
222 Enables support for the MXS timer.
225 bool "NSpire timer driver" if COMPILE_TEST
228 Enables support for the Nspire timer.
230 config KEYSTONE_TIMER
231 bool "Keystone timer driver" if COMPILE_TEST
232 depends on ARM || ARM64
235 Enables support for the Keystone timer.
237 config INTEGRATOR_AP_TIMER
238 bool "Integrator-AP timer driver" if COMPILE_TEST
241 Enables support for the Integrator-AP timer.
243 config CLKSRC_LPC32XX
244 bool "Clocksource for LPC32XX" if COMPILE_TEST
250 Support for the LPC32XX clocksource.
252 config CLKSRC_PISTACHIO
253 bool "Clocksource for Pistachio SoC"
255 depends on MIPS || COMPILE_TEST
258 Enables the clocksource for the Pistachio SoC.
261 bool "Texas Instruments 32.768 Hz Clocksource" if COMPILE_TEST
262 depends on GENERIC_SCHED_CLOCK
263 select TIMER_OF if OF
265 This option enables support for Texas Instruments 32.768 Hz clocksource
266 available on many OMAP-like platforms.
269 bool "Clocksource for STM32 SoCs" if !ARCH_STM32
270 depends on OF && ARM && (ARCH_STM32 || COMPILE_TEST)
274 config CLKSRC_STM32_LP
275 bool "Low power clocksource for STM32 SoCs"
276 depends on MFD_STM32_LPTIMER || COMPILE_TEST
279 bool "Clocksource for MPS2 SoCs" if COMPILE_TEST
280 depends on GENERIC_SCHED_CLOCK
285 bool "Support for 32-bit TIMERn counters in ARC Cores" if COMPILE_TEST
286 depends on GENERIC_SCHED_CLOCK
289 These are legacy 32-bit TIMER0 and TIMER1 counters found on all ARC cores
290 (ARC700 as well as ARC HS38).
291 TIMER0 serves as clockevent while TIMER1 provides clocksource.
293 config ARC_TIMERS_64BIT
294 bool "Support for 64-bit counters in ARC HS38 cores" if COMPILE_TEST
295 depends on ARC_TIMERS
298 This enables 2 different 64-bit timers: RTC (for UP) and GFRC (for SMP).
299 RTC is implemented inside the core, while GFRC sits outside the core in
300 ARConnect IP block. Driver automatically picks one of them for clocksource
303 config ARM_ARCH_TIMER
305 select TIMER_OF if OF
306 select TIMER_ACPI if ACPI
308 config ARM_ARCH_TIMER_EVTSTREAM
309 bool "Enable ARM architected timer event stream generation by default"
310 default y if ARM_ARCH_TIMER
311 depends on ARM_ARCH_TIMER
313 This option enables support by default for event stream generation
314 based on the ARM architected timer. It is used for waking up CPUs
315 executing the wfe instruction at a frequency represented as a
316 power-of-2 divisor of the clock rate. The behaviour can also be
317 overridden on the command line using the
318 clocksource.arm_arch_timer.evtstream parameter.
319 The main use of the event stream is wfe-based timeouts of userspace
320 locking implementations. It might also be useful for imposing timeout
321 on wfe to safeguard against any programming errors in case an expected
322 event is not generated.
323 This must be disabled for hardware validation purposes to detect any
324 hardware anomalies of missing events.
326 config ARM_ARCH_TIMER_OOL_WORKAROUND
329 config FSL_ERRATUM_A008585
330 bool "Workaround for Freescale/NXP Erratum A-008585"
332 depends on ARM_ARCH_TIMER && ARM64
333 select ARM_ARCH_TIMER_OOL_WORKAROUND
335 This option enables a workaround for Freescale/NXP Erratum
336 A-008585 ("ARM generic timer may contain an erroneous
337 value"). The workaround will only be active if the
338 fsl,erratum-a008585 property is found in the timer node.
340 config HISILICON_ERRATUM_161010101
341 bool "Workaround for Hisilicon Erratum 161010101"
343 select ARM_ARCH_TIMER_OOL_WORKAROUND
344 depends on ARM_ARCH_TIMER && ARM64
346 This option enables a workaround for Hisilicon Erratum
347 161010101. The workaround will be active if the hisilicon,erratum-161010101
348 property is found in the timer node.
350 config ARM64_ERRATUM_858921
351 bool "Workaround for Cortex-A73 erratum 858921"
353 select ARM_ARCH_TIMER_OOL_WORKAROUND
354 depends on ARM_ARCH_TIMER && ARM64
356 This option enables a workaround applicable to Cortex-A73
357 (all versions), whose counter may return incorrect values.
358 The workaround will be dynamically enabled when an affected
361 config SUN50I_ERRATUM_UNKNOWN1
362 bool "Workaround for Allwinner A64 erratum UNKNOWN1"
364 depends on ARM_ARCH_TIMER && ARM64 && ARCH_SUNXI
365 select ARM_ARCH_TIMER_OOL_WORKAROUND
367 This option enables a workaround for instability in the timer on
368 the Allwinner A64 SoC. The workaround will only be active if the
369 allwinner,erratum-unknown1 property is found in the timer node.
371 config ARM_GLOBAL_TIMER
372 bool "Support for the ARM global timer" if COMPILE_TEST
373 select TIMER_OF if OF
376 This option enables support for the ARM global timer unit.
378 config ARM_GT_INITIAL_PRESCALER_VAL
379 int "ARM global timer initial prescaler value"
380 default 2 if ARCH_ZYNQ
382 depends on ARM_GLOBAL_TIMER
384 When the ARM global timer initializes, its current rate is declared
385 to the kernel and maintained forever. Should its parent clock
386 change, the driver tries to fix the timer's internal prescaler.
387 On some machs (i.e. Zynq) the initial prescaler value thus poses
388 bounds about how much the parent clock is allowed to decrease or
389 increase wrt the initial clock value.
390 This affects CPU_FREQ max delta from the initial frequency.
392 config ARM_TIMER_SP804
393 bool "Support for Dual Timer SP804 module" if COMPILE_TEST
394 depends on GENERIC_SCHED_CLOCK && HAVE_CLK
396 select TIMER_OF if OF
398 config CLKSRC_ARM_GLOBAL_TIMER_SCHED_CLOCK
400 depends on ARM_GLOBAL_TIMER
403 Use ARM global timer clock source as sched_clock.
405 config ARMV7M_SYSTICK
406 bool "Support for the ARMv7M system time" if COMPILE_TEST
407 select TIMER_OF if OF
410 This option enables support for the ARMv7M system timer unit.
413 bool "Atmel PIT support" if COMPILE_TEST
415 select TIMER_OF if OF
417 Support for the Periodic Interval Timer found on Atmel SoCs.
420 bool "Atmel ST timer support" if COMPILE_TEST
425 Support for the Atmel ST timer.
427 config ATMEL_TCB_CLKSRC
428 bool "Atmel TC Block timer driver" if COMPILE_TEST
429 depends on ARM && HAS_IOMEM
430 select TIMER_OF if OF
432 Support for Timer Counter Blocks on Atmel SoCs.
434 config CLKSRC_EXYNOS_MCT
435 bool "Exynos multi core timer driver" if COMPILE_TEST
436 depends on ARM || ARM64
437 depends on ARCH_ARTPEC || ARCH_EXYNOS || COMPILE_TEST
439 Support for Multi Core Timer controller on Exynos SoCs.
441 config CLKSRC_SAMSUNG_PWM
442 bool "PWM timer driver for Samsung S3C, S5P" if COMPILE_TEST
444 depends on ARCH_EXYNOS || ARCH_S3C64XX || ARCH_S5PV210 || COMPILE_TEST
446 This is a new clocksource driver for the PWM timer found in
447 Samsung S3C, S5P and Exynos SoCs, replacing an earlier driver
448 for all devicetree enabled platforms. This driver will be
449 needed only on systems that do not have the Exynos MCT available.
452 bool "Freescale FlexTimer Module driver" if COMPILE_TEST
456 Support for Freescale FlexTimer Module (FTM) timer.
462 Support for Periodic Interrupt Timer on Freescale Vybrid Family SoCs.
464 config SYS_SUPPORTS_SH_CMT
468 bool "Mediatek timer driver" if COMPILE_TEST
473 Support for Mediatek timer driver.
475 config MTK_CPUX_TIMER
476 bool "MediaTek CPUX timer driver" if COMPILE_TEST
478 default ARCH_MEDIATEK
482 Support for MediaTek CPUXGPT timer driver.
485 bool "Spreadtrum timer driver" if EXPERT
487 depends on (ARCH_SPRD || COMPILE_TEST)
491 Enables support for the Spreadtrum timer driver.
493 config SYS_SUPPORTS_SH_MTU2
496 config SYS_SUPPORTS_SH_TMU
499 config SYS_SUPPORTS_EM_STI
502 config CLKSRC_JCORE_PIT
503 bool "J-Core PIT timer driver" if COMPILE_TEST
508 This enables build of clocksource and clockevent driver for
509 the integrated PIT in the J-Core synthesizable, open source SoC.
512 bool "Renesas CMT timer driver" if COMPILE_TEST
514 default SYS_SUPPORTS_SH_CMT
516 This enables build of a clocksource and clockevent driver for
517 the Compare Match Timer (CMT) hardware available in 16/32/48-bit
518 variants on a wide range of Mobile and Automotive SoCs from Renesas.
521 bool "Renesas MTU2 timer driver" if COMPILE_TEST
523 default SYS_SUPPORTS_SH_MTU2
525 This enables build of a clockevent driver for the Multi-Function
526 Timer Pulse Unit 2 (MTU2) hardware available on SoCs from Renesas.
527 This hardware comes with 16-bit timer registers.
530 bool "Renesas OSTM timer driver"
531 depends on ARCH_RENESAS || COMPILE_TEST
535 Enables the support for the Renesas OSTM.
538 bool "Renesas TMU timer driver" if COMPILE_TEST
540 default SYS_SUPPORTS_SH_TMU
542 This enables build of a clocksource and clockevent driver for
543 the 32-bit Timer Unit (TMU) hardware available on a wide range
547 bool "Renesas STI timer driver" if COMPILE_TEST
549 default SYS_SUPPORTS_EM_STI
551 This enables build of a clocksource and clockevent driver for
552 the 48-bit System Timer (STI) hardware available on a SoCs
553 such as EMEV2 from former NEC Electronics.
556 bool "Qualcomm MSM timer" if COMPILE_TEST
560 This enables the clocksource and the per CPU clockevent driver for the
563 config CLKSRC_VERSATILE
564 bool "ARM Versatile (Express) reference platforms clock source" if COMPILE_TEST
565 depends on GENERIC_SCHED_CLOCK
567 default y if (ARCH_VEXPRESS || ARCH_VERSATILE) && ARM
569 This option enables clock source based on free running
570 counter available in the "System Registers" block of
571 ARM Versatile and Versatile Express reference platforms.
573 config CLKSRC_MIPS_GIC
576 select CLOCKSOURCE_WATCHDOG
580 bool "Clocksource for PXA or SA-11x0 platform" if COMPILE_TEST
584 This enables OST0 support available on PXA and SA-11x0
587 config CLKSRC_IMX_GPT
588 bool "Clocksource using i.MX GPT" if COMPILE_TEST
589 depends on (ARM || ARM64) && HAVE_CLK
592 config CLKSRC_IMX_TPM
593 bool "Clocksource using i.MX TPM" if COMPILE_TEST
594 depends on (ARM || ARM64) && HAVE_CLK
598 Enable this option to use IMX Timer/PWM Module (TPM) timer as
601 config TIMER_IMX_SYS_CTR
602 bool "i.MX system counter timer" if COMPILE_TEST
605 Enable this option to use i.MX system counter timer as a
608 config CLKSRC_LOONGSON1_PWM
609 bool "Clocksource using Loongson1 PWM"
610 depends on MACH_LOONGSON32 || COMPILE_TEST
611 select MIPS_EXTERNAL_TIMER
614 Enable this option to use Loongson1 PWM timer as clocksource
615 instead of the performance counter.
618 bool "Low power clocksource found in the LPC" if COMPILE_TEST
619 select TIMER_OF if OF
623 Enable this option to use the Low Power controller timer
627 bool "GXP timer driver" if COMPILE_TEST && !ARCH_HPE
629 select TIMER_OF if OF
631 Provides a driver for the timer control found on HPE
632 GXP SOCs. This is required for all GXP SOCs.
635 bool "Timer for the RISC-V platform" if COMPILE_TEST
636 depends on GENERIC_SCHED_CLOCK && RISCV && RISCV_SBI
640 This enables the per-hart timer built into all RISC-V systems, which
641 is accessed via both the SBI and the rdcycle instruction. This is
642 required for all RISC-V systems.
645 bool "CLINT Timer for the RISC-V platform" if COMPILE_TEST
646 depends on GENERIC_SCHED_CLOCK && RISCV
650 This option enables the CLINT timer for RISC-V systems. The CLINT
651 driver is usually used for NoMMU RISC-V systems.
654 bool "SMP Timer for the C-SKY platform" if COMPILE_TEST
658 Say yes here to enable C-SKY SMP timer driver used for C-SKY SMP
660 csky,mptimer is not only used in SMP system, it also could be used in
661 single core system. It's not a mmio reg and it uses mtcr/mfcr instruction.
664 bool "Gx6605s SOC system timer driver" if COMPILE_TEST
669 This option enables support for gx6605s SOC's timer.
671 config MILBEAUT_TIMER
672 bool "Milbeaut timer driver" if COMPILE_TEST
678 Enables the support for Milbeaut timer driver.
681 bool "MSC313E timer driver" if COMPILE_TEST
685 Enables support for the MStar MSC313E timer driver.
686 This provides access to multiple interrupt generating
687 programmable 32-bit free running incrementing counters.
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 INGENIC_SYSOST
701 bool "Clocksource/timer using the SYSOST in Ingenic X SoCs"
702 depends on MIPS || COMPILE_TEST
703 depends on COMMON_CLK
708 Support for the SYSOST of the Ingenic X Series SoCs.
711 bool "Clocksource using the OST in Ingenic JZ SoCs"
712 depends on MIPS || COMPILE_TEST
713 depends on COMMON_CLK
716 Support for the Operating System Timer of the Ingenic JZ SoCs.
718 config MICROCHIP_PIT64B
719 bool "Microchip PIT64B support"
723 This option enables Microchip PIT64B timer for Atmel
724 based system. It supports the oneshot, the periodic
725 modes and high resolution. It is used as a clocksource
728 config GOLDFISH_TIMER
729 bool "Clocksource using goldfish-rtc"
730 depends on M68K || COMPILE_TEST
731 depends on RTC_DRV_GOLDFISH
733 Support for the timer/counter of goldfish-rtc