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