WSL2-Linux-Kernel/drivers/clocksource
Paul Burton 48016e78d3 clocksource: mips-gic-timer: Register as sched_clock
The MIPS GIC timer is well suited for use as sched_clock, so register it
as such.

Whilst the existing gic_read_count() function matches the prototype
needed by sched_clock_register() already, we split it into 2 functions
in order to remove the need to evaluate the mips_cm_is64 condition
within each call since sched_clock should be as fast as possible.

Note the sched clock framework needs the clock source being stable in
order to rely on it. So we register the MIPS GIC timer as schedule clocks
only if it's, if either the system doesn't have CPU-frequency enabled or
the CPU frequency is changed by means of the CPC core clock divider
available on the platforms with CM3 or newer.

Signed-off-by: Paul Burton <paulburton@kernel.org>
Co-developed-by: Serge Semin <Sergey.Semin@baikalelectronics.ru>
[Sergey.Semin@baikalelectronics.ru: Register sched-clock if CM3 or !CPU-freq]
Signed-off-by: Serge Semin <Sergey.Semin@baikalelectronics.ru>
Cc: Alexey Malahov <Alexey.Malahov@baikalelectronics.ru>
Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: Alessandro Zummo <a.zummo@towertech.it>
Cc: Alexandre Belloni <alexandre.belloni@bootlin.com>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Rob Herring <robh+dt@kernel.org>
Cc: linux-mips@vger.kernel.org
Cc: linux-rtc@vger.kernel.org
Cc: devicetree@vger.kernel.org
Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
Link: https://lore.kernel.org/r/20200521204818.25436-8-Sergey.Semin@baikalelectronics.ru
2020-05-23 00:03:08 +02:00
..
Kconfig clocksource/drivers/rda: drop redundant Kconfig dependency 2020-05-22 23:58:56 +02:00
Makefile clocksource/drivers/timer-ti-dm: Add clockevent and clocksource support 2020-05-23 00:01:04 +02:00
acpi_pm.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 243 2019-06-19 17:09:07 +02:00
arc_timer.c clocksource/drivers/arc_timer: Remove duplicate error message 2020-05-22 23:58:56 +02:00
arm_arch_timer.c Merge branch 'timers/drivers/timer-ti' into timers/drivers/next 2020-05-23 00:01:13 +02:00
arm_global_timer.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
armv7m_systick.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 194 2019-05-30 11:29:22 -07:00
asm9260_timer.c clocksource/drivers/asm9260: Add a check for of_clk_get 2019-11-04 10:40:10 +01:00
bcm2835_timer.c clocksource: Replace setup_irq() by request_irq() 2020-02-27 12:15:24 +01:00
bcm_kona_timer.c clocksource: Replace setup_irq() by request_irq() 2020-02-27 12:15:24 +01:00
clksrc-dbx500-prcmu.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 197 2019-05-30 11:29:22 -07:00
clksrc_st_lpc.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
clps711x-timer.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
dummy_timer.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
dw_apb_timer.c clocksource: dw_apb_timer: Make CPU-affiliation being optional 2020-05-23 00:02:41 +02:00
dw_apb_timer_of.c clocksource: dw_apb_timer_of: Fix missing clockevent timers 2020-05-23 00:02:59 +02:00
em_sti.c clocksource/drivers/em_sti: Fix variable declaration in em_sti_probe 2020-01-16 19:06:57 +01:00
exynos_mct.c clocksource: Replace setup_irq() by request_irq() 2020-02-27 12:15:24 +01:00
h8300_timer8.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
h8300_timer16.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
h8300_tpu.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
hyperv_timer.c timekeeping and timer updates: 2020-03-30 18:51:47 -07:00
i8253.c clockevents/drivers/i8253: Add support for PIT shutdown quirk 2018-11-04 11:04:46 +01:00
ingenic-ost.c clocksource: Add driver for the Ingenic JZ47xx OST 2020-02-27 09:37:29 +01:00
ingenic-timer.c clocksource/drivers/ingenic: Add support for TCU of X1000 2020-02-27 11:22:22 +01:00
jcore-pit.c clocksource/drivers: Rename CLOCKSOURCE_OF_DECLARE to TIMER_OF_DECLARE 2017-06-14 11:58:45 +02:00
mips-gic-timer.c clocksource: mips-gic-timer: Register as sched_clock 2020-05-23 00:03:08 +02:00
mmio.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
mps2-timer.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
mxs_timer.c clocksource: Replace setup_irq() by request_irq() 2020-02-27 12:15:24 +01:00
nomadik-mtu.c clocksource: Replace setup_irq() by request_irq() 2020-02-27 12:15:24 +01:00
numachip.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
renesas-ostm.c clocksource/drivers/renesas-ostm: Use unique device name instead of ostm 2019-11-04 10:38:46 +01:00
samsung_pwm_timer.c clocksource: Replace setup_irq() by request_irq() 2020-02-27 12:15:24 +01:00
scx200_hrt.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
sh_cmt.c remove ioremap_nocache and devm_ioremap_nocache 2020-01-06 09:45:59 +01:00
sh_mtu2.c remove ioremap_nocache and devm_ioremap_nocache 2020-01-06 09:45:59 +01:00
sh_tmu.c remove ioremap_nocache and devm_ioremap_nocache 2020-01-06 09:45:59 +01:00
timer-armada-370-xp.c clocksource/drivers: Unify the names to timer-* format 2018-10-03 14:37:02 +02:00
timer-atcpit100.c clocksource/drivers: Set clockevent device cpumask to cpu_possible_mask 2018-07-26 11:26:30 +02:00
timer-atlas7.c clocksource: Replace setup_irq() by request_irq() 2020-02-27 12:15:24 +01:00
timer-atmel-pit.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
timer-atmel-st.c clocksource/drivers/atmel-st: Remove useless 'status' 2020-04-15 10:57:15 +02:00
timer-atmel-tcb.c clocksource/drivers/tcb_clksrc: Register delay timer 2019-08-27 00:31:39 +02:00
timer-cadence-ttc.c clocksource/drivers/cadence-ttc: Use ttc driver as platform driver 2020-01-16 19:06:57 +01:00
timer-cs5535.c clocksource/drivers/timer-cs5535: Request irq with non-NULL dev_id 2020-03-12 19:23:06 +01:00
timer-davinci.c clocksource: davinci: axe a pointless __GFP_NOFAIL 2020-04-09 12:13:20 +02:00
timer-digicolor.c clocksource/drivers: Rename CLOCKSOURCE_OF_DECLARE to TIMER_OF_DECLARE 2017-06-14 11:58:45 +02:00
timer-efm32.c clocksource: Replace setup_irq() by request_irq() 2020-02-27 12:15:24 +01:00
timer-fsl-ftm.c clocksource: Replace setup_irq() by request_irq() 2020-02-27 12:15:24 +01:00
timer-fttmr010.c clocksource/drivers/fttmr010: Set interrupt and shutdown 2020-02-21 09:28:38 +01:00
timer-gx6605s.c clocksource/drivers/c-sky: Add gx6605s SOC system timer 2018-11-02 19:41:12 +01:00
timer-imx-gpt.c clocksource: Replace setup_irq() by request_irq() 2020-02-27 12:15:24 +01:00
timer-imx-sysctr.c clocksource/drivers/imx-sysctr: Remove unused includes 2020-03-17 10:11:45 +01:00
timer-imx-tpm.c clocksource/drivers/imx-tpm: Add support for ARM64 2020-04-09 16:24:50 +02:00
timer-integrator-ap.c clocksource: Replace setup_irq() by request_irq() 2020-02-27 12:15:24 +01:00
timer-ixp4xx.c clocksource/drivers/ixp4xx: Implement delay timer 2019-06-25 19:49:18 +02:00
timer-keystone.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
timer-lpc32xx.c clocksource/drivers: Unify the names to timer-* format 2018-10-03 14:37:02 +02:00
timer-mediatek.c clocksource/drivers/mediatek: Fix error handling 2019-10-16 17:04:50 +02:00
timer-meson6.c clocksource: Replace setup_irq() by request_irq() 2020-02-27 12:15:24 +01:00
timer-microchip-pit64b.c clocksource/drivers/timer-microchip-pit64b: Fix rate for gck 2020-03-16 11:19:37 +01:00
timer-milbeaut.c clocksource/drivers/timer-milbeaut: Cleanup common register accesses 2019-05-02 21:55:58 +02:00
timer-mp-csky.c clocksource/drivers/c-sky: fixup ftrace call-graph panic 2018-12-31 23:17:23 +08:00
timer-npcm7xx.c clocksource/drivers/npcm: Fix GENMASK and timer operation 2019-08-27 00:31:39 +02:00
timer-nps.c clocksource/drivers: Rename CLOCKSOURCE_OF_DECLARE to TIMER_OF_DECLARE 2017-06-14 11:58:45 +02:00
timer-of.c - Some cleanups for the timer-of, use %p0F and the unique device name 2019-11-04 18:49:13 +01:00
timer-of.h clocksource/drivers/timer-of: Store the device node pointer in 'struct timer_of' 2018-01-08 17:57:24 +01:00
timer-orion.c clocksource: Replace setup_irq() by request_irq() 2020-02-27 12:15:24 +01:00
timer-owl.c clocksource/drivers/owl: Improve owl_timer_init fail messages 2020-02-27 09:42:00 +01:00
timer-oxnas-rps.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 201 2019-05-30 11:29:52 -07:00
timer-pistachio.c clocksource/drivers: Unify the names to timer-* format 2018-10-03 14:37:02 +02:00
timer-prima2.c clocksource: Replace setup_irq() by request_irq() 2020-02-27 12:15:24 +01:00
timer-probe.c Revert "clocksource/drivers/timer-probe: Avoid creating dead devices" 2020-03-28 11:25:44 +01:00
timer-pxa.c clocksource: Replace setup_irq() by request_irq() 2020-02-27 12:15:24 +01:00
timer-qcom.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
timer-rda.c clocksource/drivers/rda: Add clock driver for RDA8810PL SoC 2018-12-18 22:22:23 +01:00
timer-riscv.c clocksource: riscv: add notrace to riscv_sched_clock 2020-01-04 21:48:48 -08:00
timer-rockchip.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
timer-sp.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
timer-sp804.c clocksource: Replace setup_irq() by request_irq() 2020-02-27 12:15:24 +01:00
timer-sprd.c clocksource/drivers/sprd: Register one always-on timer to compensate suspend time 2018-07-26 11:26:34 +02:00
timer-stm32.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 194 2019-05-30 11:29:22 -07:00
timer-sun4i.c clocksource: sun4i: Add missing compatibles 2019-08-27 00:31:39 +02:00
timer-sun5i.c clocksource/drivers/sun5i: Fail gracefully when clock rate is unavailable 2019-02-23 12:13:45 +01:00
timer-tango-xtal.c clocksource/drivers/tango-xtal: Rename the file for consistency 2019-02-23 12:13:45 +01:00
timer-tegra.c clocksource/drivers/tegra: Set up maximum-ticks limit properly 2019-06-25 19:49:18 +02:00
timer-ti-32k.c clocksource/drivers/timer-ti-32k: Add support for initializing directly 2020-05-23 00:01:04 +02:00
timer-ti-dm-systimer.c clocksource/drivers/timer-ti-dm: Fix spelling mistake "detectt" -> "detect" 2020-05-23 00:01:35 +02:00
timer-ti-dm.c clocksource/drivers/timer-ti-dm: Do one override clock parent in prepare() 2020-05-23 00:02:05 +02:00
timer-u300.c clocksource: Replace setup_irq() by request_irq() 2020-02-27 12:15:24 +01:00
timer-versatile.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 174 2019-05-30 11:26:41 -07:00
timer-vf-pit.c clocksource/drivers/timer-vf-pit: Add missing parenthesis 2020-04-05 09:24:58 +02:00
timer-vt8500.c clocksource: Replace setup_irq() by request_irq() 2020-02-27 12:15:24 +01:00
timer-zevio.c clocksource: Replace setup_irq() by request_irq() 2020-02-27 12:15:24 +01:00