Re: [U-Boot] [RESEND, RFC 1/1] splash: display splash in DM_VIDEO configurations

2019-05-28 Thread Anatolij Gustschin
On Tue, 28 May 2019 15:19:37 +
Igor Opaniuk igor.opan...@toradex.com wrote:
...
> 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)

splash_display() also depends on code in cmd/bmp.c so please use
#if defined(CONFIG_SPLASH_SCREEN) && defined(CONFIG_CMD_BMP)
here to prevent link errors.

...
> diff --git a/common/stdio.c b/common/stdio.c
> index ee22c1fd58..22de7aa491 100644
> --- a/common/stdio.c
> +++ b/common/stdio.c
...
> @@ -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

#if defined(CONFIG_SPLASH_SCREEN) && defined(CONFIG_CMD_BMP)

> + splash_display();
> +#endif /* CONFIG_SPLASH_SCREEN */
>  #else
>  # if defined(CONFIG_LCD)
>   drv_lcd_init ();

--
Anatolij
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


[U-Boot] [RESEND, RFC 1/1] splash: display splash in DM_VIDEO configurations

2019-05-28 Thread Igor Opaniuk
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 
---
 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..a55f1620a1 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_display() == 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 
 #include 
 #include 
+#include 
 
 #if defined(CONFIG_SYS_I2C)
 #include 
@@ -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

___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot