All of lore.kernel.org
 help / color / mirror / Atom feed
From: Imre Deak <imre.deak@intel.com>
To: "Jouni Högander" <jouni.hogander@intel.com>
Cc: <intel-gfx@lists.freedesktop.org>, <intel-xe@lists.freedesktop.org>
Subject: Re: [PATCH 6/8] drm/i915/psr: Move Panel Replay DSC sink support data to intel_connector
Date: Mon, 1 Dec 2025 12:55:17 +0200	[thread overview]
Message-ID: <aS10FQaKYS-Vj-cW@ideak-desk> (raw)
In-Reply-To: <20251121111655.164830-7-jouni.hogander@intel.com>

On Fri, Nov 21, 2025 at 01:16:53PM +0200, Jouni Högander wrote:
> As a preparation for MST Panel Replay we need to move Panel Replay sink
> related data into intel_connector. Move Panel Replay DSC sink support data
> as well into intel_connector.
> 
> Signed-off-by: Jouni Högander <jouni.hogander@intel.com>

Reviewed-by: Imre Deak <imre.deak@intel.com>

> ---
>  .../gpu/drm/i915/display/intel_display_types.h    | 15 ++++++++-------
>  drivers/gpu/drm/i915/display/intel_dp.c           |  2 +-
>  drivers/gpu/drm/i915/display/intel_psr.c          | 13 +++++++------
>  3 files changed, 16 insertions(+), 14 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
> index 8587d2c527f72..e1d47496ea4de 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> @@ -509,6 +509,12 @@ struct intel_hdcp {
>  	bool force_hdcp14;
>  };
>  
> +enum intel_panel_replay_dsc_support {
> +	INTEL_DP_PANEL_REPLAY_DSC_NOT_SUPPORTED,
> +	INTEL_DP_PANEL_REPLAY_DSC_FULL_FRAME_ONLY,
> +	INTEL_DP_PANEL_REPLAY_DSC_SELECTIVE_UPDATE,
> +};
> +
>  struct intel_connector {
>  	struct drm_connector base;
>  	/*
> @@ -566,6 +572,8 @@ struct intel_connector {
>  		} dsc_branch_caps;
>  
>  		struct {
> +			enum intel_panel_replay_dsc_support dsc_support;
> +
>  			u16 su_w_granularity;
>  			u16 su_y_granularity;
>  		} panel_replay_caps;
> @@ -967,12 +975,6 @@ struct intel_csc_matrix {
>  	u16 postoff[3];
>  };
>  
> -enum intel_panel_replay_dsc_support {
> -	INTEL_DP_PANEL_REPLAY_DSC_NOT_SUPPORTED,
> -	INTEL_DP_PANEL_REPLAY_DSC_FULL_FRAME_ONLY,
> -	INTEL_DP_PANEL_REPLAY_DSC_SELECTIVE_UPDATE,
> -};
> -
>  struct scaler_filter_coeff {
>  	u16 sign;
>  	u16 exp;
> @@ -1744,7 +1746,6 @@ struct intel_psr {
>  	bool source_panel_replay_support;
>  	bool sink_panel_replay_support;
>  	bool sink_panel_replay_su_support;
> -	enum intel_panel_replay_dsc_support sink_panel_replay_dsc_support;
>  	bool panel_replay_enabled;
>  	u32 dc3co_exitline;
>  	u32 dc3co_exit_delay;
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
> index 7195c408d93ab..d32f476c288c1 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -6053,7 +6053,7 @@ intel_dp_detect(struct drm_connector *_connector,
>  		memset(connector->dp.pr_dpcd, 0, sizeof(connector->dp.pr_dpcd));
>  		intel_dp->psr.sink_panel_replay_support = false;
>  		intel_dp->psr.sink_panel_replay_su_support = false;
> -		intel_dp->psr.sink_panel_replay_dsc_support =
> +		connector->dp.panel_replay_caps.dsc_support =
>  			INTEL_DP_PANEL_REPLAY_DSC_NOT_SUPPORTED;
>  
>  		intel_dp_mst_disconnect(intel_dp);
> diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/display/intel_psr.c
> index b488be8c917dc..4bae39f745ea0 100644
> --- a/drivers/gpu/drm/i915/display/intel_psr.c
> +++ b/drivers/gpu/drm/i915/display/intel_psr.c
> @@ -644,13 +644,13 @@ static void _panel_replay_init_dpcd(struct intel_dp *intel_dp, struct intel_conn
>  		_panel_replay_compute_su_granularity(intel_dp, connector);
>  	}
>  
> -	intel_dp->psr.sink_panel_replay_dsc_support = compute_pr_dsc_support(connector);
> +	connector->dp.panel_replay_caps.dsc_support = compute_pr_dsc_support(connector);
>  
>  	drm_dbg_kms(display->drm,
>  		    "Panel replay %sis supported by panel (in DSC mode: %s)\n",
>  		    intel_dp->psr.sink_panel_replay_su_support ?
>  		    "selective_update " : "",
> -		    panel_replay_dsc_support_str(intel_dp->psr.sink_panel_replay_dsc_support));
> +		    panel_replay_dsc_support_str(connector->dp.panel_replay_caps.dsc_support));
>  }
>  
>  static void _psr_init_dpcd(struct intel_dp *intel_dp, struct intel_connector *connector)
> @@ -1659,7 +1659,7 @@ static bool intel_sel_update_config_valid(struct intel_dp *intel_dp,
>  			goto unsupported;
>  
>  		if (intel_dsc_enabled_on_link(crtc_state) &&
> -		    intel_dp->psr.sink_panel_replay_dsc_support !=
> +		    connector->dp.panel_replay_caps.dsc_support !=
>  		    INTEL_DP_PANEL_REPLAY_DSC_SELECTIVE_UPDATE) {
>  			drm_dbg_kms(display->drm,
>  				    "Selective update with Panel Replay not enabled because it's not supported with DSC\n");
> @@ -1756,7 +1756,7 @@ static bool _panel_replay_compute_config(struct intel_dp *intel_dp,
>  	}
>  
>  	if (intel_dsc_enabled_on_link(crtc_state) &&
> -	    intel_dp->psr.sink_panel_replay_dsc_support ==
> +	    connector->dp.panel_replay_caps.dsc_support ==
>  	    INTEL_DP_PANEL_REPLAY_DSC_NOT_SUPPORTED) {
>  		drm_dbg_kms(display->drm,
>  			    "Panel Replay not enabled because it's not supported with DSC\n");
> @@ -1841,6 +1841,7 @@ void intel_psr_compute_config(struct intel_dp *intel_dp,
>  			      struct drm_connector_state *conn_state)
>  {
>  	struct intel_display *display = to_intel_display(intel_dp);
> +	struct intel_connector *connector = to_intel_connector(conn_state->connector);
>  	const struct drm_display_mode *adjusted_mode = &crtc_state->hw.adjusted_mode;
>  
>  	if (!psr_global_enabled(intel_dp)) {
> @@ -1872,7 +1873,7 @@ void intel_psr_compute_config(struct intel_dp *intel_dp,
>  	}
>  
>  	/* Only used for state verification. */
> -	crtc_state->panel_replay_dsc_support = intel_dp->psr.sink_panel_replay_dsc_support;
> +	crtc_state->panel_replay_dsc_support = connector->dp.panel_replay_caps.dsc_support;
>  	crtc_state->has_panel_replay = _panel_replay_compute_config(intel_dp,
>  								    crtc_state,
>  								    conn_state);
> @@ -4144,7 +4145,7 @@ static void intel_psr_sink_capability(struct intel_dp *intel_dp,
>  	seq_printf(m, ", Panel Replay Selective Update = %s",
>  		   str_yes_no(psr->sink_panel_replay_su_support));
>  	seq_printf(m, ", Panel Replay DSC support = %s",
> -		   panel_replay_dsc_support_str(psr->sink_panel_replay_dsc_support));
> +		   panel_replay_dsc_support_str(connector->dp.panel_replay_caps.dsc_support));
>  	if (connector->dp.pr_dpcd[INTEL_PR_DPCD_INDEX(DP_PANEL_REPLAY_CAP_SUPPORT)] &
>  	    DP_PANEL_REPLAY_EARLY_TRANSPORT_SUPPORT)
>  		seq_printf(m, " (Early Transport)");
> -- 
> 2.43.0
> 

  reply	other threads:[~2025-12-01 10:55 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-11-21 11:16 [PATCH 0/8] Move PSR/Panel Replay sink data into intel_connector Jouni Högander
2025-11-21 11:16 ` [PATCH 1/8] drm/i915/psr: Add panel granularity information " Jouni Högander
2025-12-01  9:54   ` Imre Deak
2025-11-21 11:16 ` [PATCH 2/8] drm/i915/psr: Use SU granularity information available in intel_connector Jouni Högander
2025-12-01 10:14   ` Imre Deak
2025-11-21 11:16 ` [PATCH 3/8] drm/i915/psr: Compute Panel Replay/Adaptive coexistence behavior Jouni Högander
2025-11-21 11:24   ` Jani Nikula
2025-12-01 10:28   ` Imre Deak
2025-11-21 11:16 ` [PATCH 4/8] drm/i915/psr: Move pr_dpcd and psr_dpcd to intel_connector Jouni Högander
2025-12-01 10:45   ` Imre Deak
2025-11-21 11:16 ` [PATCH 5/8] drm/i915/psr: Clear pr_dpcd as well on disconnect Jouni Högander
2025-12-01 10:53   ` Imre Deak
2025-12-01 11:23     ` Hogander, Jouni
2025-12-03 14:37       ` Imre Deak
2025-12-03 15:10         ` Hogander, Jouni
2025-11-21 11:16 ` [PATCH 6/8] drm/i915/psr: Move Panel Replay DSC sink support data to intel_connector Jouni Högander
2025-12-01 10:55   ` Imre Deak [this message]
2025-11-21 11:16 ` [PATCH 7/8] drm/i915/psr: Move sink PSR and Panel Replay booleans " Jouni Högander
2025-12-01 10:59   ` Imre Deak
2025-11-21 11:16 ` [PATCH 8/8] drm/i915/psr: Move sink_sync_latency " Jouni Högander
2025-12-01 11:03   ` Imre Deak
2025-11-24 19:59 ` ✗ CI.checkpatch: warning for Move PSR/Panel Replay sink data into intel_connector Patchwork
2025-11-24 20:00 ` ✓ CI.KUnit: success " Patchwork
2025-11-24 20:41 ` ✓ i915.CI.BAT: " Patchwork
2025-11-24 20:47 ` ✓ Xe.CI.BAT: " Patchwork
2025-11-24 22:37 ` ✗ Xe.CI.Full: failure " Patchwork
2025-11-25  1:09 ` ✗ i915.CI.Full: " Patchwork

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=aS10FQaKYS-Vj-cW@ideak-desk \
    --to=imre.deak@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=intel-xe@lists.freedesktop.org \
    --cc=jouni.hogander@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.