]> www.infradead.org Git - nvme.git/commitdiff
drm/i915/psr: 128b/132b Panel Replay is not supported on eDP
authorJouni Högander <jouni.hogander@intel.com>
Wed, 19 Jun 2024 06:21:25 +0000 (09:21 +0300)
committerJouni Högander <jouni.hogander@intel.com>
Tue, 25 Jun 2024 05:28:35 +0000 (08:28 +0300)
Take into account that 128b/132b Panel Replay is not supported on eDP.

Bspec: 68920

v2:
  - make crtc_state as const
  - add debug message to print out why Panel Replay is not possible

Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
Reviewed-by: Animesh Manna <animesh.manna@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240619062131.4021196-6-jouni.hogander@intel.com
drivers/gpu/drm/i915/display/intel_psr.c

index 8e367a4f4da3762024dfee251f06154280dfc393..8f8148afe8e882eaac726a68d42c7fd49f6b66c4 100644 (file)
@@ -1517,7 +1517,10 @@ static bool _psr_compute_config(struct intel_dp *intel_dp,
        return true;
 }
 
-static bool _panel_replay_compute_config(struct intel_dp *intel_dp)
+static bool
+_panel_replay_compute_config(struct intel_dp *intel_dp,
+                            const struct intel_crtc_state *crtc_state,
+                            const struct drm_connector_state *conn_state)
 {
        struct drm_i915_private *i915 = dp_to_i915(intel_dp);
 
@@ -1529,6 +1532,18 @@ static bool _panel_replay_compute_config(struct intel_dp *intel_dp)
                return false;
        }
 
+       if (!intel_dp_is_edp(intel_dp))
+               return true;
+
+       /* Remaining checks are for eDP only */
+
+       /* 128b/132b Panel Replay is not supported on eDP */
+       if (intel_dp_is_uhbr(crtc_state)) {
+               drm_dbg_kms(&i915->drm,
+                           "Panel Replay is not supported with 128b/132b\n");
+               return false;
+       }
+
        return true;
 }
 
@@ -1567,7 +1582,9 @@ void intel_psr_compute_config(struct intel_dp *intel_dp,
                return;
        }
 
-       crtc_state->has_panel_replay = _panel_replay_compute_config(intel_dp);
+       crtc_state->has_panel_replay = _panel_replay_compute_config(intel_dp,
+                                                                   crtc_state,
+                                                                   conn_state);
 
        crtc_state->has_psr = crtc_state->has_panel_replay ? true :
                _psr_compute_config(intel_dp, crtc_state);