drm/i915: Simplify intel_initial_plane_config() calling convention
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Fri, 2 Feb 2024 22:43:36 +0000 (00:43 +0200)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Wed, 7 Feb 2024 00:01:36 +0000 (02:01 +0200)
There's no reason the caller of intel_initial_plane_config() should
have to loop over the CRTCs. Pull the loop into the function to
make life simpler for the caller.

v2: "fix" xe

Reviewed-by: Andrzej Hajda <andrzej.hajda@intel.com>
Tested-by: Paz Zcharya <pazz@chromium.org>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240202224340.30647-13-ville.syrjala@linux.intel.com
Acked-by: Lucas De Marchi <lucas.demarchi@intel.com>
drivers/gpu/drm/i915/display/intel_display_driver.c
drivers/gpu/drm/i915/display/intel_plane_initial.c
drivers/gpu/drm/i915/display/intel_plane_initial.h
drivers/gpu/drm/xe/display/xe_plane_initial.c

index 061a7c814e10022a3aed0eaca739340580b0d7e6..14a9a62cab8ac2a876b7f1925f7b4410139f8a26 100644 (file)
@@ -415,7 +415,6 @@ int intel_display_driver_probe_nogem(struct drm_i915_private *i915)
 {
        struct drm_device *dev = &i915->drm;
        enum pipe pipe;
-       struct intel_crtc *crtc;
        int ret;
 
        if (!HAS_DISPLAY(i915))
@@ -465,11 +464,7 @@ int intel_display_driver_probe_nogem(struct drm_i915_private *i915)
        intel_acpi_assign_connector_fwnodes(i915);
        drm_modeset_unlock_all(dev);
 
-       for_each_intel_crtc(dev, crtc) {
-               if (!to_intel_crtc_state(crtc->base.state)->uapi.active)
-                       continue;
-               intel_crtc_initial_plane_config(crtc);
-       }
+       intel_initial_plane_config(i915);
 
        /*
         * Make sure hardware watermarks really match the state we read out.
index 78bff6181ceb0a648ab89c50ea6412b53942beac..b7e12b60d68baf491e5bc61906fd73a439393b0d 100644 (file)
@@ -357,25 +357,31 @@ static void plane_config_fini(struct intel_initial_plane_config *plane_config)
                i915_vma_put(plane_config->vma);
 }
 
-void intel_crtc_initial_plane_config(struct intel_crtc *crtc)
+void intel_initial_plane_config(struct drm_i915_private *i915)
 {
-       struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
-       struct intel_initial_plane_config plane_config = {};
+       struct intel_crtc *crtc;
 
-       /*
-        * Note that reserving the BIOS fb up front prevents us
-        * from stuffing other stolen allocations like the ring
-        * on top.  This prevents some ugliness at boot time, and
-        * can even allow for smooth boot transitions if the BIOS
-        * fb is large enough for the active pipe configuration.
-        */
-       dev_priv->display.funcs.display->get_initial_plane_config(crtc, &plane_config);
+       for_each_intel_crtc(&i915->drm, crtc) {
+               struct intel_initial_plane_config plane_config = {};
 
-       /*
-        * If the fb is shared between multiple heads, we'll
-        * just get the first one.
-        */
-       intel_find_initial_plane_obj(crtc, &plane_config);
+               if (!to_intel_crtc_state(crtc->base.state)->uapi.active)
+                       continue;
 
-       plane_config_fini(&plane_config);
+               /*
+                * Note that reserving the BIOS fb up front prevents us
+                * from stuffing other stolen allocations like the ring
+                * on top.  This prevents some ugliness at boot time, and
+                * can even allow for smooth boot transitions if the BIOS
+                * fb is large enough for the active pipe configuration.
+                */
+               i915->display.funcs.display->get_initial_plane_config(crtc, &plane_config);
+
+               /*
+                * If the fb is shared between multiple heads, we'll
+                * just get the first one.
+                */
+               intel_find_initial_plane_obj(crtc, &plane_config);
+
+               plane_config_fini(&plane_config);
+       }
 }
index c7e35ab3182b65f2ceb69b3572410699edf68e96..64ab95239cd451c0e60cc3faa8ac46f6ffa345a5 100644 (file)
@@ -6,8 +6,8 @@
 #ifndef __INTEL_PLANE_INITIAL_H__
 #define __INTEL_PLANE_INITIAL_H__
 
-struct intel_crtc;
+struct drm_i915_private;
 
-void intel_crtc_initial_plane_config(struct intel_crtc *crtc);
+void intel_initial_plane_config(struct drm_i915_private *i915);
 
 #endif
index ccf83c12b545abec17abfc9b01618de6fd587926..0aaf4eb2cdc54e74700537c398abd6b8abffb2b4 100644 (file)
@@ -267,25 +267,31 @@ static void plane_config_fini(struct intel_initial_plane_config *plane_config)
        }
 }
 
-void intel_crtc_initial_plane_config(struct intel_crtc *crtc)
+void intel_initial_plane_config(struct drm_i915_private *i915)
 {
-       struct xe_device *xe = to_xe_device(crtc->base.dev);
-       struct intel_initial_plane_config plane_config = {};
+       struct intel_crtc *crtc;
 
-       /*
-        * Note that reserving the BIOS fb up front prevents us
-        * from stuffing other stolen allocations like the ring
-        * on top.  This prevents some ugliness at boot time, and
-        * can even allow for smooth boot transitions if the BIOS
-        * fb is large enough for the active pipe configuration.
-        */
-       xe->display.funcs.display->get_initial_plane_config(crtc, &plane_config);
+       for_each_intel_crtc(&i915->drm, crtc) {
+               struct intel_initial_plane_config plane_config = {};
 
-       /*
-        * If the fb is shared between multiple heads, we'll
-        * just get the first one.
-        */
-       intel_find_initial_plane_obj(crtc, &plane_config);
+               if (!to_intel_crtc_state(crtc->base.state)->uapi.active)
+                       continue;
 
-       plane_config_fini(&plane_config);
+               /*
+                * Note that reserving the BIOS fb up front prevents us
+                * from stuffing other stolen allocations like the ring
+                * on top.  This prevents some ugliness at boot time, and
+                * can even allow for smooth boot transitions if the BIOS
+                * fb is large enough for the active pipe configuration.
+                */
+               i915->display.funcs.display->get_initial_plane_config(crtc, &plane_config);
+
+               /*
+                * If the fb is shared between multiple heads, we'll
+                * just get the first one.
+                */
+               intel_find_initial_plane_obj(crtc, &plane_config);
+
+               plane_config_fini(&plane_config);
+       }
 }