summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorAnatolij Gustschin <agust@denx.de>2013-07-02 00:04:05 +0200
committerAnatolij Gustschin <agust@denx.de>2013-07-08 20:21:24 +0200
commitff8fb56b6f7edafc1bcba8ef008b3f368cabe60d (patch)
tree2db117f992892120bab9ab04b212700642adf0e7 /common
parent327598945b13000065ca6ba3fe96c9bd45320999 (diff)
video: consolidate splash screen alignment code
Code for checking "splashpos" environment variable is duplicated in drivers, move it to the common function. Call this function also in the bmp display command to consider "splashpos" settings. Signed-off-by: Anatolij Gustschin <agust@denx.de> Acked-by: Otavio Salvador <otavio@ossystems.com.br>
Diffstat (limited to 'common')
-rw-r--r--common/cmd_bmp.c3
-rw-r--r--common/lcd.c19
-rw-r--r--common/splash.c25
3 files changed, 30 insertions, 17 deletions
diff --git a/common/cmd_bmp.c b/common/cmd_bmp.c
index 946031deaab..a7c5fbd2691 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 95006aa1241..50ea4d6cacc 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 c7444977ed7..18885f1bfe6 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 */