From patchwork Tue Jun 24 22:12:54 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Todd Previte X-Patchwork-Id: 4414441 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 92A24BEEAA for ; Tue, 24 Jun 2014 22:13:43 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id D124B20272 for ; Tue, 24 Jun 2014 22:13:42 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id 001A320263 for ; Tue, 24 Jun 2014 22:13:41 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 84FC46E5B9; Tue, 24 Jun 2014 15:13:41 -0700 (PDT) X-Original-To: intel-gfx@lists.freedesktop.org Delivered-To: intel-gfx@lists.freedesktop.org Received: from mail-pb0-f41.google.com (mail-pb0-f41.google.com [209.85.160.41]) by gabe.freedesktop.org (Postfix) with ESMTP id 870706E5BC for ; Tue, 24 Jun 2014 15:13:40 -0700 (PDT) Received: by mail-pb0-f41.google.com with SMTP id ma3so808701pbc.0 for ; Tue, 24 Jun 2014 15:13:40 -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=LtAMaVF79aEUZzDfgJzXMnZKss50cTqVqBwtn63kloo=; b=N+M5spJx2s5uwQJwcgOXW+JPpfLU/wiNE2d2aXgdshVpXCCnc0BxxgwHboiJH5wplv sRB3MpEfUA3OSgP/kxybkXiEa5u5yGXgG6tG0Fac4mjiWUT0fo3RJfmyYtb3wI07TWKj VqgotjbE4Zvo9rbt+Vzdn15O/qQg1bhRZzUn/BXcTHjt2+PUPsQJoDwiLU3dGJfYZsIR gkGp9YM/h0ikWbpLBblf3IiOUgxAr65jA6GnewFhPl8hclicG6upIX3afuxjey3Q7SyI ABFEl26Qy07A1ZNhriOZqirVWwRuRbPVpBYUSEIW45Io5xaSN0hdjjPR6ZGwrTsNoEg0 pKqA== X-Received: by 10.68.95.225 with SMTP id dn1mr5558222pbb.126.1403648020358; Tue, 24 Jun 2014 15:13:40 -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.38 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 24 Jun 2014 15:13:39 -0700 (PDT) From: Todd Previte To: intel-gfx@lists.freedesktop.org Date: Tue, 24 Jun 2014 15:12:54 -0700 Message-Id: <1403647974-42377-7-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 6/6] drm/i915: Update intel_dp_check_link_status() 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 Move the DPCD read to the top and check for an interrupt from the sink to catch Displayport automated testing requests necessary to support Displayport compliance testing. The checks for active connectors and link status are moved below the check for the interrupt. Signed-off-by: Todd Previte --- drivers/gpu/drm/i915/intel_dp.c | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index 95bd27a..b58fc25 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c @@ -3579,22 +3579,9 @@ intel_dp_check_link_status(struct intel_dp *intel_dp) u8 sink_irq_vector; u8 link_status[DP_LINK_STATUS_SIZE]; - /* FIXME: This access isn't protected by any locks. */ - if (!intel_encoder->connectors_active) - return; - - if (WARN_ON(!intel_encoder->base.crtc)) - return; - - /* Try to read receiver status if the link appears to be up */ - if (!intel_dp_get_link_status(intel_dp, link_status)) { - return; - } - - /* Now read the DPCD to see if it's actually running */ - if (!intel_dp_get_dpcd(intel_dp)) { + /* Attempt to read the DPCD */ + if (!intel_dp_get_dpcd(intel_dp)) return; - } /* Try to read the source of the interrupt */ if (intel_dp->dpcd[DP_DPCD_REV] >= 0x11 && @@ -3604,12 +3591,25 @@ intel_dp_check_link_status(struct intel_dp *intel_dp) DP_DEVICE_SERVICE_IRQ_VECTOR, sink_irq_vector); - if (sink_irq_vector & DP_AUTOMATED_TEST_REQUEST) + if (sink_irq_vector & DP_AUTOMATED_TEST_REQUEST) { + DRM_DEBUG_KMS("Displayport: Received automated test request\n"); intel_dp_handle_test_request(intel_dp); + } if (sink_irq_vector & (DP_CP_IRQ | DP_SINK_SPECIFIC_IRQ)) DRM_DEBUG_DRIVER("CP or sink specific irq unhandled\n"); } + /* FIXME: This access isn't protected by any locks. */ + if (!intel_encoder->connectors_active) + return; + + if (WARN_ON(!intel_encoder->base.crtc)) + return; + + /* Try to read receiver status if the link appears to be up */ + if (!intel_dp_get_link_status(intel_dp, link_status)) + return; + if (!drm_dp_channel_eq_ok(link_status, intel_dp->lane_count)) { DRM_DEBUG_KMS("%s: channel EQ not ok, retraining\n", intel_encoder->base.name);