[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