Implements some of the basic EDID tests for Displayport compliance. These tests include reading the EDID, verifying the checksum and writing the test responses back to the sink device. Signed-off-by: Todd Previte <tprevite@xxxxxxxxx> --- drivers/gpu/drm/i915/intel_dp.c | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index 43fcabe..d060853 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c @@ -3352,8 +3352,42 @@ intel_dp_autotest_video_pattern(struct intel_dp *intel_dp) static uint8_t intel_dp_autotest_edid(struct intel_dp *intel_dp) { + struct drm_connector *connector = &intel_dp->attached_connector->base; + struct i2c_adapter *adapter = &intel_dp->aux.ddc; + struct edid *edid_read = NULL; + uint8_t *edid_data = NULL; uint8_t test_result = DP_TEST_NAK; - return test_result; + uint32_t i = 0, ret = 0, checksum = 0; + struct drm_display_mode *use_mode = NULL; + dp_compliance_mode comp_mode_type = DP_COMPLIANCE_MODE_PREFERRED; + int mode_count = 0; + + edid_read = drm_get_edid(connector, adapter); + + DRM_DEBUG_KMS("Displayport: EDID automated test\n"); + + if (edid_read) { + test_result = true; + edid_data = (uint8_t*) edid_read; + // Compute checksum + for (i = 0; i < 128; i++) + checksum += edid_data[i]; + + DRM_DEBUG_KMS("Displayport: EDID test - computed byte sum = %02x\n", checksum); + // Verify EDID checksum + if (checksum % 256 == 0) { + /* Write the checksum to EDID checksum register */ + ret = drm_dp_dpcd_write(&intel_dp->aux, DP_TEST_EDID_CHECKSUM, &edid_read->checksum, 1); + // Reponse is ACK and and checksum written + test_result = DP_TEST_ACK | DP_TEST_EDID_CHECKSUM_WRITE; + DRM_DEBUG_KMS("Displayport: EDID test - checksum = %02x\n", edid_read->checksum); + } + else { + // Invalid checksum, set for failsafe mode + comp_mode_type = DP_COMPLIANCE_MODE_FAILSAFE; + } + } + return test_result; } /* Displayport compliance testing - PHY pattern testing */ -- 1.9.1 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx