serial: Allow serial to be absent in TPL

At present this option applies to SPL, but it should be available in TPL
also, and separately. Change to using CONFIG_IS_ENABLED(), add a new
Kconfig option and fix up hang().

Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Simon Glass 2018-10-01 12:22:20 -06:00
parent 6307896c17
commit aa0ffe8eb9
3 changed files with 17 additions and 2 deletions

View file

@ -53,6 +53,16 @@ config SPL_SERIAL_PRESENT
This option enables the full UART in SPL, so if is it disabled, This option enables the full UART in SPL, so if is it disabled,
the full UART driver will be omitted, thus saving space. the full UART driver will be omitted, thus saving space.
config TPL_SERIAL_PRESENT
bool "Provide a serial driver in TPL"
depends on DM_SERIAL
default y
help
In very space-constrained devices even the full UART driver is too
large. In this case the debug UART can still be used in some cases.
This option enables the full UART in TPL, so if is it disabled,
the full UART driver will be omitted, thus saving space.
# Logic to allow us to use the imply keyword to set what the default port # Logic to allow us to use the imply keyword to set what the default port
# should be. The default is otherwise 1. # should be. The default is otherwise 1.
config CONS_INDEX_0 config CONS_INDEX_0

View file

@ -26,6 +26,7 @@ static const unsigned long baudrate_table[] = CONFIG_SYS_BAUDRATE_TABLE;
#error "Serial is required before relocation - define CONFIG_$(SPL_)SYS_MALLOC_F_LEN to make this work" #error "Serial is required before relocation - define CONFIG_$(SPL_)SYS_MALLOC_F_LEN to make this work"
#endif #endif
#if CONFIG_IS_ENABLED(SERIAL_PRESENT)
static int serial_check_stdout(const void *blob, struct udevice **devp) static int serial_check_stdout(const void *blob, struct udevice **devp)
{ {
int node; int node;
@ -150,12 +151,15 @@ static void serial_find_console_or_panic(void)
panic_str("No serial driver found"); panic_str("No serial driver found");
#endif #endif
} }
#endif /* CONFIG_SERIAL_PRESENT */
/* Called prior to relocation */ /* Called prior to relocation */
int serial_init(void) int serial_init(void)
{ {
#if CONFIG_IS_ENABLED(SERIAL_PRESENT)
serial_find_console_or_panic(); serial_find_console_or_panic();
gd->flags |= GD_FLG_SERIAL_READY; gd->flags |= GD_FLG_SERIAL_READY;
#endif
return 0; return 0;
} }

View file

@ -20,8 +20,9 @@
*/ */
void hang(void) void hang(void)
{ {
#if !defined(CONFIG_SPL_BUILD) || (defined(CONFIG_SPL_LIBCOMMON_SUPPORT) && \ #if !defined(CONFIG_SPL_BUILD) || \
defined(CONFIG_SPL_SERIAL_SUPPORT)) (CONFIG_IS_ENABLED(LIBCOMMON_SUPPORT) && \
CONFIG_IS_ENABLED(SERIAL_SUPPORT))
puts("### ERROR ### Please RESET the board ###\n"); puts("### ERROR ### Please RESET the board ###\n");
#endif #endif
bootstage_error(BOOTSTAGE_ID_NEED_RESET); bootstage_error(BOOTSTAGE_ID_NEED_RESET);