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 <ag...@denx.de>
---
 common/cmd_bmp.c            |    3 +++
 common/lcd.c                |   19 ++-----------------
 common/splash.c             |   25 +++++++++++++++++++++++++
 drivers/video/cfb_console.c |   24 ++----------------------
 include/splash.h            |    7 +++++++
 5 files changed, 39 insertions(+), 39 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 */
diff --git a/drivers/video/cfb_console.c b/drivers/video/cfb_console.c
index 785bbcf..e384b71 100644
--- a/drivers/video/cfb_console.c
+++ b/drivers/video/cfb_console.c
@@ -222,11 +222,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
 
 /*
@@ -1976,23 +1972,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
-- 
1.7.9.5

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to