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 <[email protected]>

Reviewed-by: Imre Deak <[email protected]>

> ---
>  .../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 via email to