mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-08-20 08:58:52 +09:00
![Hans de Goede](/assets/img/avatar_default.png)
Currently the serial code assumes that there is always at least one serial port (and panics / crashes due to null pointer dereferences when there is none). This makes it impossible to use u-boot on boards where there is no (debug) serial port, because e.g. all uart pins are muxed to another function. This commit adds a CONFIG_REQUIRE_SERIAL_CONSOLE Kconfig option, which defaults to y (preserving existing behavior), which can be set to n on such boards to make them work. This commit only implements this for CONFIG_DM_SERIAL=y configs, as allowing running without a serial port for CONFIG_DM_SERIAL=n configs is non trivial, and is not necessary at this moment. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Acked-by: Simon Glass <sjg@chromium.org>
142 lines
4.8 KiB
Plaintext
142 lines
4.8 KiB
Plaintext
config REQUIRE_SERIAL_CONSOLE
|
|
bool "Require a serial port for console"
|
|
# Running without a serial console is not supported by the
|
|
# non-dm serial code
|
|
depends on DM_SERIAL
|
|
default y
|
|
help
|
|
Require a serial port for the console, and panic if none is found
|
|
during serial port initialization (default y). Set this to n on
|
|
boards which have no debug serial port whatsoever.
|
|
|
|
config DM_SERIAL
|
|
bool "Enable Driver Model for serial drivers"
|
|
depends on DM
|
|
help
|
|
Enable driver model for serial. This replaces
|
|
drivers/serial/serial.c with the serial uclass, which
|
|
implements serial_putc() etc. The uclass interface is
|
|
defined in include/serial.h.
|
|
|
|
config DEBUG_UART
|
|
bool "Enable an early debug UART for debugging"
|
|
help
|
|
The debug UART is intended for use very early in U-Boot to debug
|
|
problems when an ICE or other debug mechanism is not available.
|
|
|
|
To use it you should:
|
|
- Make sure your UART supports this interface
|
|
- Enable CONFIG_DEBUG_UART
|
|
- Enable the CONFIG for your UART to tell it to provide this interface
|
|
(e.g. CONFIG_DEBUG_UART_NS16550)
|
|
- Define the required settings as needed (see below)
|
|
- Call debug_uart_init() before use
|
|
- Call debug_uart_putc() to output a character
|
|
|
|
Depending on your platform it may be possible to use this UART before
|
|
a stack is available.
|
|
|
|
If your UART does not support this interface you can probably add
|
|
support quite easily. Remember that you cannot use driver model and
|
|
it is preferred to use no stack.
|
|
|
|
You must not use this UART once driver model is working and the
|
|
serial drivers are up and running (done in serial_init()). Otherwise
|
|
the drivers may conflict and you will get strange output.
|
|
|
|
choice
|
|
prompt "Select which UART will provide the debug UART"
|
|
depends on DEBUG_UART
|
|
|
|
config DEBUG_UART_NS16550
|
|
bool "ns16550"
|
|
help
|
|
Select this to enable a debug UART using the ns16550 driver. You
|
|
will need to provide parameters to make this work. The driver will
|
|
be available until the real driver model serial is running.
|
|
|
|
config DEBUG_EFI_CONSOLE
|
|
bool "EFI"
|
|
depends on EFI_APP
|
|
help
|
|
Select this to enable a debug console which calls back to EFI to
|
|
output to the console. This can be useful for early debugging of
|
|
U-Boot when running on top of EFI (Extensive Firmware Interface).
|
|
This is a type of BIOS used by PCs.
|
|
|
|
config DEBUG_UART_S5P
|
|
bool "Samsung S5P"
|
|
help
|
|
Select this to enable a debug UART using the serial_s5p driver. You
|
|
will need to provide parameters to make this work. The driver will
|
|
be available until the real driver-model serial is running.
|
|
|
|
endchoice
|
|
|
|
config DEBUG_UART_BASE
|
|
hex "Base address of UART"
|
|
depends on DEBUG_UART
|
|
help
|
|
This is the base address of your UART for memory-mapped UARTs.
|
|
|
|
A default should be provided by your board, but if not you will need
|
|
to use the correct value here.
|
|
|
|
config DEBUG_UART_CLOCK
|
|
int "UART input clock"
|
|
depends on DEBUG_UART
|
|
help
|
|
The UART input clock determines the speed of the internal UART
|
|
circuitry. The baud rate is derived from this by dividing the input
|
|
clock down.
|
|
|
|
A default should be provided by your board, but if not you will need
|
|
to use the correct value here.
|
|
|
|
config DEBUG_UART_SHIFT
|
|
int "UART register shift"
|
|
depends on DEBUG_UART
|
|
default 0 if DEBUG_UART
|
|
help
|
|
Some UARTs (notably ns16550) support different register layouts
|
|
where the registers are spaced either as bytes, words or some other
|
|
value. Use this value to specify the shift to use, where 0=byte
|
|
registers, 2=32-bit word registers, etc.
|
|
|
|
config SANDBOX_SERIAL
|
|
bool "Sandbox UART support"
|
|
depends on SANDBOX && DM
|
|
help
|
|
Select this to enable a seral UART for sandbox. This is required to
|
|
operate correctly, otherwise you will see no serial output from
|
|
sandbox. The emulated UART will display to the console and console
|
|
input will be fed into the UART. This allows you to interact with
|
|
U-Boot.
|
|
|
|
The operation of the console is controlled by the -t command-line
|
|
flag. In raw mode, U-Boot sees all characters from the terminal
|
|
before they are processed, including Ctrl-C. In cooked mode, Ctrl-C
|
|
is processed by the terminal, and terminates U-Boot. Valid options
|
|
are:
|
|
|
|
-t raw-with-sigs Raw mode, Ctrl-C will terminate U-Boot
|
|
-t raw Raw mode, Ctrl-C is processed by U-Boot
|
|
-t cooked Cooked mode, Ctrl-C terminates
|
|
|
|
config UNIPHIER_SERIAL
|
|
bool "Support for UniPhier on-chip UART"
|
|
depends on ARCH_UNIPHIER && DM_SERIAL
|
|
help
|
|
If you have a UniPhier based board and want to use the on-chip
|
|
serial ports, say Y to this option. If unsure, say N.
|
|
|
|
config X86_SERIAL
|
|
bool "Support for 16550 serial port on x86 machines"
|
|
depends on X86
|
|
default y
|
|
help
|
|
Most x86 machines have a ns16550 UART or compatible. This can be
|
|
enabled in the device tree with the correct input clock frequency
|
|
provided (default 1843200). Enable this to obtain serial console
|
|
output.
|