From: Anatolij Gustschin Date: Wed, 18 Sep 2019 14:47:33 +0000 (+0200) Subject: splash: fix logo drawing if CONFIG_VIDEO_LOGO enabled X-Git-Url: http://git.dujemihanovic.xyz/login.html?a=commitdiff_plain;h=7600d62eafb2a0083f827a843fb277e3a561a237;p=u-boot.git 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 --- diff --git a/common/splash.c b/common/splash.c index e15cc847b6..1a5db69a7e 100644 --- a/common/splash.c +++ b/common/splash.c @@ -52,10 +52,41 @@ static struct splash_location default_splash_locations[] = { }, }; +#if defined(CONFIG_DM_VIDEO) && defined(CONFIG_VIDEO_LOGO) + +#include + +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