提交 ff8fb56b 编写于 作者: A Anatolij Gustschin

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: NAnatolij Gustschin <agust@denx.de>
Acked-by: NOtavio Salvador <otavio@ossystems.com.br>
上级 32759894
......@@ -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;
......
......@@ -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;
......
......@@ -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 */
......@@ -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");
......
......@@ -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
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册