• J
    drm/i915: try not to lose backlight CBLV precision · cac6a5ae
    Jani Nikula 提交于
    ACPI has _BCM and _BQC methods to set and query the backlight
    brightness, respectively. The ACPI opregion has variables BCLP and CBLV
    to hold the requested and current backlight brightness, respectively.
    
    The BCLP variable has range 0..255 while the others have range
    0..100. This means the _BCM method has to scale the brightness for BCLP,
    and the gfx driver has to scale the requested value back for CBLV. If
    the _BQC method uses the CBLV variable (apparently some implementations
    do, some don't) for current backlight level reporting, there's room for
    rounding errors.
    
    Use DIV_ROUND_UP for scaling back to CBLV to get back to the same values
    that were passed to _BCM, presuming the _BCM simply uses bclp = (in *
    255) / 100 for scaling to BCLP.
    
    Reference: https://gist.github.com/aaronlu/6314920Reported-by: NAaron Lu <aaron.lu@intel.com>
    Signed-off-by: NJani Nikula <jani.nikula@intel.com>
    Reviewed-by: NAaron Lu <aaron.lu@intel.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
    cac6a5ae
intel_opregion.c 14.1 KB