15dd85b4bSPeter Maydell /* 25dd85b4bSPeter Maydell * ARM CMSDK APB timer emulation 35dd85b4bSPeter Maydell * 45dd85b4bSPeter Maydell * Copyright (c) 2017 Linaro Limited 55dd85b4bSPeter Maydell * Written by Peter Maydell 65dd85b4bSPeter Maydell * 75dd85b4bSPeter Maydell * This program is free software; you can redistribute it and/or modify 85dd85b4bSPeter Maydell * it under the terms of the GNU General Public License version 2 or 95dd85b4bSPeter Maydell * (at your option) any later version. 105dd85b4bSPeter Maydell */ 115dd85b4bSPeter Maydell 125dd85b4bSPeter Maydell #ifndef CMSDK_APB_TIMER_H 135dd85b4bSPeter Maydell #define CMSDK_APB_TIMER_H 145dd85b4bSPeter Maydell 155dd85b4bSPeter Maydell #include "hw/sysbus.h" 165dd85b4bSPeter Maydell #include "hw/ptimer.h" 17*7cc378edSPeter Maydell #include "hw/clock.h" 18db1015e9SEduardo Habkost #include "qom/object.h" 195dd85b4bSPeter Maydell 205dd85b4bSPeter Maydell #define TYPE_CMSDK_APB_TIMER "cmsdk-apb-timer" 21b56d351eSPeter Maydell OBJECT_DECLARE_SIMPLE_TYPE(CMSDKAPBTimer, CMSDK_APB_TIMER) 225dd85b4bSPeter Maydell 23*7cc378edSPeter Maydell /* 24*7cc378edSPeter Maydell * QEMU interface: 25*7cc378edSPeter Maydell * + Clock input "pclk": clock for the timer 26*7cc378edSPeter Maydell * + sysbus MMIO region 0: the register bank 27*7cc378edSPeter Maydell * + sysbus IRQ 0: timer interrupt TIMERINT 28*7cc378edSPeter Maydell */ 29b56d351eSPeter Maydell struct CMSDKAPBTimer { 305dd85b4bSPeter Maydell /*< private >*/ 315dd85b4bSPeter Maydell SysBusDevice parent_obj; 325dd85b4bSPeter Maydell 335dd85b4bSPeter Maydell /*< public >*/ 345dd85b4bSPeter Maydell MemoryRegion iomem; 355dd85b4bSPeter Maydell qemu_irq timerint; 365dd85b4bSPeter Maydell struct ptimer_state *timer; 37*7cc378edSPeter Maydell Clock *pclk; 385dd85b4bSPeter Maydell 395dd85b4bSPeter Maydell uint32_t ctrl; 405dd85b4bSPeter Maydell uint32_t value; 415dd85b4bSPeter Maydell uint32_t reload; 425dd85b4bSPeter Maydell uint32_t intstatus; 43db1015e9SEduardo Habkost }; 445dd85b4bSPeter Maydell 455dd85b4bSPeter Maydell #endif 46