All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Souza, Jose" <jose.souza@intel.com>
To: "Roper, Matthew D" <matthew.d.roper@intel.com>,
	"intel-gfx@lists.freedesktop.org"
	<intel-gfx@lists.freedesktop.org>
Subject: Re: [Intel-gfx] [PATCH] drm/i915: Program chicken bit during DP MST sequence on TGL+
Date: Fri, 23 Jul 2021 17:14:04 +0000	[thread overview]
Message-ID: <9e989f05475afe5ec96615e64f547322d5d0d863.camel@intel.com> (raw)
In-Reply-To: <20210723170618.1477415-1-matthew.d.roper@intel.com>

On Fri, 2021-07-23 at 10:06 -0700, Matt Roper wrote:
> A new step has been added to the DP modeset sequences for all platforms
> with display version 12 and beyond:  if enabling DP MST with FEC, we
> need to set a chicken bit before enabling the transcoder.  The chicken
> bit should be disabled again before disabling the transcoder (which we
> can do unconditionally since it shouldn't be set anyway in non-MST
> cases).

Reviewed-by: José Roberto de Souza <jose.souza@intel.com>

> 
> Bspec: 49190, 54128, 55424
> Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_display.c |  4 ++++
>  drivers/gpu/drm/i915/display/intel_dp_mst.c  | 14 +++++++-------
>  drivers/gpu/drm/i915/i915_reg.h              | 19 ++++++++++---------
>  3 files changed, 21 insertions(+), 16 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> index 2b082e1827a8..902826202622 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -1035,6 +1035,10 @@ void intel_disable_pipe(const struct intel_crtc_state *old_crtc_state)
>  	if (!IS_I830(dev_priv))
>  		val &= ~PIPECONF_ENABLE;
>  
> +	if (DISPLAY_VER(dev_priv) >= 12)
> +		intel_de_rmw(dev_priv, CHICKEN_TRANS(cpu_transcoder),
> +			     FECSTALL_DIS_DPTSTREAM_DPTTG, 0);
> +
>  	intel_de_write(dev_priv, reg, val);
>  	if ((val & PIPECONF_ENABLE) == 0)
>  		intel_wait_for_pipe_off(old_crtc_state);
> diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> index 3661cd19ce48..e2eb46337369 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> @@ -542,7 +542,7 @@ static void intel_mst_enable_dp(struct intel_atomic_state *state,
>  	struct intel_digital_port *dig_port = intel_mst->primary;
>  	struct intel_dp *intel_dp = &dig_port->dp;
>  	struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
> -	u32 val;
> +	enum transcoder trans = pipe_config->cpu_transcoder;
>  
>  	drm_WARN_ON(&dev_priv->drm, pipe_config->has_pch_encoder);
>  
> @@ -550,12 +550,8 @@ static void intel_mst_enable_dp(struct intel_atomic_state *state,
>  
>  	intel_ddi_enable_transcoder_func(encoder, pipe_config);
>  
> -	val = intel_de_read(dev_priv,
> -			    TRANS_DDI_FUNC_CTL(pipe_config->cpu_transcoder));
> -	val |= TRANS_DDI_DP_VC_PAYLOAD_ALLOC;
> -	intel_de_write(dev_priv,
> -		       TRANS_DDI_FUNC_CTL(pipe_config->cpu_transcoder),
> -		       val);
> +	intel_de_rmw(dev_priv, TRANS_DDI_FUNC_CTL(trans), 0,
> +		     TRANS_DDI_DP_VC_PAYLOAD_ALLOC);
>  
>  	drm_dbg_kms(&dev_priv->drm, "active links %d\n",
>  		    intel_dp->active_mst_links);
> @@ -564,6 +560,10 @@ static void intel_mst_enable_dp(struct intel_atomic_state *state,
>  
>  	drm_dp_update_payload_part2(&intel_dp->mst_mgr);
>  
> +	if (DISPLAY_VER(dev_priv) >= 12 && pipe_config->fec_enable)
> +		intel_de_rmw(dev_priv, CHICKEN_TRANS(trans), 0,
> +			     FECSTALL_DIS_DPTSTREAM_DPTTG);
> +
>  	intel_enable_pipe(pipe_config);
>  
>  	intel_crtc_vblank_on(pipe_config);
> diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
> index 8e1392028184..9f1f5e1228f8 100644
> --- a/drivers/gpu/drm/i915/i915_reg.h
> +++ b/drivers/gpu/drm/i915/i915_reg.h
> @@ -8173,15 +8173,16 @@ enum {
>  					    [TRANSCODER_B] = _CHICKEN_TRANS_B, \
>  					    [TRANSCODER_C] = _CHICKEN_TRANS_C, \
>  					    [TRANSCODER_D] = _CHICKEN_TRANS_D))
> -#define  HSW_FRAME_START_DELAY_MASK	(3 << 27)
> -#define  HSW_FRAME_START_DELAY(x)	((x) << 27) /* 0-3 */
> -#define  VSC_DATA_SEL_SOFTWARE_CONTROL	(1 << 25) /* GLK and CNL+ */
> -#define  DDI_TRAINING_OVERRIDE_ENABLE	(1 << 19)
> -#define  DDI_TRAINING_OVERRIDE_VALUE	(1 << 18)
> -#define  DDIE_TRAINING_OVERRIDE_ENABLE	(1 << 17) /* CHICKEN_TRANS_A only */
> -#define  DDIE_TRAINING_OVERRIDE_VALUE	(1 << 16) /* CHICKEN_TRANS_A only */
> -#define  PSR2_ADD_VERTICAL_LINE_COUNT   (1 << 15)
> -#define  PSR2_VSC_ENABLE_PROG_HEADER    (1 << 12)
> +#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 and CNL+ */
> +#define  FECSTALL_DIS_DPTSTREAM_DPTTG	REG_BIT(23)
> +#define  DDI_TRAINING_OVERRIDE_ENABLE	REG_BIT(19)
> +#define  DDI_TRAINING_OVERRIDE_VALUE	REG_BIT(18)
> +#define  DDIE_TRAINING_OVERRIDE_ENABLE	REG_BIT(17) /* CHICKEN_TRANS_A only */
> +#define  DDIE_TRAINING_OVERRIDE_VALUE	REG_BIT(16) /* CHICKEN_TRANS_A only */
> +#define  PSR2_ADD_VERTICAL_LINE_COUNT	REG_BIT(15)
> +#define  PSR2_VSC_ENABLE_PROG_HEADER	REG_BIT(12)
>  
>  #define DISP_ARB_CTL	_MMIO(0x45000)
>  #define  DISP_FBC_MEMORY_WAKE		(1 << 31)

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

  reply	other threads:[~2021-07-23 17:14 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-23 17:06 [Intel-gfx] [PATCH] drm/i915: Program chicken bit during DP MST sequence on TGL+ Matt Roper
2021-07-23 17:14 ` Souza, Jose [this message]
2021-07-23 17:55 ` [Intel-gfx] ✓ Fi.CI.BAT: success for " Patchwork
2021-07-24  2:28 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork
2021-07-24  3:00   ` Matt Roper

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=9e989f05475afe5ec96615e64f547322d5d0d863.camel@intel.com \
    --to=jose.souza@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=matthew.d.roper@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.