• Ville Syrjälä's avatar
    drm/i915: Move ddb/wm programming into plane update/disable hooks on skl+ · ff43bc37
    Ville Syrjälä authored
    On SKL+ the plane WM/BUF_CFG registers are a proper part of each
    plane's register set. That means accessing them will cancel any
    pending plane update, and we would need a PLANE_SURF register write
    to arm the wm/ddb change as well.
    
    To avoid all the problems with that let's just move the wm/ddb
    programming into the plane update/disable hooks. Now all plane
    registers get written in one (hopefully atomic) operation.
    
    To make that feasible we'll move the plane ddb tracking into
    the crtc state. Watermarks were already tracked there.
    
    v2: Rebase due to input CSC
    v3: Split out a bunch of junk (Matt)
    v4: Add skl_wm_add_affected_planes() to deal with
        cursor special case and non-zero wm register reset value
    v5: Drop the unrelated for_each_intel_plane_mask() fix (Matt)
        Remove the redundant ddb memset() (Matt)
    
    Cc: Matt Roper <matthew.d.roper@intel.com>
    Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
    Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> #v3
    Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20181127165900.31298-1-ville.syrjala@linux.intel.com
    ff43bc37
intel_pm.c 284 KB