123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- /*
- * Arm SSE Subsystem System Timer
- *
- * Copyright (c) 2020 Linaro Limited
- * Written by Peter Maydell
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 or
- * (at your option) any later version.
- */
- /*
- * This is a model of the "System timer" which is documented in
- * the Arm SSE-123 Example Subsystem Technical Reference Manual:
- * https://developer.arm.com/documentation/101370/latest/
- *
- * QEMU interface:
- * + QOM property "counter": link property to be set to the
- * TYPE_SSE_COUNTER timestamp counter device this timer runs off
- * + sysbus MMIO region 0: the register bank
- * + sysbus IRQ 0: timer interrupt
- */
- #ifndef SSE_TIMER_H
- #define SSE_TIMER_H
- #include "hw/sysbus.h"
- #include "qemu/timer.h"
- #include "qom/object.h"
- #include "hw/timer/sse-counter.h"
- #define TYPE_SSE_TIMER "sse-timer"
- OBJECT_DECLARE_SIMPLE_TYPE(SSETimer, SSE_TIMER)
- struct SSETimer {
- /*< private >*/
- SysBusDevice parent_obj;
- /*< public >*/
- MemoryRegion iomem;
- qemu_irq irq;
- SSECounter *counter;
- QEMUTimer timer;
- Notifier counter_notifier;
- uint32_t cntfrq;
- uint32_t cntp_ctl;
- uint64_t cntp_cval;
- uint64_t cntp_aival;
- uint32_t cntp_aival_ctl;
- uint32_t cntp_aival_reload;
- };
- #endif
|