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" 14*db1015e9SEduardo Habkost #include "qom/object.h" 15645194c7SYoshinori Sato 16645194c7SYoshinori Sato #define TYPE_RENESAS_SCI "renesas-sci" 17*db1015e9SEduardo Habkost typedef struct RSCIState RSCIState; 18645194c7SYoshinori Sato #define RSCI(obj) OBJECT_CHECK(RSCIState, (obj), TYPE_RENESAS_SCI) 19645194c7SYoshinori Sato 20645194c7SYoshinori Sato enum { 21645194c7SYoshinori Sato ERI = 0, 22645194c7SYoshinori Sato RXI = 1, 23645194c7SYoshinori Sato TXI = 2, 24645194c7SYoshinori Sato TEI = 3, 25645194c7SYoshinori Sato SCI_NR_IRQ = 4 26645194c7SYoshinori Sato }; 27645194c7SYoshinori Sato 28*db1015e9SEduardo Habkost struct RSCIState { 29645194c7SYoshinori Sato /*< private >*/ 30645194c7SYoshinori Sato SysBusDevice parent_obj; 31645194c7SYoshinori Sato /*< public >*/ 32645194c7SYoshinori Sato 33645194c7SYoshinori Sato MemoryRegion memory; 34645194c7SYoshinori Sato QEMUTimer timer; 35645194c7SYoshinori Sato CharBackend chr; 36645194c7SYoshinori Sato qemu_irq irq[SCI_NR_IRQ]; 37645194c7SYoshinori Sato 38645194c7SYoshinori Sato uint8_t smr; 39645194c7SYoshinori Sato uint8_t brr; 40645194c7SYoshinori Sato uint8_t scr; 41645194c7SYoshinori Sato uint8_t tdr; 42645194c7SYoshinori Sato uint8_t ssr; 43645194c7SYoshinori Sato uint8_t rdr; 44645194c7SYoshinori Sato uint8_t scmr; 45645194c7SYoshinori Sato uint8_t semr; 46645194c7SYoshinori Sato 47645194c7SYoshinori Sato uint8_t read_ssr; 48645194c7SYoshinori Sato int64_t trtime; 49645194c7SYoshinori Sato int64_t rx_next; 50645194c7SYoshinori Sato uint64_t input_freq; 51*db1015e9SEduardo Habkost }; 52645194c7SYoshinori Sato 53645194c7SYoshinori Sato #endif 54