summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2021-11-19 23:24:05 +0300
committerAnatolij Gustschin <agust@denx.de>2021-12-27 01:33:24 +0300
commitd8bf49fa20bf1bf8b94e574a651e117da21a632c (patch)
tree3c240f9430256bebeab3ef3252c731e9eb35d89d
parent7a8555d871361a1e36152c25826359704c1e46de (diff)
downloadu-boot-d8bf49fa20bf1bf8b94e574a651e117da21a632c.tar.xz
video: Support virtio devices with the splash screen
This is useful for showing a logo when booting from qemu. Signed-off-by: Simon Glass <sjg@chromium.org>
-rw-r--r--common/splash_source.c14
-rw-r--r--include/splash.h1
-rw-r--r--include/virtio.h1
3 files changed, 16 insertions, 0 deletions
diff --git a/common/splash_source.c b/common/splash_source.c
index d05670f5ee..2c03cbdf92 100644
--- a/common/splash_source.c
+++ b/common/splash_source.c
@@ -20,6 +20,7 @@
#include <spi_flash.h>
#include <splash.h>
#include <usb.h>
+#include <virtio.h>
#include <asm/global_data.h>
DECLARE_GLOBAL_DATA_PTR;
@@ -179,6 +180,16 @@ static inline int splash_init_sata(void)
}
#endif
+static int splash_init_virtio(void)
+{
+ if (!IS_ENABLED(CONFIG_VIRTIO)) {
+ printf("Cannot load splash image: no virtio support\n");
+ return -ENOSYS;
+ } else {
+ return virtio_init();
+ }
+}
+
#ifdef CONFIG_CMD_UBIFS
static int splash_mount_ubifs(struct splash_location *location)
{
@@ -233,6 +244,9 @@ static int splash_load_fs(struct splash_location *location, u32 bmp_load_addr)
if (location->storage == SPLASH_STORAGE_SATA)
res = splash_init_sata();
+ if (location->storage == SPLASH_STORAGE_VIRTIO)
+ res = splash_init_virtio();
+
if (location->ubivol != NULL)
res = splash_mount_ubifs(location);
diff --git a/include/splash.h b/include/splash.h
index 7fd2de8fea..33e45e6941 100644
--- a/include/splash.h
+++ b/include/splash.h
@@ -30,6 +30,7 @@ enum splash_storage {
SPLASH_STORAGE_MMC,
SPLASH_STORAGE_USB,
SPLASH_STORAGE_SATA,
+ SPLASH_STORAGE_VIRTIO,
};
enum splash_flags {
diff --git a/include/virtio.h b/include/virtio.h
index a42bdad6b8..34e2bfdcdd 100644
--- a/include/virtio.h
+++ b/include/virtio.h
@@ -20,6 +20,7 @@
#ifndef __VIRTIO_H__
#define __VIRTIO_H__
+#include <virtio_types.h>
#include <linux/bitops.h>
#include <linux/bug.h>
#define VIRTIO_ID_NET 1 /* virtio net */