On Wed, Dec 01, 2021 at 03:57:07PM +0200, Jani Nikula wrote: > Move a number of crtc/pipe related functions to intel_crtc.[ch], and > un-inline to avoid looking into struct drm_i915_private guts in header > files. > > Signed-off-by: Jani Nikula <jani.nikula@xxxxxxxxx> Reviewed-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > --- > drivers/gpu/drm/i915/display/intel_crtc.c | 42 ++++++++++++++++++ > drivers/gpu/drm/i915/display/intel_crtc.h | 10 +++++ > .../drm/i915/display/intel_display_types.h | 44 ------------------- > 3 files changed, 52 insertions(+), 44 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_crtc.c b/drivers/gpu/drm/i915/display/intel_crtc.c > index 243d5cc29734..43554b591904 100644 > --- a/drivers/gpu/drm/i915/display/intel_crtc.c > +++ b/drivers/gpu/drm/i915/display/intel_crtc.c > @@ -36,6 +36,48 @@ static void assert_vblank_disabled(struct drm_crtc *crtc) > drm_crtc_vblank_put(crtc); > } > > +bool intel_pipe_valid(struct drm_i915_private *i915, enum pipe pipe) > +{ > + return (pipe >= 0 && > + pipe < ARRAY_SIZE(i915->pipe_to_crtc_mapping) && > + INTEL_INFO(i915)->pipe_mask & BIT(pipe) && > + i915->pipe_to_crtc_mapping[pipe]); > +} > + > +struct intel_crtc *intel_get_first_crtc(struct drm_i915_private *i915) > +{ > + return to_intel_crtc(drm_crtc_from_index(&i915->drm, 0)); > +} > + > +struct intel_crtc *intel_crtc_for_pipe(struct drm_i915_private *i915, > + enum pipe pipe) > +{ > + /* pipe_to_crtc_mapping may have hole on any of 3 display pipe system */ > + drm_WARN_ON(&i915->drm, > + !(INTEL_INFO(i915)->pipe_mask & BIT(pipe))); > + return i915->pipe_to_crtc_mapping[pipe]; > +} > + > +struct intel_crtc *intel_crtc_for_plane(struct drm_i915_private *i915, > + enum i9xx_plane_id plane) > +{ > + return i915->plane_to_crtc_mapping[plane]; > +} > + > +void intel_crtc_wait_for_next_vblank(struct intel_crtc *crtc) > +{ > + drm_crtc_wait_one_vblank(&crtc->base); > +} > + > +void intel_wait_for_vblank_if_active(struct drm_i915_private *i915, > + enum pipe pipe) > +{ > + struct intel_crtc *crtc = intel_crtc_for_pipe(i915, pipe); > + > + if (crtc->active) > + intel_crtc_wait_for_next_vblank(crtc); > +} > + > u32 intel_crtc_get_vblank_counter(struct intel_crtc *crtc) > { > struct drm_device *dev = crtc->base.dev; > diff --git a/drivers/gpu/drm/i915/display/intel_crtc.h b/drivers/gpu/drm/i915/display/intel_crtc.h > index a0039fdb1eb0..23110e91ecd6 100644 > --- a/drivers/gpu/drm/i915/display/intel_crtc.h > +++ b/drivers/gpu/drm/i915/display/intel_crtc.h > @@ -8,6 +8,7 @@ > > #include <linux/types.h> > > +enum i9xx_plane_id; > enum pipe; > struct drm_display_mode; > struct drm_i915_private; > @@ -28,5 +29,14 @@ void intel_crtc_vblank_off(const struct intel_crtc_state *crtc_state); > void intel_pipe_update_start(struct intel_crtc_state *new_crtc_state); > void intel_pipe_update_end(struct intel_crtc_state *new_crtc_state); > void intel_wait_for_vblank_workers(struct intel_atomic_state *state); > +bool intel_pipe_valid(struct drm_i915_private *i915, enum pipe pipe); > +struct intel_crtc *intel_get_first_crtc(struct drm_i915_private *i915); > +struct intel_crtc *intel_crtc_for_pipe(struct drm_i915_private *i915, > + enum pipe pipe); > +struct intel_crtc *intel_crtc_for_plane(struct drm_i915_private *i915, > + enum i9xx_plane_id plane); > +void intel_wait_for_vblank_if_active(struct drm_i915_private *i915, > + enum pipe pipe); > +void intel_crtc_wait_for_next_vblank(struct intel_crtc *crtc); > > #endif > diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h > index a48dfd1474dd..eeaaa101a7b6 100644 > --- a/drivers/gpu/drm/i915/display/intel_display_types.h > +++ b/drivers/gpu/drm/i915/display/intel_display_types.h > @@ -1773,35 +1773,6 @@ vlv_pipe_to_channel(enum pipe pipe) > } > } > > -static inline bool intel_pipe_valid(struct drm_i915_private *i915, enum pipe pipe) > -{ > - return (pipe >= 0 && > - pipe < ARRAY_SIZE(i915->pipe_to_crtc_mapping) && > - INTEL_INFO(i915)->pipe_mask & BIT(pipe) && > - i915->pipe_to_crtc_mapping[pipe]); > -} > - > -static inline struct intel_crtc * > -intel_get_first_crtc(struct drm_i915_private *dev_priv) > -{ > - return to_intel_crtc(drm_crtc_from_index(&dev_priv->drm, 0)); > -} > - > -static inline struct intel_crtc * > -intel_crtc_for_pipe(struct drm_i915_private *dev_priv, enum pipe pipe) > -{ > - /* pipe_to_crtc_mapping may have hole on any of 3 display pipe system */ > - drm_WARN_ON(&dev_priv->drm, > - !(INTEL_INFO(dev_priv)->pipe_mask & BIT(pipe))); > - return dev_priv->pipe_to_crtc_mapping[pipe]; > -} > - > -static inline struct intel_crtc * > -intel_crtc_for_plane(struct drm_i915_private *dev_priv, enum i9xx_plane_id plane) > -{ > - return dev_priv->plane_to_crtc_mapping[plane]; > -} > - > struct intel_load_detect_pipe { > struct drm_atomic_state *restore_state; > }; > @@ -2019,21 +1990,6 @@ intel_crtc_needs_modeset(const struct intel_crtc_state *crtc_state) > return drm_atomic_crtc_needs_modeset(&crtc_state->uapi); > } > > -static inline void > -intel_crtc_wait_for_next_vblank(struct intel_crtc *crtc) > -{ > - drm_crtc_wait_one_vblank(&crtc->base); > -} > - > -static inline void > -intel_wait_for_vblank_if_active(struct drm_i915_private *dev_priv, enum pipe pipe) > -{ > - struct intel_crtc *crtc = intel_crtc_for_pipe(dev_priv, pipe); > - > - if (crtc->active) > - intel_crtc_wait_for_next_vblank(crtc); > -} > - > static inline bool intel_modifier_uses_dpt(struct drm_i915_private *i915, u64 modifier) > { > return DISPLAY_VER(i915) >= 13 && modifier != DRM_FORMAT_MOD_LINEAR; > -- > 2.30.2 -- Ville Syrjälä Intel