splash: fix logo drawing if CONFIG_VIDEO_LOGO enabled
authorAnatolij Gustschin <agust@denx.de>
Wed, 18 Sep 2019 14:47:33 +0000 (16:47 +0200)
committerAnatolij Gustschin <agust@denx.de>
Sat, 21 Sep 2019 08:12:55 +0000 (10:12 +0200)
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>
common/splash.c

index e15cc847b68c0fdfc61615a87ab271582fa9098a..1a5db69a7e3131dff99b72d266c923d5cc041f11 100644 (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