splash: fix logo drawing if CONFIG_VIDEO_LOGO enabled

After mxc_ipuv3 DM_VIDEO conversion board configs with enabled
CONFIG_VIDEO_LOGO do not show splash screen (previosly drawing
splash screen worked via cfb_console driver with CONFIG_VIDEO_LOGO
enabled). Use splash_source library for loading splash images
when CONFIG_SPLASH_SOURCE is selected, otherwise prepare built-in
video logo for drawing.

Signed-off-by: Anatolij Gustschin <agust@denx.de>
This commit is contained in:
Anatolij Gustschin 2019-09-18 16:47:33 +02:00
parent aa8c6294ed
commit 7600d62eaf
1 changed files with 33 additions and 2 deletions

View File

@ -52,10 +52,41 @@ static struct splash_location default_splash_locations[] = {
},
};
#if defined(CONFIG_DM_VIDEO) && defined(CONFIG_VIDEO_LOGO)
#include <bmp_logo_data.h>
static int splash_video_logo_load(void)
{
char *splashimage;
u32 bmp_load_addr;
splashimage = env_get("splashimage");
if (!splashimage)
return -ENOENT;
bmp_load_addr = simple_strtoul(splashimage, 0, 16);
if (!bmp_load_addr) {
printf("Error: bad 'splashimage' address\n");
return -EFAULT;
}
memcpy((void *)bmp_load_addr, bmp_logo_bitmap,
ARRAY_SIZE(bmp_logo_bitmap));
return 0;
}
#else
static inline int splash_video_logo_load(void) { return -ENOSYS; }
#endif
__weak int splash_screen_prepare(void)
{
return splash_source_load(default_splash_locations,
ARRAY_SIZE(default_splash_locations));
if (CONFIG_IS_ENABLED(SPLASH_SOURCE))
return splash_source_load(default_splash_locations,
ARRAY_SIZE(default_splash_locations));
return splash_video_logo_load();
}
#ifdef CONFIG_SPLASH_SCREEN_ALIGN