xref: /qemu/include/hw/timer/bcm2835_systmr.h (revision db1015e92e04835c9eb50c29625fe566d1202dbd)
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é 
9d05be883SPhilippe Mathieu-Daudé #ifndef BCM2835_SYSTIMER_H
10d05be883SPhilippe Mathieu-Daudé #define BCM2835_SYSTIMER_H
11d05be883SPhilippe Mathieu-Daudé 
12d05be883SPhilippe Mathieu-Daudé #include "hw/sysbus.h"
13d05be883SPhilippe Mathieu-Daudé #include "hw/irq.h"
14*db1015e9SEduardo Habkost #include "qom/object.h"
15d05be883SPhilippe Mathieu-Daudé 
16d05be883SPhilippe Mathieu-Daudé #define TYPE_BCM2835_SYSTIMER "bcm2835-sys-timer"
17*db1015e9SEduardo Habkost typedef struct BCM2835SystemTimerState BCM2835SystemTimerState;
18d05be883SPhilippe Mathieu-Daudé #define BCM2835_SYSTIMER(obj) \
19d05be883SPhilippe Mathieu-Daudé     OBJECT_CHECK(BCM2835SystemTimerState, (obj), TYPE_BCM2835_SYSTIMER)
20d05be883SPhilippe Mathieu-Daudé 
21*db1015e9SEduardo Habkost struct BCM2835SystemTimerState {
22d05be883SPhilippe Mathieu-Daudé     /*< private >*/
23d05be883SPhilippe Mathieu-Daudé     SysBusDevice parent_obj;
24d05be883SPhilippe Mathieu-Daudé 
25d05be883SPhilippe Mathieu-Daudé     /*< public >*/
26d05be883SPhilippe Mathieu-Daudé     MemoryRegion iomem;
27d05be883SPhilippe Mathieu-Daudé     qemu_irq irq;
28d05be883SPhilippe Mathieu-Daudé 
29d05be883SPhilippe Mathieu-Daudé     struct {
30d05be883SPhilippe Mathieu-Daudé         uint32_t status;
31d05be883SPhilippe Mathieu-Daudé         uint32_t compare[4];
32d05be883SPhilippe Mathieu-Daudé     } reg;
33*db1015e9SEduardo Habkost };
34d05be883SPhilippe Mathieu-Daudé 
35d05be883SPhilippe Mathieu-Daudé #endif
36