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: 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>
This commit is contained in:
@@ -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.
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user