From: Todd Previte <tprevite@gmail.com>
To: intel-gfx@lists.freedesktop.org
Subject: [PATCH 3/6] drm/i915: Implement basic Displayport automated testing function for EDID operations
Date: Tue, 24 Jun 2014 15:12:51 -0700 [thread overview]
Message-ID: <1403647974-42377-4-git-send-email-tprevite@gmail.com> (raw)
In-Reply-To: <1403647974-42377-1-git-send-email-tprevite@gmail.com>
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@gmail.com>
---
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
next prev parent reply other threads:[~2014-06-24 22:13 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-24 22:12 i915 Displayport Compliance Testing Todd Previte
2014-06-24 22:12 ` [PATCH 1/6] drm/i915: Add automated testing support for Displayport compliance testing Todd Previte
2014-06-24 22:12 ` [PATCH 2/6] drm/i915: Add a delay in Displayport AUX transactions for " Todd Previte
2014-06-25 6:45 ` Chris Wilson
2014-06-24 22:12 ` Todd Previte [this message]
2014-06-25 7:57 ` [PATCH 3/6] drm/i915: Implement basic Displayport automated testing function for EDID operations Jani Nikula
2014-07-07 15:37 ` Daniel Vetter
2014-06-24 22:12 ` [PATCH 4/6] drm/i915: Update Displayport compliance test " Todd Previte
2014-06-24 22:12 ` [PATCH 5/6] drm/i915: Update Displayport compliance testing for link training Todd Previte
2014-06-24 22:12 ` [PATCH 6/6] drm/i915: Update intel_dp_check_link_status() for Displayport compliance testing Todd Previte
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1403647974-42377-4-git-send-email-tprevite@gmail.com \
--to=tprevite@gmail.com \
--cc=intel-gfx@lists.freedesktop.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.