bochs-display: wire up edid support
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Message-id: 20181005160147.892-3-kraxel@redhat.com
This commit is contained in:
parent
cc22c1bf5d
commit
a0d098b794
@ -19,6 +19,7 @@ common-obj-$(CONFIG_VGA_ISA) += vga-isa.o
|
||||
common-obj-$(CONFIG_VGA_ISA_MM) += vga-isa-mm.o
|
||||
common-obj-$(CONFIG_VMWARE_VGA) += vmware_vga.o
|
||||
common-obj-$(CONFIG_BOCHS_DISPLAY) += bochs-display.o
|
||||
common-obj-$(CONFIG_BOCHS_DISPLAY) += edid-region.o
|
||||
|
||||
common-obj-$(CONFIG_BLIZZARD) += blizzard.o
|
||||
common-obj-$(CONFIG_EXYNOS4) += exynos4210_fimd.o
|
||||
|
@ -9,6 +9,7 @@
|
||||
#include "hw/hw.h"
|
||||
#include "hw/pci/pci.h"
|
||||
#include "hw/display/bochs-vbe.h"
|
||||
#include "hw/display/edid.h"
|
||||
|
||||
#include "qapi/error.h"
|
||||
|
||||
@ -35,9 +36,13 @@ typedef struct BochsDisplayState {
|
||||
MemoryRegion mmio;
|
||||
MemoryRegion vbe;
|
||||
MemoryRegion qext;
|
||||
MemoryRegion edid;
|
||||
|
||||
/* device config */
|
||||
uint64_t vgamem;
|
||||
bool enable_edid;
|
||||
qemu_edid_info edid_info;
|
||||
uint8_t edid_blob[256];
|
||||
|
||||
/* device registers */
|
||||
uint16_t vbe_regs[VBE_DISPI_INDEX_NB];
|
||||
@ -283,6 +288,12 @@ static void bochs_display_realize(PCIDevice *dev, Error **errp)
|
||||
pci_register_bar(&s->pci, 0, PCI_BASE_ADDRESS_MEM_PREFETCH, &s->vram);
|
||||
pci_register_bar(&s->pci, 2, PCI_BASE_ADDRESS_SPACE_MEMORY, &s->mmio);
|
||||
|
||||
if (s->enable_edid) {
|
||||
qemu_edid_generate(s->edid_blob, sizeof(s->edid_blob), &s->edid_info);
|
||||
qemu_edid_region_io(&s->edid, obj, s->edid_blob, sizeof(s->edid_blob));
|
||||
memory_region_add_subregion(&s->mmio, 0, &s->edid);
|
||||
}
|
||||
|
||||
if (pci_bus_is_express(pci_get_bus(dev))) {
|
||||
dev->cap_present |= QEMU_PCI_CAP_EXPRESS;
|
||||
ret = pcie_endpoint_cap_init(dev, 0x80);
|
||||
@ -325,6 +336,8 @@ static void bochs_display_exit(PCIDevice *dev)
|
||||
|
||||
static Property bochs_display_properties[] = {
|
||||
DEFINE_PROP_SIZE("vgamem", BochsDisplayState, vgamem, 16 * MiB),
|
||||
DEFINE_PROP_BOOL("edid", BochsDisplayState, enable_edid, false),
|
||||
DEFINE_EDID_PROPERTIES(BochsDisplayState, edid_info),
|
||||
DEFINE_PROP_END_OF_LIST(),
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user