• Ville Syrjälä's avatar
    drm/i915: Disable DC states for all commits · a2b6e99d
    Ville Syrjälä authored
    Keeping DC states enabled is incompatible with the _noarm()/_arm()
    split we use for writing pipe/plane registers. When DC5 and PSR
    are enabled, all pipe/plane registers effectively become self-arming
    on account of DC5 exit arming the update, and PSR exit latching it.
    
    What probably saves us most of the time is that (with PIPE_MISC[21]=0)
    all pipe register writes themselves trigger PSR exit, and then
    we don't re-enter PSR until the idle frame count has elapsed.
    So it may be that the PSR exit happens already before we've
    updated the state too much.
    
    Also the PSR1 panel (at least on this KBL) seems to discard the first
    frame we trasmit, presumably still scanning out from its internal
    framebuffer at that point. So only the second frame we transmit is
    actually visible. But I suppose that could also be panel specific
    behaviour. I haven't checked out how other PSR panels behave, nor
    did I bother to check what the eDP spec has to say about this.
    
    And since this really is all about DC states, let's switch from
    the MODESET domain to the DC_OFF domain. Functionally they are
    100% identical. We should probably remove the MODESET domain...
    
    And for good measure let's toss in an assert to the place where
    we do the _noarm() register writes to make sure DC states are
    in fact off.
    
    v2: Just use intel_display_power_is_enabled() (Imre)
    
    Cc: <stable@vger.kernel.org> #v5.17+
    Cc: Manasi Navare <navaremanasi@google.com>
    Cc: Drew Davenport <ddavenport@chromium.org>
    Cc: Jouni Högander <jouni.hogander@intel.com>
    Reviewed-by: default avatarImre Deak <imre.deak@intel.com>
    Fixes: d13dde44 ("drm/i915: Split pipe+output CSC programming to noarm+arm pair")
    Fixes: f8a005eb ("drm/i915: Optimize icl+ universal plane programming")
    Fixes: 890b6ec4 ("drm/i915: Split skl+ plane update into noarm+arm pair")
    Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20230320183532.17727-1-ville.syrjala@linux.intel.com
    (cherry picked from commit 41b4c7fe)
    Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
    a2b6e99d
intel_display.c 262 KB