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]>
---
 .../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