From 716161663ec4904f0487308dd428ceb8b42bcf5d Mon Sep 17 00:00:00 2001 From: Bin Meng Date: Sun, 23 Jul 2023 12:40:33 +0800 Subject: riscv: qemu: Enable Bochs video support Enable video console using the emulated Bochs VGA card. Signed-off-by: Bin Meng Reviewed-by: Simon Glass --- include/configs/qemu-riscv.h | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'include') diff --git a/include/configs/qemu-riscv.h b/include/configs/qemu-riscv.h index f6d326bda0d..7ec3d12ce10 100644 --- a/include/configs/qemu-riscv.h +++ b/include/configs/qemu-riscv.h @@ -17,6 +17,10 @@ /* Environment options */ +#define CFG_STD_DEVICES_SETTINGS "stdin=serial\0" \ + "stdout=serial,vidconsole\0" \ + "stderr=serial,vidconsole\0" + #define BOOT_TARGET_DEVICES(func) \ func(QEMU, qemu, na) \ func(VIRTIO, virtio, 0) \ @@ -35,6 +39,7 @@ "qemu " #define CFG_EXTRA_ENV_SETTINGS \ + CFG_STD_DEVICES_SETTINGS \ "fdt_high=0xffffffffffffffff\0" \ "initrd_high=0xffffffffffffffff\0" \ "kernel_addr_r=0x84000000\0" \ -- cgit v1.3.1 From 75bfc6fac5918eba48ddfe608f0a1c6a89d47168 Mon Sep 17 00:00:00 2001 From: Bin Meng Date: Sun, 23 Jul 2023 12:40:35 +0800 Subject: console: Make stdio_print_current_devices() static As it is only called in common/console.c Signed-off-by: Bin Meng Reviewed-by: Simon Glass Tested-by: Simon Glass # qemu-x86_64 --- common/console.c | 2 +- include/stdio_dev.h | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) (limited to 'include') diff --git a/common/console.c b/common/console.c index 71ad8efd6f4..d0640ba05a9 100644 --- a/common/console.c +++ b/common/console.c @@ -1010,7 +1010,7 @@ int console_init_f(void) return 0; } -void stdio_print_current_devices(void) +static void stdio_print_current_devices(void) { /* Print information */ puts("In: "); diff --git a/include/stdio_dev.h b/include/stdio_dev.h index 77bf8a8970f..7f181020524 100644 --- a/include/stdio_dev.h +++ b/include/stdio_dev.h @@ -84,8 +84,6 @@ int stdio_init_tables(void); */ int stdio_add_devices(void); -void stdio_print_current_devices(void); - /** * stdio_deregister_dev() - deregister the device "devname". * -- cgit v1.3.1 From 124308e67b6e1b6597ef34899211abac9bf7fd60 Mon Sep 17 00:00:00 2001 From: Bin Meng Date: Sun, 23 Jul 2023 12:40:40 +0800 Subject: riscv: qemu: Remove out-of-date "riscv, kernel-start" handling Commit 66ffe57 ("riscv: qemu: detect and boot the kernel passed by QEMU") added some logic to handle "riscv,kernel-start" in DT and stored the address to an environment variable kernel_start. However this "riscv,kernel-start" has never been an upstream DT binding. The upstream QEMU never generates such a DT either. Presumably U-Boot development was based on a downstream QEMU fork. Now we drop all codes in commit 66ffe57, except that BOARD_LATE_INIT is kept for later use. Signed-off-by: Bin Meng Reviewed-by: Rick Chen Reviewed-by: Simon Glass --- board/emulation/qemu-riscv/qemu-riscv.c | 24 ------------------------ include/configs/qemu-riscv.h | 10 ---------- 2 files changed, 34 deletions(-) (limited to 'include') diff --git a/board/emulation/qemu-riscv/qemu-riscv.c b/board/emulation/qemu-riscv/qemu-riscv.c index ae3b7a3295c..f39f3be3663 100644 --- a/board/emulation/qemu-riscv/qemu-riscv.c +++ b/board/emulation/qemu-riscv/qemu-riscv.c @@ -41,30 +41,6 @@ int board_init(void) int board_late_init(void) { - ulong kernel_start; - ofnode chosen_node; - int ret; - - chosen_node = ofnode_path("/chosen"); - if (!ofnode_valid(chosen_node)) { - debug("No chosen node found, can't get kernel start address\n"); - return 0; - } - -#ifdef CONFIG_ARCH_RV64I - ret = ofnode_read_u64(chosen_node, "riscv,kernel-start", - (u64 *)&kernel_start); -#else - ret = ofnode_read_u32(chosen_node, "riscv,kernel-start", - (u32 *)&kernel_start); -#endif - if (ret) { - debug("Can't find kernel start address in device tree\n"); - return 0; - } - - env_set_hex("kernel_start", kernel_start); - return 0; } diff --git a/include/configs/qemu-riscv.h b/include/configs/qemu-riscv.h index 7ec3d12ce10..d5146e70f7b 100644 --- a/include/configs/qemu-riscv.h +++ b/include/configs/qemu-riscv.h @@ -22,22 +22,12 @@ "stderr=serial,vidconsole\0" #define BOOT_TARGET_DEVICES(func) \ - func(QEMU, qemu, na) \ func(VIRTIO, virtio, 0) \ func(SCSI, scsi, 0) \ func(DHCP, dhcp, na) #include -#define BOOTENV_DEV_QEMU(devtypeu, devtypel, instance) \ - "bootcmd_qemu=" \ - "if env exists kernel_start; then " \ - "bootm ${kernel_start} - ${fdtcontroladdr};" \ - "fi;\0" - -#define BOOTENV_DEV_NAME_QEMU(devtypeu, devtypel, instance) \ - "qemu " - #define CFG_EXTRA_ENV_SETTINGS \ CFG_STD_DEVICES_SETTINGS \ "fdt_high=0xffffffffffffffff\0" \ -- cgit v1.3.1 From 02be57caf730e2213bc844bf1dbe58bedd2c3734 Mon Sep 17 00:00:00 2001 From: Bin Meng Date: Sun, 23 Jul 2023 12:40:41 +0800 Subject: riscv: qemu: Enable usb keyboard as an input device 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 Reviewed-by: Rick Chen Reviewed-by: Simon Glass --- 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(-) (limited to 'include') diff --git a/board/emulation/qemu-riscv/Kconfig b/board/emulation/qemu-riscv/Kconfig index 7220c55350e..b503578d274 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 f39f3be3663..181abbbf97d 100644 --- a/board/emulation/qemu-riscv/qemu-riscv.c +++ b/board/emulation/qemu-riscv/qemu-riscv.c @@ -12,6 +12,7 @@ #include #include #include +#include #include #include @@ -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(); + return 0; } diff --git a/doc/board/emulation/qemu-riscv.rst b/doc/board/emulation/qemu-riscv.rst index 9d21f3270c6..61137bcbf1c 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 d5146e70f7b..584559cfa32 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" -- cgit v1.3.1