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

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

Dear Matthias Weisser,
In message 1246460471-12737-1-git-send-email-matthias.weisser@graf-syteco.de you wrote:
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"
allows for a "silent" boot where a splash screen is loaded very quickly after power-on.The console is redirected to the "nulldev", too. This
This is a bogus user interface. I will not accept this. Please redesign (probably use separate variable(s) for the coordinates).
NAK.
Best regards,
Wolfgang Denk

Hi,
I posted a similiar patch a long time ago:
http://lists.denx.de/pipermail/u-boot/2007-July/022741.html
It's also a little bit more powerful because is supports alignment on top/center/bottom and right/center/left on the screen.
I couldn't find the answer posting on my patch. But I think it was rejected because of some planned changes in the video subsystem.
If we can use a powerful splashimage variable, I would vote for my patch and check it on top of git.
I can understand Wolfgang's objection but please keep the amount of variables for positioning on a reasonable level. Just one for the stuff behind the address (see my proposed format) would be ok for me.
Matthias
On Wednesday 01 July 2009 17:01, Matthias Weisser wrote:
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"
allows for a "silent" boot where a splash screen is loaded very quickly after power-on.The console is redirected to the "nulldev", too. This
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));

Dear Matthias Fuchs,
In message 200907061123.07261.matthias.fuchs@esd.eu you wrote:
I posted a similiar patch a long time ago:
Hmm... seems it got lost in the mists of time...
It's also a little bit more powerful because is supports alignment on top/center/bottom and right/center/left on the screen.
I couldn't find the answer posting on my patch. But I think it was rejected because of some planned changes in the video subsystem.
If we can use a powerful splashimage variable, I would vote for my patch and check it on top of git.
I can understand Wolfgang's objection but please keep the amount of variables for positioning on a reasonable level. Just one for the stuff behind the address (see my proposed format) would be ok for me.
Agreed on minimizing the number of needed variables, but (last but not least in the interest of backward compatibility) I would like to keep storage address and on-screen positioning information separated.
Your patch reads:
+ When CONFIG_SPLASH_SCREEN_ALIGN is additionally defined, + it is possible to align a small splashimage on a huge + display. This option extends the splashimage variable + syntax with an x and y position suffix. Beside absolute + positioning the characters 'l' (left), 'r' (right), + 't' (top), 'b' (bottom) and 'c' (center) are supported: + + splashimage=<address>[,<xpos>[,<pos>]] + + Example: + splashimage=fff00000,c,c
I would like to see the position information handled with a separate variable, and I think the format should be changed / extended as well. If we go to the extent to allowing such positioning, then we should allow numeric coordinates as well; this kind of conflicts with your syntax where "c,c" would mean "0xC,0xC" :-)
Maybe you can extend and rebase your patch against current code?
TIA.
Best regards,
Wolfgang Denk

Hi Matthias
Matthias Fuchs matthias.fuchs@esd.eu schrieb am 06.07.2009 um
11:23:
Hi,
I posted a similiar patch a long time ago:
Missed that. Sorry.
If we can use a powerful splashimage variable, I would vote for my
patch
and check it on top of git.
I would also vote for that one, but...
I can understand Wolfgang's objection but please keep the amount of variables for positioning on a reasonable level. Just one for the
stuff
behind the address (see my proposed format) would be ok for me.
I would also prefer the additional variable. I would propose
splashpos=x,y
where x and y could be:
l -> Left m -> Center (not c because of clash with hex numbers) r -> Right number -> Exact positioning
If you don't have the time to implement this I could add this to my patch (which also adds this to the lcd code).
Matthias
------------------------------------ Amtsgericht Freiburg HRA 602707 Ust. ID-Nr.: DE232464428
Geschäftsführer: Dipl. Ing. (FH) Martin Graf Dipl. Ing. (FH) David Graf Dipl. Inf. Fabian Graf
Komplementärin: GRAF-SYTECO Verwaltungs-GmbH Amtsgericht Freiburg HRB 602868 ------------------------------------

On Thursday 09 July 2009 11:45, Matthias Weisser wrote:
Hi Matthias
Matthias Fuchs matthias.fuchs@esd.eu schrieb am 06.07.2009 um
11:23:
Hi,
I posted a similiar patch a long time ago:
Missed that. Sorry.
If we can use a powerful splashimage variable, I would vote for my
patch
and check it on top of git.
I would also vote for that one, but...
Cool.
I can understand Wolfgang's objection but please keep the amount of variables for positioning on a reasonable level. Just one for the
stuff
behind the address (see my proposed format) would be ok for me.
I would also prefer the additional variable. I would propose
splashpos=x,y
I thought about that name also :-)
where x and y could be:
l -> Left m -> Center (not c because of clash with hex numbers)
Good idea.
r -> Right
Don't forget t (top) and b (bottom).
number -> Exact positioning
What about [-]number? Could be used to position from the opposite side. With this syntax we even do not need l/r/t/b at all. E.g.:
splashpos=m,-20 # x'centered and 20 pixel from bottom splashpos=-0,-0 # rigth, bottom screen corner
Just an idea :-)
If you don't have the time to implement this I could add this to my patch (which also adds this to the lcd code).
Yes please. I will do some testing on my board.
Matthias
participants (4)
-
Matthias Fuchs
-
Matthias Weisser
-
Matthias Weisser
-
Wolfgang Denk