[PATCH v2 6/7] riscv: qemu: Enable ramfb by default
Alper Nebi Yasak
alpernebiyasak at gmail.com
Tue Aug 22 14:10:24 CEST 2023
From: Alexander Graf <agraf at csgraf.de>
Now that we have everything in place to support ramfb, let's wire it up
by default in the RISC-V QEMU targets. That way, you can easily use a
graphical console by just passing -device ramfb to the QEMU command line.
Signed-off-by: Alexander Graf <agraf at csgraf.de>
[Alper: Rebase on bochs changes, add pre-reloc init and error handling]
Co-developed-by: Alper Nebi Yasak <alpernebiyasak at gmail.com>
Signed-off-by: Alper Nebi Yasak <alpernebiyasak at gmail.com>
---
Changes in v2:
- Drop imply VIDEO, env changes from RISC-V patch (in u-boot/next)
- Drop imply SYS_CONSOLE_IS_IN_ENV from RISC-V patch (def. y if VIDEO)
- Probe QFW in RISC-V QEMU board_early_init_f to bind ramfb pre-reloc
- Add IS_ENABLED(CONFIG_QFW) check and error handling to RISC-V QEMU
board/emulation/qemu-riscv/Kconfig | 5 +++
board/emulation/qemu-riscv/qemu-riscv.c | 41 +++++++++++++++++++++++++
2 files changed, 46 insertions(+)
diff --git a/board/emulation/qemu-riscv/Kconfig b/board/emulation/qemu-riscv/Kconfig
index d56b4b5bc1ed..b5c72982e565 100644
--- a/board/emulation/qemu-riscv/Kconfig
+++ b/board/emulation/qemu-riscv/Kconfig
@@ -82,5 +82,10 @@ config BOARD_SPECIFIC_OPTIONS # dummy
imply USB_XHCI_PCI
imply USB_KEYBOARD
imply CMD_USB
+ imply BOARD_EARLY_INIT_F
+ imply BOARD_EARLY_INIT_R
+ imply VIDEO_RAMFB
+ imply CMD_QFW
+ imply QFW_MMIO
endif
diff --git a/board/emulation/qemu-riscv/qemu-riscv.c b/board/emulation/qemu-riscv/qemu-riscv.c
index 181abbbf97d8..1041e936e9d1 100644
--- a/board/emulation/qemu-riscv/qemu-riscv.c
+++ b/board/emulation/qemu-riscv/qemu-riscv.c
@@ -10,6 +10,7 @@
#include <fdtdec.h>
#include <image.h>
#include <log.h>
+#include <qfw.h>
#include <spl.h>
#include <init.h>
#include <usb.h>
@@ -29,6 +30,46 @@ int is_flash_available(void)
}
#endif
+int board_early_init_f(void)
+{
+ struct udevice *dev;
+ int ret;
+
+ /*
+ * Make sure we enumerate the QEMU Firmware device to bind ramfb
+ * so video_reserve() can reserve memory for it.
+ */
+ if (IS_ENABLED(CONFIG_QFW)) {
+ ret = qfw_get_dev(&dev);
+ if (ret) {
+ log_err("Failed to get QEMU FW device: %d\n", ret);
+ return ret;
+ }
+ }
+
+ return 0;
+}
+
+int board_early_init_r(void)
+{
+ struct udevice *dev;
+ int ret;
+
+ /*
+ * Make sure we enumerate the QEMU Firmware device to find ramfb
+ * before console_init.
+ */
+ if (IS_ENABLED(CONFIG_QFW)) {
+ ret = qfw_get_dev(&dev);
+ if (ret) {
+ log_err("Failed to get QEMU FW device: %d\n", ret);
+ return ret;
+ }
+ }
+
+ return 0;
+}
+
int board_init(void)
{
/*
--
2.40.1
More information about the U-Boot
mailing list