return block->checksum;
}
+static int edid_block_tag(const void *_block)
+{
+ const u8 *block = _block;
+
+ return block[0];
+}
+
static bool drm_edid_is_zero(const u8 *in_edid, int length)
{
if (memchr_inv(in_edid, 0, length))
*edid_corrupt = true;
/* allow CEA to slide through, switches mangle this */
- if (raw_edid[0] == CEA_EXT) {
+ if (edid_block_tag(raw_edid) == CEA_EXT) {
DRM_DEBUG("EDID checksum is invalid, remainder is %d\n", csum);
DRM_DEBUG("Assuming a KVM switch modified the CEA block but left the original checksum\n");
} else {
}
/* per-block-type checks */
- switch (raw_edid[0]) {
+ switch (edid_block_tag(raw_edid)) {
case 0: /* base */
if (edid->version != 1) {
DRM_NOTE("EDID has major version %d, instead of 1\n", edid->version);
/* Find CEA extension */
for (i = *ext_index; i < edid->extensions; i++) {
edid_ext = (const u8 *)edid + EDID_LENGTH * (i + 1);
- if (edid_ext[0] == ext_id)
+ if (edid_block_tag(edid_ext) == ext_id)
break;
}