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