summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2016-10-17 20:12:36 -0600
committerTom Rini <trini@konsulko.com>2016-10-23 18:33:19 -0400
commit8f925584145efecd9a6323801689cffd69cf0b09 (patch)
tree82accc506b462a88717656ea4cea2deab308acf7
parent98af87997670af840ef178f76b4d6888534a6700 (diff)
Convert CONSOLE_PRE_CONSOLE_BUFFER options to Kconfig
Move these option to Kconfig and tidy up existing uses. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Jagan Teki <jteki@openedev.com>
-rw-r--r--README17
-rw-r--r--board/sunxi/Kconfig3
-rw-r--r--common/Kconfig42
-rw-r--r--common/console.c6
-rw-r--r--configs/tbs2910_defconfig2
-rw-r--r--include/asm-generic/global_data.h2
-rw-r--r--include/configs/sunxi-common.h6
-rw-r--r--include/configs/tbs2910.h4
-rw-r--r--scripts/config_whitelist.txt3
9 files changed, 51 insertions, 34 deletions
diff --git a/README b/README
index cc75700532..0614a60c2e 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 b139d1c139..c0ffeb3333 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 a8dfd7c2e2..7988de278b 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 282fcc8832..e1d84763bd 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 fbff9fe314..087140895f 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 dc4cbdb673..e02863dc03 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 33f2ab7a1f..634a4c756e 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 d8773362a9..90e4982c93 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 297a60be37..64f21f1b70 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