xref: /openbmc/qemu/include/hw/char/goldfish_tty.h (revision 7a5951f6)
18c6df16fSLaurent Vivier /*
265b4c8c7SPhilippe Mathieu-Daudé  * SPDX-License-Identifier: GPL-2.0-or-later
38c6df16fSLaurent Vivier  *
48c6df16fSLaurent Vivier  * Goldfish TTY
58c6df16fSLaurent Vivier  *
68c6df16fSLaurent Vivier  * (c) 2020 Laurent Vivier <laurent@vivier.eu>
78c6df16fSLaurent Vivier  *
88c6df16fSLaurent Vivier  */
98c6df16fSLaurent Vivier 
108c6df16fSLaurent Vivier #ifndef HW_CHAR_GOLDFISH_TTY_H
118c6df16fSLaurent Vivier #define HW_CHAR_GOLDFISH_TTY_H
128c6df16fSLaurent Vivier 
138c6df16fSLaurent Vivier #include "qemu/fifo8.h"
148c6df16fSLaurent Vivier #include "chardev/char-fe.h"
15*7a5951f6SMarkus Armbruster #include "hw/sysbus.h"
168c6df16fSLaurent Vivier 
178c6df16fSLaurent Vivier #define TYPE_GOLDFISH_TTY "goldfish_tty"
188c6df16fSLaurent Vivier OBJECT_DECLARE_SIMPLE_TYPE(GoldfishTTYState, GOLDFISH_TTY)
198c6df16fSLaurent Vivier 
208c6df16fSLaurent Vivier #define GOLFISH_TTY_BUFFER_SIZE 128
218c6df16fSLaurent Vivier 
228c6df16fSLaurent Vivier struct GoldfishTTYState {
238c6df16fSLaurent Vivier     SysBusDevice parent_obj;
248c6df16fSLaurent Vivier 
258c6df16fSLaurent Vivier     MemoryRegion iomem;
268c6df16fSLaurent Vivier     qemu_irq irq;
278c6df16fSLaurent Vivier     CharBackend chr;
288c6df16fSLaurent Vivier 
298c6df16fSLaurent Vivier     uint32_t data_len;
308c6df16fSLaurent Vivier     uint64_t data_ptr;
318c6df16fSLaurent Vivier     bool int_enabled;
328c6df16fSLaurent Vivier 
338c6df16fSLaurent Vivier     Fifo8 rx_fifo;
348c6df16fSLaurent Vivier };
358c6df16fSLaurent Vivier 
368c6df16fSLaurent Vivier #endif
37