diff options
Diffstat (limited to 'common')
-rw-r--r-- | common/cmd_bmp.c | 3 | ||||
-rw-r--r-- | common/lcd.c | 19 | ||||
-rw-r--r-- | common/splash.c | 25 |
3 files changed, 30 insertions, 17 deletions
diff --git a/common/cmd_bmp.c b/common/cmd_bmp.c index 946031d..a7c5fbd 100644 --- a/common/cmd_bmp.c +++ b/common/cmd_bmp.c @@ -31,6 +31,7 @@ #include <command.h> #include <asm/byteorder.h> #include <malloc.h> +#include <splash.h> #include <video.h> static int bmp_info (ulong addr); @@ -125,6 +126,8 @@ static int do_bmp_display(cmd_tbl_t * cmdtp, int flag, int argc, char * const ar ulong addr; int x = 0, y = 0; + splash_get_pos(&x, &y); + switch (argc) { case 1: /* use load_addr as default address */ addr = load_addr; diff --git a/common/lcd.c b/common/lcd.c index 95006aa..50ea4d6 100644 --- a/common/lcd.c +++ b/common/lcd.c @@ -1089,23 +1089,8 @@ static void *lcd_logo(void) return (void *)lcd_base; addr = simple_strtoul (s, NULL, 16); -#ifdef CONFIG_SPLASH_SCREEN_ALIGN - s = getenv("splashpos"); - if (s != NULL) { - if (s[0] == 'm') - x = BMP_ALIGN_CENTER; - else - x = simple_strtol(s, NULL, 0); - - s = strchr(s + 1, ','); - if (s != NULL) { - if (s[1] == 'm') - y = BMP_ALIGN_CENTER; - else - y = simple_strtol (s + 1, NULL, 0); - } - } -#endif /* CONFIG_SPLASH_SCREEN_ALIGN */ + + splash_get_pos(&x, &y); if (bmp_display(addr, x, y) == 0) return (void *)lcd_base; diff --git a/common/splash.c b/common/splash.c index c744497..18885f1 100644 --- a/common/splash.c +++ b/common/splash.c @@ -20,6 +20,7 @@ * */ +#include <common.h> #include <splash.h> int __splash_screen_prepare(void) @@ -29,3 +30,27 @@ int __splash_screen_prepare(void) int splash_screen_prepare(void) __attribute__ ((weak, alias("__splash_screen_prepare"))); + + +#ifdef CONFIG_SPLASH_SCREEN_ALIGN +void splash_get_pos(int *x, int *y) +{ + char *s = getenv("splashpos"); + + if (!s) + return; + + if (s[0] == 'm') + *x = BMP_ALIGN_CENTER; + else + *x = simple_strtol(s, NULL, 0); + + s = strchr(s + 1, ','); + if (s != NULL) { + if (s[1] == 'm') + *y = BMP_ALIGN_CENTER; + else + *y = simple_strtol(s + 1, NULL, 0); + } +} +#endif /* CONFIG_SPLASH_SCREEN_ALIGN */ |