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

Simon Glass sjg at chromium.org
Tue Sep 20 00:32:47 CEST 2016


Move these option to Kconfig and tidy up existing uses.

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

 README                            | 17 -----------------
 board/sunxi/Kconfig               | 11 +++++++++++
 common/Kconfig                    | 40 +++++++++++++++++++++++++++++++++++++++
 common/console.c                  |  6 +++---
 configs/tbs2910_defconfig         |  3 +++
 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, 58 insertions(+), 34 deletions(-)

diff --git a/README b/README
index 1b6f8ec..26a53e2 100644
--- a/README
+++ b/README
@@ -872,23 +872,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 79f644a..9954f0a 100644
--- a/board/sunxi/Kconfig
+++ b/board/sunxi/Kconfig
@@ -1,5 +1,11 @@
 if ARCH_SUNXI
 
+config PRE_CONSOLE_BUFFER
+	default y
+
+config PRE_CON_BUF_SZ
+	default 4096
+
 config SPL_GPIO_SUPPORT
 	default y
 
@@ -21,6 +27,7 @@ config SPL_POWER_SUPPORT
 config SPL_SERIAL_SUPPORT
 	default y
 
+config PRE_CONSOLE_BUFFER
 # Note only one of these may be selected at a time! But hidden choices are
 # not supported by Kconfig
 config SUNXI_GEN_SUN4I
@@ -121,6 +128,10 @@ config MACH_SUN50I
 
 endchoice
 
+config PRE_CON_BUF_ADDR
+	default 0x2f000000 if MACH_SUN9I
+	default 0x4f000000 if !MACH_SUN9I
+
 # The sun8i SoCs share a lot, this helps to avoid a lot of "if A23 || A33"
 config MACH_SUN8I
 	bool
diff --git a/common/Kconfig b/common/Kconfig
index 20f34bb..3ecb589 100644
--- a/common/Kconfig
+++ b/common/Kconfig
@@ -241,6 +241,46 @@ 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
+	hex "Sets the size of the pre-console buffer"
+	depends on PRE_CONSOLE_BUFFER
+	default 1024 if PRE_CONSOLE_BUFFER
+	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
+	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 12293f3..31a9b3e 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..d1abb47 100644
--- a/configs/tbs2910_defconfig
+++ b/configs/tbs2910_defconfig
@@ -1,6 +1,9 @@
 CONFIG_ARM=y
 CONFIG_ARCH_MX6=y
 CONFIG_TARGET_TBS2910=y
+CONFIG_PRE_CONSOLE_BUFFER=y
+CONFIG_PRE_CON_BUF_SZ=4096
+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 8de9c2b..5fe76e8 100644
--- a/include/configs/sunxi-common.h
+++ b/include/configs/sunxi-common.h
@@ -69,7 +69,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. */
@@ -80,7 +79,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. */
@@ -379,10 +377,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 85501bc..ddd53dd 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
 
diff --git a/scripts/config_whitelist.txt b/scripts/config_whitelist.txt
index 83bee01..1a6ea95 100644
--- a/scripts/config_whitelist.txt
+++ b/scripts/config_whitelist.txt
@@ -3737,9 +3737,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