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 <kraxel@redhat.com>
Message-id: 20180925075646.25114-3-kraxel@redhat.com
This commit is contained in:
Gerd Hoffmann 2018-09-25 09:56:43 +02:00
parent 72d277a70e
commit e7992fc5a0
2 changed files with 15 additions and 0 deletions

View File

@ -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);
}

View File

@ -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 */