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