* [PATCH 1/4] video: edid: make accessible without i2c @ 2021-01-01 22:52 Ahmad Fatoum 2021-01-01 22:52 ` [PATCH 2/4] video: edid: make edid_check_header externally visible Ahmad Fatoum ` (2 more replies) 0 siblings, 3 replies; 6+ messages in thread From: Ahmad Fatoum @ 2021-01-01 22:52 UTC (permalink / raw) To: barebox Users can already populate fb_info::edid_data for cases where the EDID doesn't come via an i2c controller managed by barebox. Only thing missing is to be able to compile without i2c, thus drop the dependency. Signed-off-by: Ahmad Fatoum <ahmad@a3f.at> --- drivers/video/Kconfig | 1 - drivers/video/edid.c | 3 +++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig index a26bace176a1..56d009529ea4 100644 --- a/drivers/video/Kconfig +++ b/drivers/video/Kconfig @@ -106,7 +106,6 @@ config DRIVER_VIDEO_SIMPLEFB based on the active barebox framebuffer. config DRIVER_VIDEO_EDID - depends on I2C bool "Add EDID support" help This enabled support for reading and parsing EDID data from an attached diff --git a/drivers/video/edid.c b/drivers/video/edid.c index bee4594118bb..41d40d0297b6 100644 --- a/drivers/video/edid.c +++ b/drivers/video/edid.c @@ -858,6 +858,9 @@ void *edid_read_i2c(struct i2c_adapter *adapter) { u8 *block; + if (!IS_ENABLED(CONFIG_I2C)) + return NULL; + block = xmalloc(EDID_LENGTH); if (edid_do_read_i2c(adapter, block, 0, EDID_LENGTH)) -- 2.29.2 _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 2/4] video: edid: make edid_check_header externally visible 2021-01-01 22:52 [PATCH 1/4] video: edid: make accessible without i2c Ahmad Fatoum @ 2021-01-01 22:52 ` Ahmad Fatoum 2021-01-01 22:52 ` [PATCH 3/4] video: implement bochs dispi / QEMU VGA driver for PCI and ISA Ahmad Fatoum 2021-01-01 22:52 ` [PATCH 4/4] MIPS: qemu-malta_defconfig: enable VGA output Ahmad Fatoum 2 siblings, 0 replies; 6+ messages in thread From: Ahmad Fatoum @ 2021-01-01 22:52 UTC (permalink / raw) To: barebox For non-i2c EDID use, drivers will want to verify the EDID header. We already have a function for this, but internal linkage. Change this and while at it change the type to a more appropriate type. Signed-off-by: Ahmad Fatoum <ahmad@a3f.at> --- drivers/video/edid.c | 8 ++++---- drivers/video/edid.h | 10 ++++++++++ 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/drivers/video/edid.c b/drivers/video/edid.c index 41d40d0297b6..1baff7317b7c 100644 --- a/drivers/video/edid.c +++ b/drivers/video/edid.c @@ -223,19 +223,19 @@ static int edid_checksum(unsigned char *edid) return err; } -static int edid_check_header(unsigned char *edid) +bool edid_check_header(unsigned char *edid) { - int i, err = 1, fix = check_edid(edid); + int i, fix = check_edid(edid); if (fix) fix_edid(edid, fix); for (i = 0; i < 8; i++) { if (edid[i] != edid_v1_header[i]) - err = 0; + return false; } - return err; + return true; } /* diff --git a/drivers/video/edid.h b/drivers/video/edid.h index 006d9f283450..60c5b6422ea5 100644 --- a/drivers/video/edid.h +++ b/drivers/video/edid.h @@ -135,4 +135,14 @@ #define DPMS_SUSPEND (1 << 6) #define DPMS_STANDBY (1 << 7) +/** + * edid_check_header - sanity check the header of the base EDID block + * @raw_edid: pointer to raw base EDID block + * + * Sanity check the header of the base EDID block. + * + * Return: true if the header is perfect, false if any byte is wrong. + */ +bool edid_check_header(unsigned char *edid); + #endif /* __EDID_H__ */ -- 2.29.2 _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 3/4] video: implement bochs dispi / QEMU VGA driver for PCI and ISA 2021-01-01 22:52 [PATCH 1/4] video: edid: make accessible without i2c Ahmad Fatoum 2021-01-01 22:52 ` [PATCH 2/4] video: edid: make edid_check_header externally visible Ahmad Fatoum @ 2021-01-01 22:52 ` Ahmad Fatoum 2021-01-02 11:10 ` [PATCH] fixup! " Ahmad Fatoum 2021-01-05 12:19 ` [PATCH 3/4] " Sascha Hauer 2021-01-01 22:52 ` [PATCH 4/4] MIPS: qemu-malta_defconfig: enable VGA output Ahmad Fatoum 2 siblings, 2 replies; 6+ messages in thread From: Ahmad Fatoum @ 2021-01-01 22:52 UTC (permalink / raw) To: barebox All SVGA devices in Qemu, except for Cirrus, support the bochs display interface, which is very easy to set up. Add a driver for it. This has been tested with: PCI: qemu-system-mips(el) -device VGA + barebox qemu-malta_defconfig ISA: qemu-system-x86_64 -device isa-vga + barebox efi_defconfig Signed-off-by: Ahmad Fatoum <ahmad@a3f.at> --- drivers/video/Kconfig | 2 + drivers/video/Makefile | 2 +- drivers/video/bochs/Kconfig | 22 ++++ drivers/video/bochs/Makefile | 3 + drivers/video/bochs/bochs_hw.c | 203 ++++++++++++++++++++++++++++++++ drivers/video/bochs/bochs_hw.h | 13 ++ drivers/video/bochs/bochs_isa.c | 31 +++++ drivers/video/bochs/bochs_pci.c | 37 ++++++ 8 files changed, 312 insertions(+), 1 deletion(-) create mode 100644 drivers/video/bochs/Kconfig create mode 100644 drivers/video/bochs/Makefile create mode 100644 drivers/video/bochs/bochs_hw.c create mode 100644 drivers/video/bochs/bochs_hw.h create mode 100644 drivers/video/bochs/bochs_isa.c create mode 100644 drivers/video/bochs/bochs_pci.c diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig index 56d009529ea4..9ec6ea4248c1 100644 --- a/drivers/video/Kconfig +++ b/drivers/video/Kconfig @@ -98,6 +98,8 @@ config DRIVER_VIDEO_BCM283X source "drivers/video/imx-ipu-v3/Kconfig" +source "drivers/video/bochs/Kconfig" + config DRIVER_VIDEO_SIMPLEFB bool "Simple framebuffer support" depends on OFTREE diff --git a/drivers/video/Makefile b/drivers/video/Makefile index 01fabe880920..28d0fe205b83 100644 --- a/drivers/video/Makefile +++ b/drivers/video/Makefile @@ -24,4 +24,4 @@ obj-$(CONFIG_DRIVER_VIDEO_IMX_IPUV3) += imx-ipu-v3/ obj-$(CONFIG_DRIVER_VIDEO_EFI_GOP) += efi_gop.o obj-$(CONFIG_DRIVER_VIDEO_FB_SSD1307) += ssd1307fb.o obj-$(CONFIG_BACKLIGHT_RAVE_SP) += rave-sp-backlight.o - +obj-$(CONFIG_DRIVER_VIDEO_BOCHS) += bochs/ diff --git a/drivers/video/bochs/Kconfig b/drivers/video/bochs/Kconfig new file mode 100644 index 000000000000..e23e68f1126c --- /dev/null +++ b/drivers/video/bochs/Kconfig @@ -0,0 +1,22 @@ +config DRIVER_VIDEO_BOCHS + select DRIVER_VIDEO_EDID + bool + +config DRIVER_VIDEO_BOCHS_PCI + bool "bochs dispi / QEMU standard VGA PCI driver" + select DRIVER_VIDEO_BOCHS + depends on PCI + help + Say yes here if you have a PCI VGA display controller that + implements the bochs dispi VBE extension. This is a very simple + interface to drive the graphical output of virtual machines + like bochs, VirtualBox and Qemu (-device VGA). + +config DRIVER_VIDEO_BOCHS_ISA + bool "bochs dispi / QEMU standard VGA ISA driver" + select DRIVER_VIDEO_BOCHS + help + Say yes here if you have a ISA (I/O ports) VGA display controller that + implements the bochs dispi VBE extension. This is a very simple + interface to drive the graphical output of virtual machines + like bochs, VirtualBox and Qemu (-device isa-vga). diff --git a/drivers/video/bochs/Makefile b/drivers/video/bochs/Makefile new file mode 100644 index 000000000000..78ec1fe0ca81 --- /dev/null +++ b/drivers/video/bochs/Makefile @@ -0,0 +1,3 @@ +obj-y += bochs_hw.o +obj-$(CONFIG_DRIVER_VIDEO_BOCHS_PCI) += bochs_pci.o +obj-$(CONFIG_DRIVER_VIDEO_BOCHS_ISA) += bochs_isa.o diff --git a/drivers/video/bochs/bochs_hw.c b/drivers/video/bochs/bochs_hw.c new file mode 100644 index 000000000000..4f908a60318d --- /dev/null +++ b/drivers/video/bochs/bochs_hw.c @@ -0,0 +1,203 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +// SPDX-FileCopyrightText: Copyright (c) 2020 Ahmad Fatoum, Pengutronix +/* + * PCI Driver for VGA with the Bochs VBE / QEMU stdvga extensions. + */ + +#include <common.h> +#include <driver.h> +#include <linux/pci.h> +#include <fb.h> +#include "../edid.h" +#include "bochs_hw.h" + +#define VBE_DISPI_INDEX_ID 0x0 +#define VBE_DISPI_INDEX_XRES 0x1 +#define VBE_DISPI_INDEX_YRES 0x2 +#define VBE_DISPI_INDEX_BPP 0x3 +#define VBE_DISPI_INDEX_ENABLE 0x4 +#define VBE_DISPI_INDEX_BANK 0x5 +#define VBE_DISPI_INDEX_VIRT_WIDTH 0x6 +#define VBE_DISPI_INDEX_VIRT_HEIGHT 0x7 +#define VBE_DISPI_INDEX_X_OFFSET 0x8 +#define VBE_DISPI_INDEX_Y_OFFSET 0x9 +#define VBE_DISPI_INDEX_VIDEO_MEMORY_64K 0xa + +#define VBE_DISPI_ENABLED 0x01 +#define VBE_DISPI_GETCAPS 0x02 +#define VBE_DISPI_8BIT_DAC 0x20 +#define VBE_DISPI_LFB_ENABLED 0x40 +#define VBE_DISPI_NOCLEARMEM 0x80 + +/* Offsets for accessing ioports via PCI BAR1 (MMIO) */ +#define VGA_MMIO_OFFSET (0x400 - 0x3c0) +#define VBE_MMIO_OFFSET 0x500 + +struct bochs { + struct fb_info fb; + void __iomem *fb_map; + void __iomem *mmio; +}; + +static void bochs_vga_writeb(struct bochs *bochs, u16 ioport, u8 val) +{ + if (WARN_ON(ioport < 0x3c0 || ioport > 0x3df)) + return; + + if (bochs->mmio) { + int offset = ioport + VGA_MMIO_OFFSET; + writeb(val, bochs->mmio + offset); + } else { + outb(val, ioport); + } +} + +static u16 bochs_dispi_read(struct bochs *bochs, u16 reg) +{ + u16 ret = 0; + + if (bochs->mmio) { + int offset = VBE_MMIO_OFFSET + (reg << 1); + ret = readw(bochs->mmio + offset); + } else { + outw(reg, VBE_DISPI_IOPORT_INDEX); + ret = inw(VBE_DISPI_IOPORT_DATA); + } + return ret; +} + +static void bochs_dispi_write(struct bochs *bochs, u16 reg, u16 val) +{ + if (bochs->mmio) { + int offset = VBE_MMIO_OFFSET + (reg << 1); + writew(val, bochs->mmio + offset); + } else { + outw(reg, VBE_DISPI_IOPORT_INDEX); + outw(val, VBE_DISPI_IOPORT_DATA); + } +} + +static void bochs_fb_enable(struct fb_info *fb) +{ + struct bochs *bochs = fb->priv; + + bochs_vga_writeb(bochs, 0x3c0, 0x20); /* unblank */ + + bochs_dispi_write(bochs, VBE_DISPI_INDEX_ENABLE, 0); + + bochs_dispi_write(bochs, VBE_DISPI_INDEX_BPP, fb->bits_per_pixel); + bochs_dispi_write(bochs, VBE_DISPI_INDEX_XRES, fb->xres); + bochs_dispi_write(bochs, VBE_DISPI_INDEX_YRES, fb->yres); + bochs_dispi_write(bochs, VBE_DISPI_INDEX_BANK, 0); + bochs_dispi_write(bochs, VBE_DISPI_INDEX_VIRT_WIDTH, fb->xres); + bochs_dispi_write(bochs, VBE_DISPI_INDEX_VIRT_HEIGHT, fb->yres); + bochs_dispi_write(bochs, VBE_DISPI_INDEX_X_OFFSET, 0); + bochs_dispi_write(bochs, VBE_DISPI_INDEX_Y_OFFSET, 0); + + bochs_dispi_write(bochs, VBE_DISPI_INDEX_ENABLE, + VBE_DISPI_ENABLED | VBE_DISPI_LFB_ENABLED ); +} + +static void bochs_fb_disable(struct fb_info *fb) +{ + struct bochs *bochs = fb->priv; + + bochs_dispi_write(bochs, VBE_DISPI_INDEX_ENABLE, + bochs_dispi_read(bochs, VBE_DISPI_INDEX_ENABLE) & + ~VBE_DISPI_ENABLED); +} + +static struct fb_ops bochs_fb_ops = { + .fb_enable = bochs_fb_enable, + .fb_disable = bochs_fb_disable, +}; + +static int bochs_hw_load_edid(struct bochs *bochs) +{ + u8 *edid; + int i; + + edid = xzalloc(EDID_LENGTH); + + for (i = 0; i <= EDID_HEADER_END; i++) + edid[i] = readb(bochs->mmio + i); + + /* check header to detect whenever edid support is enabled in qemu */ + if (!edid_check_header(edid)) { + free(edid); + return -1; + } + + for (i = EDID_HEADER_END + 1; i < EDID_LENGTH; i++) + edid[i] = readb(bochs->mmio + i); + + bochs->fb.edid_data = edid; + return 0; +} + +static int bochs_hw_read_version(struct bochs *bochs) +{ + u16 ver; + + ver = bochs_dispi_read(bochs, VBE_DISPI_INDEX_ID); + + if ((ver & 0xB0C0) != 0xB0C0) + return -ENODEV; + + return ver & 0xF; +} + +int bochs_hw_probe(struct device_d *dev, void __iomem *fb_map, void __iomem *mmio) +{ + struct bochs *bochs; + struct fb_info *fb; + int ret; + + bochs = xzalloc(sizeof(*bochs)); + + bochs->fb_map = IOMEM(fb_map); + bochs->mmio = IOMEM(mmio); + + ret = bochs_hw_read_version(bochs); + if (ret < 0) { + free(bochs); + return ret; + } + + dev_info(dev, "detected bochs dispi v%u\n", ret); + + fb = &bochs->fb; + fb->screen_base = bochs->fb_map; + + fb->bits_per_pixel = 16; + fb->red.length = 5; + fb->green.length = 6; + fb->blue.length = 5; + fb->red.offset = 11; + fb->green.offset = 5; + fb->blue.offset = 0; + + /* EDID is only exposed over PCI */ + ret = -ENODEV; + + if (mmio) { + ret = bochs_hw_load_edid(bochs); + if (ret) + dev_warn(dev, "couldn't read EDID information\n"); + } + + if (ret) { + fb->mode = xzalloc(sizeof(*fb->mode)); + fb->modes.modes = fb->mode; + fb->modes.num_modes = 1; + + fb->mode->name = "640x480"; + fb->mode->xres = 640; + fb->mode->yres = 480; + } + + fb->priv = bochs; + fb->fbops = &bochs_fb_ops; + + return register_framebuffer(fb); +} diff --git a/drivers/video/bochs/bochs_hw.h b/drivers/video/bochs/bochs_hw.h new file mode 100644 index 000000000000..36c2cc1cc376 --- /dev/null +++ b/drivers/video/bochs/bochs_hw.h @@ -0,0 +1,13 @@ +#ifndef BOCHS_HW_H +#define BOCHS_HW_H + +#include <linux/compiler.h> + +#define VBE_DISPI_IOPORT_INDEX 0x01CE +#define VBE_DISPI_IOPORT_DATA 0x01CF + +struct device_d; + +int bochs_hw_probe(struct device_d *dev, void *fb_map, void __iomem *mmio); + +#endif diff --git a/drivers/video/bochs/bochs_isa.c b/drivers/video/bochs/bochs_isa.c new file mode 100644 index 000000000000..7f75803baa0c --- /dev/null +++ b/drivers/video/bochs/bochs_isa.c @@ -0,0 +1,31 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +// SPDX-FileCopyrightText: Copyright (c) 2020 Ahmad Fatoum, Pengutronix +/* + * ISA Driver for VGA with the Bochs VBE / QEMU stdvga extensions. + */ + +#include <common.h> +#include <driver.h> +#include <linux/ioport.h> +#include "bochs_hw.h" + +static int bochs_isa_detect(void) +{ + struct device_d *dev; + int ret; + + outw(0, VBE_DISPI_IOPORT_INDEX); + ret = inw(VBE_DISPI_IOPORT_DATA); + + if ((ret & 0xB0C0) != 0xB0C0) + return -ENODEV; + + dev = device_alloc("bochs-dispi", 0); + + ret = platform_device_register(dev); + if (ret) + return ret; + + return bochs_hw_probe(dev, (void *)0xe0000000, NULL); +} +device_initcall(bochs_isa_detect); diff --git a/drivers/video/bochs/bochs_pci.c b/drivers/video/bochs/bochs_pci.c new file mode 100644 index 000000000000..39f582029d35 --- /dev/null +++ b/drivers/video/bochs/bochs_pci.c @@ -0,0 +1,37 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +// SPDX-FileCopyrightText: Copyright (c) 2020 Ahmad Fatoum, Pengutronix +/* + * PCI Driver for VGA with the Bochs VBE / QEMU stdvga extensions. + */ + +#include <common.h> +#include <driver.h> +#include <linux/pci.h> +#include "bochs_hw.h" + +static int bochs_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) +{ + void __iomem *fb_map, *mmio; + int ret; + + ret = pci_enable_device(pdev); + if (ret) + return ret; + + fb_map = pci_iomap(pdev, 0); + mmio = pci_iomap(pdev, 2); + + return bochs_hw_probe(&pdev->dev, fb_map, mmio); +} + +static DEFINE_PCI_DEVICE_TABLE(bochs_pci_tbl) = { + /* https://github.com/qemu/qemu/blob/master/docs/specs/standard-vga.txt */ + { PCI_DEVICE(0x1234, 0x1111) }, +}; + +static struct pci_driver bochs_pci_driver = { + .name = "bochs-dispi", + .probe = bochs_pci_probe, + .id_table = bochs_pci_tbl, +}; +device_pci_driver(bochs_pci_driver); -- 2.29.2 _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH] fixup! video: implement bochs dispi / QEMU VGA driver for PCI and ISA 2021-01-01 22:52 ` [PATCH 3/4] video: implement bochs dispi / QEMU VGA driver for PCI and ISA Ahmad Fatoum @ 2021-01-02 11:10 ` Ahmad Fatoum 2021-01-05 12:19 ` [PATCH 3/4] " Sascha Hauer 1 sibling, 0 replies; 6+ messages in thread From: Ahmad Fatoum @ 2021-01-02 11:10 UTC (permalink / raw) To: barebox Fix few comments and while at it, replace a -1 error with a more descriptive error code. No functional change. Signed-off-by: Ahmad Fatoum <ahmad@a3f.at> --- drivers/video/bochs/Kconfig | 2 ++ drivers/video/bochs/Makefile | 2 ++ drivers/video/bochs/bochs_hw.c | 6 ++++-- drivers/video/bochs/bochs_hw.h | 2 ++ drivers/video/bochs/bochs_isa.c | 2 +- drivers/video/bochs/bochs_pci.c | 2 +- 6 files changed, 12 insertions(+), 4 deletions(-) diff --git a/drivers/video/bochs/Kconfig b/drivers/video/bochs/Kconfig index e23e68f1126c..ae5d38a8ad46 100644 --- a/drivers/video/bochs/Kconfig +++ b/drivers/video/bochs/Kconfig @@ -1,3 +1,5 @@ +# SPDX-License-Identifier: GPL-2.0-only + config DRIVER_VIDEO_BOCHS select DRIVER_VIDEO_EDID bool diff --git a/drivers/video/bochs/Makefile b/drivers/video/bochs/Makefile index 78ec1fe0ca81..3ab7ade8a180 100644 --- a/drivers/video/bochs/Makefile +++ b/drivers/video/bochs/Makefile @@ -1,3 +1,5 @@ +# SPDX-License-Identifier: GPL-2.0-only + obj-y += bochs_hw.o obj-$(CONFIG_DRIVER_VIDEO_BOCHS_PCI) += bochs_pci.o obj-$(CONFIG_DRIVER_VIDEO_BOCHS_ISA) += bochs_isa.o diff --git a/drivers/video/bochs/bochs_hw.c b/drivers/video/bochs/bochs_hw.c index 4f908a60318d..252350aebb5a 100644 --- a/drivers/video/bochs/bochs_hw.c +++ b/drivers/video/bochs/bochs_hw.c @@ -1,7 +1,9 @@ // SPDX-License-Identifier: GPL-2.0-or-later // SPDX-FileCopyrightText: Copyright (c) 2020 Ahmad Fatoum, Pengutronix /* - * PCI Driver for VGA with the Bochs VBE / QEMU stdvga extensions. + * Driver for VGA with the Bochs VBE / QEMU stdvga extensions. + * + * Based on the Linux v5.11-rc1 bochs-dispi DRM driver. */ #include <common.h> @@ -125,7 +127,7 @@ static int bochs_hw_load_edid(struct bochs *bochs) /* check header to detect whenever edid support is enabled in qemu */ if (!edid_check_header(edid)) { free(edid); - return -1; + return -EILSEQ; } for (i = EDID_HEADER_END + 1; i < EDID_LENGTH; i++) diff --git a/drivers/video/bochs/bochs_hw.h b/drivers/video/bochs/bochs_hw.h index 36c2cc1cc376..420b58f4dad6 100644 --- a/drivers/video/bochs/bochs_hw.h +++ b/drivers/video/bochs/bochs_hw.h @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: GPL-2.0-or-later + #ifndef BOCHS_HW_H #define BOCHS_HW_H diff --git a/drivers/video/bochs/bochs_isa.c b/drivers/video/bochs/bochs_isa.c index 7f75803baa0c..f273ac5f74a8 100644 --- a/drivers/video/bochs/bochs_isa.c +++ b/drivers/video/bochs/bochs_isa.c @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-2.0-or-later // SPDX-FileCopyrightText: Copyright (c) 2020 Ahmad Fatoum, Pengutronix /* - * ISA Driver for VGA with the Bochs VBE / QEMU stdvga extensions. + * ISA driver entry point for VGA with the Bochs VBE / QEMU stdvga extensions. */ #include <common.h> diff --git a/drivers/video/bochs/bochs_pci.c b/drivers/video/bochs/bochs_pci.c index 39f582029d35..28785e1c0667 100644 --- a/drivers/video/bochs/bochs_pci.c +++ b/drivers/video/bochs/bochs_pci.c @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-2.0-or-later // SPDX-FileCopyrightText: Copyright (c) 2020 Ahmad Fatoum, Pengutronix /* - * PCI Driver for VGA with the Bochs VBE / QEMU stdvga extensions. + * PCI driver entry point for VGA with the Bochs VBE / QEMU stdvga extensions. */ #include <common.h> -- 2.29.2 _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 3/4] video: implement bochs dispi / QEMU VGA driver for PCI and ISA 2021-01-01 22:52 ` [PATCH 3/4] video: implement bochs dispi / QEMU VGA driver for PCI and ISA Ahmad Fatoum 2021-01-02 11:10 ` [PATCH] fixup! " Ahmad Fatoum @ 2021-01-05 12:19 ` Sascha Hauer 1 sibling, 0 replies; 6+ messages in thread From: Sascha Hauer @ 2021-01-05 12:19 UTC (permalink / raw) To: Ahmad Fatoum; +Cc: barebox On Fri, Jan 01, 2021 at 11:52:27PM +0100, Ahmad Fatoum wrote: > All SVGA devices in Qemu, except for Cirrus, support the bochs display > interface, which is very easy to set up. Add a driver for it. > > This has been tested with: > > PCI: qemu-system-mips(el) -device VGA + barebox qemu-malta_defconfig > ISA: qemu-system-x86_64 -device isa-vga + barebox efi_defconfig > > Signed-off-by: Ahmad Fatoum <ahmad@a3f.at> I gave this a shot on MIPS qemu and indeed, works for me as well. Applied this series, thanks Sascha -- Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 4/4] MIPS: qemu-malta_defconfig: enable VGA output 2021-01-01 22:52 [PATCH 1/4] video: edid: make accessible without i2c Ahmad Fatoum 2021-01-01 22:52 ` [PATCH 2/4] video: edid: make edid_check_header externally visible Ahmad Fatoum 2021-01-01 22:52 ` [PATCH 3/4] video: implement bochs dispi / QEMU VGA driver for PCI and ISA Ahmad Fatoum @ 2021-01-01 22:52 ` Ahmad Fatoum 2 siblings, 0 replies; 6+ messages in thread From: Ahmad Fatoum @ 2021-01-01 22:52 UTC (permalink / raw) To: barebox Now that we have a driver for the Qemu's default -device VGA, enable it in defconfig, along with fbtest for testing it. Signed-off-by: Ahmad Fatoum <ahmad@a3f.at> --- Documentation/boards/mips/qemu-malta.rst | 4 ++-- arch/mips/configs/qemu-malta_defconfig | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Documentation/boards/mips/qemu-malta.rst b/Documentation/boards/mips/qemu-malta.rst index 2bb81350a109..470be32f1f49 100644 --- a/Documentation/boards/mips/qemu-malta.rst +++ b/Documentation/boards/mips/qemu-malta.rst @@ -9,7 +9,7 @@ QEMU run string: .. code-block:: sh qemu-system-mips -nodefaults -M malta -m 256 \ - -nographic -serial stdio -monitor null \ + -device VGA -serial stdio -monitor null \ -bios barebox-flash-image @@ -33,7 +33,7 @@ QEMU run string: .. code-block:: sh qemu-system-mipsel -nodefaults -M malta -m 256 \ - -nographic -serial stdio -monitor null \ + -devica VGA -serial stdio -monitor null \ -bios barebox-flash-image diff --git a/arch/mips/configs/qemu-malta_defconfig b/arch/mips/configs/qemu-malta_defconfig index ac0577c217e3..b9994f392c47 100644 --- a/arch/mips/configs/qemu-malta_defconfig +++ b/arch/mips/configs/qemu-malta_defconfig @@ -42,6 +42,7 @@ CONFIG_CMD_LOGIN=y CONFIG_CMD_MENU=y CONFIG_CMD_MENU_MANAGEMENT=y CONFIG_CMD_PASSWD=y +CONFIG_CMD_FBTEST=y CONFIG_CMD_READLINE=y CONFIG_CMD_TIMEOUT=y CONFIG_CMD_CRC=y @@ -68,6 +69,9 @@ CONFIG_DRIVER_CFI=y # CONFIG_DRIVER_CFI_BANK_WIDTH_1 is not set # CONFIG_DRIVER_CFI_BANK_WIDTH_2 is not set CONFIG_CFI_BUFFER_WRITE=y +CONFIG_VIDEO=y +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_DRIVER_VIDEO_BOCHS_PCI=y CONFIG_GPIO_MALTA_FPGA_I2C=y CONFIG_PCI=y CONFIG_PCI_DEBUG=y -- 2.29.2 _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2021-01-05 12:19 UTC | newest] Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2021-01-01 22:52 [PATCH 1/4] video: edid: make accessible without i2c Ahmad Fatoum 2021-01-01 22:52 ` [PATCH 2/4] video: edid: make edid_check_header externally visible Ahmad Fatoum 2021-01-01 22:52 ` [PATCH 3/4] video: implement bochs dispi / QEMU VGA driver for PCI and ISA Ahmad Fatoum 2021-01-02 11:10 ` [PATCH] fixup! " Ahmad Fatoum 2021-01-05 12:19 ` [PATCH 3/4] " Sascha Hauer 2021-01-01 22:52 ` [PATCH 4/4] MIPS: qemu-malta_defconfig: enable VGA output Ahmad Fatoum
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox