Message ID | 20230822121026.1007105-7-alpernebiyasak@gmail.com |
---|---|
State | Changes Requested |
Delegated to: | Anatolij Gustschin |
Headers | show |
Series | Add support for QEMU's ramfb display | expand |
Hi Alper, On Tue, 22 Aug 2023 at 06:10, Alper Nebi Yasak <alpernebiyasak@gmail.com> wrote: > > From: Alexander Graf <agraf@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@csgraf.de> > [Alper: Rebase on bochs changes, add pre-reloc init and error handling] > Co-developed-by: Alper Nebi Yasak <alpernebiyasak@gmail.com> > Signed-off-by: Alper Nebi Yasak <alpernebiyasak@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(+) Again, please investigate DT mechanism which will work for all archs. Regards, Simon
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) { /*