Commit 97917e9e authored by Gerd Hoffmann's avatar Gerd Hoffmann
Browse files

display/edid: add region helper.



Create a io region for an EDID data block.

Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
Reviewed-by: default avatarPhilippe Mathieu-Daudé <f4bug@amsat.org>
Message-id: 20180925075646.25114-4-kraxel@redhat.com
parent e7992fc5
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@ common-obj-$(CONFIG_XEN) += xenfb.o

common-obj-$(CONFIG_VGA_PCI) += vga-pci.o
common-obj-$(CONFIG_VGA_PCI) += bochs-display.o
common-obj-$(CONFIG_VGA_PCI) += edid-region.o
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
+33 −0
Original line number Diff line number Diff line
#include "qemu/osdep.h"
#include "qemu-common.h"
#include "hw/display/edid.h"

static uint64_t edid_region_read(void *ptr, hwaddr addr, unsigned size)
{
    uint8_t *edid = ptr;

    return edid[addr];
}

static void edid_region_write(void *ptr, hwaddr addr,
                             uint64_t val, unsigned size)
{
    /* read only */
}

static const MemoryRegionOps edid_region_ops = {
    .read = edid_region_read,
    .write = edid_region_write,
    .valid.min_access_size = 1,
    .valid.max_access_size = 4,
    .impl.min_access_size = 1,
    .impl.max_access_size = 1,
    .endianness = DEVICE_LITTLE_ENDIAN,
};

void qemu_edid_region_io(MemoryRegion *region, Object *owner,
                         uint8_t *edid, size_t size)
{
    memory_region_init_io(region, owner, &edid_region_ops,
                          edid, "edid", size);
}
+4 −0
Original line number Diff line number Diff line
#ifndef EDID_H
#define EDID_H

#include "hw/hw.h"

typedef struct qemu_edid_info {
    const char *vendor;
    const char *name;
@@ -15,5 +17,7 @@ typedef struct qemu_edid_info {
void qemu_edid_generate(uint8_t *edid, size_t size,
                        qemu_edid_info *info);
size_t qemu_edid_size(uint8_t *edid);
void qemu_edid_region_io(MemoryRegion *region, Object *owner,
                         uint8_t *edid, size_t size);

#endif /* EDID_H */