]> git.baikalelectronics.ru Git - kernel.git/commit
drm/i915: intel_backlight scale() math WA
authorU. Artie Eoff <ullysses.a.eoff@intel.com>
Mon, 29 Sep 2014 22:49:32 +0000 (15:49 -0700)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Mon, 6 Oct 2014 14:47:24 +0000 (16:47 +0200)
commitad65f4ff4e0ad1b4e60ca5ce110213c5af3b2d09
tree374688115b4c6f01df23a1a8c08841b0e8cdd3e9
parentf7f9c162ec86fd83229d6b6d690a863cd45906e9
drm/i915: intel_backlight scale() math WA

Improper truncated integer division in the scale() function causes
actual_brightness != brightness. This (partial) work-around should be
sufficient for a majority of use-cases, but it is by no means a complete
solution.

TODO: Determine how best to scale "user" values to "hw" values, and
vice-versa, when the ranges are of different sizes. That would be a
buggy scenario even with this work-around.

The issue was introduced in the following (v3.17-rc1) commit:

    f960a92 drm/i915: respect the VBT minimum backlight brightness

Note that for easier backporting this commit adds a duplicated macro.
A follow-up cleanup patch rectifies this for 3.18+

v2: (thanks to Chris Wilson) clarify commit message, use rounded division
macro

v3: -DIV_ROUND_CLOSEST() fails to build with CONFIG_X86_32=y. (Jani)
    -Use DIV_ROUND_CLOSEST_ULL() instead. (Damien)
    -v1 and v2 originally authored by Joe Konno.

Signed-off-by: U. Artie Eoff <ullysses.a.eoff@intel.com>
Cc: stable@vger.kernel.org
Reviewed-By: Joe Konno <joe.konno@intel.com>
[danvet: Add backporting note.]
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/intel_panel.c