diff options
| author | Anatolij Gustschin <agust@denx.de> | 2013-07-02 00:04:05 +0200 | 
|---|---|---|
| committer | Anatolij Gustschin <agust@denx.de> | 2013-07-08 20:21:24 +0200 | 
| commit | ff8fb56b6f7edafc1bcba8ef008b3f368cabe60d (patch) | |
| tree | 2db117f992892120bab9ab04b212700642adf0e7 | |
| parent | 327598945b13000065ca6ba3fe96c9bd45320999 (diff) | |
| download | olio-uboot-2014.01-ff8fb56b6f7edafc1bcba8ef008b3f368cabe60d.tar.xz olio-uboot-2014.01-ff8fb56b6f7edafc1bcba8ef008b3f368cabe60d.zip | |
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>
| -rw-r--r-- | common/cmd_bmp.c | 3 | ||||
| -rw-r--r-- | common/lcd.c | 17 | ||||
| -rw-r--r-- | common/splash.c | 25 | ||||
| -rw-r--r-- | drivers/video/cfb_console.c | 24 | ||||
| -rw-r--r-- | include/splash.h | 7 | 
5 files changed, 38 insertions, 38 deletions
| diff --git a/common/cmd_bmp.c b/common/cmd_bmp.c index 946031dea..a7c5fbd26 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 95006aa12..50ea4d6ca 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 c7444977e..18885f1bf 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 785bbcfc3..e384b7140 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 a8dd151c7..89ee7b22e 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 |