1# SPDX-License-Identifier: GPL-2.0-only 2menu "Clock Source drivers" 3 depends on GENERIC_CLOCKEVENTS 4 5config TIMER_OF 6 bool 7 select TIMER_PROBE 8 9config TIMER_ACPI 10 bool 11 select TIMER_PROBE 12 13config TIMER_PROBE 14 bool 15 16config CLKSRC_I8253 17 bool 18 19config CLKEVT_I8253 20 bool 21 22config I8253_LOCK 23 bool 24 25config OMAP_DM_TIMER 26 bool 27 28config CLKBLD_I8253 29 def_bool y if CLKSRC_I8253 || CLKEVT_I8253 || I8253_LOCK 30 31config CLKSRC_MMIO 32 bool 33 34config BCM2835_TIMER 35 bool "BCM2835 timer driver" if COMPILE_TEST 36 select CLKSRC_MMIO 37 help 38 Enables the support for the BCM2835 timer driver. 39 40config BCM_KONA_TIMER 41 bool "BCM mobile timer driver" if COMPILE_TEST 42 select CLKSRC_MMIO 43 help 44 Enables the support for the BCM Kona mobile timer driver. 45 46config DIGICOLOR_TIMER 47 bool "Digicolor timer driver" if COMPILE_TEST 48 select CLKSRC_MMIO 49 depends on HAS_IOMEM 50 help 51 Enables the support for the digicolor timer driver. 52 53config DW_APB_TIMER 54 bool "DW APB timer driver" if COMPILE_TEST 55 help 56 Enables the support for the dw_apb timer. 57 58config DW_APB_TIMER_OF 59 bool 60 select DW_APB_TIMER 61 select TIMER_OF 62 63config FTTMR010_TIMER 64 bool "Faraday Technology timer driver" if COMPILE_TEST 65 depends on HAS_IOMEM 66 select CLKSRC_MMIO 67 select TIMER_OF 68 select MFD_SYSCON 69 help 70 Enables support for the Faraday Technology timer block 71 FTTMR010. 72 73config IXP4XX_TIMER 74 bool "Intel XScale IXP4xx timer driver" if COMPILE_TEST 75 depends on HAS_IOMEM 76 select CLKSRC_MMIO 77 help 78 Enables support for the Intel XScale IXP4xx SoC timer. 79 80config ROCKCHIP_TIMER 81 bool "Rockchip timer driver" if COMPILE_TEST 82 depends on ARM || ARM64 83 select TIMER_OF 84 select CLKSRC_MMIO 85 help 86 Enables the support for the rockchip timer driver. 87 88config ARMADA_370_XP_TIMER 89 bool "Armada 370 and XP timer driver" if COMPILE_TEST 90 depends on ARM 91 select TIMER_OF 92 select CLKSRC_MMIO 93 help 94 Enables the support for the Armada 370 and XP timer driver. 95 96config MESON6_TIMER 97 bool "Meson6 timer driver" if COMPILE_TEST 98 select CLKSRC_MMIO 99 help 100 Enables the support for the Meson6 timer driver. 101 102config ORION_TIMER 103 bool "Orion timer driver" if COMPILE_TEST 104 depends on ARM 105 select TIMER_OF 106 select CLKSRC_MMIO 107 help 108 Enables the support for the Orion timer driver 109 110config OWL_TIMER 111 bool "Owl timer driver" if COMPILE_TEST 112 select CLKSRC_MMIO 113 help 114 Enables the support for the Actions Semi Owl timer driver. 115 116config RDA_TIMER 117 bool "RDA timer driver" if COMPILE_TEST 118 depends on GENERIC_CLOCKEVENTS 119 select CLKSRC_MMIO 120 select TIMER_OF 121 help 122 Enables the support for the RDA Micro timer driver. 123 124config SUN4I_TIMER 125 bool "Sun4i timer driver" if COMPILE_TEST 126 depends on HAS_IOMEM 127 select CLKSRC_MMIO 128 select TIMER_OF 129 help 130 Enables support for the Sun4i timer. 131 132config SUN5I_HSTIMER 133 bool "Sun5i timer driver" if COMPILE_TEST 134 select CLKSRC_MMIO 135 depends on COMMON_CLK 136 help 137 Enables support the Sun5i timer. 138 139config TEGRA_TIMER 140 bool "Tegra timer driver" if COMPILE_TEST 141 select CLKSRC_MMIO 142 select TIMER_OF 143 depends on ARM || ARM64 144 help 145 Enables support for the Tegra driver. 146 147config VT8500_TIMER 148 bool "VT8500 timer driver" if COMPILE_TEST 149 depends on HAS_IOMEM 150 help 151 Enables support for the VT8500 driver. 152 153config NPCM7XX_TIMER 154 bool "NPCM7xx timer driver" if COMPILE_TEST 155 depends on HAS_IOMEM 156 select TIMER_OF 157 select CLKSRC_MMIO 158 help 159 Enable 24-bit TIMER0 and TIMER1 counters in the NPCM7xx architecture, 160 While TIMER0 serves as clockevent and TIMER1 serves as clocksource. 161 162config CADENCE_TTC_TIMER 163 bool "Cadence TTC timer driver" if COMPILE_TEST 164 depends on COMMON_CLK 165 help 166 Enables support for the cadence ttc driver. 167 168config ASM9260_TIMER 169 bool "ASM9260 timer driver" if COMPILE_TEST 170 select CLKSRC_MMIO 171 select TIMER_OF 172 help 173 Enables support for the ASM9260 timer. 174 175config CLKSRC_NOMADIK_MTU 176 bool "Nomakdik clocksource driver" if COMPILE_TEST 177 depends on ARM 178 select CLKSRC_MMIO 179 help 180 Support for Multi Timer Unit. MTU provides access 181 to multiple interrupt generating programmable 182 32-bit free running decrementing counters. 183 184config CLKSRC_DBX500_PRCMU 185 bool "Clocksource PRCMU Timer" if COMPILE_TEST 186 depends on HAS_IOMEM 187 help 188 Use the always on PRCMU Timer as clocksource 189 190config CLPS711X_TIMER 191 bool "Cirrus logic timer driver" if COMPILE_TEST 192 select CLKSRC_MMIO 193 help 194 Enables support for the Cirrus Logic PS711 timer. 195 196config ATLAS7_TIMER 197 bool "Atlas7 timer driver" if COMPILE_TEST 198 select CLKSRC_MMIO 199 help 200 Enables support for the Atlas7 timer. 201 202config MXS_TIMER 203 bool "Mxs timer driver" if COMPILE_TEST 204 select CLKSRC_MMIO 205 select STMP_DEVICE 206 help 207 Enables support for the Mxs timer. 208 209config PRIMA2_TIMER 210 bool "Prima2 timer driver" if COMPILE_TEST 211 select CLKSRC_MMIO 212 help 213 Enables support for the Prima2 timer. 214 215config U300_TIMER 216 bool "U300 timer driver" if COMPILE_TEST 217 depends on ARM 218 select CLKSRC_MMIO 219 help 220 Enables support for the U300 timer. 221 222config NSPIRE_TIMER 223 bool "NSpire timer driver" if COMPILE_TEST 224 select CLKSRC_MMIO 225 help 226 Enables support for the Nspire timer. 227 228config KEYSTONE_TIMER 229 bool "Keystone timer driver" if COMPILE_TEST 230 depends on ARM || ARM64 231 select CLKSRC_MMIO 232 help 233 Enables support for the Keystone timer. 234 235config INTEGRATOR_AP_TIMER 236 bool "Integrator-ap timer driver" if COMPILE_TEST 237 select CLKSRC_MMIO 238 help 239 Enables support for the Integrator-ap timer. 240 241config CLKSRC_EFM32 242 bool "Clocksource for Energy Micro's EFM32 SoCs" if !ARCH_EFM32 243 depends on OF && ARM && (ARCH_EFM32 || COMPILE_TEST) 244 select CLKSRC_MMIO 245 default ARCH_EFM32 246 help 247 Support to use the timers of EFM32 SoCs as clock source and clock 248 event device. 249 250config CLKSRC_LPC32XX 251 bool "Clocksource for LPC32XX" if COMPILE_TEST 252 depends on HAS_IOMEM 253 depends on ARM 254 select CLKSRC_MMIO 255 select TIMER_OF 256 help 257 Support for the LPC32XX clocksource. 258 259config CLKSRC_PISTACHIO 260 bool "Clocksource for Pistachio SoC" if COMPILE_TEST 261 depends on HAS_IOMEM 262 select TIMER_OF 263 help 264 Enables the clocksource for the Pistachio SoC. 265 266config CLKSRC_TI_32K 267 bool "Texas Instruments 32.768 Hz Clocksource" if COMPILE_TEST 268 depends on GENERIC_SCHED_CLOCK 269 select TIMER_OF if OF 270 help 271 This option enables support for Texas Instruments 32.768 Hz clocksource 272 available on many OMAP-like platforms. 273 274config CLKSRC_NPS 275 bool "NPS400 clocksource driver" if COMPILE_TEST 276 depends on !PHYS_ADDR_T_64BIT 277 select CLKSRC_MMIO 278 select TIMER_OF if OF 279 help 280 NPS400 clocksource support. 281 Got 64 bit counter with update rate up to 1000MHz. 282 This counter is accessed via couple of 32 bit memory mapped registers. 283 284config CLKSRC_STM32 285 bool "Clocksource for STM32 SoCs" if !ARCH_STM32 286 depends on OF && ARM && (ARCH_STM32 || COMPILE_TEST) 287 select CLKSRC_MMIO 288 select TIMER_OF 289 290config CLKSRC_MPS2 291 bool "Clocksource for MPS2 SoCs" if COMPILE_TEST 292 depends on GENERIC_SCHED_CLOCK 293 select CLKSRC_MMIO 294 select TIMER_OF 295 296config ARC_TIMERS 297 bool "Support for 32-bit TIMERn counters in ARC Cores" if COMPILE_TEST 298 depends on GENERIC_SCHED_CLOCK 299 select TIMER_OF 300 help 301 These are legacy 32-bit TIMER0 and TIMER1 counters found on all ARC cores 302 (ARC700 as well as ARC HS38). 303 TIMER0 serves as clockevent while TIMER1 provides clocksource 304 305config ARC_TIMERS_64BIT 306 bool "Support for 64-bit counters in ARC HS38 cores" if COMPILE_TEST 307 depends on ARC_TIMERS 308 select TIMER_OF 309 help 310 This enables 2 different 64-bit timers: RTC (for UP) and GFRC (for SMP) 311 RTC is implemented inside the core, while GFRC sits outside the core in 312 ARConnect IP block. Driver automatically picks one of them for clocksource 313 as appropriate. 314 315config ARM_ARCH_TIMER 316 bool 317 select TIMER_OF if OF 318 select TIMER_ACPI if ACPI 319 320config ARM_ARCH_TIMER_EVTSTREAM 321 bool "Enable ARM architected timer event stream generation by default" 322 default y if ARM_ARCH_TIMER 323 depends on ARM_ARCH_TIMER 324 help 325 This option enables support by default for event stream generation 326 based on the ARM architected timer. It is used for waking up CPUs 327 executing the wfe instruction at a frequency represented as a 328 power-of-2 divisor of the clock rate. The behaviour can also be 329 overridden on the command line using the 330 clocksource.arm_arch_timer.evtstream parameter. 331 The main use of the event stream is wfe-based timeouts of userspace 332 locking implementations. It might also be useful for imposing timeout 333 on wfe to safeguard against any programming errors in case an expected 334 event is not generated. 335 This must be disabled for hardware validation purposes to detect any 336 hardware anomalies of missing events. 337 338config ARM_ARCH_TIMER_OOL_WORKAROUND 339 bool 340 341config FSL_ERRATUM_A008585 342 bool "Workaround for Freescale/NXP Erratum A-008585" 343 default y 344 depends on ARM_ARCH_TIMER && ARM64 345 select ARM_ARCH_TIMER_OOL_WORKAROUND 346 help 347 This option enables a workaround for Freescale/NXP Erratum 348 A-008585 ("ARM generic timer may contain an erroneous 349 value"). The workaround will only be active if the 350 fsl,erratum-a008585 property is found in the timer node. 351 352config HISILICON_ERRATUM_161010101 353 bool "Workaround for Hisilicon Erratum 161010101" 354 default y 355 select ARM_ARCH_TIMER_OOL_WORKAROUND 356 depends on ARM_ARCH_TIMER && ARM64 357 help 358 This option enables a workaround for Hisilicon Erratum 359 161010101. The workaround will be active if the hisilicon,erratum-161010101 360 property is found in the timer node. 361 362config ARM64_ERRATUM_858921 363 bool "Workaround for Cortex-A73 erratum 858921" 364 default y 365 select ARM_ARCH_TIMER_OOL_WORKAROUND 366 depends on ARM_ARCH_TIMER && ARM64 367 help 368 This option enables a workaround applicable to Cortex-A73 369 (all versions), whose counter may return incorrect values. 370 The workaround will be dynamically enabled when an affected 371 core is detected. 372 373config SUN50I_ERRATUM_UNKNOWN1 374 bool "Workaround for Allwinner A64 erratum UNKNOWN1" 375 default y 376 depends on ARM_ARCH_TIMER && ARM64 && ARCH_SUNXI 377 select ARM_ARCH_TIMER_OOL_WORKAROUND 378 help 379 This option enables a workaround for instability in the timer on 380 the Allwinner A64 SoC. The workaround will only be active if the 381 allwinner,erratum-unknown1 property is found in the timer node. 382 383config ARM_GLOBAL_TIMER 384 bool "Support for the ARM global timer" if COMPILE_TEST 385 select TIMER_OF if OF 386 depends on ARM 387 help 388 This options enables support for the ARM global timer unit 389 390config ARM_TIMER_SP804 391 bool "Support for Dual Timer SP804 module" if COMPILE_TEST 392 depends on GENERIC_SCHED_CLOCK && CLKDEV_LOOKUP 393 select CLKSRC_MMIO 394 select TIMER_OF if OF 395 396config CLKSRC_ARM_GLOBAL_TIMER_SCHED_CLOCK 397 bool 398 depends on ARM_GLOBAL_TIMER 399 default y 400 help 401 Use ARM global timer clock source as sched_clock 402 403config ARMV7M_SYSTICK 404 bool "Support for the ARMv7M system time" if COMPILE_TEST 405 select TIMER_OF if OF 406 select CLKSRC_MMIO 407 help 408 This options enables support for the ARMv7M system timer unit 409 410config ATMEL_PIT 411 bool "Atmel PIT support" if COMPILE_TEST 412 depends on HAS_IOMEM 413 select TIMER_OF if OF 414 help 415 Support for the Periodic Interval Timer found on Atmel SoCs. 416 417config ATMEL_ST 418 bool "Atmel ST timer support" if COMPILE_TEST 419 depends on HAS_IOMEM 420 select TIMER_OF 421 select MFD_SYSCON 422 help 423 Support for the Atmel ST timer. 424 425config ATMEL_TCB_CLKSRC 426 bool "Atmel TC Block timer driver" if COMPILE_TEST 427 depends on HAS_IOMEM 428 select TIMER_OF if OF 429 help 430 Support for Timer Counter Blocks on Atmel SoCs. 431 432config CLKSRC_EXYNOS_MCT 433 bool "Exynos multi core timer driver" if COMPILE_TEST 434 depends on ARM || ARM64 435 help 436 Support for Multi Core Timer controller on Exynos SoCs. 437 438config CLKSRC_SAMSUNG_PWM 439 bool "PWM timer driver for Samsung S3C, S5P" if COMPILE_TEST 440 depends on HAS_IOMEM 441 help 442 This is a new clocksource driver for the PWM timer found in 443 Samsung S3C, S5P and Exynos SoCs, replacing an earlier driver 444 for all devicetree enabled platforms. This driver will be 445 needed only on systems that do not have the Exynos MCT available. 446 447config FSL_FTM_TIMER 448 bool "Freescale FlexTimer Module driver" if COMPILE_TEST 449 depends on HAS_IOMEM 450 select CLKSRC_MMIO 451 help 452 Support for Freescale FlexTimer Module (FTM) timer. 453 454config VF_PIT_TIMER 455 bool 456 select CLKSRC_MMIO 457 help 458 Support for Period Interrupt Timer on Freescale Vybrid Family SoCs. 459 460config OXNAS_RPS_TIMER 461 bool "Oxford Semiconductor OXNAS RPS Timers driver" if COMPILE_TEST 462 select TIMER_OF 463 select CLKSRC_MMIO 464 help 465 This enables support for the Oxford Semiconductor OXNAS RPS timers. 466 467config SYS_SUPPORTS_SH_CMT 468 bool 469 470config MTK_TIMER 471 bool "Mediatek timer driver" if COMPILE_TEST 472 depends on HAS_IOMEM 473 select TIMER_OF 474 select CLKSRC_MMIO 475 help 476 Support for Mediatek timer driver. 477 478config SPRD_TIMER 479 bool "Spreadtrum timer driver" if EXPERT 480 depends on HAS_IOMEM 481 depends on (ARCH_SPRD || COMPILE_TEST) 482 default ARCH_SPRD 483 select TIMER_OF 484 help 485 Enables support for the Spreadtrum timer driver. 486 487config SYS_SUPPORTS_SH_MTU2 488 bool 489 490config SYS_SUPPORTS_SH_TMU 491 bool 492 493config SYS_SUPPORTS_EM_STI 494 bool 495 496config CLKSRC_JCORE_PIT 497 bool "J-Core PIT timer driver" if COMPILE_TEST 498 depends on OF 499 depends on HAS_IOMEM 500 select CLKSRC_MMIO 501 help 502 This enables build of clocksource and clockevent driver for 503 the integrated PIT in the J-Core synthesizable, open source SoC. 504 505config SH_TIMER_CMT 506 bool "Renesas CMT timer driver" if COMPILE_TEST 507 depends on HAS_IOMEM 508 default SYS_SUPPORTS_SH_CMT 509 help 510 This enables build of a clocksource and clockevent driver for 511 the Compare Match Timer (CMT) hardware available in 16/32/48-bit 512 variants on a wide range of Mobile and Automotive SoCs from Renesas. 513 514config SH_TIMER_MTU2 515 bool "Renesas MTU2 timer driver" if COMPILE_TEST 516 depends on HAS_IOMEM 517 default SYS_SUPPORTS_SH_MTU2 518 help 519 This enables build of a clockevent driver for the Multi-Function 520 Timer Pulse Unit 2 (MTU2) hardware available on SoCs from Renesas. 521 This hardware comes with 16 bit-timer registers. 522 523config RENESAS_OSTM 524 bool "Renesas OSTM timer driver" if COMPILE_TEST 525 select CLKSRC_MMIO 526 help 527 Enables the support for the Renesas OSTM. 528 529config SH_TIMER_TMU 530 bool "Renesas TMU timer driver" if COMPILE_TEST 531 depends on HAS_IOMEM 532 default SYS_SUPPORTS_SH_TMU 533 help 534 This enables build of a clocksource and clockevent driver for 535 the 32-bit Timer Unit (TMU) hardware available on a wide range 536 SoCs from Renesas. 537 538config EM_TIMER_STI 539 bool "Renesas STI timer driver" if COMPILE_TEST 540 depends on HAS_IOMEM 541 default SYS_SUPPORTS_EM_STI 542 help 543 This enables build of a clocksource and clockevent driver for 544 the 48-bit System Timer (STI) hardware available on a SoCs 545 such as EMEV2 from former NEC Electronics. 546 547config CLKSRC_QCOM 548 bool "Qualcomm MSM timer" if COMPILE_TEST 549 depends on ARM 550 select TIMER_OF 551 help 552 This enables the clocksource and the per CPU clockevent driver for the 553 Qualcomm SoCs. 554 555config CLKSRC_VERSATILE 556 bool "ARM Versatile (Express) reference platforms clock source" if COMPILE_TEST 557 depends on GENERIC_SCHED_CLOCK && !ARCH_USES_GETTIMEOFFSET 558 select TIMER_OF 559 default y if MFD_VEXPRESS_SYSREG 560 help 561 This option enables clock source based on free running 562 counter available in the "System Registers" block of 563 ARM Versatile, RealView and Versatile Express reference 564 platforms. 565 566config CLKSRC_MIPS_GIC 567 bool 568 depends on MIPS_GIC 569 select TIMER_OF 570 571config CLKSRC_TANGO_XTAL 572 bool "Clocksource for Tango SoC" if COMPILE_TEST 573 depends on ARM 574 select TIMER_OF 575 select CLKSRC_MMIO 576 help 577 This enables the clocksource for Tango SoC 578 579config CLKSRC_PXA 580 bool "Clocksource for PXA or SA-11x0 platform" if COMPILE_TEST 581 depends on HAS_IOMEM 582 select CLKSRC_MMIO 583 help 584 This enables OST0 support available on PXA and SA-11x0 585 platforms. 586 587config H8300_TMR8 588 bool "Clockevent timer for the H8300 platform" if COMPILE_TEST 589 depends on HAS_IOMEM 590 help 591 This enables the 8 bits timer for the H8300 platform. 592 593config H8300_TMR16 594 bool "Clockevent timer for the H83069 platform" if COMPILE_TEST 595 depends on HAS_IOMEM 596 help 597 This enables the 16 bits timer for the H8300 platform with the 598 H83069 cpu. 599 600config H8300_TPU 601 bool "Clocksource for the H8300 platform" if COMPILE_TEST 602 depends on HAS_IOMEM 603 help 604 This enables the clocksource for the H8300 platform with the 605 H8S2678 cpu. 606 607config CLKSRC_IMX_GPT 608 bool "Clocksource using i.MX GPT" if COMPILE_TEST 609 depends on (ARM || ARM64) && CLKDEV_LOOKUP 610 select CLKSRC_MMIO 611 612config CLKSRC_IMX_TPM 613 bool "Clocksource using i.MX TPM" if COMPILE_TEST 614 depends on ARM && CLKDEV_LOOKUP 615 select CLKSRC_MMIO 616 help 617 Enable this option to use IMX Timer/PWM Module (TPM) timer as 618 clocksource. 619 620config CLKSRC_ST_LPC 621 bool "Low power clocksource found in the LPC" if COMPILE_TEST 622 select TIMER_OF if OF 623 depends on HAS_IOMEM 624 select CLKSRC_MMIO 625 help 626 Enable this option to use the Low Power controller timer 627 as clocksource. 628 629config ATCPIT100_TIMER 630 bool "ATCPIT100 timer driver" 631 depends on NDS32 || COMPILE_TEST 632 depends on HAS_IOMEM 633 select TIMER_OF 634 default NDS32 635 help 636 This option enables support for the Andestech ATCPIT100 timers. 637 638config RISCV_TIMER 639 bool "Timer for the RISC-V platform" 640 depends on GENERIC_SCHED_CLOCK && RISCV 641 default y 642 select TIMER_PROBE 643 select TIMER_OF 644 help 645 This enables the per-hart timer built into all RISC-V systems, which 646 is accessed via both the SBI and the rdcycle instruction. This is 647 required for all RISC-V systems. 648 649config CSKY_MP_TIMER 650 bool "SMP Timer for the C-SKY platform" if COMPILE_TEST 651 depends on CSKY 652 select TIMER_OF 653 help 654 Say yes here to enable C-SKY SMP timer driver used for C-SKY SMP 655 system. 656 csky,mptimer is not only used in SMP system, it also could be used 657 single core system. It's not a mmio reg and it use mtcr/mfcr instruction. 658 659config GX6605S_TIMER 660 bool "Gx6605s SOC system timer driver" if COMPILE_TEST 661 depends on CSKY 662 select CLKSRC_MMIO 663 select TIMER_OF 664 help 665 This option enables support for gx6605s SOC's timer. 666 667config MILBEAUT_TIMER 668 bool "Milbeaut timer driver" if COMPILE_TEST 669 depends on OF 670 depends on ARM 671 select TIMER_OF 672 select CLKSRC_MMIO 673 help 674 Enables the support for Milbeaut timer driver. 675 676endmenu 677