xref: /qemu/hw/display/edid-region.c (revision 97917e9e02e04bbb5f3b14c0f2b58913ef5f09d2)
1*97917e9eSGerd Hoffmann #include "qemu/osdep.h"
2*97917e9eSGerd Hoffmann #include "qemu-common.h"
3*97917e9eSGerd Hoffmann #include "hw/display/edid.h"
4*97917e9eSGerd Hoffmann 
5*97917e9eSGerd Hoffmann static uint64_t edid_region_read(void *ptr, hwaddr addr, unsigned size)
6*97917e9eSGerd Hoffmann {
7*97917e9eSGerd Hoffmann     uint8_t *edid = ptr;
8*97917e9eSGerd Hoffmann 
9*97917e9eSGerd Hoffmann     return edid[addr];
10*97917e9eSGerd Hoffmann }
11*97917e9eSGerd Hoffmann 
12*97917e9eSGerd Hoffmann static void edid_region_write(void *ptr, hwaddr addr,
13*97917e9eSGerd Hoffmann                              uint64_t val, unsigned size)
14*97917e9eSGerd Hoffmann {
15*97917e9eSGerd Hoffmann     /* read only */
16*97917e9eSGerd Hoffmann }
17*97917e9eSGerd Hoffmann 
18*97917e9eSGerd Hoffmann static const MemoryRegionOps edid_region_ops = {
19*97917e9eSGerd Hoffmann     .read = edid_region_read,
20*97917e9eSGerd Hoffmann     .write = edid_region_write,
21*97917e9eSGerd Hoffmann     .valid.min_access_size = 1,
22*97917e9eSGerd Hoffmann     .valid.max_access_size = 4,
23*97917e9eSGerd Hoffmann     .impl.min_access_size = 1,
24*97917e9eSGerd Hoffmann     .impl.max_access_size = 1,
25*97917e9eSGerd Hoffmann     .endianness = DEVICE_LITTLE_ENDIAN,
26*97917e9eSGerd Hoffmann };
27*97917e9eSGerd Hoffmann 
28*97917e9eSGerd Hoffmann void qemu_edid_region_io(MemoryRegion *region, Object *owner,
29*97917e9eSGerd Hoffmann                          uint8_t *edid, size_t size)
30*97917e9eSGerd Hoffmann {
31*97917e9eSGerd Hoffmann     memory_region_init_io(region, owner, &edid_region_ops,
32*97917e9eSGerd Hoffmann                           edid, "edid", size);
33*97917e9eSGerd Hoffmann }
34