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