d18fdd69d0
The stellaris-gptm timer currently uses system_clock_scale for one of its timer modes where the timer runs at the CPU clock rate. Make it use a Clock input instead. We don't try to make the timer handle changes in the clock frequency while the downcounter is running. This is not a change in behaviour from the previous system_clock_scale implementation -- we will pick up the new frequency only when the downcounter hits zero. Handling dynamic clock changes when the counter is running would require state that the current gptm implementation doesn't have. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Damien Hedde <damien.hedde@greensocs.com> Message-id: 20210812093356.1946-25-peter.maydell@linaro.org
52 lines
1.2 KiB
C
52 lines
1.2 KiB
C
/*
|
|
* Luminary Micro Stellaris General Purpose Timer Module
|
|
*
|
|
* Copyright (c) 2006 CodeSourcery.
|
|
* Written by Paul Brook
|
|
*
|
|
* This code is licensed under the GPL.
|
|
*/
|
|
|
|
#ifndef HW_TIMER_STELLARIS_GPTM_H
|
|
#define HW_TIMER_STELLARIS_GPTM_H
|
|
|
|
#include "qom/object.h"
|
|
#include "hw/sysbus.h"
|
|
#include "hw/irq.h"
|
|
#include "hw/clock.h"
|
|
|
|
#define TYPE_STELLARIS_GPTM "stellaris-gptm"
|
|
OBJECT_DECLARE_SIMPLE_TYPE(gptm_state, STELLARIS_GPTM)
|
|
|
|
/*
|
|
* QEMU interface:
|
|
* + sysbus MMIO region 0: register bank
|
|
* + sysbus IRQ 0: timer interrupt
|
|
* + unnamed GPIO output 0: trigger output for the ADC
|
|
* + Clock input "clk": the 32-bit countdown timer runs at this speed
|
|
*/
|
|
struct gptm_state {
|
|
SysBusDevice parent_obj;
|
|
|
|
MemoryRegion iomem;
|
|
uint32_t config;
|
|
uint32_t mode[2];
|
|
uint32_t control;
|
|
uint32_t state;
|
|
uint32_t mask;
|
|
uint32_t load[2];
|
|
uint32_t match[2];
|
|
uint32_t prescale[2];
|
|
uint32_t match_prescale[2];
|
|
uint32_t rtc;
|
|
int64_t tick[2];
|
|
struct gptm_state *opaque[2];
|
|
QEMUTimer *timer[2];
|
|
/* The timers have an alternate output used to trigger the ADC. */
|
|
qemu_irq trigger;
|
|
qemu_irq irq;
|
|
Clock *clk;
|
|
};
|
|
|
|
#endif
|