[U-Boot] [PATCH RESEND] Added support for splash screen positioning

Matthias Weisser matthias.weisser at graf-syteco.de
Wed Jul 1 17:01:11 CEST 2009


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 at 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));
 		}
 	}
-- 
1.5.6.3



More information about the U-Boot mailing list