drm/i915: Add intel_atomic_add_affected_planes()
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Tue, 24 Nov 2020 20:11:54 +0000 (22:11 +0200)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Fri, 4 Dec 2020 17:07:24 +0000 (19:07 +0200)
drm_atomic_add_affected_planes() only considers planes which
are logically enabled in the uapi state. For bigjoiner we need
to consider planes logically enabled in the hw state. Add a
helper for that.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20201124201156.17095-2-ville.syrjala@linux.intel.com
Reviewed-by: Manasi Navare <manasi.d.navare@intel.com>
drivers/gpu/drm/i915/display/intel_cdclk.c
drivers/gpu/drm/i915/display/intel_display.c
drivers/gpu/drm/i915/display/intel_display.h

index 088d5908176c403b0e10406bdd53977ecd7fdff2..2e878cc274b7bb6d14b9498589cbce9e95051e5d 100644 (file)
@@ -2415,8 +2415,7 @@ static int intel_modeset_all_pipes(struct intel_atomic_state *state)
                if (ret)
                        return ret;
 
-               ret = drm_atomic_add_affected_planes(&state->base,
-                                                    &crtc->base);
+               ret = intel_atomic_add_affected_planes(state, crtc);
                if (ret)
                        return ret;
 
index 2d0d1b2ef957ab93694a4172fb5c441a96b45d0e..bcc7d5f8e0a84ef89400c837f32890e9fdea1a82 100644 (file)
@@ -15069,6 +15069,19 @@ static int intel_crtc_add_planes_to_state(struct intel_atomic_state *state,
        return 0;
 }
 
+int intel_atomic_add_affected_planes(struct intel_atomic_state *state,
+                                    struct intel_crtc *crtc)
+{
+       const struct intel_crtc_state *old_crtc_state =
+               intel_atomic_get_old_crtc_state(state, crtc);
+       const struct intel_crtc_state *new_crtc_state =
+               intel_atomic_get_new_crtc_state(state, crtc);
+
+       return intel_crtc_add_planes_to_state(state, crtc,
+                                             old_crtc_state->enabled_planes |
+                                             new_crtc_state->enabled_planes);
+}
+
 static bool active_planes_affects_min_cdclk(struct drm_i915_private *dev_priv)
 {
        /* See {hsw,vlv,ivb}_plane_ratio() */
index 5e0d42d82c110aa27ed8ce981e9defee16cf6708..a5771bfecba6fe40ea3addc10cdf380353cfcdc3 100644 (file)
@@ -499,6 +499,8 @@ enum phy_fia {
                             ((connector) = to_intel_connector((__state)->base.connectors[__i].ptr), \
                             (new_connector_state) = to_intel_digital_connector_state((__state)->base.connectors[__i].new_state), 1))
 
+int intel_atomic_add_affected_planes(struct intel_atomic_state *state,
+                                    struct intel_crtc *crtc);
 u8 intel_calc_active_pipes(struct intel_atomic_state *state,
                           u8 active_pipes);
 void intel_link_compute_m_n(u16 bpp, int nlanes,