diff mbox series

[U-Boot,1/7] splash: fix logo drawing if CONFIG_VIDEO_LOGO enabled

Message ID 20190919173015.18692-2-agust@denx.de
State Accepted
Commit 7600d62eafb2a0083f827a843fb277e3a561a237
Delegated to: Anatolij Gustschin
Headers show
Series Fix splash logo for imx6 boards | expand

Commit Message

Anatolij Gustschin Sept. 19, 2019, 5:30 p.m. UTC
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 | 35 +++++++++++++++++++++++++++++++++--
 1 file changed, 33 insertions(+), 2 deletions(-)
diff mbox series

Patch

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 <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