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 DAVINCI_TIMER 47 bool "Texas Instruments DaVinci timer driver" if COMPILE_TEST 48 help 49 Enables the support for the TI DaVinci timer driver. 50 51config DIGICOLOR_TIMER 52 bool "Digicolor timer driver" if COMPILE_TEST 53 select CLKSRC_MMIO 54 depends on HAS_IOMEM 55 help 56 Enables the support for the digicolor timer driver. 57 58config DW_APB_TIMER 59 bool "DW APB timer driver" if COMPILE_TEST 60 help 61 Enables the support for the dw_apb timer. 62 63config DW_APB_TIMER_OF 64 bool 65 select DW_APB_TIMER 66 select TIMER_OF 67 68config FTTMR010_TIMER 69 bool "Faraday Technology timer driver" if COMPILE_TEST 70 depends on HAS_IOMEM 71 select CLKSRC_MMIO 72 select TIMER_OF 73 select MFD_SYSCON 74 help 75 Enables support for the Faraday Technology timer block 76 FTTMR010. 77 78config IXP4XX_TIMER 79 bool "Intel XScale IXP4xx timer driver" if COMPILE_TEST 80 depends on HAS_IOMEM 81 select CLKSRC_MMIO 82 help 83 Enables support for the Intel XScale IXP4xx SoC timer. 84 85config ROCKCHIP_TIMER 86 bool "Rockchip timer driver" if COMPILE_TEST 87 depends on ARM || ARM64 88 select TIMER_OF 89 select CLKSRC_MMIO 90 help 91 Enables the support for the rockchip timer driver. 92 93config ARMADA_370_XP_TIMER 94 bool "Armada 370 and XP timer driver" if COMPILE_TEST 95 depends on ARM 96 select TIMER_OF 97 select CLKSRC_MMIO 98 help 99 Enables the support for the Armada 370 and XP timer driver. 100 101config MESON6_TIMER 102 bool "Meson6 timer driver" if COMPILE_TEST 103 select CLKSRC_MMIO 104 help 105 Enables the support for the Meson6 timer driver. 106 107config ORION_TIMER 108 bool "Orion timer driver" if COMPILE_TEST 109 depends on ARM 110 select TIMER_OF 111 select CLKSRC_MMIO 112 help 113 Enables the support for the Orion timer driver 114 115config OWL_TIMER 116 bool "Owl timer driver" if COMPILE_TEST 117 select CLKSRC_MMIO 118 help 119 Enables the support for the Actions Semi Owl timer driver. 120 121config RDA_TIMER 122 bool "RDA timer driver" if COMPILE_TEST 123 depends on GENERIC_CLOCKEVENTS 124 select CLKSRC_MMIO 125 select TIMER_OF 126 help 127 Enables the support for the RDA Micro timer driver. 128 129config SUN4I_TIMER 130 bool "Sun4i timer driver" if COMPILE_TEST 131 depends on HAS_IOMEM 132 select CLKSRC_MMIO 133 select TIMER_OF 134 help 135 Enables support for the Sun4i timer. 136 137config SUN5I_HSTIMER 138 bool "Sun5i timer driver" if COMPILE_TEST 139 select CLKSRC_MMIO 140 depends on COMMON_CLK 141 help 142 Enables support the Sun5i timer. 143 144config TEGRA_TIMER 145 bool "Tegra timer driver" if COMPILE_TEST 146 select CLKSRC_MMIO 147 select TIMER_OF 148 depends on ARCH_TEGRA || COMPILE_TEST 149 help 150 Enables support for the Tegra driver. 151 152config VT8500_TIMER 153 bool "VT8500 timer driver" if COMPILE_TEST 154 depends on HAS_IOMEM 155 help 156 Enables support for the VT8500 driver. 157 158config NPCM7XX_TIMER 159 bool "NPCM7xx timer driver" if COMPILE_TEST 160 depends on HAS_IOMEM 161 select TIMER_OF 162 select CLKSRC_MMIO 163 help 164 Enable 24-bit TIMER0 and TIMER1 counters in the NPCM7xx architecture, 165 While TIMER0 serves as clockevent and TIMER1 serves as clocksource. 166 167config CADENCE_TTC_TIMER 168 bool "Cadence TTC timer driver" if COMPILE_TEST 169 depends on COMMON_CLK 170 help 171 Enables support for the cadence ttc driver. 172 173config ASM9260_TIMER 174 bool "ASM9260 timer driver" if COMPILE_TEST 175 select CLKSRC_MMIO 176 select TIMER_OF 177 help 178 Enables support for the ASM9260 timer. 179 180config CLKSRC_NOMADIK_MTU 181 bool "Nomakdik clocksource driver" if COMPILE_TEST 182 depends on ARM 183 select CLKSRC_MMIO 184 help 185 Support for Multi Timer Unit. MTU provides access 186 to multiple interrupt generating programmable 187 32-bit free running decrementing counters. 188 189config CLKSRC_DBX500_PRCMU 190 bool "Clocksource PRCMU Timer" if COMPILE_TEST 191 depends on HAS_IOMEM 192 help 193 Use the always on PRCMU Timer as clocksource 194 195config CLPS711X_TIMER 196 bool "Cirrus logic timer driver" if COMPILE_TEST 197 select CLKSRC_MMIO 198 help 199 Enables support for the Cirrus Logic PS711 timer. 200 201config ATLAS7_TIMER 202 bool "Atlas7 timer driver" if COMPILE_TEST 203 select CLKSRC_MMIO 204 help 205 Enables support for the Atlas7 timer. 206 207config MXS_TIMER 208 bool "Mxs timer driver" if COMPILE_TEST 209 select CLKSRC_MMIO 210 select STMP_DEVICE 211 help 212 Enables support for the Mxs timer. 213 214config PRIMA2_TIMER 215 bool "Prima2 timer driver" if COMPILE_TEST 216 select CLKSRC_MMIO 217 help 218 Enables support for the Prima2 timer. 219 220config U300_TIMER 221 bool "U300 timer driver" if COMPILE_TEST 222 depends on ARM 223 select CLKSRC_MMIO 224 help 225 Enables support for the U300 timer. 226 227config NSPIRE_TIMER 228 bool "NSpire timer driver" if COMPILE_TEST 229 select CLKSRC_MMIO 230 help 231 Enables support for the Nspire timer. 232 233config KEYSTONE_TIMER 234 bool "Keystone timer driver" if COMPILE_TEST 235 depends on ARM || ARM64 236 select CLKSRC_MMIO 237 help 238 Enables support for the Keystone timer. 239 240config INTEGRATOR_AP_TIMER 241 bool "Integrator-ap timer driver" if COMPILE_TEST 242 select CLKSRC_MMIO 243 help 244 Enables support for the Integrator-ap timer. 245 246config CLKSRC_EFM32 247 bool "Clocksource for Energy Micro's EFM32 SoCs" if !ARCH_EFM32 248 depends on OF && ARM && (ARCH_EFM32 || COMPILE_TEST) 249 select CLKSRC_MMIO 250 default ARCH_EFM32 251 help 252 Support to use the timers of EFM32 SoCs as clock source and clock 253 event device. 254 255config CLKSRC_LPC32XX 256 bool "Clocksource for LPC32XX" if COMPILE_TEST 257 depends on HAS_IOMEM 258 depends on ARM 259 select CLKSRC_MMIO 260 select TIMER_OF 261 help 262 Support for the LPC32XX clocksource. 263 264config CLKSRC_PISTACHIO 265 bool "Clocksource for Pistachio SoC" if COMPILE_TEST 266 depends on HAS_IOMEM 267 select TIMER_OF 268 help 269 Enables the clocksource for the Pistachio SoC. 270 271config CLKSRC_TI_32K 272 bool "Texas Instruments 32.768 Hz Clocksource" if COMPILE_TEST 273 depends on GENERIC_SCHED_CLOCK 274 select TIMER_OF if OF 275 help 276 This option enables support for Texas Instruments 32.768 Hz clocksource 277 available on many OMAP-like platforms. 278 279config CLKSRC_NPS 280 bool "NPS400 clocksource driver" if COMPILE_TEST 281 depends on !PHYS_ADDR_T_64BIT 282 select CLKSRC_MMIO 283 select TIMER_OF if OF 284 help 285 NPS400 clocksource support. 286 Got 64 bit counter with update rate up to 1000MHz. 287 This counter is accessed via couple of 32 bit memory mapped registers. 288 289config CLKSRC_STM32 290 bool "Clocksource for STM32 SoCs" if !ARCH_STM32 291 depends on OF && ARM && (ARCH_STM32 || COMPILE_TEST) 292 select CLKSRC_MMIO 293 select TIMER_OF 294 295config CLKSRC_MPS2 296 bool "Clocksource for MPS2 SoCs" if COMPILE_TEST 297 depends on GENERIC_SCHED_CLOCK 298 select CLKSRC_MMIO 299 select TIMER_OF 300 301config ARC_TIMERS 302 bool "Support for 32-bit TIMERn counters in ARC Cores" if COMPILE_TEST 303 depends on GENERIC_SCHED_CLOCK 304 select TIMER_OF 305 help 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 309 310config ARC_TIMERS_64BIT 311 bool "Support for 64-bit counters in ARC HS38 cores" if COMPILE_TEST 312 depends on ARC_TIMERS 313 select TIMER_OF 314 help 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 318 as appropriate. 319 320config ARM_ARCH_TIMER 321 bool 322 select TIMER_OF if OF 323 select TIMER_ACPI if ACPI 324 325config 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 329 help 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. 342 343config ARM_ARCH_TIMER_OOL_WORKAROUND 344 bool 345 346config FSL_ERRATUM_A008585 347 bool "Workaround for Freescale/NXP Erratum A-008585" 348 default y 349 depends on ARM_ARCH_TIMER && ARM64 350 select ARM_ARCH_TIMER_OOL_WORKAROUND 351 help 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. 356 357config HISILICON_ERRATUM_161010101 358 bool "Workaround for Hisilicon Erratum 161010101" 359 default y 360 select ARM_ARCH_TIMER_OOL_WORKAROUND 361 depends on ARM_ARCH_TIMER && ARM64 362 help 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. 366 367config ARM64_ERRATUM_858921 368 bool "Workaround for Cortex-A73 erratum 858921" 369 default y 370 select ARM_ARCH_TIMER_OOL_WORKAROUND 371 depends on ARM_ARCH_TIMER && ARM64 372 help 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 376 core is detected. 377 378config SUN50I_ERRATUM_UNKNOWN1 379 bool "Workaround for Allwinner A64 erratum UNKNOWN1" 380 default y 381 depends on ARM_ARCH_TIMER && ARM64 && ARCH_SUNXI 382 select ARM_ARCH_TIMER_OOL_WORKAROUND 383 help 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. 387 388config ARM_GLOBAL_TIMER 389 bool "Support for the ARM global timer" if COMPILE_TEST 390 select TIMER_OF if OF 391 depends on ARM 392 help 393 This options enables support for the ARM global timer unit 394 395config ARM_TIMER_SP804 396 bool "Support for Dual Timer SP804 module" if COMPILE_TEST 397 depends on GENERIC_SCHED_CLOCK && CLKDEV_LOOKUP 398 select CLKSRC_MMIO 399 select TIMER_OF if OF 400 401config CLKSRC_ARM_GLOBAL_TIMER_SCHED_CLOCK 402 bool 403 depends on ARM_GLOBAL_TIMER 404 default y 405 help 406 Use ARM global timer clock source as sched_clock 407 408config ARMV7M_SYSTICK 409 bool "Support for the ARMv7M system time" if COMPILE_TEST 410 select TIMER_OF if OF 411 select CLKSRC_MMIO 412 help 413 This options enables support for the ARMv7M system timer unit 414 415config ATMEL_PIT 416 bool "Atmel PIT support" if COMPILE_TEST 417 depends on HAS_IOMEM 418 select TIMER_OF if OF 419 help 420 Support for the Periodic Interval Timer found on Atmel SoCs. 421 422config ATMEL_ST 423 bool "Atmel ST timer support" if COMPILE_TEST 424 depends on HAS_IOMEM 425 select TIMER_OF 426 select MFD_SYSCON 427 help 428 Support for the Atmel ST timer. 429 430config 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 434 help 435 Support for Timer Counter Blocks on Atmel SoCs. 436 437config CLKSRC_EXYNOS_MCT 438 bool "Exynos multi core timer driver" if COMPILE_TEST 439 depends on ARM || ARM64 440 help 441 Support for Multi Core Timer controller on Exynos SoCs. 442 443config CLKSRC_SAMSUNG_PWM 444 bool "PWM timer driver for Samsung S3C, S5P" if COMPILE_TEST 445 depends on HAS_IOMEM 446 help 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. 451 452config FSL_FTM_TIMER 453 bool "Freescale FlexTimer Module driver" if COMPILE_TEST 454 depends on HAS_IOMEM 455 select CLKSRC_MMIO 456 help 457 Support for Freescale FlexTimer Module (FTM) timer. 458 459config VF_PIT_TIMER 460 bool 461 select CLKSRC_MMIO 462 help 463 Support for Period Interrupt Timer on Freescale Vybrid Family SoCs. 464 465config OXNAS_RPS_TIMER 466 bool "Oxford Semiconductor OXNAS RPS Timers driver" if COMPILE_TEST 467 select TIMER_OF 468 select CLKSRC_MMIO 469 help 470 This enables support for the Oxford Semiconductor OXNAS RPS timers. 471 472config SYS_SUPPORTS_SH_CMT 473 bool 474 475config MTK_TIMER 476 bool "Mediatek timer driver" if COMPILE_TEST 477 depends on HAS_IOMEM 478 select TIMER_OF 479 select CLKSRC_MMIO 480 help 481 Support for Mediatek timer driver. 482 483config SPRD_TIMER 484 bool "Spreadtrum timer driver" if EXPERT 485 depends on HAS_IOMEM 486 depends on (ARCH_SPRD || COMPILE_TEST) 487 default ARCH_SPRD 488 select TIMER_OF 489 help 490 Enables support for the Spreadtrum timer driver. 491 492config SYS_SUPPORTS_SH_MTU2 493 bool 494 495config SYS_SUPPORTS_SH_TMU 496 bool 497 498config SYS_SUPPORTS_EM_STI 499 bool 500 501config CLKSRC_JCORE_PIT 502 bool "J-Core PIT timer driver" if COMPILE_TEST 503 depends on OF 504 depends on HAS_IOMEM 505 select CLKSRC_MMIO 506 help 507 This enables build of clocksource and clockevent driver for 508 the integrated PIT in the J-Core synthesizable, open source SoC. 509 510config SH_TIMER_CMT 511 bool "Renesas CMT timer driver" if COMPILE_TEST 512 depends on HAS_IOMEM 513 default SYS_SUPPORTS_SH_CMT 514 help 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. 518 519config SH_TIMER_MTU2 520 bool "Renesas MTU2 timer driver" if COMPILE_TEST 521 depends on HAS_IOMEM 522 default SYS_SUPPORTS_SH_MTU2 523 help 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. 527 528config RENESAS_OSTM 529 bool "Renesas OSTM timer driver" if COMPILE_TEST 530 select CLKSRC_MMIO 531 select TIMER_OF 532 help 533 Enables the support for the Renesas OSTM. 534 535config SH_TIMER_TMU 536 bool "Renesas TMU timer driver" if COMPILE_TEST 537 depends on HAS_IOMEM 538 default SYS_SUPPORTS_SH_TMU 539 help 540 This enables build of a clocksource and clockevent driver for 541 the 32-bit Timer Unit (TMU) hardware available on a wide range 542 SoCs from Renesas. 543 544config EM_TIMER_STI 545 bool "Renesas STI timer driver" if COMPILE_TEST 546 depends on HAS_IOMEM 547 default SYS_SUPPORTS_EM_STI 548 help 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. 552 553config CLKSRC_QCOM 554 bool "Qualcomm MSM timer" if COMPILE_TEST 555 depends on ARM 556 select TIMER_OF 557 help 558 This enables the clocksource and the per CPU clockevent driver for the 559 Qualcomm SoCs. 560 561config CLKSRC_VERSATILE 562 bool "ARM Versatile (Express) reference platforms clock source" if COMPILE_TEST 563 depends on GENERIC_SCHED_CLOCK && !ARCH_USES_GETTIMEOFFSET 564 select TIMER_OF 565 default y if MFD_VEXPRESS_SYSREG 566 help 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 570 platforms. 571 572config CLKSRC_MIPS_GIC 573 bool 574 depends on MIPS_GIC 575 select TIMER_OF 576 577config CLKSRC_TANGO_XTAL 578 bool "Clocksource for Tango SoC" if COMPILE_TEST 579 depends on ARM 580 select TIMER_OF 581 select CLKSRC_MMIO 582 help 583 This enables the clocksource for Tango SoC 584 585config CLKSRC_PXA 586 bool "Clocksource for PXA or SA-11x0 platform" if COMPILE_TEST 587 depends on HAS_IOMEM 588 select CLKSRC_MMIO 589 help 590 This enables OST0 support available on PXA and SA-11x0 591 platforms. 592 593config H8300_TMR8 594 bool "Clockevent timer for the H8300 platform" if COMPILE_TEST 595 depends on HAS_IOMEM 596 help 597 This enables the 8 bits timer for the H8300 platform. 598 599config H8300_TMR16 600 bool "Clockevent timer for the H83069 platform" if COMPILE_TEST 601 depends on HAS_IOMEM 602 help 603 This enables the 16 bits timer for the H8300 platform with the 604 H83069 cpu. 605 606config H8300_TPU 607 bool "Clocksource for the H8300 platform" if COMPILE_TEST 608 depends on HAS_IOMEM 609 help 610 This enables the clocksource for the H8300 platform with the 611 H8S2678 cpu. 612 613config CLKSRC_IMX_GPT 614 bool "Clocksource using i.MX GPT" if COMPILE_TEST 615 depends on (ARM || ARM64) && CLKDEV_LOOKUP 616 select CLKSRC_MMIO 617 618config CLKSRC_IMX_TPM 619 bool "Clocksource using i.MX TPM" if COMPILE_TEST 620 depends on ARM && CLKDEV_LOOKUP 621 select CLKSRC_MMIO 622 help 623 Enable this option to use IMX Timer/PWM Module (TPM) timer as 624 clocksource. 625 626config TIMER_IMX_SYS_CTR 627 bool "i.MX system counter timer" if COMPILE_TEST 628 select TIMER_OF 629 help 630 Enable this option to use i.MX system counter timer as a 631 clockevent. 632 633config CLKSRC_ST_LPC 634 bool "Low power clocksource found in the LPC" if COMPILE_TEST 635 select TIMER_OF if OF 636 depends on HAS_IOMEM 637 select CLKSRC_MMIO 638 help 639 Enable this option to use the Low Power controller timer 640 as clocksource. 641 642config ATCPIT100_TIMER 643 bool "ATCPIT100 timer driver" 644 depends on NDS32 || COMPILE_TEST 645 depends on HAS_IOMEM 646 select TIMER_OF 647 default NDS32 648 help 649 This option enables support for the Andestech ATCPIT100 timers. 650 651config RISCV_TIMER 652 bool "Timer for the RISC-V platform" 653 depends on GENERIC_SCHED_CLOCK && RISCV 654 default y 655 select TIMER_PROBE 656 select TIMER_OF 657 help 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. 661 662config CSKY_MP_TIMER 663 bool "SMP Timer for the C-SKY platform" if COMPILE_TEST 664 depends on CSKY 665 select TIMER_OF 666 help 667 Say yes here to enable C-SKY SMP timer driver used for C-SKY SMP 668 system. 669 csky,mptimer is not only used in SMP system, it also could be used 670 single core system. It's not a mmio reg and it use mtcr/mfcr instruction. 671 672config GX6605S_TIMER 673 bool "Gx6605s SOC system timer driver" if COMPILE_TEST 674 depends on CSKY 675 select CLKSRC_MMIO 676 select TIMER_OF 677 help 678 This option enables support for gx6605s SOC's timer. 679 680config MILBEAUT_TIMER 681 bool "Milbeaut timer driver" if COMPILE_TEST 682 depends on OF 683 depends on ARM 684 select TIMER_OF 685 select CLKSRC_MMIO 686 help 687 Enables the support for Milbeaut timer driver. 688 689config INGENIC_TIMER 690 bool "Clocksource/timer using the TCU in Ingenic JZ SoCs" 691 default MACH_INGENIC 692 depends on MIPS || COMPILE_TEST 693 depends on COMMON_CLK 694 select MFD_SYSCON 695 select TIMER_OF 696 select IRQ_DOMAIN 697 help 698 Support for the timer/counter unit of the Ingenic JZ SoCs. 699 700endmenu 701