summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnatolij Gustschin <agust@denx.de>2013-07-02 00:04:05 +0200
committerLiu Ying <Ying.Liu@freescale.com>2013-11-22 17:27:30 +0800
commit790ebb68ced1343f468bfd718d9d8b201d1f023f (patch)
tree793b9824d760b30f574b3a9fc0bc63ae07f7b85e
parent4ace33edd0798c0974c94289d1771c844a4adc57 (diff)
downloadu-boot-imx-790ebb68ced1343f468bfd718d9d8b201d1f023f.zip
u-boot-imx-790ebb68ced1343f468bfd718d9d8b201d1f023f.tar.gz
u-boot-imx-790ebb68ced1343f468bfd718d9d8b201d1f023f.tar.bz2
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> (cherry picked from commit ff8fb56b6f7edafc1bcba8ef008b3f368cabe60d) Signed-off-by: Jason Liu <r64343@freescale.com> (cherry picked from commit 9eba1a8ff0b87142306b557559be8a2a5e6e839a)
-rw-r--r--common/cmd_bmp.c3
-rw-r--r--common/lcd.c19
-rw-r--r--common/splash.c25
-rw-r--r--drivers/video/cfb_console.c24
-rw-r--r--include/splash.h7
5 files changed, 39 insertions, 39 deletions
diff --git a/common/cmd_bmp.c b/common/cmd_bmp.c
index 5a52edd..ecbf266 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);
@@ -113,6 +114,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 */
diff --git a/drivers/video/cfb_console.c b/drivers/video/cfb_console.c
index 35ef5cd..7afe492 100644
--- a/drivers/video/cfb_console.c
+++ b/drivers/video/cfb_console.c
@@ -218,11 +218,7 @@
#if defined(CONFIG_CMD_BMP) || defined(CONFIG_SPLASH_SCREEN)
#include <watchdog.h>
#include <bmp_layout.h>
-
-#ifdef CONFIG_SPLASH_SCREEN_ALIGN
-#define BMP_ALIGN_CENTER 0x7FFF
-#endif
-
+#include <splash.h>
#endif
/*
@@ -1972,23 +1968,7 @@ static void *video_logo(void)
__maybe_unused ulong addr;
__maybe_unused char *s;
-#ifdef CONFIG_SPLASH_SCREEN_ALIGN
- s = getenv("splashpos");
- if (s != NULL) {
- if (s[0] == 'm')
- video_logo_xpos = BMP_ALIGN_CENTER;
- else
- video_logo_xpos = simple_strtol(s, NULL, 0);
-
- s = strchr(s + 1, ',');
- if (s != NULL) {
- if (s[1] == 'm')
- video_logo_ypos = BMP_ALIGN_CENTER;
- else
- video_logo_ypos = simple_strtol(s + 1, NULL, 0);
- }
- }
-#endif /* CONFIG_SPLASH_SCREEN_ALIGN */
+ splash_get_pos(&video_logo_xpos, &video_logo_ypos);
#ifdef CONFIG_SPLASH_SCREEN
s = getenv("splashimage");
diff --git a/include/splash.h b/include/splash.h
index a8dd151..89ee7b2 100644
--- a/include/splash.h
+++ b/include/splash.h
@@ -25,5 +25,12 @@
int splash_screen_prepare(void);
+#ifdef CONFIG_SPLASH_SCREEN_ALIGN
+void splash_get_pos(int *x, int *y);
+#else
+static inline void splash_get_pos(int *x, int *y) { }
+#endif
+
+#define BMP_ALIGN_CENTER 0x7FFF
#endif