qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH v2 2/5] display/edid: add qemu_edid_size()


From: Gerd Hoffmann
Subject: [Qemu-devel] [PATCH v2 2/5] display/edid: add qemu_edid_size()
Date: Fri, 21 Sep 2018 10:59:02 +0200

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 <address@hidden>
---
 include/hw/display/edid.h  |  1 +
 hw/display/edid-generate.c | 14 ++++++++++++++
 2 files changed, 15 insertions(+)

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 */
diff --git a/hw/display/edid-generate.c b/hw/display/edid-generate.c
index e439b1e893..42ec5df39c 100644
--- a/hw/display/edid-generate.c
+++ b/hw/display/edid-generate.c
@@ -332,3 +332,17 @@ void qemu_edid_generate(uint8_t *edid, size_t size,
     edid_fill_modes(edid, xtra3, info->maxx, info->maxy);
     edid_checksum(edid);
 }
+
+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);
+}
-- 
2.9.3




reply via email to

[Prev in Thread] Current Thread [Next in Thread]