On 3/4/21 11:01 PM, Laurent Vivier wrote: > Implement the goldfish tty device as defined in > > https://android.googlesource.com/platform/external/qemu/+/master/docs/GOLDFISH-VIRTUAL-HARDWARE.TXT > > and based on the kernel driver code: > > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/tty/goldfish.c > > Signed-off-by: Laurent Vivier <laur...@vivier.eu> > --- > include/hw/char/goldfish_tty.h | 36 +++++ > hw/char/goldfish_tty.c | 266 +++++++++++++++++++++++++++++++++ > hw/char/Kconfig | 3 + > hw/char/meson.build | 2 + > hw/char/trace-events | 9 ++ > 5 files changed, 316 insertions(+) > create mode 100644 include/hw/char/goldfish_tty.h > create mode 100644 hw/char/goldfish_tty.c > > diff --git a/include/hw/char/goldfish_tty.h b/include/hw/char/goldfish_tty.h > new file mode 100644 > index 000000000000..84d78f8cff54 > --- /dev/null > +++ b/include/hw/char/goldfish_tty.h > @@ -0,0 +1,36 @@ > +/* > + * SPDX-License-Identifer: GPL-2.0-or-later > + * > + * Goldfish TTY > + * > + * (c) 2020 Laurent Vivier <laur...@vivier.eu> > + * > + */ > + > +#ifndef HW_CHAR_GOLDFISH_TTY_H > +#define HW_CHAR_GOLDFISH_TTY_H > + > +#include "chardev/char-fe.h" > + > +#define TYPE_GOLDFISH_TTY "goldfish_tty" > +OBJECT_DECLARE_SIMPLE_TYPE(GoldfishTTYState, GOLDFISH_TTY) > + > +#define GOLFISH_TTY_BUFFER_SIZE 128 > + > +struct GoldfishTTYState { > + SysBusDevice parent_obj; > + > + MemoryRegion iomem; > + qemu_irq irq; > + CharBackend chr; > + > + uint32_t data_len; > + uint64_t data_ptr; > + bool int_enabled; > + > + uint32_t data_in_count; > + uint8_t data_in[GOLFISH_TTY_BUFFER_SIZE]; > + uint8_t data_out[GOLFISH_TTY_BUFFER_SIZE];
Could we use Fifo8 instead? > +};