Move these option to Kconfig and tidy up existing uses.

Signed-off-by: Simon Glass <s...@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

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to