xref: /openbmc/qemu/include/hw/timer/renesas_cmt.h (revision f4ef8c9cc10b3bee829b9775879d4ff9f77c2442)
1c7f37bafSYoshinori Sato /*
2c7f37bafSYoshinori Sato  * Renesas Compare-match timer Object
3c7f37bafSYoshinori Sato  *
4c7f37bafSYoshinori Sato  * Copyright (c) 2019 Yoshinori Sato
5c7f37bafSYoshinori Sato  *
6c7f37bafSYoshinori Sato  * SPDX-License-Identifier: GPL-2.0-or-later
7c7f37bafSYoshinori Sato  */
8c7f37bafSYoshinori Sato 
9c7f37bafSYoshinori Sato #ifndef HW_TIMER_RENESAS_CMT_H
10c7f37bafSYoshinori Sato #define HW_TIMER_RENESAS_CMT_H
11c7f37bafSYoshinori Sato 
12c7f37bafSYoshinori Sato #include "qemu/timer.h"
13c7f37bafSYoshinori Sato #include "hw/sysbus.h"
14db1015e9SEduardo Habkost #include "qom/object.h"
15c7f37bafSYoshinori Sato 
16c7f37bafSYoshinori Sato #define TYPE_RENESAS_CMT "renesas-cmt"
17db1015e9SEduardo Habkost typedef struct RCMTState RCMTState;
18*8110fa1dSEduardo Habkost DECLARE_INSTANCE_CHECKER(RCMTState, RCMT,
19*8110fa1dSEduardo Habkost                          TYPE_RENESAS_CMT)
20c7f37bafSYoshinori Sato 
21c7f37bafSYoshinori Sato enum {
22c7f37bafSYoshinori Sato     CMT_CH = 2,
23c7f37bafSYoshinori Sato     CMT_NR_IRQ = 1 * CMT_CH
24c7f37bafSYoshinori Sato };
25c7f37bafSYoshinori Sato 
26db1015e9SEduardo Habkost struct RCMTState {
27c7f37bafSYoshinori Sato     /*< private >*/
28c7f37bafSYoshinori Sato     SysBusDevice parent_obj;
29c7f37bafSYoshinori Sato     /*< public >*/
30c7f37bafSYoshinori Sato 
31c7f37bafSYoshinori Sato     uint64_t input_freq;
32c7f37bafSYoshinori Sato     MemoryRegion memory;
33c7f37bafSYoshinori Sato 
34c7f37bafSYoshinori Sato     uint16_t cmstr;
35c7f37bafSYoshinori Sato     uint16_t cmcr[CMT_CH];
36c7f37bafSYoshinori Sato     uint16_t cmcnt[CMT_CH];
37c7f37bafSYoshinori Sato     uint16_t cmcor[CMT_CH];
38c7f37bafSYoshinori Sato     int64_t tick[CMT_CH];
39c7f37bafSYoshinori Sato     qemu_irq cmi[CMT_CH];
40c7f37bafSYoshinori Sato     QEMUTimer timer[CMT_CH];
41db1015e9SEduardo Habkost };
42c7f37bafSYoshinori Sato 
43c7f37bafSYoshinori Sato #endif
44