2019-01-21 16:15:59 +03:00
|
|
|
/*
|
|
|
|
* Renesas Serial Communication Interface
|
|
|
|
*
|
|
|
|
* Copyright (c) 2018 Yoshinori Sato
|
|
|
|
*
|
|
|
|
* SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef HW_CHAR_RENESAS_SCI_H
|
|
|
|
#define HW_CHAR_RENESAS_SCI_H
|
|
|
|
|
|
|
|
#include "chardev/char-fe.h"
|
|
|
|
#include "hw/sysbus.h"
|
2020-09-03 23:43:22 +03:00
|
|
|
#include "qom/object.h"
|
2019-01-21 16:15:59 +03:00
|
|
|
|
|
|
|
#define TYPE_RENESAS_SCI "renesas-sci"
|
2020-09-03 23:43:22 +03:00
|
|
|
typedef struct RSCIState RSCIState;
|
2020-09-01 00:07:33 +03:00
|
|
|
DECLARE_INSTANCE_CHECKER(RSCIState, RSCI,
|
|
|
|
TYPE_RENESAS_SCI)
|
2019-01-21 16:15:59 +03:00
|
|
|
|
|
|
|
enum {
|
|
|
|
ERI = 0,
|
|
|
|
RXI = 1,
|
|
|
|
TXI = 2,
|
|
|
|
TEI = 3,
|
|
|
|
SCI_NR_IRQ = 4
|
|
|
|
};
|
|
|
|
|
2020-09-03 23:43:22 +03:00
|
|
|
struct RSCIState {
|
2019-01-21 16:15:59 +03:00
|
|
|
/*< private >*/
|
|
|
|
SysBusDevice parent_obj;
|
|
|
|
/*< public >*/
|
|
|
|
|
|
|
|
MemoryRegion memory;
|
|
|
|
QEMUTimer timer;
|
|
|
|
CharBackend chr;
|
|
|
|
qemu_irq irq[SCI_NR_IRQ];
|
|
|
|
|
|
|
|
uint8_t smr;
|
|
|
|
uint8_t brr;
|
|
|
|
uint8_t scr;
|
|
|
|
uint8_t tdr;
|
|
|
|
uint8_t ssr;
|
|
|
|
uint8_t rdr;
|
|
|
|
uint8_t scmr;
|
|
|
|
uint8_t semr;
|
|
|
|
|
|
|
|
uint8_t read_ssr;
|
|
|
|
int64_t trtime;
|
|
|
|
int64_t rx_next;
|
|
|
|
uint64_t input_freq;
|
2020-09-03 23:43:22 +03:00
|
|
|
};
|
2019-01-21 16:15:59 +03:00
|
|
|
|
|
|
|
#endif
|