qemu-patch-raspberry4/hw/timer
Peter Maydell 5c6e1a1cf9 hw/timer/armv7m_systick: Add input clocks
The v7M systick timer can be programmed to run from either of
two clocks:
 * an "external reference clock" (when SYST_CSR.CLKSOURCE == 0)
 * the main CPU clock (when SYST_CSR.CLKSOURCE == 1)

Our implementation currently hardwires the external reference clock
to be 1MHz, and allows boards to set the main CPU clock frequency via
the global 'system_clock_scale'.  (Most boards set that to a constant
value; the Stellaris boards allow the guest to reprogram it via the
board-specific RCC registers).

As the first step in converting this to use the Clock infrastructure,
add input clocks to the systick device for the reference clock and
the CPU clock.  The device implementation ignores them; once we have
made all the users of the device correctly wire up the new Clocks we
will switch the implementation to use them and ignore the old
system_clock_scale.

This is a migration compat break for all M-profile boards, because of
the addition of the new clock objects to the vmstate struct.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Reviewed-by: Luc Michel <luc@lmichel.fr>
Message-id: 20210812093356.1946-6-peter.maydell@linaro.org
2021-09-01 11:08:19 +01:00
..
a9gtimer.c qdev: set properties with device_class_set_props() 2020-01-24 20:59:15 +01:00
allwinner-a10-pit.c allwinner-a10-pit: Use ptimer_free() in the finalize function to avoid memleaks 2021-01-08 15:13:38 +00:00
altera_timer.c Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
arm_mptimer.c qdev: set properties with device_class_set_props() 2020-01-24 20:59:15 +01:00
arm_timer.c arm: Update infocenter.arm.com URLs 2021-02-11 11:50:14 +00:00
armv7m_systick.c hw/timer/armv7m_systick: Add input clocks 2021-09-01 11:08:19 +01:00
aspeed_timer.c qdev: set properties with device_class_set_props() 2020-01-24 20:59:15 +01:00
avr_timer16.c hw/timer: avr: Add limited support for 16-bit timer peripheral 2020-07-11 11:02:05 +02:00
bcm2835_systmr.c hw/timer/bcm2835: Support the timer COMPARE registers 2020-10-20 16:12:00 +01:00
cadence_ttc.c Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
cmsdk-apb-dualtimer.c clock: Add ClockEvent parameter to callbacks 2021-03-08 17:20:01 +00:00
cmsdk-apb-timer.c clock: Add ClockEvent parameter to callbacks 2021-03-08 17:20:01 +00:00
digic-timer.c digic-timer: Use ptimer_free() in the finalize function to avoid memleaks 2021-01-08 15:13:38 +00:00
etraxfs_timer.c hw/timer/etraxfs_timer: Convert to 3-phase reset (Resettable interface) 2021-05-13 18:04:50 +02:00
exynos4210_mct.c exynos4210_mct: Use ptimer_free() in the finalize function to avoid memleaks 2021-01-08 15:13:39 +00:00
exynos4210_pwm.c exynos4210_pwm: Use ptimer_free() in the finalize function to avoid memleaks 2021-01-08 15:13:38 +00:00
grlib_gptimer.c Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
hpet.c nomaintainer: Fix Lesser GPL version number 2020-11-15 17:04:40 +01:00
i8254.c hw/i8254: fix vmstate load 2021-03-16 14:30:30 -04:00
i8254_common.c hw/i386: Remove obsolete LoadStateHandler::load_state_old handlers 2019-11-05 23:33:12 +01:00
ibex_timer.c hw/timer: Initial commit of Ibex Timer 2021-06-24 05:00:12 -07:00
imx_epit.c hw/timer/imx_epit: Avoid assertion when CR.SWR is written 2020-08-03 17:56:11 +01:00
imx_gpt.c hw/timer/imx_gpt.c: Switch to transaction-based ptimer API 2019-10-15 18:09:03 +01:00
Kconfig target-arm queue: 2021-03-10 13:57:31 +00:00
meson.build hw/timer: Initial commit of Ibex Timer 2021-06-24 05:00:12 -07:00
mips_gictimer.c hw: Do not include hw/sysbus.h if it is not necessary 2021-05-02 17:24:50 +02:00
mss-timer.c mss-timer: Use ptimer_free() in the finalize function to avoid memleaks 2021-01-08 15:13:38 +00:00
npcm7xx_timer.c hw/timer/npcm7xx_timer: Use new clock_ns_to_ticks() 2021-03-08 17:20:01 +00:00
nrf51_timer.c hw/timer/nrf51_timer: Add trace event of counter value update 2020-05-11 11:05:52 +01:00
omap_gptimer.c Include hw/hw.h exactly where needed 2019-08-16 13:31:52 +02:00
omap_synctimer.c Include hw/hw.h exactly where needed 2019-08-16 13:31:52 +02:00
pxa2xx_timer.c Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
renesas_cmt.c hw/timer: RX62N compare match timer (CMT) 2020-06-22 18:37:12 +02:00
renesas_tmr.c hw/timer/renesas_tmr: Add default-case asserts in read_tcnt() 2021-03-30 14:05:34 +01:00
sh_timer.c hw/timer/sh_timer: Remove superfluous "break" statements 2020-10-27 00:22:56 +01:00
slavio_timer.c hw/timer/slavio_timer: Allow 64-bit accesses 2021-01-06 11:41:37 +00:00
sse-counter.c hw: Do not include hw/irq.h if it is not necessary 2021-05-02 17:24:50 +02:00
sse-timer.c hw/timer/sse-timer: Propagate eventual error in sse_timer_realize() 2021-03-12 12:43:52 +00:00
stm32f2xx_timer.c hw/timer/stm32f2xx_timer: Remove dead assignment 2020-05-04 14:43:24 +02:00
trace-events docs: fix references to docs/devel/tracing.rst 2021-06-02 06:51:09 +02:00
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00
xilinx_timer.c Use DECLARE_*CHECKER* macros 2020-09-09 09:27:09 -04:00