splash: display splash in DM_VIDEO configurations
Currently for CONFIG_DM_VIDEO=y setting splashimage env variable doesn't have any effect. Introduce a common function for both dm-video/lcd stacks, that checks env("splashimage") and invokes bmp_display() accordingly. For additional details please check discussion [1]. [1] https://lists.denx.de/pipermail/u-boot/2019-May/371002.html Signed-off-by: Igor Opaniuk <igor.opaniuk@toradex.com>
This commit is contained in:
parent
38c2a8a001
commit
5eb83c0ac1
13
common/lcd.c
13
common/lcd.c
@ -171,8 +171,7 @@ int drv_lcd_init(void)
|
||||
void lcd_clear(void)
|
||||
{
|
||||
int bg_color;
|
||||
char *s;
|
||||
ulong addr;
|
||||
__maybe_unused ulong addr;
|
||||
static int do_splash = 1;
|
||||
#if LCD_BPP == LCD_COLOR8
|
||||
/* Setting the palette */
|
||||
@ -222,14 +221,10 @@ void lcd_clear(void)
|
||||
/* Paint the logo and retrieve LCD base address */
|
||||
debug("[LCD] Drawing the logo...\n");
|
||||
if (do_splash) {
|
||||
s = env_get("splashimage");
|
||||
if (s) {
|
||||
if (splash_display() == 0) {
|
||||
do_splash = 0;
|
||||
addr = simple_strtoul(s, NULL, 16);
|
||||
if (lcd_splash(addr) == 0) {
|
||||
lcd_sync();
|
||||
return;
|
||||
}
|
||||
lcd_sync();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -80,11 +80,23 @@ void splash_get_pos(int *x, int *y)
|
||||
}
|
||||
#endif /* CONFIG_SPLASH_SCREEN_ALIGN */
|
||||
|
||||
#if defined(CONFIG_SPLASH_SCREEN) && defined(CONFIG_LCD)
|
||||
int lcd_splash(ulong addr)
|
||||
/*
|
||||
* Common function to show a splash image if env("splashimage") is set.
|
||||
* Is used for both dm_video and lcd video stacks. For additional
|
||||
* details please refer to doc/README.splashprepare.
|
||||
*/
|
||||
#if defined(CONFIG_SPLASH_SCREEN) && defined(CONFIG_CMD_BMP)
|
||||
int splash_display(void)
|
||||
{
|
||||
ulong addr;
|
||||
char *s;
|
||||
int x = 0, y = 0, ret;
|
||||
|
||||
s = env_get("splashimage");
|
||||
if (!s)
|
||||
return -EINVAL;
|
||||
|
||||
addr = simple_strtoul(s, NULL, 16);
|
||||
ret = splash_screen_prepare();
|
||||
if (ret)
|
||||
return ret;
|
||||
|
@ -16,6 +16,7 @@
|
||||
#include <malloc.h>
|
||||
#include <stdio_dev.h>
|
||||
#include <serial.h>
|
||||
#include <splash.h>
|
||||
|
||||
#if defined(CONFIG_SYS_I2C)
|
||||
#include <i2c.h>
|
||||
@ -366,6 +367,9 @@ int stdio_add_devices(void)
|
||||
if (ret)
|
||||
printf("%s: Video device failed (ret=%d)\n", __func__, ret);
|
||||
#endif /* !CONFIG_SYS_CONSOLE_IS_IN_ENV */
|
||||
#if defined(CONFIG_SPLASH_SCREEN) && defined(CONFIG_CMD_BMP)
|
||||
splash_display();
|
||||
#endif /* CONFIG_SPLASH_SCREEN && CONFIG_CMD_BMP */
|
||||
#else
|
||||
# if defined(CONFIG_LCD)
|
||||
drv_lcd_init ();
|
||||
|
@ -66,10 +66,10 @@ void splash_get_pos(int *x, int *y);
|
||||
static inline void splash_get_pos(int *x, int *y) { }
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_SPLASH_SCREEN) && defined(CONFIG_LCD)
|
||||
int lcd_splash(ulong addr);
|
||||
#if defined(CONFIG_SPLASH_SCREEN) && defined(CONFIG_CMD_BMP)
|
||||
int splash_display(void);
|
||||
#else
|
||||
static inline int lcd_splash(ulong addr)
|
||||
static inline int splash_display(void)
|
||||
{
|
||||
return -ENOSYS;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user