Re: [PATCH 3/6] drm/i915/vrr: Make delayed vblank operational in VRR mode on adl/dg2

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




> -----Original Message-----
> From: Intel-gfx <intel-gfx-bounces@xxxxxxxxxxxxxxxxxxxxx> On Behalf Of Ville
> Syrjala
> Sent: 21 March 2023 02:04
> To: intel-gfx@xxxxxxxxxxxxxxxxxxxxx
> Subject:  [PATCH 3/6] drm/i915/vrr: Make delayed vblank
> operational in VRR mode on adl/dg2
> 
> From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx>
> 
> On adl/dg2 a chicken bit needs to be set for
> TRANS_SET_CONTENXT_LATENCY to take effect in VRR mode. Can't really
> think of a reason why we'd ever disable that chicken bit, so let's just always
> set it.
> 
> Signed-off-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx>
> ---
>  drivers/gpu/drm/i915/display/intel_vrr.c | 8 ++++++++
>  drivers/gpu/drm/i915/i915_reg.h          | 3 +--
>  2 files changed, 9 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_vrr.c
> b/drivers/gpu/drm/i915/display/intel_vrr.c
> index 6d749de71058..348a7cc8e620 100644
> --- a/drivers/gpu/drm/i915/display/intel_vrr.c
> +++ b/drivers/gpu/drm/i915/display/intel_vrr.c
> @@ -173,6 +173,14 @@ void intel_vrr_enable(const struct intel_crtc_state
> *crtc_state)
>  	struct drm_i915_private *dev_priv = to_i915(crtc_state->uapi.crtc-
> >dev);
>  	enum transcoder cpu_transcoder = crtc_state->cpu_transcoder;
> 
> +	/*
> +	 * TRANS_SET_CONTEXT_LATENCY with VRR enabled
> +	 * requires this chicken bit on ADL/DG2.
> +	 */
> +	if (DISPLAY_VER(dev_priv) == 13)
> +		intel_de_rmw(dev_priv, CHICKEN_TRANS(cpu_transcoder),
> +			     0, PIPE_VBLANK_WITH_DELAY);
> +
>  	if (!crtc_state->vrr.enable)
>  		return;
> 
> diff --git a/drivers/gpu/drm/i915/i915_reg.h
> b/drivers/gpu/drm/i915/i915_reg.h index d22ffd7a32dc..09740f7295eb
> 100644
> --- a/drivers/gpu/drm/i915/i915_reg.h
> +++ b/drivers/gpu/drm/i915/i915_reg.h
> @@ -5544,13 +5544,12 @@
>  					    [TRANSCODER_B] =
> _CHICKEN_TRANS_B, \
>  					    [TRANSCODER_C] =
> _CHICKEN_TRANS_C, \
>  					    [TRANSCODER_D] =
> _CHICKEN_TRANS_D))
> -
>  #define _MTL_CHICKEN_TRANS_A	0x604e0
>  #define _MTL_CHICKEN_TRANS_B	0x614e0
>  #define MTL_CHICKEN_TRANS(trans)	_MMIO_TRANS((trans), \
>  						    _MTL_CHICKEN_TRANS_A,
> \
>  						    _MTL_CHICKEN_TRANS_B)
> -
> +#define  PIPE_VBLANK_WITH_DELAY		REG_BIT(31) /* ADL/DG2 */

changes LGTM. 
Thanks

Reviewed-by: Mitul Golani <mitulkumar.ajitkumar.golani@xxxxxxxxx>

>  #define  HSW_FRAME_START_DELAY_MASK	REG_GENMASK(28, 27)
>  #define  HSW_FRAME_START_DELAY(x)
> 	REG_FIELD_PREP(HSW_FRAME_START_DELAY_MASK, x)
>  #define  VSC_DATA_SEL_SOFTWARE_CONTROL	REG_BIT(25) /* GLK
> */
> --
> 2.39.2





[Index of Archives]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux