From e7992fc5a002003ae865685ad4635b952c1ca9bf Mon Sep 17 00:00:00 2001 From: Gerd Hoffmann Date: Tue, 25 Sep 2018 09:56:43 +0200 Subject: [PATCH] display/edid: add qemu_edid_size() Helper function to figure the size of a edid blob, by checking how many extensions are present. Both the base edid blob and the extensions are 128 bytes in size. Signed-off-by: Gerd Hoffmann Message-id: 20180925075646.25114-3-kraxel@redhat.com --- hw/display/edid-generate.c | 14 ++++++++++++++ include/hw/display/edid.h | 1 + 2 files changed, 15 insertions(+) diff --git a/hw/display/edid-generate.c b/hw/display/edid-generate.c index b3e493da19..c80397ea96 100644 --- a/hw/display/edid-generate.c +++ b/hw/display/edid-generate.c @@ -423,3 +423,17 @@ void qemu_edid_generate(uint8_t *edid, size_t size, edid_checksum(dta); } } + +size_t qemu_edid_size(uint8_t *edid) +{ + uint32_t exts; + + if (edid[0] != 0x00 || + edid[1] != 0xff) { + /* doesn't look like a valid edid block */ + return 0; + } + + exts = edid[126]; + return 128 * (exts + 1); +} diff --git a/include/hw/display/edid.h b/include/hw/display/edid.h index 63b60015c3..96910ada0f 100644 --- a/include/hw/display/edid.h +++ b/include/hw/display/edid.h @@ -14,5 +14,6 @@ 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); #endif /* EDID_H */