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

Heiko Schocher hs at denx.de
Fri Sep 30 06:43:24 CEST 2016


Hello Simon,

Am 29.09.2016 um 22:23 schrieb Simon Glass:
> Move these option to Kconfig and tidy up existing uses.
>
> Signed-off-by: Simon Glass <sjg at chromium.org>
> ---
>
> 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(-)

Reviewed-by: Heiko Schocher <hs at denx.de>

bye,
Heiko
>
> diff --git a/README b/README
> index 0a1f3fe..8f93dad 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 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 bbd5633..6ee67ac 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 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..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 d261fb3..c604ce2 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. */
> @@ -373,10 +371,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 9e2f00d..7a69be5 100644
> --- a/scripts/config_whitelist.txt
> +++ b/scripts/config_whitelist.txt
> @@ -3728,9 +3728,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
>

-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany


More information about the U-Boot mailing list