video: Support showing the U-Boot logo
Show the U-Boot logo by default. This is only 7KB in size so seems like a useful default for boards that enable a display. If SPLASH_SCREEN is enabled, it is not enabled by default, so as not to conflict with that feature. Also disable it for tests, since we don't want to complicate the output. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
committed by
Anatolij Gustschin
parent
2c8ee30b97
commit
84e63abfff
@@ -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
|
||||
|
||||
@@ -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/
|
||||
|
||||
@@ -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);
|
||||
|
||||
BIN
drivers/video/u_boot_logo.bmp
Normal file
BIN
drivers/video/u_boot_logo.bmp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 6.8 KiB |
@@ -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;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user