diff options
| author | Tom Rini <[email protected]> | 2026-04-14 13:25:32 -0600 |
|---|---|---|
| committer | Tom Rini <[email protected]> | 2026-04-14 13:25:32 -0600 |
| commit | 8f6a5932aaec6f3fbe5fad1b28aa2322374a42f6 (patch) | |
| tree | ef5f6df9d910d6f00a464b08d5bba4a15675a801 | |
| parent | 5a998ab00758a0cc757d39335d515694c60e7062 (diff) | |
| parent | c15a08b730e3399c26622c8cb083bf521039606a (diff) | |
Merge patch series "serial: goldfish: Add debug uart support"
This series from Daniel Palmer <[email protected]> improves debug UART
support on QEMU on M68K by adding debug uart support to the serial
driver.
Link: https://lore.kernel.org/r/[email protected]
| -rw-r--r-- | arch/m68k/cpu/m680x0/start.S | 5 | ||||
| -rw-r--r-- | doc/board/emulation/qemu-m68k.rst | 10 | ||||
| -rw-r--r-- | drivers/serial/Kconfig | 8 | ||||
| -rw-r--r-- | drivers/serial/serial_goldfish.c | 18 |
4 files changed, 41 insertions, 0 deletions
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 <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 |
