Explorar o código

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>
Simon Glass %!s(int64=2) %!d(string=hai) anos
pai
achega
d8bf49fa20
Modificáronse 3 ficheiros con 16 adicións e 0 borrados
  1. 14 0
      common/splash_source.c
  2. 1 0
      include/splash.h
  3. 1 0
      include/virtio.h

+ 14 - 0
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);
 

+ 1 - 0
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 {

+ 1 - 0
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 */