From: Lucjan Bryndza <lbryndza.oss@icloud.com>
The current implementation of timers does not work properly
even in basic functionality. A counter configured to report
an interrupt every 10ms reports the first interrupts after a
few seconds. There are also no properly implemented count up an
count down modes. This commit fixes bugs with interrupt
reporting and implements the basic modes of the counter's
time-base block.
Update timer structures
Signed-off-by: Lucjan Bryndza <lbryndza.oss@icloud.com>
---
include/hw/timer/stm32f2xx_timer.h | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/include/hw/timer/stm32f2xx_timer.h b/include/hw/timer/stm32f2xx_timer.h
index 8112878aa7..c83f7b0d6f 100644
--- a/include/hw/timer/stm32f2xx_timer.h
+++ b/include/hw/timer/stm32f2xx_timer.h
@@ -28,6 +28,7 @@
#include "hw/sysbus.h"
#include "qemu/timer.h"
#include "qom/object.h"
+#include "hw/ptimer.h"
#define TIM_CR1 0x00
#define TIM_CR2 0x04
@@ -79,12 +80,10 @@ struct STM32F2XXTimerState {
/* <public> */
MemoryRegion iomem;
- QEMUTimer *timer;
+ ptimer_state *timer;
qemu_irq irq;
-
- int64_t tick_offset;
- uint64_t hit_time;
uint64_t freq_hz;
+ int count_mode;
uint32_t tim_cr1;
uint32_t tim_cr2;
--
2.38.5