[U-Boot] [PATCH v2 2/3] Allow displaying the U-Boot banner on a video display

Simon Glass sjg at chromium.org
Mon Jun 12 15:17:10 UTC 2017


Hi Bin,

On 12 June 2017 at 09:13, Bin Meng <bmeng.cn at gmail.com> wrote:
> Hi Simon,
>
> On Sun, Jun 11, 2017 at 1:59 AM, Simon Glass <sjg at 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 <sjg at 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.

>
>>  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);
>> +
>> +       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.

Regards,
Simon


More information about the U-Boot mailing list