Implement the fix for test 4.2.2.9. This test is a 4-block E-DDC read over the AUX channel. For test purposes, the normal 1-block EDID read is required to write the checksum of that block to the sink device via the AUX channel. For 4.2.2.9, that checksum must be the checksum of the last block read. The DRM EDID read code already does the 4-block read, so the checksum just needs to be adjusted to the one that we need based on the number of extensions detected in the block. Signed-off-by: Todd Previte <tprevite@xxxxxxxxx> --- drivers/gpu/drm/i915/intel_dp.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index c7cbb67..14147d0 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c @@ -4020,9 +4020,17 @@ 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 { + /* Checksum write for EDID reads (DP CTS 1.2 Core r1.1) + * 4.2.2.3: checksum of EDID block 0 + * 4.2.2.9: checksum of the last 128-byte block read + */ + int checksum = *(&intel_connector->detect_edid->checksum + + (intel_connector->detect_edid->extensions * + EDID_LENGTH)); + if (!drm_dp_dpcd_write(&intel_dp->aux, DP_TEST_EDID_CHECKSUM, - &intel_connector->detect_edid->checksum, + &checksum, 1)) DRM_DEBUG_KMS("Failed to write EDID checksum\n"); -- 1.9.1 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx