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 55