linux/drivers/gpu/drm/i915
Indan Zupancic 951f3512db drm/i915: Do not handle backlight combination mode specially
The current code does not follow Intel documentation: It misses some things
and does other, undocumented things. This causes wrong backlight values in
certain conditions. Instead of adding tricky code handling badly documented
and rare corner cases, don't handle combination mode specially at all. This
way PCI_LBPC is never touched and weird things shouldn't happen.

If combination mode is enabled, then the only downside is that changing the
brightness has a greater granularity (the LBPC value), but LBPC is at most
254 and the maximum is in the thousands, so this is no real functional loss.

A potential problem with not handling combined mode is that a brightness of
max * PCI_LBPC is not bright enough. However, this is very unlikely because
from the documentation LBPC seems to act as a scaling factor and doesn't look
like it's supposed to be changed after boot. The value at boot should always
result in a bright enough screen.

IMPORTANT: However, although usually the above is true, it may not be when
people ran an older (2.6.37) kernel which messed up the LBPC register, and
they are unlucky enough to have a BIOS that saves and restores the LBPC value.
Then a good kernel may seem to not work: Max brightness isn't bright enough.
If this happens people should boot back into the old kernel, set brightness
to the maximum, and then reboot. After that everything should be fine.

For more information see the below links. This fixes bugs:

  http://bugzilla.kernel.org/show_bug.cgi?id=23472
  http://bugzilla.kernel.org/show_bug.cgi?id=25072

Signed-off-by: Indan Zupancic <indan@nul.nu>
Tested-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2011-02-21 15:25:43 -08:00
..
dvo_ch7xxx.c drm/i915: use GMBUS to manage i2c links 2010-09-18 15:46:19 +01:00
dvo_ch7017.c drm/i915/dvo: Report LVDS attached to ch701x as connected 2010-12-30 13:50:43 +00:00
dvo_ivch.c drm/i915: use GMBUS to manage i2c links 2010-09-18 15:46:19 +01:00
dvo_sil164.c drm/i915: use GMBUS to manage i2c links 2010-09-18 15:46:19 +01:00
dvo_tfp410.c drm/i915: use GMBUS to manage i2c links 2010-09-18 15:46:19 +01:00
dvo.h drm/i915: Subclass intel_encoder. 2010-08-09 11:24:28 -07:00
i915_debugfs.c drm/i915/debugfs: Correct format after changing type of err object 'size' 2011-01-12 20:24:50 +00:00
i915_dma.c drm/i915: Recognise non-VGA display devices 2011-01-23 12:52:16 +00:00
i915_drv.c drm/i915: Disable RC6 on Ironlake 2011-02-09 17:04:54 +00:00
i915_drv.h drm/i915: Disable RC6 on Ironlake 2011-02-09 17:04:54 +00:00
i915_gem_debug.c drm/i915: Use drm_i915_gem_object as the preferred type 2010-11-23 20:19:10 +00:00
i915_gem_evict.c drm/i915/evict: Ensure we completely cleanup on failure 2011-01-11 22:55:39 +00:00
i915_gem_execbuffer.c drm/i915: Fix use of invalid array size for ring->sync_seqno 2011-01-23 12:52:11 +00:00
i915_gem_gtt.c drm/i915,agp/intel: Do not clear stolen entries 2011-01-24 18:26:25 +00:00
i915_gem_tiling.c drm/i915: Pipelined fencing [infrastructure] 2010-12-02 10:07:05 +00:00
i915_gem.c drm/i915,agp/intel: Do not clear stolen entries 2011-01-24 18:26:25 +00:00
i915_ioc32.c
i915_irq.c drm/i915: Suppress spurious vblank interrupts 2011-01-31 12:38:47 +00:00
i915_mem.c
i915_reg.h drm/i915: Do not handle backlight combination mode specially 2011-02-21 15:25:43 -08:00
i915_suspend.c drm/i915: cleanup rc6 code 2011-01-11 20:43:59 +00:00
i915_trace_points.c
i915_trace.h drm/i915: Kill the get_fence tracepoint 2010-12-02 10:20:47 +00:00
intel_acpi.c drm/i915: i915 cannot provide switcher services. 2010-12-08 15:40:44 +10:00
intel_bios.c drm/i915: Add a module option to override the use of SSC 2011-01-13 16:05:58 +00:00
intel_bios.h drm/i915: Initialize panel timing registers if VBIOS did not 2010-10-19 09:17:24 +01:00
intel_crt.c drm/i915/crt: Force the initial probe after reset 2011-01-25 19:23:29 +00:00
intel_display.c drm/i915: Fix resume regression from 5d1d0cc 2011-02-11 09:20:51 +00:00
intel_dp.c drm/i915: Trigger modesetting if force-audio changes 2011-02-11 09:20:50 +00:00
intel_drv.h drm/i915: Disable RC6 on Ironlake 2011-02-09 17:04:54 +00:00
intel_dvo.c drm/i915/dvo: Fix panel and DDC i2c pins 2010-09-28 23:34:44 +01:00
intel_fb.c Revert "drm: Update fbdev fb_fix_screeninfo" 2011-01-14 16:10:28 -08:00
intel_hdmi.c drm/i915: Trigger modesetting if force-audio changes 2011-02-11 09:20:50 +00:00
intel_i2c.c Merge branch 'drm-intel-fixes' into drm-intel-next 2010-11-15 06:49:30 +00:00
intel_lvds.c drm/i915/lvds: Restore dithering on native modes for gen2/3 2011-02-06 15:53:30 +00:00
intel_modes.c drm/i915: use GMBUS to manage i2c links 2010-09-18 15:46:19 +01:00
intel_opregion.c drm/i915: Use consistent mappings for OpRegion between ACPI and i915 2011-01-24 18:28:08 +00:00
intel_overlay.c drm/i915: Implement GPU semaphores for inter-ring synchronisation on SNB 2010-12-05 00:37:38 +00:00
intel_panel.c drm/i915: Do not handle backlight combination mode specially 2011-02-21 15:25:43 -08:00
intel_ringbuffer.c drm/i915: Invalidate TLB caches on SNB BLT/BSD rings 2011-02-02 15:52:38 +00:00
intel_ringbuffer.h drm/i915/ringbuffer: Fix use of stale HEAD position whilst polling for space 2011-01-20 17:26:57 +00:00
intel_sdvo_regs.h drm/i915/sdvo: Add missing TV filters 2010-08-09 11:24:29 -07:00
intel_sdvo.c drm/i915: Trigger modesetting if force-audio changes 2011-02-11 09:20:50 +00:00
intel_tv.c drm/i915/tv: Use polling rather than interrupt-based hotplug 2011-02-11 09:20:51 +00:00
Makefile drm/i915: Split i915_gem_execbuffer into its own file. 2010-11-25 21:19:25 +00:00