Re: [Regression] Laptop screen dark when lid closed and reopened.with 3.1

Alex Davis
2011-10-02T19:20:27Z

Sometime in the past: Keith Packard <keithp@keithp.com> wrote:

>> One good thing about the 3.1 kernels is that I now have the /sys/class/backlight/intel_backlight directory
>> in addition to /sys/class/backlight/dell_backlight. With intel_backlight, I can control the LCD brightness;
>> dell_backlight never worked, neither in 3.0 or 3.1.
>
>Can you tell if the screen is blank with the backlight on, or is the
>screen drawn correctly and the backlight off?
>
>If the screen is blank but the backlight is on, then you may want a
>patch which is on my drm-intel-fixes branch.
>
>git://anongit.freedesktop.org/~keithp/linux
>
>If the screen is drawn, but the backlight is off, you may want to try
>reverting the native backlight patch:
>
>aaa6fd2a004147bf32fce05720938236de3361d9
>
>Author: Matthew Garrett <mjg@redhat.com>  2011-08-12 03:11:33
>Committer: Keith Packard <keithp@keithp.com>  2011-08-15 12:10:25
>Parent: 302983e9059e9ef5de3ca7671918eeb237c5971e (drm/i915/pch: Fix integer math bugs in panel fitting)
>
>Not all systems expose a firmware or platform mechanism for changing the backlight intensity on i915, so add native driver support.
>
>--
>keith.packard@intel.com

The following patch fixes the problem for me:

diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c
index 31da77f..9c16243 100644
--- a/drivers/gpu/drm/i915/intel_lvds.c
+++ b/drivers/gpu/drm/i915/intel_lvds.c
@@ -126,8 +126,6 @@ static void intel_lvds_disable(struct intel_lvds *intel_lvds)
stat_reg = PP_STATUS;
}

-    intel_panel_disable_backlight(dev);
-
I915_WRITE(ctl_reg, I915_READ(ctl_reg) & ~POWER_TARGET_ON);
if (wait_for((I915_READ(stat_reg) & PP_ON) == 0, 1000))
DRM_ERROR("timed out waiting for panel to power off\n");

This patch is against 3.1 rc8 with Keith Packard's drm-intel-fixes merged in.

Putting printk's in ./drivers/gpu/drm/i915/intel_panel.c showed that intel_get_brightness was being called after

the panel was disabled, which caused a 0 to be saved as the value to restore the brightness. intel_panel_disable_backlight
merely sets the brightness to 0. Commenting out this call allows the correct brightness value to be saved.

Thoughts?