[Intel-gfx] [PATCH v2 05/10] drm/i915/crtc: un-inline some crtc functions and move to intel_crtc.[ch]

Ville Syrjälä ville.syrjala at linux.intel.com
Wed Dec 1 15:12:46 UTC 2021


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 at intel.com>

Reviewed-by: Ville Syrjälä <ville.syrjala at linux.intel.com>

> ---
>  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


More information about the Intel-gfx mailing list