Intel-XE Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: "Jouni Högander" <jouni.hogander@intel.com>
To: intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org
Cc: "Jouni Högander" <jouni.hogander@intel.com>
Subject: [PATCH 4/4] drm/i915/psr: Allow changing Panel Replay mode without full modeset
Date: Thu,  9 Jan 2025 12:35:32 +0200	[thread overview]
Message-ID: <20250109103532.2093356-5-jouni.hogander@intel.com> (raw)
In-Reply-To: <20250109103532.2093356-1-jouni.hogander@intel.com>

Currently we are forcing full modeset if Panel Replay mode is changed. This
is not necessary as long as we are not changing sink PANEL REPLAY ENABLE
bit in PANEL REPLAY ENABLE AND CONFIGURATION 1 register. This can be
achieved by entering Panel Replay inactive mode (Live Frame mode) when
Panel Replay is disabled and keep PANEL REPLAY ENABLE bit in PANEL REPLAY
ENABLE AND CONFIGURATION 1 enabled always if panel is just supporting Panel
Replay.

Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
---
 drivers/gpu/drm/i915/display/intel_display.c | 14 -----------
 drivers/gpu/drm/i915/display/intel_psr.c     | 25 +++++++++++++-------
 2 files changed, 17 insertions(+), 22 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 21319f753a34..35499eb296b3 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -5638,20 +5638,6 @@ intel_pipe_config_compare(const struct intel_crtc_state *current_config,
 		PIPE_CONF_CHECK_CSC(output_csc);
 	}
 
-	/*
-	 * Panel replay has to be enabled before link training. PSR doesn't have
-	 * this requirement -> check these only if using panel replay
-	 */
-	if (current_config->active_planes &&
-	    (current_config->has_panel_replay ||
-	     pipe_config->has_panel_replay)) {
-		PIPE_CONF_CHECK_BOOL(has_psr);
-		PIPE_CONF_CHECK_BOOL(has_sel_update);
-		PIPE_CONF_CHECK_BOOL(enable_psr2_sel_fetch);
-		PIPE_CONF_CHECK_BOOL(enable_psr2_su_region_et);
-		PIPE_CONF_CHECK_BOOL(has_panel_replay);
-	}
-
 	PIPE_CONF_CHECK_BOOL(double_wide);
 
 	if (dev_priv->display.dpll.mgr)
diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/display/intel_psr.c
index f969abc56256..3494620d1c44 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -1998,18 +1998,25 @@ static void intel_psr_enable_locked(struct intel_dp *intel_dp,
 	if (!psr_interrupt_error_check(intel_dp))
 		return;
 
-	if (intel_dp->psr.panel_replay_enabled) {
+	if (intel_dp->psr.panel_replay_enabled)
 		drm_dbg_kms(display->drm, "Enabling Panel Replay\n");
-	} else {
+	else
 		drm_dbg_kms(display->drm, "Enabling PSR%s\n",
 			    intel_dp->psr.sel_update_enabled ? "2" : "1");
 
-		/*
-		 * Panel replay has to be enabled before link training: doing it
-		 * only for PSR here.
-		 */
-		intel_psr_enable_sink(intel_dp, crtc_state);
-	}
+	/*
+	 * Enabling here only for PSR. Panel Replay enable bit is already
+	 * written at this point. See
+	 * intel_psr_panel_replay_enable_sink. Modifiers/options:
+	 *  - Selective Update
+	 *  - Region Early Transport
+	 *  - Selective Update Region Scanline Capture
+	 *  - VSC_SDP_CRC
+	 *  - HPD on different Errors
+	 *  - CRC verification
+	 * are written for PSR and Panel Replay here.
+	 */
+	intel_psr_enable_sink(intel_dp, crtc_state);
 
 	if (intel_dp_is_edp(intel_dp))
 		intel_snps_phy_update_psr_power_state(&dig_port->base, true);
@@ -2815,6 +2822,8 @@ void intel_psr_pre_plane_update(struct intel_atomic_state *state,
 		needs_to_disable |= new_crtc_state->has_sel_update != psr->sel_update_enabled;
 		needs_to_disable |= new_crtc_state->enable_psr2_su_region_et !=
 			psr->su_region_et_enabled;
+		needs_to_disable |= new_crtc_state->has_panel_replay !=
+			psr->panel_replay_enabled;
 		needs_to_disable |= DISPLAY_VER(i915) < 11 &&
 			new_crtc_state->wm_level_disabled;
 
-- 
2.34.1


  parent reply	other threads:[~2025-01-09 10:35 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-01-09 10:35 [PATCH 0/4] Panel Replay mode change without full modeset Jouni Högander
2025-01-09 10:35 ` [PATCH 1/4] drm/i915/psr: Add new function for writing sink panel replay enable bit Jouni Högander
2025-01-13 11:04   ` Kahola, Mika
2025-01-09 10:35 ` [PATCH 2/4] drm/i915/psr: Enable Panel Replay on sink always when it's supported Jouni Högander
2025-01-13 11:06   ` Kahola, Mika
2025-01-09 10:35 ` [PATCH 3/4] drm/i915/psr: Make intel_psr_enable_sink as local static function Jouni Högander
2025-01-13 11:06   ` Kahola, Mika
2025-01-09 10:35 ` Jouni Högander [this message]
2025-01-13 11:22   ` [PATCH 4/4] drm/i915/psr: Allow changing Panel Replay mode without full modeset Kahola, Mika
2025-01-21 10:08     ` Hogander, Jouni
2025-01-09 11:28 ` ✓ CI.Patch_applied: success for Panel Replay mode change " Patchwork
2025-01-09 11:28 ` ✓ CI.checkpatch: " Patchwork
2025-01-09 11:29 ` ✓ CI.KUnit: " Patchwork
2025-01-09 11:47 ` ✓ CI.Build: " Patchwork
2025-01-09 11:50 ` ✓ CI.Hooks: " Patchwork
2025-01-09 11:51 ` ✗ CI.checksparse: warning " Patchwork
2025-01-20 14:12 ` ✓ CI.Patch_applied: success for Panel Replay mode change without full modeset (rev2) Patchwork
2025-01-20 14:12 ` ✓ CI.checkpatch: " Patchwork
2025-01-20 14:13 ` ✓ CI.KUnit: " Patchwork
2025-01-20 14:29 ` ✓ CI.Build: " Patchwork
2025-01-20 14:32 ` ✓ CI.Hooks: " Patchwork
2025-01-20 14:33 ` ✗ CI.checksparse: warning " Patchwork
2025-01-20 15:20 ` ✓ Xe.CI.BAT: success " Patchwork
2025-01-20 18:12 ` ✗ Xe.CI.Full: failure " Patchwork
2025-01-21  8:13   ` Hogander, Jouni

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250109103532.2093356-5-jouni.hogander@intel.com \
    --to=jouni.hogander@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=intel-xe@lists.freedesktop.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox