From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeroen Hofstee Date: Sun, 20 Jan 2013 21:34:04 +0100 Subject: [U-Boot] [PATCH 2/5] lcd: add option for board specific splash screen preparation In-Reply-To: <1356246228-26732-3-git-send-email-nikita@compulab.co.il> References: <1356246228-26732-1-git-send-email-nikita@compulab.co.il> <1356246228-26732-3-git-send-email-nikita@compulab.co.il> Message-ID: <50FC54BC.3070101@myspectrum.nl> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On 12/23/2012 08:03 AM, Nikita Kiryanov wrote: > Currently there is no logical place to put the code that prepares the > splash image data. The splash image data should be ready in memory > before bmp_display() is called, and after the environment is ready > (since lcd.c looks for the splash image in an address specified by > the environment variable "splashimage"). > > Our window of opportunity in board_init_r() is therefore: between > env_relocate() and bmp_display(), and from the available options > only the lcd related functions in drv_lcd_init() seem appropriate > for such lcd oriented code. > > Add the option to prepare the splash image data in lcd_logo() right > before it is sent to be displayed. > > Signed-off-by: Nikita Kiryanov > Signed-off-by: Igor Grinberg > --- > README | 8 ++++++++ > common/lcd.c | 15 +++++++++++++++ > include/lcd.h | 1 + > 3 files changed, 24 insertions(+) > > diff --git a/README b/README > index 78f40df..cffc016 100644 > --- a/README > +++ b/README > @@ -1541,6 +1541,14 @@ CBFS (Coreboot Filesystem) support > => vertically centered image > at x = dspWidth - bmpWidth - 9 > > + CONFIG_SPLASH_SCREEN_PREPARE > + > + If this option is set then the board_splash_screen_prepare() > + function, which must be defined in your code, is called as part > + of the splash screen display sequence. It gives the board an > + opportunity to prepare the splash image data before it is > + processed and sent to the frame buffer by U-Boot. > + > - Gzip compressed BMP image support: CONFIG_VIDEO_BMP_GZIP > > If this option is set, additionally to standard BMP > diff --git a/common/lcd.c b/common/lcd.c > index 66d4f94..129cf7e 100644 > --- a/common/lcd.c > +++ b/common/lcd.c > @@ -1034,6 +1034,18 @@ int lcd_display_bitmap(ulong bmp_image, int x, int y) > } > #endif > > +#ifdef CONFIG_SPLASH_SCREEN_PREPARE > +static inline int splash_screen_prepare(void) > +{ > + return board_splash_screen_prepare(); > +} > +#else > +static inline int splash_screen_prepare(void) > +{ > + return 0; > +} > +#endif > + > static void *lcd_logo(void) > { > #ifdef CONFIG_SPLASH_SCREEN > @@ -1045,6 +1057,9 @@ static void *lcd_logo(void) > int x = 0, y = 0; > do_splash = 0; > > + if (splash_screen_prepare()) > + return (void *)lcd_base; > + > addr = simple_strtoul (s, NULL, 16); > #ifdef CONFIG_SPLASH_SCREEN_ALIGN > s = getenv("splashpos"); > diff --git a/include/lcd.h b/include/lcd.h > index c24164a..4ac4ddd 100644 > --- a/include/lcd.h > +++ b/include/lcd.h > @@ -47,6 +47,7 @@ extern struct vidinfo panel_info; > > extern void lcd_ctrl_init (void *lcdbase); > extern void lcd_enable (void); > +extern int board_splash_screen_prepare(void); > > /* setcolreg used in 8bpp/16bpp; initcolregs used in monochrome */ > extern void lcd_setcolreg (ushort regno, Other boards seem to do this in lcd_enable. Perhaps that is also an option. Regards, Jeroen