xref: /qemu/include/hw/timer/bcm2835_systmr.h (revision ec11dc41eec5142b4776db1296972c6323ba5847)
1d05be883SPhilippe Mathieu-Daudé /*
2d05be883SPhilippe Mathieu-Daudé  * BCM2835 SYS timer emulation
3d05be883SPhilippe Mathieu-Daudé  *
4d05be883SPhilippe Mathieu-Daudé  * Copyright (c) 2019 Philippe Mathieu-Daudé <f4bug@amsat.org>
5d05be883SPhilippe Mathieu-Daudé  *
6d05be883SPhilippe Mathieu-Daudé  * SPDX-License-Identifier: GPL-2.0-or-later
7d05be883SPhilippe Mathieu-Daudé  */
8d05be883SPhilippe Mathieu-Daudé 
9*52581c71SMarkus Armbruster #ifndef BCM2835_SYSTMR_H
10*52581c71SMarkus Armbruster #define BCM2835_SYSTMR_H
11d05be883SPhilippe Mathieu-Daudé 
12d05be883SPhilippe Mathieu-Daudé #include "hw/sysbus.h"
13d05be883SPhilippe Mathieu-Daudé #include "hw/irq.h"
14be95dffaSPhilippe Mathieu-Daudé #include "qemu/timer.h"
15db1015e9SEduardo Habkost #include "qom/object.h"
16d05be883SPhilippe Mathieu-Daudé 
17d05be883SPhilippe Mathieu-Daudé #define TYPE_BCM2835_SYSTIMER "bcm2835-sys-timer"
188063396bSEduardo Habkost OBJECT_DECLARE_SIMPLE_TYPE(BCM2835SystemTimerState, BCM2835_SYSTIMER)
19d05be883SPhilippe Mathieu-Daudé 
20f3f69362SPhilippe Mathieu-Daudé #define BCM2835_SYSTIMER_COUNT 4
21f3f69362SPhilippe Mathieu-Daudé 
22be95dffaSPhilippe Mathieu-Daudé typedef struct {
23be95dffaSPhilippe Mathieu-Daudé     unsigned id;
24be95dffaSPhilippe Mathieu-Daudé     QEMUTimer timer;
25be95dffaSPhilippe Mathieu-Daudé     qemu_irq irq;
26be95dffaSPhilippe Mathieu-Daudé     BCM2835SystemTimerState *state;
27be95dffaSPhilippe Mathieu-Daudé } BCM2835SystemTimerCompare;
28be95dffaSPhilippe Mathieu-Daudé 
29db1015e9SEduardo Habkost struct BCM2835SystemTimerState {
30d05be883SPhilippe Mathieu-Daudé     /*< private >*/
31d05be883SPhilippe Mathieu-Daudé     SysBusDevice parent_obj;
32d05be883SPhilippe Mathieu-Daudé 
33d05be883SPhilippe Mathieu-Daudé     /*< public >*/
34d05be883SPhilippe Mathieu-Daudé     MemoryRegion iomem;
35d05be883SPhilippe Mathieu-Daudé     struct {
36cdb490daSPhilippe Mathieu-Daudé         uint32_t ctrl_status;
37f3f69362SPhilippe Mathieu-Daudé         uint32_t compare[BCM2835_SYSTIMER_COUNT];
38d05be883SPhilippe Mathieu-Daudé     } reg;
39be95dffaSPhilippe Mathieu-Daudé     BCM2835SystemTimerCompare tmr[BCM2835_SYSTIMER_COUNT];
40db1015e9SEduardo Habkost };
41d05be883SPhilippe Mathieu-Daudé 
42d05be883SPhilippe Mathieu-Daudé #endif
43