/* * BCM2835 SYS timer emulation * * Copyright (c) 2019 Philippe Mathieu-Daudé * * SPDX-License-Identifier: GPL-2.0-or-later */ #ifndef BCM2835_SYSTMR_H #define BCM2835_SYSTMR_H #include "hw/sysbus.h" #include "hw/irq.h" #include "qemu/timer.h" #include "qom/object.h" #define TYPE_BCM2835_SYSTIMER "bcm2835-sys-timer" OBJECT_DECLARE_SIMPLE_TYPE(BCM2835SystemTimerState, BCM2835_SYSTIMER) #define BCM2835_SYSTIMER_COUNT 4 typedef struct { unsigned id; QEMUTimer timer; qemu_irq irq; BCM2835SystemTimerState *state; } BCM2835SystemTimerCompare; struct BCM2835SystemTimerState { /*< private >*/ SysBusDevice parent_obj; /*< public >*/ MemoryRegion iomem; struct { uint32_t ctrl_status; uint32_t compare[BCM2835_SYSTIMER_COUNT]; } reg; BCM2835SystemTimerCompare tmr[BCM2835_SYSTIMER_COUNT]; }; #endif