From patchwork Thu Oct 9 15:38:01 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Todd Previte X-Patchwork-Id: 5058901 Return-Path: X-Original-To: patchwork-intel-gfx@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 71F5BC11AC for ; Thu, 9 Oct 2014 15:38:47 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 8EB6C2013D for ; Thu, 9 Oct 2014 15:38:46 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id AAB7E2018E for ; Thu, 9 Oct 2014 15:38:45 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 0529D6E37C; Thu, 9 Oct 2014 08:38:45 -0700 (PDT) X-Original-To: intel-gfx@lists.freedesktop.org Delivered-To: intel-gfx@lists.freedesktop.org Received: from mail-yh0-f44.google.com (mail-yh0-f44.google.com [209.85.213.44]) by gabe.freedesktop.org (Postfix) with ESMTP id 99F946E37F for ; Thu, 9 Oct 2014 08:38:43 -0700 (PDT) Received: by mail-yh0-f44.google.com with SMTP id i57so859643yha.31 for ; Thu, 09 Oct 2014 08:38:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=0s++DKhLT5sQOpFE1Mjl4wqF++WtYmsyju1nQMMj36g=; b=Kl5hdLINd/8nZN07nVlCjQjPJ9nISDY5lS11OlBu2Dj0PucBcurodKQNTz8rKxk9gP h2QwEd9RfIG+rl0vfYIWBBstR1VzM0wijwQbWpZHS9ERF2Pyg3DJLLOnF8jlwr8Bnt2u lTjFAOVk+q+/WQbQ7Q1ePiwXAt+MCwaustmVqMLYXVP5kvJT9YbxcKF3L2SpsPD2KP0Y jMAnXb44uo67r19Ipk7JV9Kd/3il/9KnjhRAOuZr99u26OIuhpzmLrKCBtdJI3mLhf00 o55NVQ5f7Dafyy2fO1VCLHTInnGR87wJFBRjC+/TiBy0YzMvDX2k3hMI+qwyCUn1LavM rGSg== X-Received: by 10.70.134.197 with SMTP id pm5mr586938pdb.20.1412869122964; Thu, 09 Oct 2014 08:38:42 -0700 (PDT) Received: from localhost.localdomain (ip72-201-95-47.ph.ph.cox.net. [72.201.95.47]) by mx.google.com with ESMTPSA id y1sm844710pbw.89.2014.10.09.08.38.41 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 09 Oct 2014 08:38:41 -0700 (PDT) From: Todd Previte To: intel-gfx@lists.freedesktop.org Date: Thu, 9 Oct 2014 08:38:01 -0700 Message-Id: <1412869090-48010-2-git-send-email-tprevite@gmail.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1412869090-48010-1-git-send-email-tprevite@gmail.com> References: <1412869090-48010-1-git-send-email-tprevite@gmail.com> Subject: [Intel-gfx] [PATCH 01/10] drm/i915: Add automated testing support for Displayport compliance testing X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" X-Spam-Status: No, score=-4.1 required=5.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_MED, T_DKIM_INVALID, T_RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP 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 --- 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