[PATCH 08/14] drm/i915/dsb: Precompute DSB_CHICKEN

Manna, Animesh animesh.manna at intel.com
Wed Jul 3 08:48:49 UTC 2024



> -----Original Message-----
> From: Intel-gfx <intel-gfx-bounces at lists.freedesktop.org> On Behalf Of Ville
> Syrjala
> Sent: Tuesday, June 25, 2024 12:40 AM
> To: intel-gfx at lists.freedesktop.org
> Subject: [PATCH 08/14] drm/i915/dsb: Precompute DSB_CHICKEN
> 
> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
> 
> Adjust the code that determines the correct DSB_CHICKEN value to be usable
> for use within DSB commands themselves. Ie.
> precompute it based on our knowledge of what the hardware state (VRR vs.
> not mainly) will be at the time of the commit.
> 
> Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>

Reviewed-by: Animesh Manna <animesh.manna at intel.com>
 
> ---
>  drivers/gpu/drm/i915/display/intel_dsb.c | 9 ++++++---
>  1 file changed, 6 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_dsb.c
> b/drivers/gpu/drm/i915/display/intel_dsb.c
> index b362a3050c7f..81937908c798 100644
> --- a/drivers/gpu/drm/i915/display/intel_dsb.c
> +++ b/drivers/gpu/drm/i915/display/intel_dsb.c
> @@ -43,6 +43,7 @@ struct intel_dsb {
>  	 */
>  	unsigned int ins_start_offset;
> 
> +	u32 chicken;
>  	int hw_dewake_scanline;
>  };
> 
> @@ -149,9 +150,10 @@ static int dsb_scanline_to_hw(struct
> intel_atomic_state *state,
>  	return (scanline + vtotal - intel_crtc_scanline_offset(crtc_state)) %
> vtotal;  }
> 
> -static u32 dsb_chicken(struct intel_crtc *crtc)
> +static u32 dsb_chicken(struct intel_atomic_state *state,
> +		       struct intel_crtc *crtc)
>  {
> -	if (crtc->mode_flags & I915_MODE_FLAG_VRR)
> +	if (pre_commit_is_vrr_active(state, crtc))
>  		return DSB_SKIP_WAITS_EN |
>  			DSB_CTRL_WAIT_SAFE_WINDOW |
>  			DSB_CTRL_NO_WAIT_VBLANK |
> @@ -449,7 +451,7 @@ static void _intel_dsb_commit(struct intel_dsb *dsb,
> u32 ctrl,
>  			  ctrl | DSB_ENABLE);
> 
>  	intel_de_write_fw(display, DSB_CHICKEN(pipe, dsb->id),
> -			  dsb_chicken(crtc));
> +			  dsb->chicken);
> 
>  	intel_de_write_fw(display, DSB_INTERRUPT(pipe, dsb->id),
>  			  dsb_error_int_status(display) |
> DSB_PROG_INT_STATUS | @@ -580,6 +582,7 @@ struct intel_dsb
> *intel_dsb_prepare(struct intel_atomic_state *state,
>  	dsb->free_pos = 0;
>  	dsb->ins_start_offset = 0;
> 
> +	dsb->chicken = dsb_chicken(state, crtc);
>  	dsb->hw_dewake_scanline =
>  		dsb_scanline_to_hw(state, crtc, dsb_dewake_scanline(state,
> crtc));
> 
> --
> 2.44.2



More information about the Intel-gfx mailing list