From patchwork Tue Jun 23 06:36:30 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lampersperger Andreas X-Patchwork-Id: 6658991 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.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id D98469F399 for ; Tue, 23 Jun 2015 06:36:49 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 001FC2060E for ; Tue, 23 Jun 2015 06:36:48 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id 7C9082060A for ; Tue, 23 Jun 2015 06:36:47 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 074F26E125; Mon, 22 Jun 2015 23:36:46 -0700 (PDT) X-Original-To: Intel-gfx@lists.freedesktop.org Delivered-To: Intel-gfx@lists.freedesktop.org Received: from smtp03.udag.de (smtp03.udag.de [62.146.106.29]) by gabe.freedesktop.org (Postfix) with ESMTP id 296856E125 for ; Mon, 22 Jun 2015 23:36:44 -0700 (PDT) Received: from de01pc11930.global.jhcn.net (tmo-107-192.customers.d1-online.com [80.187.107.192]) by smtp03.udag.de (Postfix) with ESMTPA id 5226A29D; Tue, 23 Jun 2015 08:36:41 +0200 (CEST) From: Andreas Lampersperger To: Intel-gfx@lists.freedesktop.org, daniel.vetter@ffwll.ch, a_lampersperger@web.de Date: Tue, 23 Jun 2015 08:36:30 +0200 Message-Id: <1435041390-24136-1-git-send-email-lampersperger.andreas@heidenhain.de> X-Mailer: git-send-email 2.1.4 In-Reply-To: References: Subject: [Intel-gfx] [PATCH] vlv eDP BIOS Compatiblity to EMGD generated BIOS X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.18 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=-5.6 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_MED, 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 When the i915.ko identify an eDP output on a valleyview board, it should be more slackly. The reason for that is, that BIOS DATA TABLES generated with intel BMP (Binary Modification Program) do not set bits for NOT_HDMI or DIGITAL_OUTPUT on the device type. Due to Adolfo Sanchez from Intel EMGD, this is not possible. To solve this problem and enable i915.ko on embedded vlv boards with eDP, we ignore this two bits. Signed-off-by: Andreas Lampersperger --- drivers/gpu/drm/i915/intel_bios.h | 10 ++++++++++ drivers/gpu/drm/i915/intel_dp.c | 10 ++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_bios.h b/drivers/gpu/drm/i915/intel_bios.h index af0b476..c42161f 100644 --- a/drivers/gpu/drm/i915/intel_bios.h +++ b/drivers/gpu/drm/i915/intel_bios.h @@ -742,6 +742,16 @@ int intel_parse_bios(struct drm_device *dev); DEVICE_TYPE_DIGITAL_OUTPUT | \ DEVICE_TYPE_ANALOG_OUTPUT) +/* + * We dont look on DEVICE_TYPE_NOT_HDMI_OUTPUT an DEVICE_TYPE_DIGITAL_OUTPUT + * on valleyview, because intels BMP-generated BIOS don't sets these + * BITS for eDP ports + */ +#define DEVICE_TYPE_eDP_BITS_VLV \ + (DEVICE_TYPE_eDP_BITS &\ + (~ DEVICE_TYPE_NOT_HDMI_OUTPUT ) &\ + (~ DEVICE_TYPE_DIGITAL_OUTPUT ) ) + /* define the DVO port for HDMI output type */ #define DVO_B 1 #define DVO_C 2 diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index f52eef1..51c753f 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c @@ -5036,6 +5036,7 @@ bool intel_dp_is_edp(struct drm_device *dev, enum port port) struct drm_i915_private *dev_priv = dev->dev_private; union child_device_config *p_child; int i; + u16 eDP_bits; static const short port_mapping[] = { [PORT_B] = PORT_IDPB, [PORT_C] = PORT_IDPC, @@ -5047,13 +5048,18 @@ bool intel_dp_is_edp(struct drm_device *dev, enum port port) if (!dev_priv->vbt.child_dev_num) return false; + + if (IS_VALLEYVIEW(dev)) + eDP_bits = DEVICE_TYPE_eDP_BITS_VLV; + else + eDP_bits = DEVICE_TYPE_eDP_BITS; for (i = 0; i < dev_priv->vbt.child_dev_num; i++) { p_child = dev_priv->vbt.child_dev + i; if (p_child->common.dvo_port == port_mapping[port] && - (p_child->common.device_type & DEVICE_TYPE_eDP_BITS) == - (DEVICE_TYPE_eDP & DEVICE_TYPE_eDP_BITS)) + (p_child->common.device_type & eDP_bits) == + (DEVICE_TYPE_eDP & eDP_bits)) return true; } return false;