From mboxrd@z Thu Jan 1 00:00:00 1970 From: Heiko Schocher Date: Fri, 30 Sep 2016 06:43:24 +0200 Subject: [U-Boot] [PATCH v3 03/29] Convert CONSOLE_PRE_CONSOLE_BUFFER options to Kconfig In-Reply-To: <1475180609-14716-4-git-send-email-sjg@chromium.org> References: <1475180609-14716-1-git-send-email-sjg@chromium.org> <1475180609-14716-4-git-send-email-sjg@chromium.org> Message-ID: <57EDED6C.8060200@denx.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de 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 > --- > > 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 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 > > -/* 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