diff --git a/common/cmd_bmp.c b/common/cmd_bmp.c
index 946031deaab4655ed9643f5e61e68cec24a6f083..a7c5fbd2691273da14f9ced2c7c3310773e4c001 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 95006aa124194492297c4367e4ad06cbf836a436..50ea4d6cacc2b9681f3a16325ecdcdcdb6abbf5e 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 c7444977ed7fad566e5322520b99ea53f7e42e9e..18885f1bfe6e6878633cbe80affaef89c2b93f20 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 785bbcfc3206247fb6525117e4b28689c68c5b57..e384b71401f8c144bd80e647460ea394a59971a2 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 a8dd151c734f53253dd614e8a318943df071b767..89ee7b22ec2b324f4c29f37018242a91a42259a7 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