mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-23 22:14:54 +00:00
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
4 changed files with 25 additions and 14 deletions
13
common/lcd.c
13
common/lcd.c
|
@ -171,8 +171,7 @@ int drv_lcd_init(void)
|
||||||
void lcd_clear(void)
|
void lcd_clear(void)
|
||||||
{
|
{
|
||||||
int bg_color;
|
int bg_color;
|
||||||
char *s;
|
__maybe_unused ulong addr;
|
||||||
ulong addr;
|
|
||||||
static int do_splash = 1;
|
static int do_splash = 1;
|
||||||
#if LCD_BPP == LCD_COLOR8
|
#if LCD_BPP == LCD_COLOR8
|
||||||
/* Setting the palette */
|
/* Setting the palette */
|
||||||
|
@ -222,14 +221,10 @@ void lcd_clear(void)
|
||||||
/* Paint the logo and retrieve LCD base address */
|
/* Paint the logo and retrieve LCD base address */
|
||||||
debug("[LCD] Drawing the logo...\n");
|
debug("[LCD] Drawing the logo...\n");
|
||||||
if (do_splash) {
|
if (do_splash) {
|
||||||
s = env_get("splashimage");
|
if (splash_display() == 0) {
|
||||||
if (s) {
|
|
||||||
do_splash = 0;
|
do_splash = 0;
|
||||||
addr = simple_strtoul(s, NULL, 16);
|
lcd_sync();
|
||||||
if (lcd_splash(addr) == 0) {
|
return;
|
||||||
lcd_sync();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -80,11 +80,23 @@ void splash_get_pos(int *x, int *y)
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_SPLASH_SCREEN_ALIGN */
|
#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;
|
int x = 0, y = 0, ret;
|
||||||
|
|
||||||
|
s = env_get("splashimage");
|
||||||
|
if (!s)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
addr = simple_strtoul(s, NULL, 16);
|
||||||
ret = splash_screen_prepare();
|
ret = splash_screen_prepare();
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
#include <malloc.h>
|
#include <malloc.h>
|
||||||
#include <stdio_dev.h>
|
#include <stdio_dev.h>
|
||||||
#include <serial.h>
|
#include <serial.h>
|
||||||
|
#include <splash.h>
|
||||||
|
|
||||||
#if defined(CONFIG_SYS_I2C)
|
#if defined(CONFIG_SYS_I2C)
|
||||||
#include <i2c.h>
|
#include <i2c.h>
|
||||||
|
@ -366,6 +367,9 @@ int stdio_add_devices(void)
|
||||||
if (ret)
|
if (ret)
|
||||||
printf("%s: Video device failed (ret=%d)\n", __func__, ret);
|
printf("%s: Video device failed (ret=%d)\n", __func__, ret);
|
||||||
#endif /* !CONFIG_SYS_CONSOLE_IS_IN_ENV */
|
#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
|
#else
|
||||||
# if defined(CONFIG_LCD)
|
# if defined(CONFIG_LCD)
|
||||||
drv_lcd_init ();
|
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) { }
|
static inline void splash_get_pos(int *x, int *y) { }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(CONFIG_SPLASH_SCREEN) && defined(CONFIG_LCD)
|
#if defined(CONFIG_SPLASH_SCREEN) && defined(CONFIG_CMD_BMP)
|
||||||
int lcd_splash(ulong addr);
|
int splash_display(void);
|
||||||
#else
|
#else
|
||||||
static inline int lcd_splash(ulong addr)
|
static inline int splash_display(void)
|
||||||
{
|
{
|
||||||
return -ENOSYS;
|
return -ENOSYS;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue