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 >
