drm/msm: add a helper function to return the EDID checksum
Display Port Link Compliance tests expect to return the checksum
of the last block of EDID data. Add a function that returns this
checksum.
Change-Id: I6f316967eecd71f7344a0bb142c641b4ccf6c35f
Signed-off-by: Padmanabhan Komanduru <pkomandu@codeaurora.org>
diff --git a/drivers/gpu/drm/msm/sde_edid_parser.c b/drivers/gpu/drm/msm/sde_edid_parser.c
index 3d6c2ea..791a6ca 100644
--- a/drivers/gpu/drm/msm/sde_edid_parser.c
+++ b/drivers/gpu/drm/msm/sde_edid_parser.c
@@ -605,6 +605,30 @@
}
}
+u8 sde_get_edid_checksum(void *input)
+{
+ struct sde_edid_ctrl *edid_ctrl = (struct sde_edid_ctrl *)(input);
+ struct edid *edid = NULL, *last_block = NULL;
+ u8 *raw_edid = NULL;
+
+ if (!edid_ctrl || !edid_ctrl->edid) {
+ SDE_ERROR("invalid edid input\n");
+ return 0;
+ }
+
+ edid = edid_ctrl->edid;
+
+ raw_edid = (u8 *)edid;
+ raw_edid += (edid->extensions * EDID_LENGTH);
+ last_block = (struct edid *)raw_edid;
+
+ if (last_block)
+ return last_block->checksum;
+
+ SDE_ERROR("Invalid block, no checksum\n");
+ return 0;
+}
+
bool sde_detect_hdmi_monitor(void *input)
{
struct sde_edid_ctrl *edid_ctrl = (struct sde_edid_ctrl *)(input);