Commit 30865e4a authored by Ville Syrjälä's avatar Ville Syrjälä

drm/i915: Simplify intel_initial_plane_config() calling convention

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: default avatarAndrzej Hajda <andrzej.hajda@intel.com>
Tested-by: default avatarPaz Zcharya <pazz@chromium.org>
Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240202224340.30647-13-ville.syrjala@linux.intel.comAcked-by: default avatarLucas De Marchi <lucas.demarchi@intel.com>
parent 6bfdb06d
...@@ -415,7 +415,6 @@ int intel_display_driver_probe_nogem(struct drm_i915_private *i915) ...@@ -415,7 +415,6 @@ int intel_display_driver_probe_nogem(struct drm_i915_private *i915)
{ {
struct drm_device *dev = &i915->drm; struct drm_device *dev = &i915->drm;
enum pipe pipe; enum pipe pipe;
struct intel_crtc *crtc;
int ret; int ret;
if (!HAS_DISPLAY(i915)) if (!HAS_DISPLAY(i915))
...@@ -465,11 +464,7 @@ int intel_display_driver_probe_nogem(struct drm_i915_private *i915) ...@@ -465,11 +464,7 @@ int intel_display_driver_probe_nogem(struct drm_i915_private *i915)
intel_acpi_assign_connector_fwnodes(i915); intel_acpi_assign_connector_fwnodes(i915);
drm_modeset_unlock_all(dev); drm_modeset_unlock_all(dev);
for_each_intel_crtc(dev, crtc) { intel_initial_plane_config(i915);
if (!to_intel_crtc_state(crtc->base.state)->uapi.active)
continue;
intel_crtc_initial_plane_config(crtc);
}
/* /*
* Make sure hardware watermarks really match the state we read out. * Make sure hardware watermarks really match the state we read out.
......
...@@ -357,11 +357,16 @@ static void plane_config_fini(struct intel_initial_plane_config *plane_config) ...@@ -357,11 +357,16 @@ static void plane_config_fini(struct intel_initial_plane_config *plane_config)
i915_vma_put(plane_config->vma); 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_crtc *crtc;
for_each_intel_crtc(&i915->drm, crtc) {
struct intel_initial_plane_config plane_config = {}; struct intel_initial_plane_config plane_config = {};
if (!to_intel_crtc_state(crtc->base.state)->uapi.active)
continue;
/* /*
* Note that reserving the BIOS fb up front prevents us * Note that reserving the BIOS fb up front prevents us
* from stuffing other stolen allocations like the ring * from stuffing other stolen allocations like the ring
...@@ -369,7 +374,7 @@ void intel_crtc_initial_plane_config(struct intel_crtc *crtc) ...@@ -369,7 +374,7 @@ void intel_crtc_initial_plane_config(struct intel_crtc *crtc)
* can even allow for smooth boot transitions if the BIOS * can even allow for smooth boot transitions if the BIOS
* fb is large enough for the active pipe configuration. * fb is large enough for the active pipe configuration.
*/ */
dev_priv->display.funcs.display->get_initial_plane_config(crtc, &plane_config); i915->display.funcs.display->get_initial_plane_config(crtc, &plane_config);
/* /*
* If the fb is shared between multiple heads, we'll * If the fb is shared between multiple heads, we'll
...@@ -378,4 +383,5 @@ void intel_crtc_initial_plane_config(struct intel_crtc *crtc) ...@@ -378,4 +383,5 @@ void intel_crtc_initial_plane_config(struct intel_crtc *crtc)
intel_find_initial_plane_obj(crtc, &plane_config); intel_find_initial_plane_obj(crtc, &plane_config);
plane_config_fini(&plane_config); plane_config_fini(&plane_config);
}
} }
...@@ -6,8 +6,8 @@ ...@@ -6,8 +6,8 @@
#ifndef __INTEL_PLANE_INITIAL_H__ #ifndef __INTEL_PLANE_INITIAL_H__
#define __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 #endif
...@@ -267,11 +267,16 @@ static void plane_config_fini(struct intel_initial_plane_config *plane_config) ...@@ -267,11 +267,16 @@ 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_crtc *crtc;
for_each_intel_crtc(&i915->drm, crtc) {
struct intel_initial_plane_config plane_config = {}; struct intel_initial_plane_config plane_config = {};
if (!to_intel_crtc_state(crtc->base.state)->uapi.active)
continue;
/* /*
* Note that reserving the BIOS fb up front prevents us * Note that reserving the BIOS fb up front prevents us
* from stuffing other stolen allocations like the ring * from stuffing other stolen allocations like the ring
...@@ -279,7 +284,7 @@ void intel_crtc_initial_plane_config(struct intel_crtc *crtc) ...@@ -279,7 +284,7 @@ void intel_crtc_initial_plane_config(struct intel_crtc *crtc)
* can even allow for smooth boot transitions if the BIOS * can even allow for smooth boot transitions if the BIOS
* fb is large enough for the active pipe configuration. * fb is large enough for the active pipe configuration.
*/ */
xe->display.funcs.display->get_initial_plane_config(crtc, &plane_config); i915->display.funcs.display->get_initial_plane_config(crtc, &plane_config);
/* /*
* If the fb is shared between multiple heads, we'll * If the fb is shared between multiple heads, we'll
...@@ -288,4 +293,5 @@ void intel_crtc_initial_plane_config(struct intel_crtc *crtc) ...@@ -288,4 +293,5 @@ void intel_crtc_initial_plane_config(struct intel_crtc *crtc)
intel_find_initial_plane_obj(crtc, &plane_config); intel_find_initial_plane_obj(crtc, &plane_config);
plane_config_fini(&plane_config); plane_config_fini(&plane_config);
}
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment