• Dhinakaran Pandiyan's avatar
    drm/i915/psr: Set idle frame count based on sink synchronization latency · a3db1428
    Dhinakaran Pandiyan authored
    DPCD 2009h "Synchronization latency in sink" has bits that tell us the
    maximum number of frames sink can take to resynchronize to source timing
    when exiting PSR. More importantly, as per eDP 1.4b, this is the "Minimum
    number of frames following PSR exit that the Source device needs to
    wait for PSR entry."
    
    We currently use this value only to setup the number frames to wait before
    PSR2 selective update. But, based on the above description it makes more
    sense to use this to configure idle frames for both PSR1 and and PSR2. This
    will ensure we wait the required number of frames before
    activation whether it is PSR1 or PSR2.
    
    The minimum number of idle frames remains 6, while allowing sink
    synchronization latency and VBT to increase this value.
    
    This also solves the flip-flop between sink and source frames that I
    noticed on my Thinkpad X260 during PSR exit. This specific panel has a
    value of 8h, which according to the spec means the "Source device must
    wait for more than eight active frames after PSR exit before initiating PSR
    entry. (In this case, should be provided by the panel supplier.)" VBT
    however has a value of 0.
    
    Cc: Jani Nikula <jani.nikula@intel.com>
    Cc: Jose Roberto de Souza <jose.souza@intel.com>
    Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: default avatarDhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
    Reviewed-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20180525033047.7596-1-dhinakaran.pandiyan@intel.com
    a3db1428
intel_psr.c 31 KB