[Intel-gfx] [PATCH 2/7] drm/i915/display: move more scanline functions to intel_vblank.[ch]

Murthy, Arun R arun.r.murthy at intel.com
Wed Dec 14 04:15:59 UTC 2022


> -----Original Message-----
> From: Intel-gfx <intel-gfx-bounces at lists.freedesktop.org> On Behalf Of Jani
> Nikula
> Sent: Monday, December 12, 2022 7:59 PM
> To: intel-gfx at lists.freedesktop.org
> Cc: Nikula, Jani <jani.nikula at intel.com>
> Subject: [Intel-gfx] [PATCH 2/7] drm/i915/display: move more scanline
> functions to intel_vblank.[ch]
> 
> Reduce clutter in intel_display.c by moving the scanline moving/stopped wait
> functions to intel_vblank.[ch].
> 
> Cc: Ville Syrjälä <ville.syrjala at linux.intel.com>
> Signed-off-by: Jani Nikula <jani.nikula at intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_display.c | 36 +-------------------
> drivers/gpu/drm/i915/display/intel_vblank.c  | 35 +++++++++++++++++++
> drivers/gpu/drm/i915/display/intel_vblank.h  |  2 ++
>  3 files changed, 38 insertions(+), 35 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c
> b/drivers/gpu/drm/i915/display/intel_display.c
> index 6cdfdae2c712..0cdb514d7ee0 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -115,6 +115,7 @@
>  #include "intel_quirks.h"
>  #include "intel_sprite.h"
>  #include "intel_tc.h"
> +#include "intel_vblank.h"
>  #include "intel_vga.h"
>  #include "i9xx_plane.h"
>  #include "skl_scaler.h"
> @@ -386,41 +387,6 @@ struct intel_crtc *intel_master_crtc(const struct
> intel_crtc_state *crtc_state)
>  		return to_intel_crtc(crtc_state->uapi.crtc);
>  }
> 
> -static bool pipe_scanline_is_moving(struct drm_i915_private *dev_priv,
> -				    enum pipe pipe)
> -{
> -	i915_reg_t reg = PIPEDSL(pipe);
> -	u32 line1, line2;
> -
> -	line1 = intel_de_read(dev_priv, reg) & PIPEDSL_LINE_MASK;
> -	msleep(5);
> -	line2 = intel_de_read(dev_priv, reg) & PIPEDSL_LINE_MASK;
> -
> -	return line1 != line2;
> -}
> -
> -static void wait_for_pipe_scanline_moving(struct intel_crtc *crtc, bool state)
> -{
> -	struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
> -	enum pipe pipe = crtc->pipe;
> -
> -	/* Wait for the display line to settle/start moving */
> -	if (wait_for(pipe_scanline_is_moving(dev_priv, pipe) == state, 100))
> -		drm_err(&dev_priv->drm,
> -			"pipe %c scanline %s wait timed out\n",
> -			pipe_name(pipe), str_on_off(state));
> -}
> -
> -static void intel_wait_for_pipe_scanline_stopped(struct intel_crtc *crtc) -{
> -	wait_for_pipe_scanline_moving(crtc, false);
> -}
> -
> -static void intel_wait_for_pipe_scanline_moving(struct intel_crtc *crtc) -{
> -	wait_for_pipe_scanline_moving(crtc, true);
> -}
> -
>  static void
>  intel_wait_for_pipe_off(const struct intel_crtc_state *old_crtc_state)  { diff --
> git a/drivers/gpu/drm/i915/display/intel_vblank.c
> b/drivers/gpu/drm/i915/display/intel_vblank.c
> index 78a579496ad1..f25ec643a0a3 100644
> --- a/drivers/gpu/drm/i915/display/intel_vblank.c
> +++ b/drivers/gpu/drm/i915/display/intel_vblank.c
> @@ -417,3 +417,38 @@ int intel_get_crtc_scanline(struct intel_crtc *crtc)
> 
>  	return position;
>  }
> +
> +static bool pipe_scanline_is_moving(struct drm_i915_private *dev_priv,
> +				    enum pipe pipe)
> +{
> +	i915_reg_t reg = PIPEDSL(pipe);
> +	u32 line1, line2;
> +
> +	line1 = intel_de_read(dev_priv, reg) & PIPEDSL_LINE_MASK;
> +	msleep(5);
> +	line2 = intel_de_read(dev_priv, reg) & PIPEDSL_LINE_MASK;
> +
> +	return line1 != line2;
> +}
> +
> +static void wait_for_pipe_scanline_moving(struct intel_crtc *crtc, bool
> +state) {
> +	struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
> +	enum pipe pipe = crtc->pipe;
> +
> +	/* Wait for the display line to settle/start moving */
> +	if (wait_for(pipe_scanline_is_moving(dev_priv, pipe) == state, 100))
> +		drm_err(&dev_priv->drm,
> +			"pipe %c scanline %s wait timed out\n",
> +			pipe_name(pipe), str_on_off(state)); }
> +
> +void intel_wait_for_pipe_scanline_stopped(struct intel_crtc *crtc) {
> +	wait_for_pipe_scanline_moving(crtc, false); }
> +
Is this wrapper function required, since nothing else is being other than calling the function wait_for_pipe_scanline_moving, can this be replaced?

Thanks and Regards,
Arun R Murthy
--------------------

> +void intel_wait_for_pipe_scanline_moving(struct intel_crtc *crtc) {
> +	wait_for_pipe_scanline_moving(crtc, true); }
> diff --git a/drivers/gpu/drm/i915/display/intel_vblank.h
> b/drivers/gpu/drm/i915/display/intel_vblank.h
> index 9c0034d7454d..54870cabd734 100644
> --- a/drivers/gpu/drm/i915/display/intel_vblank.h
> +++ b/drivers/gpu/drm/i915/display/intel_vblank.h
> @@ -17,5 +17,7 @@ u32 g4x_get_vblank_counter(struct drm_crtc *crtc);
> bool intel_crtc_get_vblank_timestamp(struct drm_crtc *crtc, int *max_error,
>  				     ktime_t *vblank_time, bool in_vblank_irq);
> int intel_get_crtc_scanline(struct intel_crtc *crtc);
> +void intel_wait_for_pipe_scanline_stopped(struct intel_crtc *crtc);
> +void intel_wait_for_pipe_scanline_moving(struct intel_crtc *crtc);
> 
>  #endif /* __INTEL_VBLANK_H__ */
> --
> 2.34.1



More information about the Intel-gfx mailing list