summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/video/Kconfig1
-rw-r--r--drivers/video/Makefile3
-rw-r--r--drivers/video/sandbox_sdl.c2
-rw-r--r--drivers/video/u_boot_logo.bmpbin0 -> 6932 bytes
-rw-r--r--drivers/video/video-uclass.c26
5 files changed, 32 insertions, 0 deletions
diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig
index 7a73ecc1f40..e601b47806b 100644
--- a/drivers/video/Kconfig
+++ b/drivers/video/Kconfig
@@ -17,6 +17,7 @@ config DM_VIDEO
config VIDEO_LOGO
bool "Show the U-Boot logo on the display"
depends on DM_VIDEO
+ select VIDEO_BMP_RLE8
help
This enables showing the U-Boot logo on the display when a video
device is probed. It appears at the top right. The logo itself is at
diff --git a/drivers/video/Makefile b/drivers/video/Makefile
index 8956b5f9b00..4038395b128 100644
--- a/drivers/video/Makefile
+++ b/drivers/video/Makefile
@@ -17,6 +17,9 @@ obj-$(CONFIG_DM_VIDEO) += video_bmp.o
obj-$(CONFIG_PANEL) += panel-uclass.o
obj-$(CONFIG_DM_PANEL_HX8238D) += hx8238d.o
obj-$(CONFIG_SIMPLE_PANEL) += simple_panel.o
+
+obj-$(CONFIG_VIDEO_LOGO) += u_boot_logo.o
+
endif
obj-${CONFIG_EXYNOS_FB} += exynos/
diff --git a/drivers/video/sandbox_sdl.c b/drivers/video/sandbox_sdl.c
index 2afe66fab1a..9081c7da62e 100644
--- a/drivers/video/sandbox_sdl.c
+++ b/drivers/video/sandbox_sdl.c
@@ -82,12 +82,14 @@ static void set_bpp(struct udevice *dev, enum video_log2_bpp l2bpp)
int sandbox_sdl_set_bpp(struct udevice *dev, enum video_log2_bpp l2bpp)
{
+ struct video_uc_plat *uc_plat = dev_get_uclass_plat(dev);
int ret;
if (device_active(dev))
return -EINVAL;
sandbox_sdl_remove_display();
+ uc_plat->hide_logo = true;
set_bpp(dev, l2bpp);
ret = device_probe(dev);
diff --git a/drivers/video/u_boot_logo.bmp b/drivers/video/u_boot_logo.bmp
new file mode 100644
index 00000000000..47f1e9b9978
--- /dev/null
+++ b/drivers/video/u_boot_logo.bmp
Binary files differ
diff --git a/drivers/video/video-uclass.c b/drivers/video/video-uclass.c
index a52b5d93231..7d499bcec51 100644
--- a/drivers/video/video-uclass.c
+++ b/drivers/video/video-uclass.c
@@ -319,6 +319,24 @@ int video_sync_copy_all(struct udevice *dev)
#endif
+#define SPLASH_DECL(_name) \
+ extern u8 __splash_ ## _name ## _begin[]; \
+ extern u8 __splash_ ## _name ## _end[]
+
+#define SPLASH_START(_name) __splash_ ## _name ## _begin
+
+SPLASH_DECL(u_boot_logo);
+
+static int show_splash(struct udevice *dev)
+{
+ u8 *data = SPLASH_START(u_boot_logo);
+ int ret;
+
+ ret = video_bmp_display(dev, map_to_sysmem(data), -4, 4, true);
+
+ return 0;
+}
+
/* Set up the display ready for use */
static int video_post_probe(struct udevice *dev)
{
@@ -384,6 +402,14 @@ static int video_post_probe(struct udevice *dev)
return ret;
}
+ if (IS_ENABLED(CONFIG_VIDEO_LOGO) && !plat->hide_logo) {
+ ret = show_splash(dev);
+ if (ret) {
+ log_debug("Cannot show splash screen\n");
+ return ret;
+ }
+ }
+
return 0;
};