hw/char: add goldfish-tty

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 <laurent@vivier.eu>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Tested-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-Id: <20210312214145.2936082-2-laurent@vivier.eu>
This commit is contained in:
Laurent Vivier 2021-03-12 22:41:41 +01:00
parent e7c6a8cf9f
commit 8c6df16ff6
5 changed files with 335 additions and 0 deletions

View file

@ -0,0 +1,35 @@
/*
* SPDX-License-Identifer: GPL-2.0-or-later
*
* Goldfish TTY
*
* (c) 2020 Laurent Vivier <laurent@vivier.eu>
*
*/
#ifndef HW_CHAR_GOLDFISH_TTY_H
#define HW_CHAR_GOLDFISH_TTY_H
#include "qemu/fifo8.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;
Fifo8 rx_fifo;
};
#endif