Hi Simon, On Mon, Jun 12, 2017 at 11:17 PM, Simon Glass <s...@chromium.org> wrote: > Hi Bin, > > On 12 June 2017 at 09:13, Bin Meng <bmeng...@gmail.com> wrote: >> Hi Simon, >> >> On Sun, Jun 11, 2017 at 1:59 AM, Simon Glass <s...@chromium.org> wrote: >>> At present the U-Boot banner is only displayed on the serial console. If >>> this is not visible to the user, the banner does not show. Some devices >>> have a video display which can usefully display this information. >>> >>> Add a banner which is printed after relocation only on non-serial devices >>> if CONFIG_DISPLAY_BOARDINFO_LATE is defined. >>> >>> Signed-off-by: Simon Glass <s...@chromium.org> >>> --- >>> >>> Changes in v2: >>> - Reword function comment for console_announce_r() slighty >>> >>> common/board_r.c | 1 + >>> common/console.c | 15 +++++++++++---- >>> include/console.h | 12 ++++++++++++ >>> 3 files changed, 24 insertions(+), 4 deletions(-) >>> >>> diff --git a/common/board_r.c b/common/board_r.c >>> index 15977e4bca..ff11eba5d3 100644 >>> --- a/common/board_r.c >>> +++ b/common/board_r.c >>> @@ -846,6 +846,7 @@ static init_fnc_t init_sequence_r[] = { >>> #endif >>> console_init_r, /* fully init console as a device */ >>> #ifdef CONFIG_DISPLAY_BOARDINFO_LATE >>> + console_announce_r, >>> show_board_info, >>> #endif >>> #ifdef CONFIG_ARCH_MISC_INIT >>> diff --git a/common/console.c b/common/console.c >>> index 1232808df5..3fcd7ce66b 100644 >>> --- a/common/console.c >>> +++ b/common/console.c >>> @@ -202,7 +202,6 @@ static void console_putc(int file, const char c) >>> } >>> } >>> >>> -#if CONFIG_IS_ENABLED(PRE_CONSOLE_BUFFER) >> >> Why removing this? Without PRE_CONSOLE_BUFFER, I doubt it works. > > I want to be able to call the function below. It seems to work OK and > it doesn't rely on that option. >
See comments below. >> >>> static void console_puts_noserial(int file, const char *s) >>> { >>> int i; >>> @@ -214,7 +213,6 @@ static void console_puts_noserial(int file, const char >>> *s) >>> dev->puts(dev, s); >>> } >>> } >>> -#endif >>> >>> static void console_puts(int file, const char *s) >>> { >>> @@ -248,13 +246,11 @@ static inline void console_putc(int file, const char >>> c) >>> stdio_devices[file]->putc(stdio_devices[file], c); >>> } >>> >>> -#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) >>> stdio_devices[file]->puts(stdio_devices[file], s); >>> } >>> -#endif >>> >>> static inline void console_puts(int file, const char *s) >>> { >>> @@ -699,6 +695,17 @@ static void console_update_silent(void) >>> #endif >>> } >>> >>> +int console_announce_r(void) >>> +{ >>> + char buf[DISPLAY_OPTIONS_BANNER_LENGTH]; >>> + >>> + display_options_get_banner(false, buf, sizeof(buf)); >>> + >>> + console_puts_noserial(stdout, buf); Then I think we should do something like this: int console_announce_r(void) { #ifndef CONFIG_PRE_CONSOLE_BUFFER char buf[DISPLAY_OPTIONS_BANNER_LENGTH]; display_options_get_banner(false, buf, sizeof(buf)); console_puts_noserial(stdout, buf); #endif } If we don't do this, there will be duplicated U-Boot version string shown on the screen if CONFIG_PRE_CONSOLE_BUFFER is defined. >>> + >>> + return 0; >>> +} >>> + >>> /* Called before relocation - use serial functions */ >>> int console_init_f(void) >>> { >>> diff --git a/include/console.h b/include/console.h >>> index 3d37f6a53b..cea29ed6dc 100644 >>> --- a/include/console.h >>> +++ b/include/console.h >>> @@ -42,6 +42,18 @@ void console_record_reset(void); >>> */ >>> void console_record_reset_enable(void); >>> >>> +/** >>> + * console_announce_r() - print a U-Boot console on non-serial consoles >>> + * >>> + * When U-Boot starts up with a display it generally does not announce >>> itself >>> + * on the display. The banner is instead emitted on the UART before >>> relocation. >>> + * This function prints a banner on devices which (we assume) did not >>> receive >>> + * it before relocation. >>> + * >>> + * @return 0 (meaning no errors) >>> + */ >>> +int console_announce_r(void); >>> + >>> /* >>> * CONSOLE multiplexing. >>> */ >>> -- >> >> And I see another (same) patch @ >> https://patchwork.ozlabs.org/patch/769426/ which got applied, but this >> one was sent later than the applied one. I am confused.. > > Another patch in this series caused a breakage using a long BUILD_TAG > due to a bug in how the snprintf() calls were done. So I dropped two > patches from that series and sent this series instead. > > It wasn't noticed since I don't use BUILD_TAG and no tests were in > place. It just happened that Stephen Warren has automated testing that > caught it before it was pulled to mainline. OK, thanks for the clarification. Regards, Bin _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot