172d277a7SGerd Hoffmann #ifndef EDID_H 272d277a7SGerd Hoffmann #define EDID_H 372d277a7SGerd Hoffmann 472d277a7SGerd Hoffmann typedef struct qemu_edid_info { 5edbc4b24SGerd Hoffmann const char *vendor; /* http://www.uefi.org/pnp_id_list */ 672d277a7SGerd Hoffmann const char *name; 772d277a7SGerd Hoffmann const char *serial; 8fd36eadeSMarc-André Lureau uint16_t width_mm; 9fd36eadeSMarc-André Lureau uint16_t height_mm; 1072d277a7SGerd Hoffmann uint32_t prefx; 1172d277a7SGerd Hoffmann uint32_t prefy; 1272d277a7SGerd Hoffmann uint32_t maxx; 1372d277a7SGerd Hoffmann uint32_t maxy; 14*fce39fa7SAkihiko Odaki uint32_t refresh_rate; 1572d277a7SGerd Hoffmann } qemu_edid_info; 1672d277a7SGerd Hoffmann 1772d277a7SGerd Hoffmann void qemu_edid_generate(uint8_t *edid, size_t size, 1872d277a7SGerd Hoffmann qemu_edid_info *info); 19e7992fc5SGerd Hoffmann size_t qemu_edid_size(uint8_t *edid); 2097917e9eSGerd Hoffmann void qemu_edid_region_io(MemoryRegion *region, Object *owner, 2197917e9eSGerd Hoffmann uint8_t *edid, size_t size); 2272d277a7SGerd Hoffmann 23fd36eadeSMarc-André Lureau uint32_t qemu_edid_dpi_to_mm(uint32_t dpi, uint32_t res); 24fd36eadeSMarc-André Lureau 2506510b89SGerd Hoffmann #define DEFINE_EDID_PROPERTIES(_state, _edid_info) \ 2606510b89SGerd Hoffmann DEFINE_PROP_UINT32("xres", _state, _edid_info.prefx, 0), \ 279b330e48SGerd Hoffmann DEFINE_PROP_UINT32("yres", _state, _edid_info.prefy, 0), \ 289b330e48SGerd Hoffmann DEFINE_PROP_UINT32("xmax", _state, _edid_info.maxx, 0), \ 29*fce39fa7SAkihiko Odaki DEFINE_PROP_UINT32("ymax", _state, _edid_info.maxy, 0), \ 30*fce39fa7SAkihiko Odaki DEFINE_PROP_UINT32("refresh_rate", _state, _edid_info.refresh_rate, 0) 3106510b89SGerd Hoffmann 3272d277a7SGerd Hoffmann #endif /* EDID_H */ 33