
This patch adds support splash image positioning by optinally adding x and y coordinates to the splashimage environment variable.
Signed-off-by: Matthias Weisser matthias.weisser@graf-syteco.de --- README | 8 ++++++-- common/lcd.c | 11 +++++++++-- drivers/video/cfb_console.c | 9 ++++++++- 3 files changed, 23 insertions(+), 5 deletions(-) mode change 100644 => 100755 README mode change 100644 => 100755 common/lcd.c mode change 100644 => 100755 drivers/video/cfb_console.c
diff --git a/README b/README old mode 100644 new mode 100755 index 561c100..dd47a83 --- a/README +++ b/README @@ -1069,8 +1069,12 @@ The following options need to be configured: a variable "splashimage". If found, the usual display of logo, copyright and system information on the LCD is suppressed and the BMP image at the address - specified in "splashimage" is loaded instead. The - console is redirected to the "nulldev", too. This + specified in "splashimage" is loaded instead. + The logo can be positioned on any position by + (optionally) adding the x and y coordinates after the + address in the environment variable "splashimage" + sperated by a space. "splashimage=0x10060000 160 120" + The console is redirected to the "nulldev", too. This allows for a "silent" boot where a splash screen is loaded very quickly after power-on.
diff --git a/common/lcd.c b/common/lcd.c old mode 100644 new mode 100755 index 74a5c77..160f08a --- a/common/lcd.c +++ b/common/lcd.c @@ -809,9 +809,16 @@ static void *lcd_logo (void) static int do_splash = 1;
if (do_splash && (s = getenv("splashimage")) != NULL) { - addr = simple_strtoul(s, NULL, 16); + int x = 0, y = 0; do_splash = 0;
+ addr = simple_strtoul (s, NULL, 16); + if ((s = strchr (s, ' ')) != NULL) { + x = simple_strtoul (s + 1, NULL, 0); + if ((s = strchr (s + 1, ' ')) != NULL) + y = simple_strtoul (s + 1, NULL, 0); + } + #ifdef CONFIG_VIDEO_BMP_GZIP bmp_image_t *bmp = (bmp_image_t *)addr; unsigned long len; @@ -822,7 +829,7 @@ static void *lcd_logo (void) } #endif
- if (lcd_display_bitmap (addr, 0, 0) == 0) { + if (lcd_display_bitmap (addr, x, y) == 0) { return ((void *)lcd_base); } } diff --git a/drivers/video/cfb_console.c b/drivers/video/cfb_console.c old mode 100644 new mode 100755 index bcafb27..528349a --- a/drivers/video/cfb_console.c +++ b/drivers/video/cfb_console.c @@ -1188,9 +1188,16 @@ static void *video_logo (void) ulong addr;
if ((s = getenv ("splashimage")) != NULL) { + int x = 0, y = 0; + addr = simple_strtoul (s, NULL, 16); + if ((s = strchr (s, ' ')) != NULL) { + x = simple_strtoul (s + 1, NULL, 0); + if ((s = strchr (s + 1, ' ')) != NULL) + y = simple_strtoul (s + 1, NULL, 0); + }
- if (video_display_bitmap (addr, 0, 0) == 0) { + if (video_display_bitmap (addr, x, y) == 0) { return ((void *) (video_fb_address)); } }