From 8f925584145efecd9a6323801689cffd69cf0b09 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Mon, 17 Oct 2016 20:12:36 -0600 Subject: [PATCH] Convert CONSOLE_PRE_CONSOLE_BUFFER options to Kconfig Move these option to Kconfig and tidy up existing uses. Signed-off-by: Simon Glass Reviewed-by: Jagan Teki --- README | 17 ---------------- board/sunxi/Kconfig | 3 +++ common/Kconfig | 42 +++++++++++++++++++++++++++++++++++++++ common/console.c | 6 +++--- configs/tbs2910_defconfig | 2 ++ include/asm-generic/global_data.h | 2 +- include/configs/sunxi-common.h | 6 ------ include/configs/tbs2910.h | 4 ---- scripts/config_whitelist.txt | 3 --- 9 files changed, 51 insertions(+), 34 deletions(-) diff --git a/README b/README index cc75700..0614a60 100644 --- a/README +++ b/README @@ -832,23 +832,6 @@ The following options need to be configured: must be defined, to setup the maximum idle timeout for the SMC. -- Pre-Console Buffer: - Prior to the console being initialised (i.e. serial UART - initialised etc) all console output is silently discarded. - Defining CONFIG_PRE_CONSOLE_BUFFER will cause U-Boot to - buffer any console messages prior to the console being - initialised to a buffer of size CONFIG_PRE_CON_BUF_SZ - bytes located at CONFIG_PRE_CON_BUF_ADDR. The buffer is - a circular buffer, so if more than CONFIG_PRE_CON_BUF_SZ - bytes are output before the console is initialised, the - earlier bytes are discarded. - - Note that when printing the buffer a copy is made on the - stack so CONFIG_PRE_CON_BUF_SZ must fit on the stack. - - 'Sane' compilers will generate smaller code if - CONFIG_PRE_CON_BUF_SZ is a power of 2 - - Autoboot Command: CONFIG_BOOTCOMMAND Only needed when CONFIG_BOOTDELAY is enabled; diff --git a/board/sunxi/Kconfig b/board/sunxi/Kconfig index b139d1c..c0ffeb3 100644 --- a/board/sunxi/Kconfig +++ b/board/sunxi/Kconfig @@ -3,6 +3,9 @@ if ARCH_SUNXI config IDENT_STRING default " Allwinner Technology" +config PRE_CONSOLE_BUFFER + default y + config SPL_GPIO_SUPPORT default y diff --git a/common/Kconfig b/common/Kconfig index a8dfd7c..7988de2 100644 --- a/common/Kconfig +++ b/common/Kconfig @@ -246,6 +246,48 @@ config SILENT_CONSOLE_UPDATE_ON_RELOC (e.g. NAND). This option makes the value of the 'silent' environment variable take effect at relocation. +config PRE_CONSOLE_BUFFER + bool "Buffer characters before the console is available" + help + Prior to the console being initialised (i.e. serial UART + initialised etc) all console output is silently discarded. + Defining CONFIG_PRE_CONSOLE_BUFFER will cause U-Boot to + buffer any console messages prior to the console being + initialised to a buffer. The buffer is a circular buffer, so + if it overflows, earlier output is discarded. + + Note that this is not currently supported in SPL. It would be + useful to be able to share the pre-console buffer with SPL. + +config PRE_CON_BUF_SZ + int "Sets the size of the pre-console buffer" + depends on PRE_CONSOLE_BUFFER + default 4096 + help + The size of the pre-console buffer affects how much console output + can be held before it overflows and starts discarding earlier + output. Normally there is very little output at this early stage, + unless debugging is enabled, so allow enough for ~10 lines of + text. + + This is a useful feature if you are using a video console and + want to see the full boot output on the console. Without this + option only the post-relocation output will be displayed. + +config PRE_CON_BUF_ADDR + hex "Address of the pre-console buffer" + depends on PRE_CONSOLE_BUFFER + default 0x2f000000 if ARCH_SUNXI && MACH_SUN9I + default 0x4f000000 if ARCH_SUNXI && !MACH_SUN9I + help + This sets the start address of the pre-console buffer. This must + be in available memory and is accessed before relocation and + possibly before DRAM is set up. Therefore choose an address + carefully. + + We should consider removing this option and allocating the memory + in board_init_f_init_reserve() instead. + endmenu config SYS_NO_FLASH diff --git a/common/console.c b/common/console.c index 282fcc8..e1d8476 100644 --- a/common/console.c +++ b/common/console.c @@ -202,7 +202,7 @@ static void console_putc(int file, const char c) } } -#ifdef CONFIG_PRE_CONSOLE_BUFFER +#if CONFIG_IS_ENABLED(PRE_CONSOLE_BUFFER) static void console_puts_noserial(int file, const char *s) { int i; @@ -248,7 +248,7 @@ static inline void console_putc(int file, const char c) stdio_devices[file]->putc(stdio_devices[file], c); } -#ifdef CONFIG_PRE_CONSOLE_BUFFER +#if CONFIG_IS_ENABLED(PRE_CONSOLE_BUFFER) static inline void console_puts_noserial(int file, const char *s) { if (strcmp(stdio_devices[file]->name, "serial") != 0) @@ -415,7 +415,7 @@ int tstc(void) #define PRE_CONSOLE_FLUSHPOINT1_SERIAL 0 #define PRE_CONSOLE_FLUSHPOINT2_EVERYTHING_BUT_SERIAL 1 -#ifdef CONFIG_PRE_CONSOLE_BUFFER +#if CONFIG_IS_ENABLED(PRE_CONSOLE_BUFFER) #define CIRC_BUF_IDX(idx) ((idx) % (unsigned long)CONFIG_PRE_CON_BUF_SZ) static void pre_console_putc(const char c) diff --git a/configs/tbs2910_defconfig b/configs/tbs2910_defconfig index fbff9fe..0871408 100644 --- a/configs/tbs2910_defconfig +++ b/configs/tbs2910_defconfig @@ -1,6 +1,8 @@ CONFIG_ARM=y CONFIG_ARCH_MX6=y CONFIG_TARGET_TBS2910=y +CONFIG_PRE_CONSOLE_BUFFER=y +CONFIG_PRE_CON_BUF_ADDR=0x7c000000 CONFIG_FIT=y CONFIG_BOOTDELAY=3 CONFIG_HUSH_PARSER=y diff --git a/include/asm-generic/global_data.h b/include/asm-generic/global_data.h index dc4cbdb..e02863d 100644 --- a/include/asm-generic/global_data.h +++ b/include/asm-generic/global_data.h @@ -45,7 +45,7 @@ typedef struct global_data { unsigned long board_type; #endif unsigned long have_console; /* serial_init() was called */ -#ifdef CONFIG_PRE_CONSOLE_BUFFER +#if CONFIG_IS_ENABLED(PRE_CONSOLE_BUFFER) unsigned long precon_buf_idx; /* Pre-Console buffer index */ #endif unsigned long env_addr; /* Address of Environment struct */ diff --git a/include/configs/sunxi-common.h b/include/configs/sunxi-common.h index 33f2ab7..634a4c7 100644 --- a/include/configs/sunxi-common.h +++ b/include/configs/sunxi-common.h @@ -68,7 +68,6 @@ #define CONFIG_SYS_SDRAM_BASE 0x20000000 #define CONFIG_SYS_LOAD_ADDR 0x22000000 /* default load address */ #define CONFIG_SYS_TEXT_BASE 0x2a000000 -#define CONFIG_PRE_CON_BUF_ADDR 0x2f000000 /* Note SPL_STACK_R_ADDR is set through Kconfig, we include it here * since it needs to fit in with the other values. By also #defining it * we get warnings if the Kconfig value mismatches. */ @@ -79,7 +78,6 @@ #define CONFIG_SYS_SDRAM_BASE 0x40000000 #define CONFIG_SYS_LOAD_ADDR 0x42000000 /* default load address */ #define CONFIG_SYS_TEXT_BASE 0x4a000000 -#define CONFIG_PRE_CON_BUF_ADDR 0x4f000000 /* Note SPL_STACK_R_ADDR is set through Kconfig, we include it here * since it needs to fit in with the other values. By also #defining it * we get warnings if the Kconfig value mismatches. */ @@ -371,10 +369,6 @@ extern int soft_i2c_gpio_scl; #ifndef CONFIG_SPL_BUILD #include -/* Enable pre-console buffer to get complete log on the VGA console */ -#define CONFIG_PRE_CONSOLE_BUFFER -#define CONFIG_PRE_CON_BUF_SZ 4096 /* Aprox 2 80*25 screens */ - #ifdef CONFIG_ARM64 /* * Boards seem to come with at least 512MB of DRAM. diff --git a/include/configs/tbs2910.h b/include/configs/tbs2910.h index d877336..90e4982 100644 --- a/include/configs/tbs2910.h +++ b/include/configs/tbs2910.h @@ -50,10 +50,6 @@ #define CONFIG_CONSOLE_MUX #define CONFIG_CONS_INDEX 1 -#define CONFIG_PRE_CONSOLE_BUFFER -#define CONFIG_PRE_CON_BUF_SZ 4096 -#define CONFIG_PRE_CON_BUF_ADDR 0x7C000000 - /* *** Command definition *** */ #define CONFIG_CMD_BMODE #define CONFIG_CMD_PART diff --git a/scripts/config_whitelist.txt b/scripts/config_whitelist.txt index 297a60b..64f21f1 100644 --- a/scripts/config_whitelist.txt +++ b/scripts/config_whitelist.txt @@ -3719,9 +3719,6 @@ CONFIG_PQ_MDS_PIB CONFIG_PQ_MDS_PIB_ATM CONFIG_PRAM CONFIG_PREBOOT -CONFIG_PRE_CONSOLE_BUFFER -CONFIG_PRE_CON_BUF_ADDR -CONFIG_PRE_CON_BUF_SZ CONFIG_PRIMEVIEW_V16C6448AC CONFIG_PRINTK CONFIG_PROC_FS