All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [RFC 1/1] splash: display splash in DM_VIDEO configurations
@ 2019-05-28 15:15 Igor Opaniuk
  0 siblings, 0 replies; only message in thread
From: Igor Opaniuk @ 2019-05-28 15:15 UTC (permalink / raw)
  To: u-boot

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>
---
 common/lcd.c     | 10 +++-------
 common/splash.c  | 16 ++++++++++++++--
 common/stdio.c   |  4 ++++
 include/splash.h |  6 +++---
 4 files changed, 24 insertions(+), 12 deletions(-)

diff --git a/common/lcd.c b/common/lcd.c
index 95526b1e17..1c5d8adb47 100644
--- a/common/lcd.c
+++ b/common/lcd.c
@@ -222,14 +222,10 @@ void lcd_clear(void)
 	/* Paint the logo and retrieve LCD base address */
 	debug("[LCD] Drawing the logo...\n");
 	if (do_splash) {
-		s = env_get("splashimage");
-		if (s) {
+		if (splash_show() == 0) {
 			do_splash = 0;
-			addr = simple_strtoul(s, NULL, 16);
-			if (lcd_splash(addr) == 0) {
-				lcd_sync();
-				return;
-			}
+			lcd_sync();
+			return;
 		}
 	}
 
diff --git a/common/splash.c b/common/splash.c
index d251b3b654..f026390393 100644
--- a/common/splash.c
+++ b/common/splash.c
@@ -80,11 +80,23 @@ void splash_get_pos(int *x, int *y)
 }
 #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)
+int splash_display(void)
 {
+	ulong addr;
+	char *s;
 	int x = 0, y = 0, ret;
 
+	s = env_get("splashimage");
+	if (!s)
+		return -EINVAL;
+
+	addr = simple_strtoul(s, NULL, 16);
 	ret = splash_screen_prepare();
 	if (ret)
 		return ret;
diff --git a/common/stdio.c b/common/stdio.c
index ee22c1fd58..22de7aa491 100644
--- a/common/stdio.c
+++ b/common/stdio.c
@@ -16,6 +16,7 @@
 #include <malloc.h>
 #include <stdio_dev.h>
 #include <serial.h>
+#include <splash.h>
 
 #if defined(CONFIG_SYS_I2C)
 #include <i2c.h>
@@ -366,6 +367,9 @@ int stdio_add_devices(void)
 	if (ret)
 		printf("%s: Video device failed (ret=%d)\n", __func__, ret);
 #endif /* !CONFIG_SYS_CONSOLE_IS_IN_ENV */
+#ifdef CONFIG_SPLASH_SCREEN
+	splash_display();
+#endif /* CONFIG_SPLASH_SCREEN */
 #else
 # if defined(CONFIG_LCD)
 	drv_lcd_init ();
diff --git a/include/splash.h b/include/splash.h
index 228aff441b..4ed8d60325 100644
--- a/include/splash.h
+++ b/include/splash.h
@@ -66,10 +66,10 @@ void splash_get_pos(int *x, int *y);
 static inline void splash_get_pos(int *x, int *y) { }
 #endif
 
-#if defined(CONFIG_SPLASH_SCREEN) && defined(CONFIG_LCD)
-int lcd_splash(ulong addr);
+#ifdef CONFIG_SPLASH_SCREEN
+int splash_display(void);
 #else
-static inline int lcd_splash(ulong addr)
+static inline int splash_display(void)
 {
 	return -ENOSYS;
 }
-- 
2.17.1

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2019-05-28 15:15 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-05-28 15:15 [U-Boot] [RFC 1/1] splash: display splash in DM_VIDEO configurations Igor Opaniuk

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.