• U. Artie Eoff's avatar
    drm/i915: intel_backlight scale() math WA · 673e7bbd
    U. Artie Eoff authored
    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:
    
        6dda730e
    
     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: default avatarU. Artie Eoff <ullysses.a.eoff@intel.com>
    Cc: stable@vger.kernel.org
    Reviewed-By: default avatarJoe Konno <joe.konno@intel.com>
    [danvet: Add backporting note.]
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    673e7bbd
intel_panel.c 40.7 KB