arm: qemu: Enumerate virtio bus during early boot
authorBin Meng <bmeng.cn@gmail.com>
Mon, 15 Oct 2018 09:21:19 +0000 (02:21 -0700)
committerSimon Glass <sjg@chromium.org>
Wed, 14 Nov 2018 17:16:28 +0000 (09:16 -0800)
Currently devices on the virtio bus is not automatically enumerated,
which means peripherals on the virtio bus are not discovered by their
drivers. This uses board_init() to do the virtio enumeration.

Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
board/emulation/qemu-arm/Kconfig
board/emulation/qemu-arm/qemu-arm.c

index d1c08c2f6a808136af3e864bd18b751f73223b11..02ae4d9884d632225be97a7f2f050cef3e0d7ac3 100644 (file)
@@ -5,5 +5,9 @@ config SYS_TEXT_BASE
 
 config BOARD_SPECIFIC_OPTIONS # dummy
        def_bool y
+       imply VIRTIO_MMIO
+       imply VIRTIO_PCI
+       imply VIRTIO_NET
+       imply VIRTIO_BLK
 
 endif
index 812c90636d7cc59a5581558f8f8791b1dd9a0525..e1f4709c4cfb981e90d8ed2f999cb328f5dded42 100644 (file)
@@ -2,8 +2,12 @@
 /*
  * Copyright (c) 2017 Tuomas Tynkkynen
  */
+
 #include <common.h>
+#include <dm.h>
 #include <fdtdec.h>
+#include <virtio_types.h>
+#include <virtio.h>
 
 #ifdef CONFIG_ARM64
 #include <asm/armv8/mmu.h>
@@ -58,6 +62,12 @@ struct mm_region *mem_map = qemu_arm64_mem_map;
 
 int board_init(void)
 {
+       /*
+        * Make sure virtio bus is enumerated so that peripherals
+        * on the virtio bus can be discovered by their drivers
+        */
+       virtio_init();
+
        return 0;
 }