drm/i915: fix checksum write for automated test reply
authorThulasimani,Sivakumar <sivakumar.thulasimani@intel.com>
Fri, 7 Aug 2015 09:44:30 +0000 (15:14 +0530)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Fri, 14 Aug 2015 15:50:42 +0000 (17:50 +0200)
DP spec requires the checksum of the last block read to be written
when replying to TEST_EDID_READ. This patch fixes the current code
to do the same.

v2: removed loop for jumping blocks and performed direct addition
as recommended by Daniel

Signed-off-by: Sivakumar Thulasimani <sivakumar.thulasimani@intel.com>
Reviewed-by: Sonika Jindal <sonika.jindal@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/intel_dp.c

index f3133d81fb9d39327110f0320612a5151c996420..016e7bc6af0abe33dcec4dd5d37b04420a042a0f 100644 (file)
@@ -4139,9 +4139,16 @@ static uint8_t intel_dp_autotest_edid(struct intel_dp *intel_dp)
                                      intel_dp->aux.i2c_defer_count);
                intel_dp->compliance_test_data = INTEL_DP_RESOLUTION_FAILSAFE;
        } else {
+               struct edid *block = intel_connector->detect_edid;
+
+               /* We have to write the checksum
+                * of the last block read
+                */
+               block += intel_connector->detect_edid->extensions;
+
                if (!drm_dp_dpcd_write(&intel_dp->aux,
                                        DP_TEST_EDID_CHECKSUM,
-                                       &intel_connector->detect_edid->checksum,
+                                       &block->checksum,
                                        1))
                        DRM_DEBUG_KMS("Failed to write EDID checksum\n");