Merge remote-tracking branch 'remotes/mst/tags/for_upstream' into staging
[qemu.git] / include / hw / char / renesas_sci.h
1 /*
2 * Renesas Serial Communication Interface
3 *
4 * Copyright (c) 2018 Yoshinori Sato
5 *
6 * SPDX-License-Identifier: GPL-2.0-or-later
7 */
8
9 #ifndef HW_CHAR_RENESAS_SCI_H
10 #define HW_CHAR_RENESAS_SCI_H
11
12 #include "chardev/char-fe.h"
13 #include "hw/sysbus.h"
14 #include "qom/object.h"
15
16 #define TYPE_RENESAS_SCI "renesas-sci"
17 typedef struct RSCIState RSCIState;
18 DECLARE_INSTANCE_CHECKER(RSCIState, RSCI,
19 TYPE_RENESAS_SCI)
20
21 enum {
22 ERI = 0,
23 RXI = 1,
24 TXI = 2,
25 TEI = 3,
26 SCI_NR_IRQ = 4
27 };
28
29 struct RSCIState {
30 /*< private >*/
31 SysBusDevice parent_obj;
32 /*< public >*/
33
34 MemoryRegion memory;
35 QEMUTimer timer;
36 CharBackend chr;
37 qemu_irq irq[SCI_NR_IRQ];
38
39 uint8_t smr;
40 uint8_t brr;
41 uint8_t scr;
42 uint8_t tdr;
43 uint8_t ssr;
44 uint8_t rdr;
45 uint8_t scmr;
46 uint8_t semr;
47
48 uint8_t read_ssr;
49 int64_t trtime;
50 int64_t rx_next;
51 uint64_t input_freq;
52 };
53
54 #endif