Maximum LCD Brightness Lower Than Before?

If you’re trying out a kernel newer than 2.6.38-rc6 and find your LCD brightness doesn’t go up to its maximum, here’s some help:  boot into an older kernel, set the brightness to maximum, then reboot into the newer kernel, and now you’ll get the max. brightness that you’re used to.

The git commit by Indan Zupancic explains why this happens:

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:

3 Replies to “Maximum LCD Brightness Lower Than Before?”

  1. >Interesting. I run a heavy GPU on my desktop, which is synced to git-head every week. I haven't upgraded my laptops (i9xx) and missed this one. Maybe I should hack the code before upgrading on the laptops. Thanks for this.

  2. >I ran .37 and ended with non-max backlight.. and then rebooted to .37

    I was able to reach much lower brightness in .38
    values available for userspace control are 0(can see only in total darness) to 24(quite dim)

    When I power cycle the laptop, I am reverted to original values (BIOS does not preserve the register)
    0 = somewhat the same as previous 24
    24 = bright enough

    It would be nice to be able to reach full brightness scale.

  3. >A new fix has been added to the final 2.6.38 release that reverts the fix I mentioned in the original message and also fixes the problem of getting to really low brightness levels in the earlier 2.6.38 kernels (upto -rc6). This fix could address the issue MMlosh above was seeing.;a=commitdiff;h=ba3820ade317ee

    is the new commit that reverts the older one and fixes the issue in a different way.

Leave a Reply

Your email address will not be published. Required fields are marked *