1645194c7SYoshinori Sato /* 2645194c7SYoshinori Sato * Renesas Serial Communication Interface 3645194c7SYoshinori Sato * 4645194c7SYoshinori Sato * Copyright (c) 2018 Yoshinori Sato 5645194c7SYoshinori Sato * 6645194c7SYoshinori Sato * SPDX-License-Identifier: GPL-2.0-or-later 7645194c7SYoshinori Sato */ 8645194c7SYoshinori Sato 9645194c7SYoshinori Sato #ifndef HW_CHAR_RENESAS_SCI_H 10645194c7SYoshinori Sato #define HW_CHAR_RENESAS_SCI_H 11645194c7SYoshinori Sato 12645194c7SYoshinori Sato #include "chardev/char-fe.h" 13645194c7SYoshinori Sato #include "hw/sysbus.h" 14db1015e9SEduardo Habkost #include "qom/object.h" 15645194c7SYoshinori Sato 16645194c7SYoshinori Sato #define TYPE_RENESAS_SCI "renesas-sci" 17db1015e9SEduardo Habkost typedef struct RSCIState RSCIState; 18*8110fa1dSEduardo Habkost DECLARE_INSTANCE_CHECKER(RSCIState, RSCI, 19*8110fa1dSEduardo Habkost TYPE_RENESAS_SCI) 20645194c7SYoshinori Sato 21645194c7SYoshinori Sato enum { 22645194c7SYoshinori Sato ERI = 0, 23645194c7SYoshinori Sato RXI = 1, 24645194c7SYoshinori Sato TXI = 2, 25645194c7SYoshinori Sato TEI = 3, 26645194c7SYoshinori Sato SCI_NR_IRQ = 4 27645194c7SYoshinori Sato }; 28645194c7SYoshinori Sato 29db1015e9SEduardo Habkost struct RSCIState { 30645194c7SYoshinori Sato /*< private >*/ 31645194c7SYoshinori Sato SysBusDevice parent_obj; 32645194c7SYoshinori Sato /*< public >*/ 33645194c7SYoshinori Sato 34645194c7SYoshinori Sato MemoryRegion memory; 35645194c7SYoshinori Sato QEMUTimer timer; 36645194c7SYoshinori Sato CharBackend chr; 37645194c7SYoshinori Sato qemu_irq irq[SCI_NR_IRQ]; 38645194c7SYoshinori Sato 39645194c7SYoshinori Sato uint8_t smr; 40645194c7SYoshinori Sato uint8_t brr; 41645194c7SYoshinori Sato uint8_t scr; 42645194c7SYoshinori Sato uint8_t tdr; 43645194c7SYoshinori Sato uint8_t ssr; 44645194c7SYoshinori Sato uint8_t rdr; 45645194c7SYoshinori Sato uint8_t scmr; 46645194c7SYoshinori Sato uint8_t semr; 47645194c7SYoshinori Sato 48645194c7SYoshinori Sato uint8_t read_ssr; 49645194c7SYoshinori Sato int64_t trtime; 50645194c7SYoshinori Sato int64_t rx_next; 51645194c7SYoshinori Sato uint64_t input_freq; 52db1015e9SEduardo Habkost }; 53645194c7SYoshinori Sato 54645194c7SYoshinori Sato #endif 55