
Am 23. Juli 2023 10:38:00 MESZ schrieb Mark Kettenis mark.kettenis@xs4all.nl:
From: Bin Meng bmeng@tinylab.org Date: Sun, 23 Jul 2023 12:40:41 +0800
This brings PCI xHCI support to QEMU RISC-V and uses a usb keyboard as one of the input devices.
Signed-off-by: Bin Meng bmeng@tinylab.org
board/emulation/qemu-riscv/Kconfig | 5 +++++ board/emulation/qemu-riscv/qemu-riscv.c | 5 +++++ doc/board/emulation/qemu-riscv.rst | 5 +++++ include/configs/qemu-riscv.h | 2 +- 4 files changed, 16 insertions(+), 1 deletion(-)
diff --git a/board/emulation/qemu-riscv/Kconfig b/board/emulation/qemu-riscv/Kconfig index 7220c55350..b503578d27 100644 --- a/board/emulation/qemu-riscv/Kconfig +++ b/board/emulation/qemu-riscv/Kconfig @@ -76,5 +76,10 @@ config BOARD_SPECIFIC_OPTIONS # dummy imply VIDEO_BOCHS imply SYS_WHITE_ON_BLACK imply PRE_CONSOLE_BUFFER
- imply USB
- imply USB_XHCI_HCD
- imply USB_XHCI_PCI
- imply USB_KEYBOARD
- imply CMD_USB
endif diff --git a/board/emulation/qemu-riscv/qemu-riscv.c b/board/emulation/qemu-riscv/qemu-riscv.c index f39f3be366..181abbbf97 100644 --- a/board/emulation/qemu-riscv/qemu-riscv.c +++ b/board/emulation/qemu-riscv/qemu-riscv.c @@ -12,6 +12,7 @@ #include <log.h> #include <spl.h> #include <init.h> +#include <usb.h> #include <virtio_types.h> #include <virtio.h>
@@ -41,6 +42,10 @@ int board_init(void)
int board_late_init(void) {
- /* start usb so that usb keyboard can be used as input device */
- if (CONFIG_IS_ENABLED(USB_KEYBOARD))
usb_init();
This is typically handled by including "usb start" in CONFIG_PREBOOT, which is done by boot/Kconfig. Any reason why that doesn't work for you?
We run pci_init() in board_r.c. Why don't do the same for USB instead of the PREBOOT quirk?
Regards
Heinrich
return 0; }
diff --git a/doc/board/emulation/qemu-riscv.rst b/doc/board/emulation/qemu-riscv.rst index 9d21f3270c..61137bcbf1 100644 --- a/doc/board/emulation/qemu-riscv.rst +++ b/doc/board/emulation/qemu-riscv.rst @@ -138,6 +138,11 @@ and adding::
-serial stdio -device VGA
+In addition, a usb keyboard can be attached to an emulated xHCI controller in +RISC-V virt machine as an option of input devices by adding::
- -device qemu-xhci,id=xhci -device usb-kbd,bus=xhci.0
Running with KVM
diff --git a/include/configs/qemu-riscv.h b/include/configs/qemu-riscv.h index d5146e70f7..584559cfa3 100644 --- a/include/configs/qemu-riscv.h +++ b/include/configs/qemu-riscv.h @@ -17,7 +17,7 @@
/* Environment options */
-#define CFG_STD_DEVICES_SETTINGS "stdin=serial\0" \ +#define CFG_STD_DEVICES_SETTINGS "stdin=serial,usbkbd\0" \ "stdout=serial,vidconsole\0" \ "stderr=serial,vidconsole\0"
-- 2.34.1