From patchwork Tue Jun 24 22:12:49 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Todd Previte X-Patchwork-Id: 4414391 Return-Path: X-Original-To: patchwork-intel-gfx@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 2B27D9F1D6 for ; Tue, 24 Jun 2014 22:13:35 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 535A720272 for ; Tue, 24 Jun 2014 22:13:34 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id 6659120263 for ; Tue, 24 Jun 2014 22:13:33 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 1250C6E5B7; Tue, 24 Jun 2014 15:13:33 -0700 (PDT) X-Original-To: intel-gfx@lists.freedesktop.org Delivered-To: intel-gfx@lists.freedesktop.org Received: from mail-pb0-f45.google.com (mail-pb0-f45.google.com [209.85.160.45]) by gabe.freedesktop.org (Postfix) with ESMTP id 9F5956E5B9 for ; Tue, 24 Jun 2014 15:13:30 -0700 (PDT) Received: by mail-pb0-f45.google.com with SMTP id rr13so800014pbb.18 for ; Tue, 24 Jun 2014 15:13:30 -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=hrfXArdD7CSKGplLcM22aq84mbamIR8LMu9yPLY+xiU=; b=JMpv4Uo8TbS24aSomCgnS36/EUhWHyZeukww75dQKMScfBtaah4cU4U8QTw82njwQI cVIAFWK6UJydgdFIDFNOPm+ufm6wwsApH5QwSYKjwoFyqSk6I0KEQTRNUPQS/O8qG+th TdeMaHWCuwzBKj8+q1FAJW1W/guzZNwhyb0/JYTtWUiri1JcZKhMwwh+sIie1TF+hUqZ SeCXvoThFwCIs3lArnVHSRRi9Ch49OgYduIbAMPY7g11IPRpKfKkx4AiDvsv8/6KlHaX JkEPQFWyMvpQUJegJ2FcqW2Cdzo1BjOeWc1ZD6dH1XxhdIpMsR5qBa+EmhMg8R4LdOiH voCw== X-Received: by 10.68.97.129 with SMTP id ea1mr5391069pbb.73.1403648010480; Tue, 24 Jun 2014 15:13:30 -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 bc4sm2023698pbb.2.2014.06.24.15.13.28 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 24 Jun 2014 15:13:29 -0700 (PDT) From: Todd Previte To: intel-gfx@lists.freedesktop.org Date: Tue, 24 Jun 2014 15:12:49 -0700 Message-Id: <1403647974-42377-2-git-send-email-tprevite@gmail.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1403647974-42377-1-git-send-email-tprevite@gmail.com> References: <1403647974-42377-1-git-send-email-tprevite@gmail.com> Subject: [Intel-gfx] [PATCH 1/6] 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 responded to test automation requests from a sink device. Signed-off-by: Todd Previte --- drivers/gpu/drm/i915/intel_dp.c | 84 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 82 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index b5ec489..3bd1780 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c @@ -3328,11 +3328,91 @@ intel_dp_get_sink_irq(struct intel_dp *intel_dp, u8 *sink_irq_vector) sink_irq_vector, 1) == 1; } +/* 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; +} + +/* Displayport compliance testing - Fast AUX transactions (optional) */ +static uint8_t +intel_dp_autotest_faux_pattern(struct intel_dp *intel_dp) +{ + uint8_t test_result = DP_TEST_NAK; + printk("Displayport: Fast AUX (FAUX) not supported.\n"); + 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 ret = 0; + + DRM_DEBUG_KMS("Displayport: Received automated test request\n"); + /* Read DP_TEST_REQUEST register to identify the requested test */ + ret = drm_dp_dpcd_read(&intel_dp->aux, DP_TEST_REQUEST, &rxdata, 1); + + /* Determine which test has been requested */ + switch (rxdata) { + /* ACK/NAK response based on test function response + Unimplemented/unsupported tests will NAK */ + case DP_TEST_LINK_TRAINING: + DRM_DEBUG_KMS("Displayport: Executing LINK_TRAINING request\n"); + response = intel_dp_autotest_link_training(intel_dp); + break; + case DP_TEST_LINK_VIDEO_PATTERN: + DRM_DEBUG_KMS("Displayport: Executing TEST_PATTERN request\n"); + response = intel_dp_autotest_video_pattern(intel_dp); + break; + case DP_TEST_LINK_EDID_READ: + DRM_DEBUG_KMS("Displayport: Executing EDID request\n"); + response = intel_dp_autotest_edid(intel_dp); + break; + case DP_TEST_LINK_PHY_TEST_PATTERN: + DRM_DEBUG_KMS("Displayport: Executing PHY_PATTERN request\n"); + 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("Displayport: Executing FAUX_PATTERN request \n"); + response = intel_dp_autotest_faux_pattern(intel_dp); + break; + /* Unsupported test case or something went wrong */ + default: + /* Log error here for unhandled test request */ + DRM_DEBUG_KMS("Displayport: Error - unhandled automated test request\n"); + break; + } + /* Send the response from the test result */ + ret = drm_dp_dpcd_write(&intel_dp->aux, DP_TEST_RESPONSE, &response, 1); } /*