xref: /qemu/include/hw/timer/cmsdk-apb-timer.h (revision e1f9f73ba15e0356ce1aa3317d7bd294f587ab58)
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