public inbox for intel-gfx@lists.freedesktop.org
 help / color / mirror / Atom feed
From: Todd Previte <tprevite@gmail.com>
To: intel-gfx@lists.freedesktop.org
Subject: [PATCH 01/10] drm/i915: Add automated testing support for Displayport compliance testing
Date: Thu,  9 Oct 2014 08:38:01 -0700	[thread overview]
Message-ID: <1412869090-48010-2-git-send-email-tprevite@gmail.com> (raw)
In-Reply-To: <1412869090-48010-1-git-send-email-tprevite@gmail.com>

Add the skeleton framework for supporting automation for Displayport compliance
testing. This patch adds the necessary framework for the source device to appropriately
respond to test automation requests from a sink device.

Signed-off-by: Todd Previte <tprevite@gmail.com>
---
 drivers/gpu/drm/i915/intel_dp.c | 82 ++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 80 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index 64c8e04..f7d4119 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -3959,11 +3959,89 @@ intel_dp_get_sink_irq_esi(struct intel_dp *intel_dp, u8 *sink_irq_vector)
 	return true;
 }
 
+/* Displayport compliance testing - Link training */
+static uint8_t
+intel_dp_autotest_link_training(struct intel_dp *intel_dp)
+{
+	uint8_t test_result = DP_TEST_NAK;
+	return test_result;
+}
+
+/* Displayport compliance testing - Video pattern testing */
+static uint8_t
+intel_dp_autotest_video_pattern(struct intel_dp *intel_dp)
+{
+	uint8_t test_result = DP_TEST_NAK;
+	return test_result;
+}
+
+/* Displayport compliance testing - EDID operations */
+static uint8_t
+intel_dp_autotest_edid(struct intel_dp *intel_dp)
+{
+	uint8_t test_result = DP_TEST_NAK;
+	return test_result;
+}
+
+/* Displayport compliance testing - PHY pattern testing */
+static uint8_t
+intel_dp_autotest_phy_pattern(struct intel_dp *intel_dp)
+{
+	uint8_t test_result = DP_TEST_NAK;
+	return test_result;
+}
+
 static void
 intel_dp_handle_test_request(struct intel_dp *intel_dp)
 {
-	/* NAK by default */
-	drm_dp_dpcd_writeb(&intel_dp->aux, DP_TEST_RESPONSE, DP_TEST_NAK);
+	uint8_t response = DP_TEST_NAK;
+	uint8_t rxdata = 0;
+	int status = 0;
+
+	DRM_DEBUG_KMS("Received automated test request\n");
+	status = drm_dp_dpcd_read(&intel_dp->aux, DP_TEST_REQUEST, &rxdata, 1);
+
+	/* ACK/NAK response based on test function response
+	   Unimplemented/unsupported tests will NAK by default */
+	switch (rxdata) {
+	case DP_TEST_LINK_TRAINING:
+		DRM_DEBUG_KMS("Executing LINK_TRAINING request\n");
+		intel_dp->compliance_test_data = DP_TEST_LINK_TRAINING;
+		response = intel_dp_autotest_link_training(intel_dp);
+		break;
+	case DP_TEST_LINK_VIDEO_PATTERN:
+		DRM_DEBUG_KMS("Executing TEST_PATTERN request\n");
+		intel_dp->compliance_test_data = DP_TEST_LINK_VIDEO_PATTERN;
+		response = intel_dp_autotest_video_pattern(intel_dp);
+		break;
+	case DP_TEST_LINK_EDID_READ:
+		DRM_DEBUG_KMS("Executing EDID request\n");
+		intel_dp->compliance_test_data = DP_TEST_LINK_EDID_READ;
+		response = intel_dp_autotest_edid(intel_dp);
+		break;
+	case DP_TEST_LINK_PHY_TEST_PATTERN:
+		DRM_DEBUG_KMS("Executing PHY_PATTERN request\n");
+		intel_dp->compliance_test_data = DP_TEST_LINK_PHY_TEST_PATTERN;
+		response = intel_dp_autotest_phy_pattern(intel_dp);
+		break;
+		/* FAUX is optional in DP 1.2*/
+	case DP_TEST_LINK_FAUX_PATTERN:
+		DRM_DEBUG_KMS("FAUX_PATTERN testing not supported\n");
+		break;
+	/* Unsupported test case or something went wrong */
+	default:
+		DRM_DEBUG_KMS("Unhandled test request\n");
+		break;
+	}
+	if (status != 0) {
+		response = DP_TEST_NAK;
+		DRM_DEBUG_KMS("Error %d processing test request\n", status);
+	}
+	status = drm_dp_dpcd_write(&intel_dp->aux,
+				   DP_TEST_RESPONSE,
+				   &response, 1);
+	intel_dp->compliance_testing_active = 0;
+
 }
 
 static int
-- 
1.9.1

  reply	other threads:[~2014-10-09 15:38 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-09 15:38 [intel-gfx] Displayport compliance testing Todd Previte
2014-10-09 15:38 ` Todd Previte [this message]
2014-10-20 17:48   ` [PATCH 01/10] drm/i915: Add automated testing support for " Paulo Zanoni
2014-10-23 16:58     ` Todd Previte
2014-10-24  8:24       ` Daniel Vetter
2014-10-21 13:02   ` Daniel Vetter
2014-11-04 22:31   ` Todd Previte
2014-10-09 15:38 ` [PATCH 02/10] drm/i915: Add counters in the drm_dp_aux struct for I2C NACKs and DEFERs Todd Previte
2014-10-21 17:10   ` [Intel-gfx] " Paulo Zanoni
2014-11-04 22:12     ` Todd Previte
2014-11-04 22:19       ` Daniel Vetter
2014-10-09 15:38 ` [PATCH 03/10] drm/i915: Update intel_dp_check_link_status() for Displayport compliance testing Todd Previte
2014-10-09 15:38 ` [PATCH 04/10] drm/i915: Add a delay in Displayport AUX transactions for " Todd Previte
2014-10-09 15:38 ` [PATCH 05/10] drm/i915: Add debugfs interface for Displayport debug and " Todd Previte
2014-10-23 12:50   ` Daniel Vetter
2014-10-23 12:58     ` Paulo Zanoni
2014-10-23 15:43       ` Daniel Vetter
2014-11-13 18:44         ` Jesse Barnes
2014-11-13 20:44           ` Daniel Vetter
2014-11-13 21:00             ` Dave Airlie
2014-11-13 21:07               ` Jesse Barnes
2014-10-09 15:38 ` [PATCH 06/10] drm/i915: Add debugfs interface and support functions to notify userspace apps for Displayport " Todd Previte
2014-10-09 15:38 ` [PATCH 07/10] drm/i915: Add structures for Displayport compliance testing parameters Todd Previte
2014-10-09 15:38 ` [PATCH 08/10] drm/i915: Update the EDID automated compliance test function Todd Previte
2014-10-09 15:38 ` [PATCH 09/10] drm/i915: Update intel_dp_compute_config() to respond to Displayport compliance test requests appropriately Todd Previte
2014-10-09 15:38 ` [PATCH 10/10] drm/i915: Fix intel_dp_hot_plug() Todd Previte
2014-10-09 15:49   ` Chris Wilson
2014-10-10  3:38     ` Dave Airlie
2014-10-11  0:20       ` Todd Previte
  -- strict thread matches above, loose matches on Subject: below --
2015-04-15 15:38 [PATCH V6] Displayport compliance testing V6 Todd Previte
2015-04-15 15:38 ` [PATCH 01/10] drm/i915: Add automated testing support for Displayport compliance testing Todd Previte
2015-04-16 11:32   ` Daniel Vetter

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=1412869090-48010-2-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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox