dri-devel.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v4 00/12] Panel Replay + Adaptive sync
@ 2025-05-21 11:53 Jouni Högander
  2025-05-21 11:53 ` [PATCH v4 01/12] drm/panelreplay: Panel Replay capability DPCD register definitions Jouni Högander
                   ` (12 more replies)
  0 siblings, 13 replies; 17+ messages in thread
From: Jouni Högander @ 2025-05-21 11:53 UTC (permalink / raw)
  To: intel-gfx, intel-xe, dri-devel; +Cc: Jouni Högander

This patch set is adding missing configuration to have Panel Replay
and Adaptive Sync enabled simultaneously. Also some issues identified
while debugging are fixed:

1. Source PORT ALPM configuration has to made during modeset.
2. PHY_CMN1_CONTROL is not written according to HAS document
3. Wrong register field definitions for PORT_ALPM_LFPS_CTL.

Patches are tested on LunarLake and PantherLake using our reference panel supporting
Adaptive Sync and Panel Replay.

v4:
  - added DP_DSC_DECODE_CAPABILITY definitions
  - use defined shift instead of hardcoded value
v3:
  - comment about DP2.1 corrected as DP2.1a
  - referring patch removed from commit message
v2:
  - rework Panel Replay DPCD register definitions
  - do not use hardcoded indices while accessing intel_dp->pr_dpcd
  - ensure ALPM registers are not written on platform where they do
    not exist
  - remove kerneldoc comments

Jouni Högander (12):
  drm/panelreplay: Panel Replay capability DPCD register definitions
  drm/dp: Add Panel Replay capability bits from DP2.1 specification
  drm/i915/psr: Read all Panel Replay capability registers from DPCD
  drm/i915/alpm: Add PR_ALPM_CTL register definitions
  drm/i915/alpm: Write PR_ALPM_CTL register
  drm/i915/psr: Add interface to check if AUXLess ALPM is needed by PSR
  drm/i915/alpm: Add new interface to check if AUXLess ALPM is used
  drm/i915/alpm: Move port alpm configuration
  drm/i915/display: Add PHY_CMN1_CONTROL register definitions
  drm/i915/display: Add function to configure LFPS sending
  drm/i915/psr: Fix using wrong mask in REG_FIELD_PREP
  drm/i915/psr: Do not disable Panel Replay in case VRR is enabled

 drivers/gpu/drm/i915/display/intel_alpm.c     | 72 +++++++++++++------
 drivers/gpu/drm/i915/display/intel_alpm.h     |  4 ++
 drivers/gpu/drm/i915/display/intel_cx0_phy.c  | 32 +++++++++
 drivers/gpu/drm/i915/display/intel_cx0_phy.h  |  2 +
 .../gpu/drm/i915/display/intel_cx0_phy_regs.h |  3 +
 drivers/gpu/drm/i915/display/intel_ddi.c      | 12 ++++
 .../drm/i915/display/intel_display_types.h    |  4 +-
 drivers/gpu/drm/i915/display/intel_psr.c      | 44 +++++++-----
 drivers/gpu/drm/i915/display/intel_psr.h      |  2 +
 drivers/gpu/drm/i915/display/intel_psr_regs.h | 14 +++-
 include/drm/display/drm_dp.h                  | 24 +++++--
 11 files changed, 168 insertions(+), 45 deletions(-)

-- 
2.43.0


^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH v4 01/12] drm/panelreplay: Panel Replay capability DPCD register definitions
  2025-05-21 11:53 [PATCH v4 00/12] Panel Replay + Adaptive sync Jouni Högander
@ 2025-05-21 11:53 ` Jouni Högander
  2025-05-21 11:53 ` [PATCH v4 02/12] drm/dp: Add Panel Replay capability bits from DP2.1 specification Jouni Högander
                   ` (11 subsequent siblings)
  12 siblings, 0 replies; 17+ messages in thread
From: Jouni Högander @ 2025-05-21 11:53 UTC (permalink / raw)
  To: intel-gfx, intel-xe, dri-devel; +Cc: Jouni Högander, Ankit Nautiyal

Add new definition for size of Panel Replay DPCD capability registers
area. Rename existing definitions to group capability registers together.

Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
 drivers/gpu/drm/i915/display/intel_psr.c |  8 ++++----
 include/drm/display/drm_dp.h             | 12 +++++++-----
 2 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/display/intel_psr.c
index cd833b63ea6b..0cfdeff268f9 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -516,7 +516,7 @@ static u8 intel_dp_get_su_capability(struct intel_dp *intel_dp)
 
 	if (intel_dp->psr.sink_panel_replay_su_support)
 		drm_dp_dpcd_readb(&intel_dp->aux,
-				  DP_PANEL_PANEL_REPLAY_CAPABILITY,
+				  DP_PANEL_REPLAY_CAP_CAPABILITY,
 				  &su_capability);
 	else
 		su_capability = intel_dp->psr_dpcd[1];
@@ -528,7 +528,7 @@ static unsigned int
 intel_dp_get_su_x_granularity_offset(struct intel_dp *intel_dp)
 {
 	return intel_dp->psr.sink_panel_replay_su_support ?
-		DP_PANEL_PANEL_REPLAY_X_GRANULARITY :
+		DP_PANEL_REPLAY_CAP_X_GRANULARITY :
 		DP_PSR2_SU_X_GRANULARITY;
 }
 
@@ -536,7 +536,7 @@ static unsigned int
 intel_dp_get_su_y_granularity_offset(struct intel_dp *intel_dp)
 {
 	return intel_dp->psr.sink_panel_replay_su_support ?
-		DP_PANEL_PANEL_REPLAY_Y_GRANULARITY :
+		DP_PANEL_REPLAY_CAP_Y_GRANULARITY :
 		DP_PSR2_SU_Y_GRANULARITY;
 }
 
@@ -676,7 +676,7 @@ void intel_psr_init_dpcd(struct intel_dp *intel_dp)
 {
 	drm_dp_dpcd_read(&intel_dp->aux, DP_PSR_SUPPORT, intel_dp->psr_dpcd,
 			 sizeof(intel_dp->psr_dpcd));
-	drm_dp_dpcd_readb(&intel_dp->aux, DP_PANEL_REPLAY_CAP,
+	drm_dp_dpcd_readb(&intel_dp->aux, DP_PANEL_REPLAY_CAP_SUPPORT,
 			  &intel_dp->pr_dpcd);
 
 	if (intel_dp->pr_dpcd & DP_PANEL_REPLAY_SUPPORT)
diff --git a/include/drm/display/drm_dp.h b/include/drm/display/drm_dp.h
index 3001c0b6e7bb..3371e2edd9e9 100644
--- a/include/drm/display/drm_dp.h
+++ b/include/drm/display/drm_dp.h
@@ -547,16 +547,18 @@
 /* DFP Capability Extension */
 #define DP_DFP_CAPABILITY_EXTENSION_SUPPORT	0x0a3	/* 2.0 */
 
-#define DP_PANEL_REPLAY_CAP				0x0b0  /* DP 2.0 */
+#define DP_PANEL_REPLAY_CAP_SUPPORT			0x0b0  /* DP 2.0 */
 # define DP_PANEL_REPLAY_SUPPORT			(1 << 0)
 # define DP_PANEL_REPLAY_SU_SUPPORT			(1 << 1)
 # define DP_PANEL_REPLAY_EARLY_TRANSPORT_SUPPORT	(1 << 2) /* eDP 1.5 */
 
-#define DP_PANEL_PANEL_REPLAY_CAPABILITY		0xb1
-# define DP_PANEL_PANEL_REPLAY_SU_GRANULARITY_REQUIRED	(1 << 5)
+#define DP_PANEL_REPLAY_CAP_SIZE	7
 
-#define DP_PANEL_PANEL_REPLAY_X_GRANULARITY		0xb2
-#define DP_PANEL_PANEL_REPLAY_Y_GRANULARITY		0xb4
+#define DP_PANEL_REPLAY_CAP_CAPABILITY			0xb1
+# define DP_PANEL_REPLAY_SU_GRANULARITY_REQUIRED	(1 << 5)
+
+#define DP_PANEL_REPLAY_CAP_X_GRANULARITY		0xb2
+#define DP_PANEL_REPLAY_CAP_Y_GRANULARITY		0xb4
 
 /* Link Configuration */
 #define	DP_LINK_BW_SET		            0x100
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v4 02/12] drm/dp: Add Panel Replay capability bits from DP2.1 specification
  2025-05-21 11:53 [PATCH v4 00/12] Panel Replay + Adaptive sync Jouni Högander
  2025-05-21 11:53 ` [PATCH v4 01/12] drm/panelreplay: Panel Replay capability DPCD register definitions Jouni Högander
@ 2025-05-21 11:53 ` Jouni Högander
  2025-05-21 12:16   ` Nautiyal, Ankit K
  2025-05-21 11:53 ` [PATCH v4 03/12] drm/i915/psr: Read all Panel Replay capability registers from DPCD Jouni Högander
                   ` (10 subsequent siblings)
  12 siblings, 1 reply; 17+ messages in thread
From: Jouni Högander @ 2025-05-21 11:53 UTC (permalink / raw)
  To: intel-gfx, intel-xe, dri-devel; +Cc: Jouni Högander

Add PANEL REPLAY CAPABILITY register (0xb1) bits.

v3:
  - added DP_DSC_DECODE_CAPABILITY definitions
  - use defined shift instead of hardcoded value
v2: comment about DP2.1 changed as DP2.1a

Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
---
 include/drm/display/drm_dp.h | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/include/drm/display/drm_dp.h b/include/drm/display/drm_dp.h
index 3371e2edd9e9..811e9238a77c 100644
--- a/include/drm/display/drm_dp.h
+++ b/include/drm/display/drm_dp.h
@@ -554,8 +554,18 @@
 
 #define DP_PANEL_REPLAY_CAP_SIZE	7
 
-#define DP_PANEL_REPLAY_CAP_CAPABILITY			0xb1
-# define DP_PANEL_REPLAY_SU_GRANULARITY_REQUIRED	(1 << 5)
+#define DP_PANEL_REPLAY_CAP_CAPABILITY					0xb1
+# define DP_PANEL_REPLAY_DSC_DECODE_CAPABILITY_IN_PR_SHIFT			1 /* DP 2.1a */
+# define DP_PANEL_REPLAY_DSC_DECODE_CAPABILITY_IN_PR_MASK			(3 << DP_PANEL_REPLAY_DSC_DECODE_CAPABILITY_IN_PR_SHIFT)
+# define DP_DSC_DECODE_CAPABILITY_IN_PR_SUPPORTED				0x00
+# define DP_DSC_DECODE_CAPABILITY_IN_PR_FULL_FRAME_ONLY				0x01
+# define DP_DSC_DECODE_CAPABILITY_IN_PR_NOT_SUPPORTED				0x02
+# define DP_DSC_DECODE_CAPABILITY_IN_PR_RESERVED				0x03
+# define DP_PANEL_REPLAY_ASYNC_VIDEO_TIMING_NOT_SUPPORTED_IN_PR			(1 << 3)
+# define DP_PANEL_REPLAY_DSC_CRC_OF_MULTIPLE_SUS_SUPPORTED			(1 << 4)
+# define DP_PANEL_REPLAY_SU_GRANULARITY_REQUIRED				(1 << 5)
+# define DP_PANEL_REPLAY_SU_Y_GRANULARITY_EXTENDED_CAPABILITY_SUPPORTED		(1 << 6)
+# define DP_PANEL_REPLAY_LINK_OFF_SUPPORTED_IN_PR_AFTER_ADAPTIVE_SYNC_SDP	(1 << 7)
 
 #define DP_PANEL_REPLAY_CAP_X_GRANULARITY		0xb2
 #define DP_PANEL_REPLAY_CAP_Y_GRANULARITY		0xb4
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v4 03/12] drm/i915/psr: Read all Panel Replay capability registers from DPCD
  2025-05-21 11:53 [PATCH v4 00/12] Panel Replay + Adaptive sync Jouni Högander
  2025-05-21 11:53 ` [PATCH v4 01/12] drm/panelreplay: Panel Replay capability DPCD register definitions Jouni Högander
  2025-05-21 11:53 ` [PATCH v4 02/12] drm/dp: Add Panel Replay capability bits from DP2.1 specification Jouni Högander
@ 2025-05-21 11:53 ` Jouni Högander
  2025-05-21 11:53 ` [PATCH v4 04/12] drm/i915/alpm: Add PR_ALPM_CTL register definitions Jouni Högander
                   ` (9 subsequent siblings)
  12 siblings, 0 replies; 17+ messages in thread
From: Jouni Högander @ 2025-05-21 11:53 UTC (permalink / raw)
  To: intel-gfx, intel-xe, dri-devel; +Cc: Jouni Högander, Ankit Nautiyal

There are several Panel Replay capability register in DPCD. Read them
all for later use.

v2:
  - avoid using hardcoded indices
  - read all Panel Replay capability registers

Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
 .../drm/i915/display/intel_display_types.h    |  4 +++-
 drivers/gpu/drm/i915/display/intel_psr.c      | 20 ++++++++++++-------
 2 files changed, 16 insertions(+), 8 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
index b8836d29a721..9334fcd77072 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -1669,7 +1669,9 @@ struct intel_dp {
 	bool use_max_params;
 	u8 dpcd[DP_RECEIVER_CAP_SIZE];
 	u8 psr_dpcd[EDP_PSR_RECEIVER_CAP_SIZE];
-	u8 pr_dpcd;
+	u8 pr_dpcd[DP_PANEL_REPLAY_CAP_SIZE];
+#define INTEL_PR_DPCD_INDEX(pr_dpcd_register)	((pr_dpcd_register) - DP_PANEL_REPLAY_CAP_SUPPORT)
+
 	u8 downstream_ports[DP_MAX_DOWNSTREAM_PORTS];
 	u8 edp_dpcd[EDP_DISPLAY_CTL_CAP_SIZE];
 	u8 lttpr_common_caps[DP_LTTPR_COMMON_CAP_SIZE];
diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/display/intel_psr.c
index 0cfdeff268f9..1072549649cd 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -608,7 +608,8 @@ static void _panel_replay_init_dpcd(struct intel_dp *intel_dp)
 			return;
 		}
 
-		if (!(intel_dp->pr_dpcd & DP_PANEL_REPLAY_EARLY_TRANSPORT_SUPPORT)) {
+		if (!(intel_dp->pr_dpcd[INTEL_PR_DPCD_INDEX(DP_PANEL_REPLAY_CAP_SUPPORT)] &
+		      DP_PANEL_REPLAY_EARLY_TRANSPORT_SUPPORT)) {
 			drm_dbg_kms(display->drm,
 				    "Panel doesn't support early transport, eDP Panel Replay not possible\n");
 			return;
@@ -617,7 +618,8 @@ static void _panel_replay_init_dpcd(struct intel_dp *intel_dp)
 
 	intel_dp->psr.sink_panel_replay_support = true;
 
-	if (intel_dp->pr_dpcd & DP_PANEL_REPLAY_SU_SUPPORT)
+	if (intel_dp->pr_dpcd[INTEL_PR_DPCD_INDEX(DP_PANEL_REPLAY_CAP_SUPPORT)] &
+	    DP_PANEL_REPLAY_SU_SUPPORT)
 		intel_dp->psr.sink_panel_replay_su_support = true;
 
 	drm_dbg_kms(display->drm,
@@ -676,10 +678,12 @@ void intel_psr_init_dpcd(struct intel_dp *intel_dp)
 {
 	drm_dp_dpcd_read(&intel_dp->aux, DP_PSR_SUPPORT, intel_dp->psr_dpcd,
 			 sizeof(intel_dp->psr_dpcd));
-	drm_dp_dpcd_readb(&intel_dp->aux, DP_PANEL_REPLAY_CAP_SUPPORT,
-			  &intel_dp->pr_dpcd);
 
-	if (intel_dp->pr_dpcd & DP_PANEL_REPLAY_SUPPORT)
+	drm_dp_dpcd_read(&intel_dp->aux, DP_PANEL_REPLAY_CAP_SUPPORT,
+			 &intel_dp->pr_dpcd, sizeof(intel_dp->pr_dpcd));
+
+	if (intel_dp->pr_dpcd[INTEL_PR_DPCD_INDEX(DP_PANEL_REPLAY_CAP_SUPPORT)] &
+	    DP_PANEL_REPLAY_SUPPORT)
 		_panel_replay_init_dpcd(intel_dp);
 
 	if (intel_dp->psr_dpcd[0])
@@ -736,7 +740,8 @@ static bool psr2_su_region_et_valid(struct intel_dp *intel_dp, bool panel_replay
 		return false;
 
 	return panel_replay ?
-		intel_dp->pr_dpcd & DP_PANEL_REPLAY_EARLY_TRANSPORT_SUPPORT :
+		intel_dp->pr_dpcd[INTEL_PR_DPCD_INDEX(DP_PANEL_REPLAY_CAP_SUPPORT)] &
+		DP_PANEL_REPLAY_EARLY_TRANSPORT_SUPPORT :
 		intel_dp->psr_dpcd[0] == DP_PSR2_WITH_Y_COORD_ET_SUPPORTED &&
 		psr2_su_region_et_global_enabled(intel_dp);
 }
@@ -3916,7 +3921,8 @@ static void intel_psr_sink_capability(struct intel_dp *intel_dp,
 	seq_printf(m, ", Panel Replay = %s", str_yes_no(psr->sink_panel_replay_support));
 	seq_printf(m, ", Panel Replay Selective Update = %s",
 		   str_yes_no(psr->sink_panel_replay_su_support));
-	if (intel_dp->pr_dpcd & DP_PANEL_REPLAY_EARLY_TRANSPORT_SUPPORT)
+	if (intel_dp->pr_dpcd[INTEL_PR_DPCD_INDEX(DP_PANEL_REPLAY_CAP_SUPPORT)] &
+	    DP_PANEL_REPLAY_EARLY_TRANSPORT_SUPPORT)
 		seq_printf(m, " (Early Transport)");
 	seq_printf(m, "\n");
 }
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v4 04/12] drm/i915/alpm: Add PR_ALPM_CTL register definitions
  2025-05-21 11:53 [PATCH v4 00/12] Panel Replay + Adaptive sync Jouni Högander
                   ` (2 preceding siblings ...)
  2025-05-21 11:53 ` [PATCH v4 03/12] drm/i915/psr: Read all Panel Replay capability registers from DPCD Jouni Högander
@ 2025-05-21 11:53 ` Jouni Högander
  2025-05-21 11:53 ` [PATCH v4 05/12] drm/i915/alpm: Write PR_ALPM_CTL register Jouni Högander
                   ` (8 subsequent siblings)
  12 siblings, 0 replies; 17+ messages in thread
From: Jouni Högander @ 2025-05-21 11:53 UTC (permalink / raw)
  To: intel-gfx, intel-xe, dri-devel; +Cc: Jouni Högander, Ankit Nautiyal

Add PR_ALPM_CTL register definition and bits for it.

Bspec: 71014
Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
 drivers/gpu/drm/i915/display/intel_psr_regs.h | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_psr_regs.h b/drivers/gpu/drm/i915/display/intel_psr_regs.h
index 795e6b9cc575..aad3ac5f502e 100644
--- a/drivers/gpu/drm/i915/display/intel_psr_regs.h
+++ b/drivers/gpu/drm/i915/display/intel_psr_regs.h
@@ -266,6 +266,16 @@
 #define _PIPE_SRCSZ_ERLY_TPT_B	0x71074
 #define PIPE_SRCSZ_ERLY_TPT(pipe)	_MMIO_PIPE((pipe), _PIPE_SRCSZ_ERLY_TPT_A, _PIPE_SRCSZ_ERLY_TPT_B)
 
+#define _PR_ALPM_CTL_A	0x60948
+#define PR_ALPM_CTL(dev_priv, tran)	_MMIO_TRANS2(dev_priv, tran, _PR_ALPM_CTL_A)
+#define  PR_ALPM_CTL_ALLOW_LINK_OFF_BETWEEN_AS_SDP_AND_SU	BIT(6)
+#define  PR_ALPM_CTL_RFB_UPDATE_CONTROL				BIT(5)
+#define  PR_ALPM_CTL_AS_SDP_TRANSMISSION_IN_ACTIVE_DISABLE	BIT(4)
+#define  PR_ALPM_CTL_ADAPTIVE_SYNC_SDP_POSITION_MASK		REG_GENMASK(1, 0)
+#define  PR_ALPM_CTL_ADAPTIVE_SYNC_SDP_POSITION_T1_OR_T2	REG_FIELD_PREP(PR_ALPM_CTL_ADAPTIVE_SYNC_SDP_POSITION_MASK, 0)
+#define  PR_ALPM_CTL_ADAPTIVE_SYNC_SDP_POSITION_T1		REG_FIELD_PREP(PR_ALPM_CTL_ADAPTIVE_SYNC_SDP_POSITION_MASK, 1)
+#define  PR_ALPM_CTL_ADAPTIVE_SYNC_SDP_POSITION_T2		REG_FIELD_PREP(PR_ALPM_CTL_ADAPTIVE_SYNC_SDP_POSITION_MASK, 2)
+
 #define _ALPM_CTL_A	0x60950
 #define ALPM_CTL(dev_priv, tran)	_MMIO_TRANS2(dev_priv, tran, _ALPM_CTL_A)
 #define  ALPM_CTL_ALPM_ENABLE				REG_BIT(31)
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v4 05/12] drm/i915/alpm: Write PR_ALPM_CTL register
  2025-05-21 11:53 [PATCH v4 00/12] Panel Replay + Adaptive sync Jouni Högander
                   ` (3 preceding siblings ...)
  2025-05-21 11:53 ` [PATCH v4 04/12] drm/i915/alpm: Add PR_ALPM_CTL register definitions Jouni Högander
@ 2025-05-21 11:53 ` Jouni Högander
  2025-05-21 11:53 ` [PATCH v4 06/12] drm/i915/psr: Add interface to check if AUXLess ALPM is needed by PSR Jouni Högander
                   ` (7 subsequent siblings)
  12 siblings, 0 replies; 17+ messages in thread
From: Jouni Högander @ 2025-05-21 11:53 UTC (permalink / raw)
  To: intel-gfx, intel-xe, dri-devel; +Cc: Jouni Högander, Ankit Nautiyal

PR_ALPM_CTL register contains configurations related to Adaptive sync
sdp. Configure these if Adaptive Sync SDP is supported.

v2: avoid using hardcoded indices

Bspec: 71014
Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
 drivers/gpu/drm/i915/display/intel_alpm.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_alpm.c b/drivers/gpu/drm/i915/display/intel_alpm.c
index c176bdbc19a3..0890247085a7 100644
--- a/drivers/gpu/drm/i915/display/intel_alpm.c
+++ b/drivers/gpu/drm/i915/display/intel_alpm.c
@@ -348,6 +348,20 @@ static void lnl_alpm_configure(struct intel_dp *intel_dp,
 			ALPM_CTL_AUX_LESS_SLEEP_HOLD_TIME_50_SYMBOLS |
 			ALPM_CTL_AUX_LESS_WAKE_TIME(intel_dp->alpm_parameters.aux_less_wake_lines);
 
+		if (intel_dp->as_sdp_supported) {
+			u32 pr_alpm_ctl = PR_ALPM_CTL_ADAPTIVE_SYNC_SDP_POSITION_T1;
+
+			if (intel_dp->pr_dpcd[INTEL_PR_DPCD_INDEX(DP_PANEL_REPLAY_CAP_CAPABILITY)] &
+			    DP_PANEL_REPLAY_LINK_OFF_SUPPORTED_IN_PR_AFTER_ADAPTIVE_SYNC_SDP)
+				pr_alpm_ctl |= PR_ALPM_CTL_ALLOW_LINK_OFF_BETWEEN_AS_SDP_AND_SU;
+			if (!(intel_dp->pr_dpcd[INTEL_PR_DPCD_INDEX(DP_PANEL_REPLAY_CAP_CAPABILITY)] &
+						DP_PANEL_REPLAY_ASYNC_VIDEO_TIMING_NOT_SUPPORTED_IN_PR))
+				pr_alpm_ctl |= PR_ALPM_CTL_AS_SDP_TRANSMISSION_IN_ACTIVE_DISABLE;
+
+			intel_de_write(display, PR_ALPM_CTL(display, cpu_transcoder),
+				       pr_alpm_ctl);
+		}
+
 		intel_de_write(display,
 			       PORT_ALPM_CTL(port),
 			       PORT_ALPM_CTL_ALPM_AUX_LESS_ENABLE |
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v4 06/12] drm/i915/psr: Add interface to check if AUXLess ALPM is needed by PSR
  2025-05-21 11:53 [PATCH v4 00/12] Panel Replay + Adaptive sync Jouni Högander
                   ` (4 preceding siblings ...)
  2025-05-21 11:53 ` [PATCH v4 05/12] drm/i915/alpm: Write PR_ALPM_CTL register Jouni Högander
@ 2025-05-21 11:53 ` Jouni Högander
  2025-05-21 11:53 ` [PATCH v4 07/12] drm/i915/alpm: Add new interface to check if AUXLess ALPM is used Jouni Högander
                   ` (6 subsequent siblings)
  12 siblings, 0 replies; 17+ messages in thread
From: Jouni Högander @ 2025-05-21 11:53 UTC (permalink / raw)
  To: intel-gfx, intel-xe, dri-devel; +Cc: Jouni Högander, Ankit Nautiyal

Currently we spread ugly PSR details into ALPM code to check if AUXLess
ALPM is needed. Prepare to hide these details to PSR code by adding new
interface for checking if AUXLess ALPM is needed.

v2: remove kerneldoc comment

Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
 drivers/gpu/drm/i915/display/intel_psr.c | 6 ++++++
 drivers/gpu/drm/i915/display/intel_psr.h | 2 ++
 2 files changed, 8 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/display/intel_psr.c
index 1072549649cd..38535e0d2496 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -4246,3 +4246,9 @@ bool intel_psr_needs_alpm(struct intel_dp *intel_dp, const struct intel_crtc_sta
 	return intel_dp_is_edp(intel_dp) && (crtc_state->has_sel_update ||
 					     crtc_state->has_panel_replay);
 }
+
+bool intel_psr_needs_alpm_aux_less(struct intel_dp *intel_dp,
+				   const struct intel_crtc_state *crtc_state)
+{
+	return intel_dp_is_edp(intel_dp) && crtc_state->has_panel_replay;
+}
diff --git a/drivers/gpu/drm/i915/display/intel_psr.h b/drivers/gpu/drm/i915/display/intel_psr.h
index 73c3fa40844b..0cf53184f13f 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.h
+++ b/drivers/gpu/drm/i915/display/intel_psr.h
@@ -77,5 +77,7 @@ int intel_psr_min_vblank_delay(const struct intel_crtc_state *crtc_state);
 void intel_psr_connector_debugfs_add(struct intel_connector *connector);
 void intel_psr_debugfs_register(struct intel_display *display);
 bool intel_psr_needs_alpm(struct intel_dp *intel_dp, const struct intel_crtc_state *crtc_state);
+bool intel_psr_needs_alpm_aux_less(struct intel_dp *intel_dp,
+				   const struct intel_crtc_state *crtc_state);
 
 #endif /* __INTEL_PSR_H__ */
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v4 07/12] drm/i915/alpm: Add new interface to check if AUXLess ALPM is used
  2025-05-21 11:53 [PATCH v4 00/12] Panel Replay + Adaptive sync Jouni Högander
                   ` (5 preceding siblings ...)
  2025-05-21 11:53 ` [PATCH v4 06/12] drm/i915/psr: Add interface to check if AUXLess ALPM is needed by PSR Jouni Högander
@ 2025-05-21 11:53 ` Jouni Högander
  2025-05-21 11:53 ` [PATCH v4 08/12] drm/i915/alpm: Move port alpm configuration Jouni Högander
                   ` (5 subsequent siblings)
  12 siblings, 0 replies; 17+ messages in thread
From: Jouni Högander @ 2025-05-21 11:53 UTC (permalink / raw)
  To: intel-gfx, intel-xe, dri-devel; +Cc: Jouni Högander, Ankit Nautiyal

we need to know if AUXLess ALPM is used when preparing for link
training. Add new interface for this and use it in existing code where
possible.

v2: remove kerneldoc comment

Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
 drivers/gpu/drm/i915/display/intel_alpm.c | 10 ++++++++--
 drivers/gpu/drm/i915/display/intel_alpm.h |  2 ++
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_alpm.c b/drivers/gpu/drm/i915/display/intel_alpm.c
index 0890247085a7..bbcf510b0c25 100644
--- a/drivers/gpu/drm/i915/display/intel_alpm.c
+++ b/drivers/gpu/drm/i915/display/intel_alpm.c
@@ -26,6 +26,13 @@ bool intel_alpm_aux_less_wake_supported(struct intel_dp *intel_dp)
 	return intel_dp->alpm_dpcd & DP_ALPM_AUX_LESS_CAP;
 }
 
+bool intel_alpm_is_alpm_aux_less(struct intel_dp *intel_dp,
+				 const struct intel_crtc_state *crtc_state)
+{
+	return intel_psr_needs_alpm_aux_less(intel_dp, crtc_state) ||
+		(crtc_state->has_lobf && intel_alpm_aux_less_wake_supported(intel_dp));
+}
+
 void intel_alpm_init(struct intel_dp *intel_dp)
 {
 	u8 dpcd;
@@ -341,8 +348,7 @@ static void lnl_alpm_configure(struct intel_dp *intel_dp,
 	 * Panel Replay on eDP is always using ALPM aux less. I.e. no need to
 	 * check panel support at this point.
 	 */
-	if ((crtc_state->has_panel_replay && intel_dp_is_edp(intel_dp)) ||
-	    (crtc_state->has_lobf && intel_alpm_aux_less_wake_supported(intel_dp))) {
+	if (intel_alpm_is_alpm_aux_less(intel_dp, crtc_state)) {
 		alpm_ctl = ALPM_CTL_ALPM_ENABLE |
 			ALPM_CTL_ALPM_AUX_LESS_ENABLE |
 			ALPM_CTL_AUX_LESS_SLEEP_HOLD_TIME_50_SYMBOLS |
diff --git a/drivers/gpu/drm/i915/display/intel_alpm.h b/drivers/gpu/drm/i915/display/intel_alpm.h
index c9fe21e3e72c..86f4d5ab1981 100644
--- a/drivers/gpu/drm/i915/display/intel_alpm.h
+++ b/drivers/gpu/drm/i915/display/intel_alpm.h
@@ -32,6 +32,8 @@ void intel_alpm_post_plane_update(struct intel_atomic_state *state,
 void intel_alpm_lobf_debugfs_add(struct intel_connector *connector);
 bool intel_alpm_aux_wake_supported(struct intel_dp *intel_dp);
 bool intel_alpm_aux_less_wake_supported(struct intel_dp *intel_dp);
+bool intel_alpm_is_alpm_aux_less(struct intel_dp *intel_dp,
+				 const struct intel_crtc_state *crtc_state);
 void intel_alpm_disable(struct intel_dp *intel_dp);
 bool intel_alpm_get_error(struct intel_dp *intel_dp);
 #endif
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v4 08/12] drm/i915/alpm: Move port alpm configuration
  2025-05-21 11:53 [PATCH v4 00/12] Panel Replay + Adaptive sync Jouni Högander
                   ` (6 preceding siblings ...)
  2025-05-21 11:53 ` [PATCH v4 07/12] drm/i915/alpm: Add new interface to check if AUXLess ALPM is used Jouni Högander
@ 2025-05-21 11:53 ` Jouni Högander
  2025-05-21 11:53 ` [PATCH v4 09/12] drm/i915/display: Add PHY_CMN1_CONTROL register definitions Jouni Högander
                   ` (4 subsequent siblings)
  12 siblings, 0 replies; 17+ messages in thread
From: Jouni Högander @ 2025-05-21 11:53 UTC (permalink / raw)
  To: intel-gfx, intel-xe, dri-devel; +Cc: Jouni Högander, Ankit Nautiyal

It is specified in Bspec where port alpm configuration is supposed to be
performed. Change accordingly.

v2:
  - drop HAS reference
  - ensure PORT_ALPM registers are not writen on older platform

Bspec: 68849
Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
 drivers/gpu/drm/i915/display/intel_alpm.c    | 48 ++++++++++++--------
 drivers/gpu/drm/i915/display/intel_alpm.h    |  2 +
 drivers/gpu/drm/i915/display/intel_cx0_phy.c |  1 +
 drivers/gpu/drm/i915/display/intel_ddi.c     |  6 +++
 4 files changed, 39 insertions(+), 18 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_alpm.c b/drivers/gpu/drm/i915/display/intel_alpm.c
index bbcf510b0c25..dfdde8e4eabe 100644
--- a/drivers/gpu/drm/i915/display/intel_alpm.c
+++ b/drivers/gpu/drm/i915/display/intel_alpm.c
@@ -336,7 +336,6 @@ static void lnl_alpm_configure(struct intel_dp *intel_dp,
 {
 	struct intel_display *display = to_intel_display(intel_dp);
 	enum transcoder cpu_transcoder = crtc_state->cpu_transcoder;
-	enum port port = dp_to_dig_port(intel_dp)->base.port;
 	u32 alpm_ctl;
 
 	if (DISPLAY_VER(display) < 20 || (!intel_psr_needs_alpm(intel_dp, crtc_state) &&
@@ -368,23 +367,6 @@ static void lnl_alpm_configure(struct intel_dp *intel_dp,
 				       pr_alpm_ctl);
 		}
 
-		intel_de_write(display,
-			       PORT_ALPM_CTL(port),
-			       PORT_ALPM_CTL_ALPM_AUX_LESS_ENABLE |
-			       PORT_ALPM_CTL_MAX_PHY_SWING_SETUP(15) |
-			       PORT_ALPM_CTL_MAX_PHY_SWING_HOLD(0) |
-			       PORT_ALPM_CTL_SILENCE_PERIOD(
-				       intel_dp->alpm_parameters.silence_period_sym_clocks));
-
-		intel_de_write(display,
-			       PORT_ALPM_LFPS_CTL(port),
-			       PORT_ALPM_LFPS_CTL_LFPS_CYCLE_COUNT(10) |
-			       PORT_ALPM_LFPS_CTL_LFPS_HALF_CYCLE_DURATION(
-				       intel_dp->alpm_parameters.lfps_half_cycle_num_of_syms) |
-			       PORT_ALPM_LFPS_CTL_FIRST_LFPS_HALF_CYCLE_DURATION(
-				       intel_dp->alpm_parameters.lfps_half_cycle_num_of_syms) |
-			       PORT_ALPM_LFPS_CTL_LAST_LFPS_HALF_CYCLE_DURATION(
-				       intel_dp->alpm_parameters.lfps_half_cycle_num_of_syms));
 	} else {
 		alpm_ctl = ALPM_CTL_EXTENDED_FAST_WAKE_ENABLE |
 			ALPM_CTL_EXTENDED_FAST_WAKE_TIME(intel_dp->alpm_parameters.fast_wake_lines);
@@ -408,6 +390,36 @@ void intel_alpm_configure(struct intel_dp *intel_dp,
 	intel_dp->alpm_parameters.transcoder = crtc_state->cpu_transcoder;
 }
 
+void intel_alpm_port_configure(struct intel_dp *intel_dp,
+			       const struct intel_crtc_state *crtc_state)
+{
+	struct intel_display *display = to_intel_display(intel_dp);
+	enum port port = dp_to_dig_port(intel_dp)->base.port;
+	u32 alpm_ctl_val = 0, lfps_ctl_val = 0;
+
+	if (DISPLAY_VER(display) < 20)
+		return;
+
+	if (intel_alpm_is_alpm_aux_less(intel_dp, crtc_state)) {
+		alpm_ctl_val = PORT_ALPM_CTL_ALPM_AUX_LESS_ENABLE |
+			PORT_ALPM_CTL_MAX_PHY_SWING_SETUP(15) |
+			PORT_ALPM_CTL_MAX_PHY_SWING_HOLD(0) |
+			PORT_ALPM_CTL_SILENCE_PERIOD(
+				intel_dp->alpm_parameters.silence_period_sym_clocks);
+		lfps_ctl_val = PORT_ALPM_LFPS_CTL_LFPS_CYCLE_COUNT(10) |
+			PORT_ALPM_LFPS_CTL_LFPS_HALF_CYCLE_DURATION(
+				intel_dp->alpm_parameters.lfps_half_cycle_num_of_syms) |
+			PORT_ALPM_LFPS_CTL_FIRST_LFPS_HALF_CYCLE_DURATION(
+				intel_dp->alpm_parameters.lfps_half_cycle_num_of_syms) |
+			PORT_ALPM_LFPS_CTL_LAST_LFPS_HALF_CYCLE_DURATION(
+				intel_dp->alpm_parameters.lfps_half_cycle_num_of_syms);
+	}
+
+	intel_de_write(display, PORT_ALPM_CTL(port), alpm_ctl_val);
+
+	intel_de_write(display, PORT_ALPM_LFPS_CTL(port), lfps_ctl_val);
+}
+
 void intel_alpm_pre_plane_update(struct intel_atomic_state *state,
 				 struct intel_crtc *crtc)
 {
diff --git a/drivers/gpu/drm/i915/display/intel_alpm.h b/drivers/gpu/drm/i915/display/intel_alpm.h
index 86f4d5ab1981..a861c20b5d79 100644
--- a/drivers/gpu/drm/i915/display/intel_alpm.h
+++ b/drivers/gpu/drm/i915/display/intel_alpm.h
@@ -27,6 +27,8 @@ void intel_alpm_enable_sink(struct intel_dp *intel_dp,
 			    const struct intel_crtc_state *crtc_state);
 void intel_alpm_pre_plane_update(struct intel_atomic_state *state,
 				 struct intel_crtc *crtc);
+void intel_alpm_port_configure(struct intel_dp *intel_dp,
+			       const struct intel_crtc_state *crtc_state);
 void intel_alpm_post_plane_update(struct intel_atomic_state *state,
 				  struct intel_crtc *crtc);
 void intel_alpm_lobf_debugfs_add(struct intel_connector *connector);
diff --git a/drivers/gpu/drm/i915/display/intel_cx0_phy.c b/drivers/gpu/drm/i915/display/intel_cx0_phy.c
index a82b93cbc81d..91118d115fd3 100644
--- a/drivers/gpu/drm/i915/display/intel_cx0_phy.c
+++ b/drivers/gpu/drm/i915/display/intel_cx0_phy.c
@@ -10,6 +10,7 @@
 
 #include "i915_reg.h"
 #include "i915_utils.h"
+#include "intel_alpm.h"
 #include "intel_cx0_phy.h"
 #include "intel_cx0_phy_regs.h"
 #include "intel_ddi.h"
diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c
index 0e6d618b5356..65ab012c3eae 100644
--- a/drivers/gpu/drm/i915/display/intel_ddi.c
+++ b/drivers/gpu/drm/i915/display/intel_ddi.c
@@ -3743,6 +3743,12 @@ static void mtl_ddi_prepare_link_retrain(struct intel_dp *intel_dp,
 
 	intel_ddi_buf_enable(encoder, intel_dp->DP);
 	intel_dp->DP |= DDI_BUF_CTL_ENABLE;
+
+	/*
+	 * 6.k If AUX-Less ALPM is going to be enabled
+	 *     i. Configure PORT_ALPM_CTL and PORT_ALPM_LFPS_CTL here
+	 */
+	intel_alpm_port_configure(intel_dp, crtc_state);
 }
 
 static void intel_ddi_prepare_link_retrain(struct intel_dp *intel_dp,
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v4 09/12] drm/i915/display: Add PHY_CMN1_CONTROL register definitions
  2025-05-21 11:53 [PATCH v4 00/12] Panel Replay + Adaptive sync Jouni Högander
                   ` (7 preceding siblings ...)
  2025-05-21 11:53 ` [PATCH v4 08/12] drm/i915/alpm: Move port alpm configuration Jouni Högander
@ 2025-05-21 11:53 ` Jouni Högander
  2025-05-21 11:53 ` [PATCH v4 10/12] drm/i915/display: Add function to configure LFPS sending Jouni Högander
                   ` (3 subsequent siblings)
  12 siblings, 0 replies; 17+ messages in thread
From: Jouni Högander @ 2025-05-21 11:53 UTC (permalink / raw)
  To: intel-gfx, intel-xe, dri-devel; +Cc: Jouni Högander, Ankit Nautiyal

Add PHY_CMN1_CONTROL register and its definitions to configure port LFPS
sending.

Bspec: 68962
Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
 drivers/gpu/drm/i915/display/intel_cx0_phy_regs.h | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_cx0_phy_regs.h b/drivers/gpu/drm/i915/display/intel_cx0_phy_regs.h
index 59c22beaf1de..580a43be195e 100644
--- a/drivers/gpu/drm/i915/display/intel_cx0_phy_regs.h
+++ b/drivers/gpu/drm/i915/display/intel_cx0_phy_regs.h
@@ -285,6 +285,9 @@
 #define PHY_CX0_TX_CONTROL(tx, control)	(0x400 + ((tx) - 1) * 0x200 + (control))
 #define   CONTROL2_DISABLE_SINGLE_TX	REG_BIT(6)
 
+#define PHY_CMN1_CONTROL(tx, control)	(0x800 + ((tx) - 1) * 0x200 + (control))
+#define   CONTROL0_MAC_TRANSMIT_LFPS	REG_BIT(1)
+
 /* C20 Registers */
 #define PHY_C20_WR_ADDRESS_L		0xC02
 #define PHY_C20_WR_ADDRESS_H		0xC03
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v4 10/12] drm/i915/display: Add function to configure LFPS sending
  2025-05-21 11:53 [PATCH v4 00/12] Panel Replay + Adaptive sync Jouni Högander
                   ` (8 preceding siblings ...)
  2025-05-21 11:53 ` [PATCH v4 09/12] drm/i915/display: Add PHY_CMN1_CONTROL register definitions Jouni Högander
@ 2025-05-21 11:53 ` Jouni Högander
  2025-05-21 11:53 ` [PATCH v4 11/12] drm/i915/psr: Fix using wrong mask in REG_FIELD_PREP Jouni Högander
                   ` (2 subsequent siblings)
  12 siblings, 0 replies; 17+ messages in thread
From: Jouni Högander @ 2025-05-21 11:53 UTC (permalink / raw)
  To: intel-gfx, intel-xe, dri-devel; +Cc: Jouni Högander, Ankit Nautiyal

Add function to configre LFPS sending for Panel Replay according to link
training sequence in HAS document.

This assumes we are using AUX Less always if it's supported by the sink and
the source.

v2:
  - drop HAS reference
  - replay kerneldoc comment with a generic comment
  - check display version in intel_lnl_mac_transmit_lfps

Bspec: 68849
Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
 drivers/gpu/drm/i915/display/intel_cx0_phy.c | 31 ++++++++++++++++++++
 drivers/gpu/drm/i915/display/intel_cx0_phy.h |  2 ++
 drivers/gpu/drm/i915/display/intel_ddi.c     |  8 ++++-
 3 files changed, 40 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_cx0_phy.c b/drivers/gpu/drm/i915/display/intel_cx0_phy.c
index 91118d115fd3..75caccb65513 100644
--- a/drivers/gpu/drm/i915/display/intel_cx0_phy.c
+++ b/drivers/gpu/drm/i915/display/intel_cx0_phy.c
@@ -3225,6 +3225,37 @@ void intel_mtl_pll_enable(struct intel_encoder *encoder,
 		intel_cx0pll_enable(encoder, crtc_state);
 }
 
+/*
+ * According to HAS we need to enable MAC Transmitting LFPS in the "PHY Common
+ * Control 0" PIPE register in case of AUX Less ALPM is going to be used. This
+ * function is doing that and is called by link retrain sequence.
+ */
+void intel_lnl_mac_transmit_lfps(struct intel_encoder *encoder,
+				 const struct intel_crtc_state *crtc_state)
+{
+	struct intel_display *display = to_intel_display(encoder);
+	u8 owned_lane_mask = intel_cx0_get_owned_lane_mask(encoder);
+	bool enable = intel_alpm_is_alpm_aux_less(enc_to_intel_dp(encoder),
+						  crtc_state);
+	int i;
+
+	if (DISPLAY_VER(display) < 20)
+		return;
+
+	for (i = 0; i < 4; i++) {
+		int tx = i % 2 + 1;
+		u8 lane_mask = i < 2 ? INTEL_CX0_LANE0 : INTEL_CX0_LANE1;
+
+		if (!(owned_lane_mask & lane_mask))
+			continue;
+
+		intel_cx0_rmw(encoder, lane_mask, PHY_CMN1_CONTROL(tx, 0),
+			      CONTROL0_MAC_TRANSMIT_LFPS,
+			      enable ? CONTROL0_MAC_TRANSMIT_LFPS : 0,
+			      MB_WRITE_COMMITTED);
+	}
+}
+
 static u8 cx0_power_control_disable_val(struct intel_encoder *encoder)
 {
 	struct intel_display *display = to_intel_display(encoder);
diff --git a/drivers/gpu/drm/i915/display/intel_cx0_phy.h b/drivers/gpu/drm/i915/display/intel_cx0_phy.h
index a8f811ca5e7b..c5a7b529955b 100644
--- a/drivers/gpu/drm/i915/display/intel_cx0_phy.h
+++ b/drivers/gpu/drm/i915/display/intel_cx0_phy.h
@@ -43,5 +43,7 @@ void intel_cx0_phy_set_signal_levels(struct intel_encoder *encoder,
 				     const struct intel_crtc_state *crtc_state);
 int intel_mtl_tbt_calc_port_clock(struct intel_encoder *encoder);
 void intel_cx0_pll_power_save_wa(struct intel_display *display);
+void intel_lnl_mac_transmit_lfps(struct intel_encoder *encoder,
+				 const struct intel_crtc_state *crtc_state);
 
 #endif /* __INTEL_CX0_PHY_H__ */
diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c
index 65ab012c3eae..70de99cc4ead 100644
--- a/drivers/gpu/drm/i915/display/intel_ddi.c
+++ b/drivers/gpu/drm/i915/display/intel_ddi.c
@@ -3745,10 +3745,16 @@ static void mtl_ddi_prepare_link_retrain(struct intel_dp *intel_dp,
 	intel_dp->DP |= DDI_BUF_CTL_ENABLE;
 
 	/*
-	 * 6.k If AUX-Less ALPM is going to be enabled
+	 * 6.k If AUX-Less ALPM is going to be enabled:
 	 *     i. Configure PORT_ALPM_CTL and PORT_ALPM_LFPS_CTL here
 	 */
 	intel_alpm_port_configure(intel_dp, crtc_state);
+
+	/*
+	 *     ii. Enable MAC Transmits LFPS in the "PHY Common Control 0" PIPE
+	 *         register
+	 */
+	intel_lnl_mac_transmit_lfps(encoder, crtc_state);
 }
 
 static void intel_ddi_prepare_link_retrain(struct intel_dp *intel_dp,
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v4 11/12] drm/i915/psr: Fix using wrong mask in REG_FIELD_PREP
  2025-05-21 11:53 [PATCH v4 00/12] Panel Replay + Adaptive sync Jouni Högander
                   ` (9 preceding siblings ...)
  2025-05-21 11:53 ` [PATCH v4 10/12] drm/i915/display: Add function to configure LFPS sending Jouni Högander
@ 2025-05-21 11:53 ` Jouni Högander
  2025-05-21 11:53 ` [PATCH v4 12/12] drm/i915/psr: Do not disable Panel Replay in case VRR is enabled Jouni Högander
  2025-05-22  5:25 ` [PATCH v4 00/12] Panel Replay + Adaptive sync Hogander, Jouni
  12 siblings, 0 replies; 17+ messages in thread
From: Jouni Högander @ 2025-05-21 11:53 UTC (permalink / raw)
  To: intel-gfx, intel-xe, dri-devel; +Cc: Jouni Högander, Ankit Nautiyal

Wrong mask is used in PORT_ALPM_LFPS_CTL_FIRST_LFPS_HALF_CYCLE_DURATION and
PORT_ALPM_LFPS_CTL_LAST_LFPS_HALF_CYCLE_DURATION.

Fixes: 295099580f04 ("drm/i915/psr: Add missing ALPM AUX-Less register definitions")
Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
 drivers/gpu/drm/i915/display/intel_psr_regs.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_psr_regs.h b/drivers/gpu/drm/i915/display/intel_psr_regs.h
index aad3ac5f502e..8afbf5a38335 100644
--- a/drivers/gpu/drm/i915/display/intel_psr_regs.h
+++ b/drivers/gpu/drm/i915/display/intel_psr_regs.h
@@ -335,8 +335,8 @@
 #define  PORT_ALPM_LFPS_CTL_LFPS_HALF_CYCLE_DURATION_MASK	REG_GENMASK(20, 16)
 #define  PORT_ALPM_LFPS_CTL_LFPS_HALF_CYCLE_DURATION(val)	REG_FIELD_PREP(PORT_ALPM_LFPS_CTL_LFPS_HALF_CYCLE_DURATION_MASK, val)
 #define  PORT_ALPM_LFPS_CTL_FIRST_LFPS_HALF_CYCLE_DURATION_MASK	REG_GENMASK(12, 8)
-#define  PORT_ALPM_LFPS_CTL_FIRST_LFPS_HALF_CYCLE_DURATION(val)	REG_FIELD_PREP(PORT_ALPM_LFPS_CTL_LFPS_HALF_CYCLE_DURATION_MASK, val)
+#define  PORT_ALPM_LFPS_CTL_FIRST_LFPS_HALF_CYCLE_DURATION(val)	REG_FIELD_PREP(PORT_ALPM_LFPS_CTL_FIRST_LFPS_HALF_CYCLE_DURATION_MASK, val)
 #define  PORT_ALPM_LFPS_CTL_LAST_LFPS_HALF_CYCLE_DURATION_MASK	REG_GENMASK(4, 0)
-#define  PORT_ALPM_LFPS_CTL_LAST_LFPS_HALF_CYCLE_DURATION(val)	REG_FIELD_PREP(PORT_ALPM_LFPS_CTL_LFPS_HALF_CYCLE_DURATION_MASK, val)
+#define  PORT_ALPM_LFPS_CTL_LAST_LFPS_HALF_CYCLE_DURATION(val)	REG_FIELD_PREP(PORT_ALPM_LFPS_CTL_LAST_LFPS_HALF_CYCLE_DURATION_MASK, val)
 
 #endif /* __INTEL_PSR_REGS_H__ */
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v4 12/12] drm/i915/psr: Do not disable Panel Replay in case VRR is enabled
  2025-05-21 11:53 [PATCH v4 00/12] Panel Replay + Adaptive sync Jouni Högander
                   ` (10 preceding siblings ...)
  2025-05-21 11:53 ` [PATCH v4 11/12] drm/i915/psr: Fix using wrong mask in REG_FIELD_PREP Jouni Högander
@ 2025-05-21 11:53 ` Jouni Högander
  2025-05-22  5:25 ` [PATCH v4 00/12] Panel Replay + Adaptive sync Hogander, Jouni
  12 siblings, 0 replies; 17+ messages in thread
From: Jouni Högander @ 2025-05-21 11:53 UTC (permalink / raw)
  To: intel-gfx, intel-xe, dri-devel; +Cc: Jouni Högander, Ankit Nautiyal

Allow Panel Replay with VRR. All VRR modes are supposed to work with
Panel Replay.

Bspec: 68920, 68925
Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
 drivers/gpu/drm/i915/display/intel_psr.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/display/intel_psr.c
index 38535e0d2496..db7111374293 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -1579,6 +1579,12 @@ static bool _psr_compute_config(struct intel_dp *intel_dp,
 	if (!CAN_PSR(intel_dp))
 		return false;
 
+	/*
+	 * Currently PSR doesn't work reliably with VRR enabled.
+	 */
+	if (crtc_state->vrr.enable)
+		return false;
+
 	entry_setup_frames = intel_psr_entry_setup_frames(intel_dp, adjusted_mode);
 
 	if (entry_setup_frames >= 0) {
@@ -1696,12 +1702,6 @@ void intel_psr_compute_config(struct intel_dp *intel_dp,
 		return;
 	}
 
-	/*
-	 * Currently PSR/PR doesn't work reliably with VRR enabled.
-	 */
-	if (crtc_state->vrr.enable)
-		return;
-
 	crtc_state->has_panel_replay = _panel_replay_compute_config(intel_dp,
 								    crtc_state,
 								    conn_state);
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* Re: [PATCH v4 02/12] drm/dp: Add Panel Replay capability bits from DP2.1 specification
  2025-05-21 11:53 ` [PATCH v4 02/12] drm/dp: Add Panel Replay capability bits from DP2.1 specification Jouni Högander
@ 2025-05-21 12:16   ` Nautiyal, Ankit K
  0 siblings, 0 replies; 17+ messages in thread
From: Nautiyal, Ankit K @ 2025-05-21 12:16 UTC (permalink / raw)
  To: Jouni Högander, intel-gfx, intel-xe, dri-devel


On 5/21/2025 5:23 PM, Jouni Högander wrote:
> Add PANEL REPLAY CAPABILITY register (0xb1) bits.
>
> v3:
>    - added DP_DSC_DECODE_CAPABILITY definitions
>    - use defined shift instead of hardcoded value
> v2: comment about DP2.1 changed as DP2.1a
>
> Signed-off-by: Jouni Högander <jouni.hogander@intel.com>

Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>


> ---
>   include/drm/display/drm_dp.h | 14 ++++++++++++--
>   1 file changed, 12 insertions(+), 2 deletions(-)
>
> diff --git a/include/drm/display/drm_dp.h b/include/drm/display/drm_dp.h
> index 3371e2edd9e9..811e9238a77c 100644
> --- a/include/drm/display/drm_dp.h
> +++ b/include/drm/display/drm_dp.h
> @@ -554,8 +554,18 @@
>   
>   #define DP_PANEL_REPLAY_CAP_SIZE	7
>   
> -#define DP_PANEL_REPLAY_CAP_CAPABILITY			0xb1
> -# define DP_PANEL_REPLAY_SU_GRANULARITY_REQUIRED	(1 << 5)
> +#define DP_PANEL_REPLAY_CAP_CAPABILITY					0xb1
> +# define DP_PANEL_REPLAY_DSC_DECODE_CAPABILITY_IN_PR_SHIFT			1 /* DP 2.1a */
> +# define DP_PANEL_REPLAY_DSC_DECODE_CAPABILITY_IN_PR_MASK			(3 << DP_PANEL_REPLAY_DSC_DECODE_CAPABILITY_IN_PR_SHIFT)
> +# define DP_DSC_DECODE_CAPABILITY_IN_PR_SUPPORTED				0x00
> +# define DP_DSC_DECODE_CAPABILITY_IN_PR_FULL_FRAME_ONLY				0x01
> +# define DP_DSC_DECODE_CAPABILITY_IN_PR_NOT_SUPPORTED				0x02
> +# define DP_DSC_DECODE_CAPABILITY_IN_PR_RESERVED				0x03
> +# define DP_PANEL_REPLAY_ASYNC_VIDEO_TIMING_NOT_SUPPORTED_IN_PR			(1 << 3)
> +# define DP_PANEL_REPLAY_DSC_CRC_OF_MULTIPLE_SUS_SUPPORTED			(1 << 4)
> +# define DP_PANEL_REPLAY_SU_GRANULARITY_REQUIRED				(1 << 5)
> +# define DP_PANEL_REPLAY_SU_Y_GRANULARITY_EXTENDED_CAPABILITY_SUPPORTED		(1 << 6)
> +# define DP_PANEL_REPLAY_LINK_OFF_SUPPORTED_IN_PR_AFTER_ADAPTIVE_SYNC_SDP	(1 << 7)
>   
>   #define DP_PANEL_REPLAY_CAP_X_GRANULARITY		0xb2
>   #define DP_PANEL_REPLAY_CAP_Y_GRANULARITY		0xb4

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH v4 00/12] Panel Replay + Adaptive sync
  2025-05-21 11:53 [PATCH v4 00/12] Panel Replay + Adaptive sync Jouni Högander
                   ` (11 preceding siblings ...)
  2025-05-21 11:53 ` [PATCH v4 12/12] drm/i915/psr: Do not disable Panel Replay in case VRR is enabled Jouni Högander
@ 2025-05-22  5:25 ` Hogander, Jouni
  2025-05-26 11:43   ` Maarten Lankhorst
  12 siblings, 1 reply; 17+ messages in thread
From: Hogander, Jouni @ 2025-05-22  5:25 UTC (permalink / raw)
  To: maarten.lankhorst@linux.intel.com, airlied@gmail.com,
	intel-gfx@lists.freedesktop.org, simona@ffwll.ch
  Cc: intel-xe@lists.freedesktop.org, dri-devel@lists.freedesktop.org

Hello DRM Maintainers,

I have two patches (01/12 and 02/12) in this set I would like to merge
via drm-intel/drm-intel-next. Is that ok to you? They are touching i915
display driver and drm_dp.h header and rest of the patch set is
depending on those changes. Can one of you ack those two patches?

Thank You in Advance,

Jouni Högander

On Wed, 2025-05-21 at 14:53 +0300, Jouni Högander wrote:
> This patch set is adding missing configuration to have Panel Replay
> and Adaptive Sync enabled simultaneously. Also some issues identified
> while debugging are fixed:
> 
> 1. Source PORT ALPM configuration has to made during modeset.
> 2. PHY_CMN1_CONTROL is not written according to HAS document
> 3. Wrong register field definitions for PORT_ALPM_LFPS_CTL.
> 
> Patches are tested on LunarLake and PantherLake using our reference
> panel supporting
> Adaptive Sync and Panel Replay.
> 
> v4:
>   - added DP_DSC_DECODE_CAPABILITY definitions
>   - use defined shift instead of hardcoded value
> v3:
>   - comment about DP2.1 corrected as DP2.1a
>   - referring patch removed from commit message
> v2:
>   - rework Panel Replay DPCD register definitions
>   - do not use hardcoded indices while accessing intel_dp->pr_dpcd
>   - ensure ALPM registers are not written on platform where they do
>     not exist
>   - remove kerneldoc comments
> 
> Jouni Högander (12):
>   drm/panelreplay: Panel Replay capability DPCD register definitions
>   drm/dp: Add Panel Replay capability bits from DP2.1 specification
>   drm/i915/psr: Read all Panel Replay capability registers from DPCD
>   drm/i915/alpm: Add PR_ALPM_CTL register definitions
>   drm/i915/alpm: Write PR_ALPM_CTL register
>   drm/i915/psr: Add interface to check if AUXLess ALPM is needed by
> PSR
>   drm/i915/alpm: Add new interface to check if AUXLess ALPM is used
>   drm/i915/alpm: Move port alpm configuration
>   drm/i915/display: Add PHY_CMN1_CONTROL register definitions
>   drm/i915/display: Add function to configure LFPS sending
>   drm/i915/psr: Fix using wrong mask in REG_FIELD_PREP
>   drm/i915/psr: Do not disable Panel Replay in case VRR is enabled
> 
>  drivers/gpu/drm/i915/display/intel_alpm.c     | 72 +++++++++++++----
> --
>  drivers/gpu/drm/i915/display/intel_alpm.h     |  4 ++
>  drivers/gpu/drm/i915/display/intel_cx0_phy.c  | 32 +++++++++
>  drivers/gpu/drm/i915/display/intel_cx0_phy.h  |  2 +
>  .../gpu/drm/i915/display/intel_cx0_phy_regs.h |  3 +
>  drivers/gpu/drm/i915/display/intel_ddi.c      | 12 ++++
>  .../drm/i915/display/intel_display_types.h    |  4 +-
>  drivers/gpu/drm/i915/display/intel_psr.c      | 44 +++++++-----
>  drivers/gpu/drm/i915/display/intel_psr.h      |  2 +
>  drivers/gpu/drm/i915/display/intel_psr_regs.h | 14 +++-
>  include/drm/display/drm_dp.h                  | 24 +++++--
>  11 files changed, 168 insertions(+), 45 deletions(-)
> 


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH v4 00/12] Panel Replay + Adaptive sync
  2025-05-22  5:25 ` [PATCH v4 00/12] Panel Replay + Adaptive sync Hogander, Jouni
@ 2025-05-26 11:43   ` Maarten Lankhorst
  2025-05-29  5:33     ` Hogander, Jouni
  0 siblings, 1 reply; 17+ messages in thread
From: Maarten Lankhorst @ 2025-05-26 11:43 UTC (permalink / raw)
  To: Hogander, Jouni, airlied@gmail.com,
	intel-gfx@lists.freedesktop.org, simona@ffwll.ch
  Cc: intel-xe@lists.freedesktop.org, dri-devel@lists.freedesktop.org

Hey,

Seems to be just some register definitions.

Acked-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>

Best regards,
~Maarten

On 2025-05-22 07:25, Hogander, Jouni wrote:
> Hello DRM Maintainers,
> 
> I have two patches (01/12 and 02/12) in this set I would like to merge
> via drm-intel/drm-intel-next. Is that ok to you? They are touching i915
> display driver and drm_dp.h header and rest of the patch set is
> depending on those changes. Can one of you ack those two patches?
> 
> Thank You in Advance,
> 
> Jouni Högander
> 
> On Wed, 2025-05-21 at 14:53 +0300, Jouni Högander wrote:
>> This patch set is adding missing configuration to have Panel Replay
>> and Adaptive Sync enabled simultaneously. Also some issues identified
>> while debugging are fixed:
>>
>> 1. Source PORT ALPM configuration has to made during modeset.
>> 2. PHY_CMN1_CONTROL is not written according to HAS document
>> 3. Wrong register field definitions for PORT_ALPM_LFPS_CTL.
>>
>> Patches are tested on LunarLake and PantherLake using our reference
>> panel supporting
>> Adaptive Sync and Panel Replay.
>>
>> v4:
>>   - added DP_DSC_DECODE_CAPABILITY definitions
>>   - use defined shift instead of hardcoded value
>> v3:
>>   - comment about DP2.1 corrected as DP2.1a
>>   - referring patch removed from commit message
>> v2:
>>   - rework Panel Replay DPCD register definitions
>>   - do not use hardcoded indices while accessing intel_dp->pr_dpcd
>>   - ensure ALPM registers are not written on platform where they do
>>     not exist
>>   - remove kerneldoc comments
>>
>> Jouni Högander (12):
>>   drm/panelreplay: Panel Replay capability DPCD register definitions
>>   drm/dp: Add Panel Replay capability bits from DP2.1 specification
>>   drm/i915/psr: Read all Panel Replay capability registers from DPCD
>>   drm/i915/alpm: Add PR_ALPM_CTL register definitions
>>   drm/i915/alpm: Write PR_ALPM_CTL register
>>   drm/i915/psr: Add interface to check if AUXLess ALPM is needed by
>> PSR
>>   drm/i915/alpm: Add new interface to check if AUXLess ALPM is used
>>   drm/i915/alpm: Move port alpm configuration
>>   drm/i915/display: Add PHY_CMN1_CONTROL register definitions
>>   drm/i915/display: Add function to configure LFPS sending
>>   drm/i915/psr: Fix using wrong mask in REG_FIELD_PREP
>>   drm/i915/psr: Do not disable Panel Replay in case VRR is enabled
>>
>>  drivers/gpu/drm/i915/display/intel_alpm.c     | 72 +++++++++++++----
>> --
>>  drivers/gpu/drm/i915/display/intel_alpm.h     |  4 ++
>>  drivers/gpu/drm/i915/display/intel_cx0_phy.c  | 32 +++++++++
>>  drivers/gpu/drm/i915/display/intel_cx0_phy.h  |  2 +
>>  .../gpu/drm/i915/display/intel_cx0_phy_regs.h |  3 +
>>  drivers/gpu/drm/i915/display/intel_ddi.c      | 12 ++++
>>  .../drm/i915/display/intel_display_types.h    |  4 +-
>>  drivers/gpu/drm/i915/display/intel_psr.c      | 44 +++++++-----
>>  drivers/gpu/drm/i915/display/intel_psr.h      |  2 +
>>  drivers/gpu/drm/i915/display/intel_psr_regs.h | 14 +++-
>>  include/drm/display/drm_dp.h                  | 24 +++++--
>>  11 files changed, 168 insertions(+), 45 deletions(-)
>>
> 


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH v4 00/12] Panel Replay + Adaptive sync
  2025-05-26 11:43   ` Maarten Lankhorst
@ 2025-05-29  5:33     ` Hogander, Jouni
  0 siblings, 0 replies; 17+ messages in thread
From: Hogander, Jouni @ 2025-05-29  5:33 UTC (permalink / raw)
  To: intel-xe@lists.freedesktop.org, dri-devel@lists.freedesktop.org,
	intel-gfx@lists.freedesktop.org
  Cc: maarten.lankhorst@linux.intel.com, Nautiyal, Ankit K

On Mon, 2025-05-26 at 13:43 +0200, Maarten Lankhorst wrote:
> Hey,
> 
> Seems to be just some register definitions.
> 
> Acked-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>

Thank you Maarten and Ankit for checking my patches. These are now
pushed to drm-intel-next.

BR,

Jouni Högander

> 
> Best regards,
> ~Maarten
> 
> On 2025-05-22 07:25, Hogander, Jouni wrote:
> > Hello DRM Maintainers,
> > 
> > I have two patches (01/12 and 02/12) in this set I would like to
> > merge
> > via drm-intel/drm-intel-next. Is that ok to you? They are touching
> > i915
> > display driver and drm_dp.h header and rest of the patch set is
> > depending on those changes. Can one of you ack those two patches?
> > 
> > Thank You in Advance,
> > 
> > Jouni Högander
> > 
> > On Wed, 2025-05-21 at 14:53 +0300, Jouni Högander wrote:
> > > This patch set is adding missing configuration to have Panel
> > > Replay
> > > and Adaptive Sync enabled simultaneously. Also some issues
> > > identified
> > > while debugging are fixed:
> > > 
> > > 1. Source PORT ALPM configuration has to made during modeset.
> > > 2. PHY_CMN1_CONTROL is not written according to HAS document
> > > 3. Wrong register field definitions for PORT_ALPM_LFPS_CTL.
> > > 
> > > Patches are tested on LunarLake and PantherLake using our
> > > reference
> > > panel supporting
> > > Adaptive Sync and Panel Replay.
> > > 
> > > v4:
> > >   - added DP_DSC_DECODE_CAPABILITY definitions
> > >   - use defined shift instead of hardcoded value
> > > v3:
> > >   - comment about DP2.1 corrected as DP2.1a
> > >   - referring patch removed from commit message
> > > v2:
> > >   - rework Panel Replay DPCD register definitions
> > >   - do not use hardcoded indices while accessing intel_dp-
> > > >pr_dpcd
> > >   - ensure ALPM registers are not written on platform where they
> > > do
> > >     not exist
> > >   - remove kerneldoc comments
> > > 
> > > Jouni Högander (12):
> > >   drm/panelreplay: Panel Replay capability DPCD register
> > > definitions
> > >   drm/dp: Add Panel Replay capability bits from DP2.1
> > > specification
> > >   drm/i915/psr: Read all Panel Replay capability registers from
> > > DPCD
> > >   drm/i915/alpm: Add PR_ALPM_CTL register definitions
> > >   drm/i915/alpm: Write PR_ALPM_CTL register
> > >   drm/i915/psr: Add interface to check if AUXLess ALPM is needed
> > > by
> > > PSR
> > >   drm/i915/alpm: Add new interface to check if AUXLess ALPM is
> > > used
> > >   drm/i915/alpm: Move port alpm configuration
> > >   drm/i915/display: Add PHY_CMN1_CONTROL register definitions
> > >   drm/i915/display: Add function to configure LFPS sending
> > >   drm/i915/psr: Fix using wrong mask in REG_FIELD_PREP
> > >   drm/i915/psr: Do not disable Panel Replay in case VRR is
> > > enabled
> > > 
> > >  drivers/gpu/drm/i915/display/intel_alpm.c     | 72
> > > +++++++++++++----
> > > --
> > >  drivers/gpu/drm/i915/display/intel_alpm.h     |  4 ++
> > >  drivers/gpu/drm/i915/display/intel_cx0_phy.c  | 32 +++++++++
> > >  drivers/gpu/drm/i915/display/intel_cx0_phy.h  |  2 +
> > >  .../gpu/drm/i915/display/intel_cx0_phy_regs.h |  3 +
> > >  drivers/gpu/drm/i915/display/intel_ddi.c      | 12 ++++
> > >  .../drm/i915/display/intel_display_types.h    |  4 +-
> > >  drivers/gpu/drm/i915/display/intel_psr.c      | 44 +++++++-----
> > >  drivers/gpu/drm/i915/display/intel_psr.h      |  2 +
> > >  drivers/gpu/drm/i915/display/intel_psr_regs.h | 14 +++-
> > >  include/drm/display/drm_dp.h                  | 24 +++++--
> > >  11 files changed, 168 insertions(+), 45 deletions(-)
> > > 
> > 
> 


^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2025-05-29  5:33 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-05-21 11:53 [PATCH v4 00/12] Panel Replay + Adaptive sync Jouni Högander
2025-05-21 11:53 ` [PATCH v4 01/12] drm/panelreplay: Panel Replay capability DPCD register definitions Jouni Högander
2025-05-21 11:53 ` [PATCH v4 02/12] drm/dp: Add Panel Replay capability bits from DP2.1 specification Jouni Högander
2025-05-21 12:16   ` Nautiyal, Ankit K
2025-05-21 11:53 ` [PATCH v4 03/12] drm/i915/psr: Read all Panel Replay capability registers from DPCD Jouni Högander
2025-05-21 11:53 ` [PATCH v4 04/12] drm/i915/alpm: Add PR_ALPM_CTL register definitions Jouni Högander
2025-05-21 11:53 ` [PATCH v4 05/12] drm/i915/alpm: Write PR_ALPM_CTL register Jouni Högander
2025-05-21 11:53 ` [PATCH v4 06/12] drm/i915/psr: Add interface to check if AUXLess ALPM is needed by PSR Jouni Högander
2025-05-21 11:53 ` [PATCH v4 07/12] drm/i915/alpm: Add new interface to check if AUXLess ALPM is used Jouni Högander
2025-05-21 11:53 ` [PATCH v4 08/12] drm/i915/alpm: Move port alpm configuration Jouni Högander
2025-05-21 11:53 ` [PATCH v4 09/12] drm/i915/display: Add PHY_CMN1_CONTROL register definitions Jouni Högander
2025-05-21 11:53 ` [PATCH v4 10/12] drm/i915/display: Add function to configure LFPS sending Jouni Högander
2025-05-21 11:53 ` [PATCH v4 11/12] drm/i915/psr: Fix using wrong mask in REG_FIELD_PREP Jouni Högander
2025-05-21 11:53 ` [PATCH v4 12/12] drm/i915/psr: Do not disable Panel Replay in case VRR is enabled Jouni Högander
2025-05-22  5:25 ` [PATCH v4 00/12] Panel Replay + Adaptive sync Hogander, Jouni
2025-05-26 11:43   ` Maarten Lankhorst
2025-05-29  5:33     ` Hogander, Jouni

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).