From patchwork Wed Aug 12 15:06:30 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thierry Reding X-Patchwork-Id: 7002611 Return-Path: X-Original-To: patchwork-dri-devel@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 34397C05AC for ; Wed, 12 Aug 2015 15:07:44 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 5185D206FA for ; Wed, 12 Aug 2015 15:07:43 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id 77BE9206F8 for ; Wed, 12 Aug 2015 15:07:42 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id B0D8E7204F; Wed, 12 Aug 2015 08:07:41 -0700 (PDT) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-pd0-f169.google.com (mail-pd0-f169.google.com [209.85.192.169]) by gabe.freedesktop.org (Postfix) with ESMTPS id 474C1720A2 for ; Wed, 12 Aug 2015 08:07:40 -0700 (PDT) Received: by pdrg1 with SMTP id g1so8292680pdr.2 for ; Wed, 12 Aug 2015 08:07: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=nNmuCaRyl9VwUcAo+EniZ36Z+wVmNK8WJWeG8NLF3iI=; b=C2R4rcpQU68p2vJNfqkPEE9wyeRN78Yjn+jpYfAWa8HCI4AnkwGRG8o/BmVZP5rzX8 Sc7K/FBOcK3Xmghfk0hlP0+DvHU0Rlh/bnXgupO3OKYocbj/ZxRhcnMbG/yUwAfMOuNQ TLJuIXdAlOJWJyhxzWeApNpPrn7EdTCZehlZ+am1i0WHO4pWIzLdNlTOawr1DFF5yOqW iZ4NbfFAmiyJzNIZVB2usrnJjmBgq+NhwBOvhw4x1IZ2s0IMgdkSU39CJ6MzOHuu09AC TPz7yrR5zlNW/0EPD57ba+MjcIS5wbv6tvWBCAjgQ8FKgMB+xHbGGmdo87c/FRnRReAQ EHow== X-Received: by 10.70.98.131 with SMTP id ei3mr69353885pdb.154.1439392059927; Wed, 12 Aug 2015 08:07:39 -0700 (PDT) Received: from localhost (port-17141.pppoe.wtnet.de. [46.59.128.142]) by smtp.gmail.com with ESMTPSA id hx7sm6765300pbc.84.2015.08.12.08.07.38 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 12 Aug 2015 08:07:39 -0700 (PDT) From: Thierry Reding To: dri-devel@lists.freedesktop.org Subject: [RFC 02/13] drm/dp: Set channel coding on link configuration Date: Wed, 12 Aug 2015 17:06:30 +0200 Message-Id: <1439392001-29637-2-git-send-email-thierry.reding@gmail.com> X-Mailer: git-send-email 2.4.5 In-Reply-To: <1439392001-29637-1-git-send-email-thierry.reding@gmail.com> References: <1439392001-29637-1-git-send-email-thierry.reding@gmail.com> Cc: Daniel Vetter X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" 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, RP_MATCHES_RCVD, T_DKIM_INVALID, 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 From: Thierry Reding Make use of ANSI 8B/10B channel coding if the DisplayPort sink supports it. Signed-off-by: Thierry Reding --- drivers/gpu/drm/drm_dp_helper.c | 16 ++++++++++++++-- include/drm/drm_dp_helper.h | 2 ++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/drm_dp_helper.c b/drivers/gpu/drm/drm_dp_helper.c index bf480a08d7f9..c48addaf4301 100644 --- a/drivers/gpu/drm/drm_dp_helper.c +++ b/drivers/gpu/drm/drm_dp_helper.c @@ -295,7 +295,7 @@ EXPORT_SYMBOL(drm_dp_dpcd_read_link_status); */ int drm_dp_link_probe(struct drm_dp_aux *aux, struct drm_dp_link *link) { - u8 values[4]; + u8 values[7]; int err; memset(link, 0, sizeof(*link)); @@ -314,6 +314,9 @@ int drm_dp_link_probe(struct drm_dp_aux *aux, struct drm_dp_link *link) if (values[3] & DP_NO_AUX_HANDSHAKE_LINK_TRAINING) link->capabilities |= DP_LINK_CAP_FAST_TRAINING; + if (values[6] & DP_SET_ANSI_8B10B) + link->capabilities |= DP_LINK_CAP_ANSI_8B10B; + return 0; } EXPORT_SYMBOL(drm_dp_link_probe); @@ -396,7 +399,7 @@ EXPORT_SYMBOL(drm_dp_link_power_down); */ int drm_dp_link_configure(struct drm_dp_aux *aux, struct drm_dp_link *link) { - u8 values[2]; + u8 values[2], value = 0; int err; values[0] = drm_dp_link_rate_to_bw_code(link->rate); @@ -409,6 +412,15 @@ int drm_dp_link_configure(struct drm_dp_aux *aux, struct drm_dp_link *link) if (err < 0) return err; + if (link->capabilities & DP_LINK_CAP_ANSI_8B10B) + value = DP_SET_ANSI_8B10B; + else + value = 0; + + err = drm_dp_dpcd_writeb(aux, DP_MAIN_LINK_CHANNEL_CODING_SET, value); + if (err < 0) + return err; + return 0; } EXPORT_SYMBOL(drm_dp_link_configure); diff --git a/include/drm/drm_dp_helper.h b/include/drm/drm_dp_helper.h index 61c0518704a3..83be142395ff 100644 --- a/include/drm/drm_dp_helper.h +++ b/include/drm/drm_dp_helper.h @@ -88,6 +88,7 @@ # define DP_DETAILED_CAP_INFO_AVAILABLE (1 << 4) /* DPI */ #define DP_MAIN_LINK_CHANNEL_CODING 0x006 +# define DP_CODING_ANSI_8B10B (1 << 0) #define DP_DOWN_STREAM_PORT_COUNT 0x007 # define DP_PORT_COUNT_MASK 0x0f @@ -743,6 +744,7 @@ int drm_dp_dpcd_read_link_status(struct drm_dp_aux *aux, */ #define DP_LINK_CAP_ENHANCED_FRAMING (1 << 0) #define DP_LINK_CAP_FAST_TRAINING (1 << 1) +#define DP_LINK_CAP_ANSI_8B10B (1 << 2) struct drm_dp_link { unsigned char revision;