[U-Boot] [PATCH 13/13] lcd: split splash code into its own function
Simon Glass
sjg at chromium.org
Sun Feb 1 17:25:28 CET 2015
Hi NIkita,
On 1 February 2015 at 06:59, Nikita Kiryanov <nikita at compulab.co.il> wrote:
> Hi Simon,
>
>
> On 01/31/2015 02:25 AM, Simon Glass wrote:
>>
>> Hi Nikita,
>>
>> On 29 January 2015 at 04:21, Nikita Kiryanov <nikita at compulab.co.il>
>> wrote:
>>>
>>> lcd_logo() currently performs tasks well beyond just displaying the logo.
>>> It has code which displays splash image, it has logic which determines
>>> when the different display features are displayed, and it is coupled with
>>> the lcd console because it holds the responsibility of returning the
>>> lcd console base address.
>>>
>>> Make lcd_logo() just about the logo by:
>>> * Moving splash image display code into a dedicated function
>>> * Moving the logic regarding when various features are displayed to
>>> lcd_clear() (which is arguably not the correct name for housing such
>>> code either, but it is currently the most fitting location code wise)
>>> * Move the responsibility of setting the console base address to
>>> lcd_clear() too.
>>>
>>> Signed-off-by: Nikita Kiryanov <nikita at compulab.co.il>
>>> Cc: Bo Shen <voice.shen at atmel.com>
>>> Cc: Simon Glass <sjg at chromium.org>
>>> Cc: Anatolij Gustschin <agust at denx.de>
>>> ---
>>> common/lcd.c | 52
>>> ++++++++++++++++++++++------------------------------
>>> common/splash.c | 16 ++++++++++++++++
>>> include/splash.h | 11 ++++++++++-
>>> 3 files changed, 48 insertions(+), 31 deletions(-)
>>>
>>> diff --git a/common/lcd.c b/common/lcd.c
>>> index d0c0aff..f33942c 100644
>>> --- a/common/lcd.c
>>> +++ b/common/lcd.c
>>> @@ -46,7 +46,7 @@
>>> DECLARE_GLOBAL_DATA_PTR;
>>>
>>> static int lcd_init(void *lcdbase);
>>> -static void *lcd_logo(void);
>>> +static void lcd_logo(void);
>>> static void lcd_setfgcolor(int color);
>>> static void lcd_setbgcolor(int color);
>>>
>>> @@ -169,6 +169,9 @@ void lcd_clear(void)
>>> {
>>> short console_rows, console_cols;
>>> int bg_color;
>>> + char *s;
>>> + ulong addr;
>>> + static int do_splash = 1;
>>> #if LCD_BPP == LCD_COLOR8
>>> /* Setting the palette */
>>> lcd_setcolreg(CONSOLE_COLOR_BLACK, 0, 0, 0);
>>> @@ -218,7 +221,23 @@ void lcd_clear(void)
>>> #endif
>>> console_cols = panel_info.vl_col / VIDEO_FONT_WIDTH;
>>> lcd_init_console(lcd_base, console_rows, console_cols);
>>> - lcd_init_console(lcd_logo(), console_rows, console_cols);
>>> + if (do_splash) {
>>> + s = getenv("splashimage");
>>> + if (s) {
>>> + do_splash = 0;
>>> + addr = simple_strtoul(s, NULL, 16);
>>> + if (lcd_splash(addr) == 0) {
>>> + lcd_sync();
>>> + return;
>>> + }
>>> + }
>>> + }
>>> +
>>> + lcd_logo();
>>> +#if defined(CONFIG_LCD_LOGO) && !defined(CONFIG_LCD_INFO_BELOW_LOGO)
>>> + addr = (ulong)lcd_base + BMP_LOGO_HEIGHT * lcd_line_length;
>>> + lcd_init_console((void *)addr, console_rows, console_cols);
>>
>>
>> I'm just a bit unsure about this - before this function was always
>> called. I have some idea but can you explain why it is now in an
>> #ifidef?
>
>
> The only time when the base address of the console is defined as anything
> other
> than lcd_base, is when we get to the very end of the original lcd_logo() and
> the above #defines apply. In all other cases, the address of lcd_base is
> used,
> and that is set as default at the start of lcd_clear().
OK I see, thanks.
Reviewed-by: Simon Glass <sjg at chromium.org>
Regards,
Simon
More information about the U-Boot
mailing list