Add debug support for the goldfish tty so it can be used for
early debugging. This will be really useful when adding support
for relocation to the m68k qemu virt machine.

Signed-off-by: Daniel Palmer <[email protected]>
---
 drivers/serial/Kconfig           |  8 ++++++++
 drivers/serial/serial_goldfish.c | 18 ++++++++++++++++++
 2 files changed, 26 insertions(+)

diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig
index b84cb9ec781d..f6a696e6c94c 100644
--- a/drivers/serial/Kconfig
+++ b/drivers/serial/Kconfig
@@ -510,6 +510,14 @@ config DEBUG_UART_XTENSA_SEMIHOSTING
          start up driver model. The driver will be available until the real
          driver model serial is running.
 
+config DEBUG_UART_GOLDFISH
+       bool "Goldfish TTY"
+       help
+         Select this to enable the debug UART using the Goldfish TTY driver.
+         This provides basic serial output from the console without needing to
+         start up driver model. The driver will be available until the real
+         driver model serial is running.
+
 endchoice
 
 config DEBUG_UART_BASE
diff --git a/drivers/serial/serial_goldfish.c b/drivers/serial/serial_goldfish.c
index 4ac2cfb62315..91dc040fcf26 100644
--- a/drivers/serial/serial_goldfish.c
+++ b/drivers/serial/serial_goldfish.c
@@ -115,3 +115,21 @@ U_BOOT_DRIVER(serial_goldfish) = {
        .priv_auto = sizeof(struct goldfish_tty_priv),
        .flags  = DM_FLAG_PRE_RELOC,
 };
+
+#ifdef CONFIG_DEBUG_UART_GOLDFISH
+
+#include <debug_uart.h>
+
+static inline void _debug_uart_init(void)
+{
+}
+
+static inline void _debug_uart_putc(int ch)
+{
+       void __iomem *base = (void __iomem *)CONFIG_VAL(DEBUG_UART_BASE);
+
+       __raw_writel(ch, base + GOLDFISH_TTY_PUT_CHAR);
+}
+
+DEBUG_UART_FUNCS
+#endif
-- 
2.51.0

Reply via email to