Add new boolean to store panel replay selective update support of sink into
intel_psr struct.  Detect panel replay selective update support and store
it into this new boolean.

v3: Clear sink_panel_replay_su_support in intel_dp_detect
v2: Merge adding new boolean into this patch

Signed-off-by: Jouni Högander <jouni.hogan...@intel.com>
---
 drivers/gpu/drm/i915/display/intel_display_types.h |  1 +
 drivers/gpu/drm/i915/display/intel_dp.c            |  1 +
 drivers/gpu/drm/i915/display/intel_psr.c           | 10 ++++++++--
 3 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h 
b/drivers/gpu/drm/i915/display/intel_display_types.h
index 150e6c8e0320..a693728f8344 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -1719,6 +1719,7 @@ struct intel_psr {
        u16 su_y_granularity;
        bool source_panel_replay_support;
        bool sink_panel_replay_support;
+       bool sink_panel_replay_su_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 5731aa84992e..180f23f7b383 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -5858,6 +5858,7 @@ intel_dp_detect(struct drm_connector *connector,
                memset(&intel_dp->compliance, 0, sizeof(intel_dp->compliance));
                memset(intel_connector->dp.dsc_dpcd, 0, 
sizeof(intel_connector->dp.dsc_dpcd));
                intel_dp->psr.sink_panel_replay_support = false;
+               intel_dp->psr.sink_panel_replay_su_support = false;
 
                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 af18728460c9..b94f8e33ed1f 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -520,9 +520,15 @@ static void _panel_replay_init_dpcd(struct intel_dp 
*intel_dp)
                return;
        }
 
-       drm_dbg_kms(&i915->drm,
-                   "Panel replay is supported by panel\n");
        intel_dp->psr.sink_panel_replay_support = true;
+
+       if (pr_dpcd & DP_PANEL_REPLAY_SU_SUPPORT)
+               intel_dp->psr.sink_panel_replay_su_support = true;
+
+       drm_dbg_kms(&i915->drm,
+                   "Panel replay %sis supported by panel\n",
+                   intel_dp->psr.sink_panel_replay_su_support ?
+                   "selective_update " : "");
 }
 
 static void _psr_init_dpcd(struct intel_dp *intel_dp)
-- 
2.34.1

Reply via email to