• Lyude Paul's avatar
    drm/i915: Fix eDP DPCD aux max backlight calculations · fde7266f
    Lyude Paul authored
    Max backlight value for the panel was being calculated using byte
    count i.e. 0xffff if 2 bytes are supported for backlight brightness
    and 0xff if 1 byte is supported. However, EDP_PWMGEN_BIT_COUNT
    determines the number of active control bits used for the brightness
    setting. Thus, even if the panel uses 2 byte setting, it might not use
    all the control bits. Thus, max backlight should be set based on the
    value of EDP_PWMGEN_BIT_COUNT instead of assuming 65535 or 255.
    
    Additionally, EDP_PWMGEN_BIT_COUNT was being updated based on the VBT
    frequency which results in a different max backlight value. Thus,
    setting of EDP_PWMGEN_BIT_COUNT is moved to setup phase instead of
    enable so that max backlight can be calculated correctly. Only the
    frequency divider is set during the enable phase using the value of
    EDP_PWMGEN_BIT_COUNT.
    
    This is based off the original patch series from Furquan Shaikh
    <furquan@google.com>:
    
    https://patchwork.freedesktop.org/patch/317255/?series=62326&rev=3
    
    Changes since original patch:
    * Remove unused intel_dp variable in intel_dp_aux_setup_backlight()
    * Fix checkpatch issues
    * Make sure that we rewrite the pwmgen bit count whenever we bring the
      panel out of D3 mode
    
    v2 by Jani:
    * rebase
    * fix readb return value check
    
    Cc: Furquan Shaikh <furquan@google.com>
    Tested-by: default avatarAceLan Kao <acelan.kao@canonical.com>
    Tested-by: default avatarPerry Yuan <pyuan@redhat.com>
    Signed-off-by: default avatarLyude Paul <lyude@redhat.com>
    Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20200116211623.53799-2-lyude@redhat.com
    fde7266f
intel_display_types.h 43.1 KB