Patchwork [U-Boot] video: consolidate splash screen alignment code

login
register
mail settings
Submitter Anatolij Gustschin
Date July 1, 2013, 10:04 p.m.
Message ID <1372716245-25693-1-git-send-email-agust@denx.de>
Download mbox | patch
Permalink /patch/256229/
State Accepted
Delegated to: Anatolij Gustschin
Headers show

Comments

Anatolij Gustschin - July 1, 2013, 10:04 p.m.
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>
---
 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(-)
Otavio Salvador - July 1, 2013, 10:24 p.m.
On Mon, Jul 1, 2013 at 7:04 PM, Anatolij Gustschin <agust@denx.de> wrote:
> 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>

Awesome!

Acked-by: Otavio Salvador <otavio@ossystems.com.br>

--
Otavio Salvador                             O.S. Systems
http://www.ossystems.com.br        http://projetos.ossystems.com.br
Mobile: +55 (53) 9981-7854            Mobile: +1 (347) 903-9750
Anatolij Gustschin - July 8, 2013, 6:47 p.m.
On Tue,  2 Jul 2013 00:04:05 +0200
Anatolij Gustschin <agust@denx.de> wrote:

> 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>
> ---
>  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(-)

Applied to u-boot-video/master. Thanks!

Anatolij

Patch

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