[U-Boot] [PATCH v4 03/29] Convert CONSOLE_PRE_CONSOLE_BUFFER options to Kconfig

Simon Glass sjg at chromium.org
Tue Oct 18 04:12:36 CEST 2016


Move these option to Kconfig and tidy up existing uses.

Signed-off-by: Simon Glass <sjg at chromium.org>
---

Changes in v4: None
Changes in v3: None
Changes in v2:
- Change CONFIG_PRE_CON_BUF_SZ default to 4096
- Change CONFIG_PRE_CON_BUF_SZ to 'int' type
- Drop the depend clause on the CONFIG_PRE_CON_BUF_SZ default
- Move CONFIG_PRE_CON_BUF_ADDR default to common/Kconfig

 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 c7f3243..f0f9bab 100644
--- a/common/console.c
+++ b/common/console.c
@@ -201,7 +201,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;
@@ -247,7 +247,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)
@@ -413,7 +413,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 <config_distro_defaults.h>
 
-/* 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
-- 
2.8.0.rc3.226.g39d4020



More information about the U-Boot mailing list