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,25 +357,31 @@ static void plane_config_fini(struct intel_initial_plane_config *plane_config) ...@@ -357,25 +357,31 @@ 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;
struct intel_initial_plane_config plane_config = {};
/* for_each_intel_crtc(&i915->drm, crtc) {
* Note that reserving the BIOS fb up front prevents us struct intel_initial_plane_config plane_config = {};
* 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);
/* if (!to_intel_crtc_state(crtc->base.state)->uapi.active)
* If the fb is shared between multiple heads, we'll continue;
* just get the first one.
*/
intel_find_initial_plane_obj(crtc, &plane_config);
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);
}
} }
...@@ -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,25 +267,31 @@ static void plane_config_fini(struct intel_initial_plane_config *plane_config) ...@@ -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_crtc *crtc;
struct intel_initial_plane_config plane_config = {};
/* for_each_intel_crtc(&i915->drm, crtc) {
* Note that reserving the BIOS fb up front prevents us struct intel_initial_plane_config plane_config = {};
* 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);
/* if (!to_intel_crtc_state(crtc->base.state)->uapi.active)
* If the fb is shared between multiple heads, we'll continue;
* just get the first one.
*/
intel_find_initial_plane_obj(crtc, &plane_config);
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);
}
} }
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