On Mon, May 20, 2024 at 09:58:03PM +0300, Imre Deak wrote: > Factor out a function to modeset commit a set of pipes, which a later > patch will reuse for DP link retraining. > > Signed-off-by: Imre Deak <imre.deak@xxxxxxxxx> Reviewed-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > --- > drivers/gpu/drm/i915/display/intel_ddi.c | 31 +----------------- > drivers/gpu/drm/i915/display/intel_display.c | 34 ++++++++++++++++++++ > drivers/gpu/drm/i915/display/intel_display.h | 3 ++ > 3 files changed, 38 insertions(+), 30 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c > index 3c3fc53376ce3..170ba01786cf8 100644 > --- a/drivers/gpu/drm/i915/display/intel_ddi.c > +++ b/drivers/gpu/drm/i915/display/intel_ddi.c > @@ -4441,35 +4441,6 @@ intel_ddi_init_dp_connector(struct intel_digital_port *dig_port) > return connector; > } > > -static int modeset_pipe(struct drm_crtc *crtc, > - struct drm_modeset_acquire_ctx *ctx) > -{ > - struct drm_atomic_state *state; > - struct drm_crtc_state *crtc_state; > - int ret; > - > - state = drm_atomic_state_alloc(crtc->dev); > - if (!state) > - return -ENOMEM; > - > - state->acquire_ctx = ctx; > - to_intel_atomic_state(state)->internal = true; > - > - crtc_state = drm_atomic_get_crtc_state(state, crtc); > - if (IS_ERR(crtc_state)) { > - ret = PTR_ERR(crtc_state); > - goto out; > - } > - > - crtc_state->connectors_changed = true; > - > - ret = drm_atomic_commit(state); > -out: > - drm_atomic_state_put(state); > - > - return ret; > -} > - > static int intel_hdmi_reset_link(struct intel_encoder *encoder, > struct drm_modeset_acquire_ctx *ctx) > { > @@ -4539,7 +4510,7 @@ static int intel_hdmi_reset_link(struct intel_encoder *encoder, > * would be perfectly happy if were to just reconfigure > * the SCDC settings on the fly. > */ > - return modeset_pipe(&crtc->base, ctx); > + return intel_modeset_commit_pipes(dev_priv, BIT(crtc->pipe), ctx); > } > > static enum intel_hotplug_state > diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c > index cce1420fb5417..4edb1ede4a1b4 100644 > --- a/drivers/gpu/drm/i915/display/intel_display.c > +++ b/drivers/gpu/drm/i915/display/intel_display.c > @@ -5569,6 +5569,40 @@ int intel_modeset_all_pipes_late(struct intel_atomic_state *state, > return 0; > } > > +int intel_modeset_commit_pipes(struct drm_i915_private *i915, > + u8 pipe_mask, > + struct drm_modeset_acquire_ctx *ctx) > +{ > + struct drm_atomic_state *state; > + struct intel_crtc *crtc; > + int ret; > + > + state = drm_atomic_state_alloc(&i915->drm); > + if (!state) > + return -ENOMEM; > + > + state->acquire_ctx = ctx; > + to_intel_atomic_state(state)->internal = true; > + > + for_each_intel_crtc_in_pipe_mask(&i915->drm, crtc, pipe_mask) { > + struct intel_crtc_state *crtc_state = > + intel_atomic_get_crtc_state(state, crtc); > + > + if (IS_ERR(crtc_state)) { > + ret = PTR_ERR(crtc_state); > + goto out; > + } > + > + crtc_state->uapi.connectors_changed = true; > + } > + > + ret = drm_atomic_commit(state); > +out: > + drm_atomic_state_put(state); > + > + return ret; > +} > + > /* > * This implements the workaround described in the "notes" section of the mode > * set sequence documentation. When going from no pipes or single pipe to > diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h > index 56d1c0e3e62cd..dfdc42cef8723 100644 > --- a/drivers/gpu/drm/i915/display/intel_display.h > +++ b/drivers/gpu/drm/i915/display/intel_display.h > @@ -537,6 +537,9 @@ int intel_modeset_pipes_in_mask_early(struct intel_atomic_state *state, > const char *reason, u8 pipe_mask); > int intel_modeset_all_pipes_late(struct intel_atomic_state *state, > const char *reason); > +int intel_modeset_commit_pipes(struct drm_i915_private *i915, > + u8 pipe_mask, > + struct drm_modeset_acquire_ctx *ctx); > void intel_modeset_get_crtc_power_domains(struct intel_crtc_state *crtc_state, > struct intel_power_domain_mask *old_domains); > void intel_modeset_put_crtc_power_domains(struct intel_crtc *crtc, > -- > 2.43.3 -- Ville Syrjälä Intel