xref: /qemu/include/hw/timer/bcm2835_systmr.h (revision f3f69362fdd957dbdc6b5bd1120347560752e4b2)
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"
14db1015e9SEduardo Habkost #include "qom/object.h"
15d05be883SPhilippe Mathieu-Daudé 
16d05be883SPhilippe Mathieu-Daudé #define TYPE_BCM2835_SYSTIMER "bcm2835-sys-timer"
178063396bSEduardo Habkost OBJECT_DECLARE_SIMPLE_TYPE(BCM2835SystemTimerState, BCM2835_SYSTIMER)
18d05be883SPhilippe Mathieu-Daudé 
19*f3f69362SPhilippe Mathieu-Daudé #define BCM2835_SYSTIMER_COUNT 4
20*f3f69362SPhilippe Mathieu-Daudé 
21db1015e9SEduardo 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;
31*f3f69362SPhilippe Mathieu-Daudé         uint32_t compare[BCM2835_SYSTIMER_COUNT];
32d05be883SPhilippe Mathieu-Daudé     } reg;
33db1015e9SEduardo Habkost };
34d05be883SPhilippe Mathieu-Daudé 
35d05be883SPhilippe Mathieu-Daudé #endif
36