From patchwork Thu Sep 6 20:08:32 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Vetter X-Patchwork-Id: 1417901 Return-Path: X-Original-To: patchwork-intel-gfx@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork1.kernel.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by patchwork1.kernel.org (Postfix) with ESMTP id DCC073FC71 for ; Thu, 6 Sep 2012 21:16:47 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id DA3E9A0D8B for ; Thu, 6 Sep 2012 14:16:47 -0700 (PDT) X-Original-To: intel-gfx@lists.freedesktop.org Delivered-To: intel-gfx@lists.freedesktop.org Received: from mail-wi0-f171.google.com (mail-wi0-f171.google.com [209.85.212.171]) by gabe.freedesktop.org (Postfix) with ESMTP id C80269E829 for ; Thu, 6 Sep 2012 14:15:59 -0700 (PDT) Received: by wibhq4 with SMTP id hq4so5486228wib.12 for ; Thu, 06 Sep 2012 14:15:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references; bh=zWTvQ4tbCcfEqKx4xETwHZNI4cMmyKSZOHVI7IycaUM=; b=A7HHpjQ9EFgpat5ZMEukUQv8g/dnt9Z0raBCvkOgUy2YctXSsogjSrw3i7QMd6gABt xT7tPbJOmg1GhWUJj5DZo0Vb+TjxbnrMJwtN2heTU50+uq25gyVerQNM4O+bKAVIW1x2 IUYANGHHDL40cZqdPwYr/MGdiUwZ1NcrOgOBM= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references :x-gm-message-state; bh=zWTvQ4tbCcfEqKx4xETwHZNI4cMmyKSZOHVI7IycaUM=; b=m3H380s1wIcDbqc6z6XNMdFJvGPUYHkj/RJdLn00noMwaSGCWjVSHKmwfeyJ9e+3UX Mp7+CWXmwRCZk5OLgfBd7NphBIwcIcdHuoCuy7A9u7dYITH+ctIJrahIJ6tgaVI/fa6n VtT4P1I13dUWoLNGq2tpTFxKOut8qEGCn7Lt9MFwHx51EV0kvPfGl3/mlxH6K8N9IkbG 9+h3T6hT+UABJUWPwN95MABxwHzn0jG+/ER1RcOrbHTGVaFseqaVF8WUm4Y3y2igMi1k El1ZTqEYcRKxht99OmQi6FfDLe9MnQunS1LrWr9VW0pKz6ROiwMnq0LZm+7y9PqqwWjv MSdQ== Received: by 10.216.71.135 with SMTP id r7mr1849611wed.41.1346966158439; Thu, 06 Sep 2012 14:15:58 -0700 (PDT) Received: from wespe.ffwll.local (178-83-130-250.dynamic.hispeed.ch. [178.83.130.250]) by mx.google.com with ESMTPS id h9sm6038460wiz.1.2012.09.06.14.15.56 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 06 Sep 2012 14:15:57 -0700 (PDT) From: Daniel Vetter To: Intel Graphics Development Date: Thu, 6 Sep 2012 22:08:32 +0200 Message-Id: <1346962115-7267-2-git-send-email-daniel.vetter@ffwll.ch> X-Mailer: git-send-email 1.7.11.2 In-Reply-To: <1346962115-7267-1-git-send-email-daniel.vetter@ffwll.ch> References: <1346962115-7267-1-git-send-email-daniel.vetter@ffwll.ch> X-Gm-Message-State: ALoCoQkytl4qpoHf/zoQT4QV5S/U78zG5dHKQZ3+U/MLsBOiH8wZg5Tx3C7bIqYtQId1bkjdWKYG Cc: Daniel Vetter Subject: [Intel-gfx] [PATCH 1/4] drm/i915: rip out intel_disable_pch_ports X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: intel-gfx-bounces+patchwork-intel-gfx=patchwork.kernel.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+patchwork-intel-gfx=patchwork.kernel.org@lists.freedesktop.org Even with the old crtc helper code we should have disabled all encoders on that pipe by now, and with the new code this would definitely paper over a bug. We already have the necessary checks in place in intel_disable_transcoder, so if we accidentally leave a pch port on, this will be caught. Hence just rip this all out. Note that up to the patch in this giant modeset series that removes the LVDS special case to avoid disabling LVDS in the encoder->prepare callback ("drm/i915/lvds: ditch ->prepare special case"), this was not the case for all outputs. Also note that in commit 1b3c7a47f993bf9ab6c4c7cc3bbf5588052b58f4 Author: Zhenyu Wang Date: Wed Nov 25 13:09:38 2009 +0800 drm/i915: Fix LVDS stability issue on Ironlake this was already discovered independently and worked around. How I bloody hate this entire mess of cludges piled on top of other cludges. Signed-off-by: Daniel Vetter Reviewed-by: Jesse Barnes --- drivers/gpu/drm/i915/intel_display.c | 60 ------------------------------------ 1 file changed, 60 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index e061acd..6c06109 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -1860,59 +1860,6 @@ static void intel_disable_plane(struct drm_i915_private *dev_priv, intel_wait_for_vblank(dev_priv->dev, pipe); } -static void disable_pch_dp(struct drm_i915_private *dev_priv, - enum pipe pipe, int reg, u32 port_sel) -{ - u32 val = I915_READ(reg); - if (dp_pipe_enabled(dev_priv, pipe, port_sel, val)) { - DRM_DEBUG_KMS("Disabling pch dp %x on pipe %d\n", reg, pipe); - I915_WRITE(reg, val & ~DP_PORT_EN); - } -} - -static void disable_pch_hdmi(struct drm_i915_private *dev_priv, - enum pipe pipe, int reg) -{ - u32 val = I915_READ(reg); - if (hdmi_pipe_enabled(dev_priv, pipe, val)) { - DRM_DEBUG_KMS("Disabling pch HDMI %x on pipe %d\n", - reg, pipe); - I915_WRITE(reg, val & ~PORT_ENABLE); - } -} - -/* Disable any ports connected to this transcoder */ -static void intel_disable_pch_ports(struct drm_i915_private *dev_priv, - enum pipe pipe) -{ - u32 reg, val; - - val = I915_READ(PCH_PP_CONTROL); - I915_WRITE(PCH_PP_CONTROL, val | PANEL_UNLOCK_REGS); - - disable_pch_dp(dev_priv, pipe, PCH_DP_B, TRANS_DP_PORT_SEL_B); - disable_pch_dp(dev_priv, pipe, PCH_DP_C, TRANS_DP_PORT_SEL_C); - disable_pch_dp(dev_priv, pipe, PCH_DP_D, TRANS_DP_PORT_SEL_D); - - reg = PCH_ADPA; - val = I915_READ(reg); - if (adpa_pipe_enabled(dev_priv, pipe, val)) - I915_WRITE(reg, val & ~ADPA_DAC_ENABLE); - - reg = PCH_LVDS; - val = I915_READ(reg); - if (lvds_pipe_enabled(dev_priv, pipe, val)) { - DRM_DEBUG_KMS("disable lvds on pipe %d val 0x%08x\n", pipe, val); - I915_WRITE(reg, val & ~LVDS_PORT_EN); - POSTING_READ(reg); - udelay(100); - } - - disable_pch_hdmi(dev_priv, pipe, HDMIB); - disable_pch_hdmi(dev_priv, pipe, HDMIC); - disable_pch_hdmi(dev_priv, pipe, HDMID); -} - int intel_pin_and_fence_fb_obj(struct drm_device *dev, struct drm_i915_gem_object *obj, @@ -3311,13 +3258,6 @@ static void ironlake_crtc_disable(struct drm_crtc *crtc) ironlake_fdi_disable(crtc); - /* This is a horrible layering violation; we should be doing this in - * the connector/encoder ->prepare instead, but we don't always have - * enough information there about the config to know whether it will - * actually be necessary or just cause undesired flicker. - */ - intel_disable_pch_ports(dev_priv, pipe); - intel_disable_transcoder(dev_priv, pipe); if (HAS_PCH_CPT(dev)) {