diff --git a/arch/m68k/cpu/m680x0/start.S b/arch/m68k/cpu/m680x0/start.S index 0802ca1fca2..fdfcd66f778 100644 --- a/arch/m68k/cpu/m680x0/start.S +++ b/arch/m68k/cpu/m680x0/start.S @@ -42,6 +42,11 @@ ENTRY(_start) /* Setup initial stack pointer */ move.l #CFG_SYS_INIT_SP_ADDR, %sp + /* Setup the debug uart if enabled */ +#ifdef CONFIG_DEBUG_UART + bsr.l debug_uart_init +#endif + /* * Allocate Global Data (GD) * board_init_f_alloc_reserve(top) returns the new top of stack in %d0 diff --git a/doc/board/emulation/qemu-m68k.rst b/doc/board/emulation/qemu-m68k.rst index 6c4de54cf6a..2f2e6bd6444 100644 --- a/doc/board/emulation/qemu-m68k.rst +++ b/doc/board/emulation/qemu-m68k.rst @@ -31,6 +31,16 @@ The minimal QEMU command line to get U-Boot up and running is: Note that the `-nographic` option is used to redirect the console to stdio, which connects to the emulated Goldfish TTY device. +Debugging U-Boot +---------------- + +If you need early debugging output enable `CONFIG_DEBUG_UART_GOLDFISH`. +The base address for the UART can be found by activating the QEMU monitor, +running `info qtree`, and then looking for the goldfish tty device and +taking the mmio address. + +Baud rate doesn't matter. + Hardware Support ---------------- The following QEMU virt peripherals are supported in U-Boot: diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig index c86c883e0cb..5f8b98f0704 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 4ac2cfb6231..91dc040fcf2 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 + +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