• D
    ACPI / video: Fix brightness control initialization for some laptops. · a89803df
    Danny Baumann 提交于
    In particular, this fixes brightness control initialization for all
    devices that return index values from _BQC and don't happen to have the
    initial index set by the BIOS in their _BCL table. One example for that
    is the Dell Inspiron 15R SE (model number 7520).
    
    What happened for those devices is that acpi_init_brightness queried the
    initial brightness by calling acpi_video_device_lcd_get_level_current.
    This called _BQC, which returned e.g. 13. As _BQC_use_index isn't
    determined at this point (and thus has its initial value of 0), the
    index isn't converted into the actual level. As '13' isn't present in
    the _BCL list, *level is later overwritten with brightness->curr, which
    was initialized to max_level (100) before. Later in
    acpi_init_brightness, level_old (with the value 100) is used as an index
    into the _BCL table, which causes a value outside of the actual table to
    be used as input into acpi_video_device_lcd_set_level(). Depending on
    the (undefined) value of that location, this call will fail, causing the
    brightness control for the device in question not to be enabled.
    
    Fix that by returning the raw value returned by the _BQC call in the
    initialization case.
    Signed-off-by: NDanny Baumann <dannybaumann@web.de>
    Reviewed-by: NAaron Lu <aaron.lu@intel.com>
    Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
    a89803df
video.c 46.9 KB