From patchwork Thu Mar 14 15:15:57 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Takashi Iwai X-Patchwork-Id: 2271911 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 516EC3FCF6 for ; Thu, 14 Mar 2013 15:17:15 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 19723E6762 for ; Thu, 14 Mar 2013 08:17:15 -0700 (PDT) X-Original-To: intel-gfx@lists.freedesktop.org Delivered-To: intel-gfx@lists.freedesktop.org Received: from mx2.suse.de (cantor2.suse.de [195.135.220.15]) by gabe.freedesktop.org (Postfix) with ESMTP id 2DABFE6987 for ; Thu, 14 Mar 2013 08:15:58 -0700 (PDT) Received: from relay2.suse.de (unknown [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 570E3A51F7; Thu, 14 Mar 2013 16:15:57 +0100 (CET) Date: Thu, 14 Mar 2013 16:15:57 +0100 Message-ID: From: Takashi Iwai To: intel-gfx@lists.freedesktop.org User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI/1.14.6 (Maruoka) FLIM/1.14.9 (=?UTF-8?B?R29qxY0=?=) APEL/10.8 Emacs/24.2 (x86_64-suse-linux-gnu) MULE/6.0 (HANACHIRUSATO) MIME-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Cc: linux-kernel@vger.kernel.org Subject: [Intel-gfx] Regression: HSW eDP broken on 3.9-rc[12] 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: , 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 Hi, I noticed that a Haswell desktop machine with eDP gets only the blank screen on the latest Linus tree. It works fine with 3.8, so it's a regression since 3.9-rc1. Actually, it's not a regression. It's three regressions in a shot! (I had to do painful bisections three times...) c464b2a17c59adedbdc02cc54341d630354edc3 drm/i915: set TRANSCODER_EDP even earlier d6dd9eb1d96d2b7345fe4664066c2b7ed86da898 drm/i915: dynamic Haswell display power well support commit cf0a6584aa6d382f802f2c3cacac23ccbccde0cd drm/i915: write backlight harder The first commit affects no matter whether power well is on or off. It brings the eDP output always blank. The next one has to be reverted completely, too. The power well doesn't seem working correctly after all. At this point, you'll get a blank screen only after the boot until X starts, at least. The blank screen on fb after boot is due to the third commit, which is actually my patch. The patch has been never tested on the machines where the original fix was targeted, so this is a clearly a wrong regression fix :-< Judging from increasing number of bug reports, we should revert this one again and fix properly for the Dell laptop. At least, many HP and Lenovo machines suffer from this commit. The details are found at: https://bugzilla.kernel.org/show_bug.cgi?id=47941 Instead of reverting, a patch like below fixes the issue, too, but I guess this will break Dell machine again, if I understand correctly. A good news is that now I have a machine for a while so that I can test any patch for the third, broken backlight, problem. thanks, Takashi diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c index a3730e0..99ef9a3 100644 --- a/drivers/gpu/drm/i915/intel_panel.c +++ b/drivers/gpu/drm/i915/intel_panel.c @@ -317,10 +317,13 @@ void intel_panel_enable_backlight(struct drm_device *dev, enum pipe pipe) { struct drm_i915_private *dev_priv = dev->dev_private; + int prev_level; if (dev_priv->backlight_level == 0) dev_priv->backlight_level = intel_panel_get_max_backlight(dev); + prev_level = intel_panel_get_backlight(dev); + dev_priv->backlight_enabled = true; intel_panel_actually_set_backlight(dev, dev_priv->backlight_level); @@ -363,7 +366,7 @@ set_level: * On some machines, BLC_PWM_CPU_CTL is cleared to zero automatically * when BLC_PWM_CPU_CTL2 and BLC_PWM_PCH_CTL1 are written. */ - if (!intel_panel_get_backlight(dev)) + if (!prev_level && dev_priv->backlight_level) intel_panel_actually_set_backlight(dev, dev_priv->backlight_level); }