Intel-GFX Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v5 00/11] drm/i915/xe3lpd: ptl display patches
@ 2024-10-25 20:47 Clint Taylor
  2024-10-25 20:47 ` [PATCH v5 01/11] drm/i915/xe3lpd: Update pmdemand programming Clint Taylor
                   ` (13 more replies)
  0 siblings, 14 replies; 23+ messages in thread
From: Clint Taylor @ 2024-10-25 20:47 UTC (permalink / raw)
  To: intel-gfx, intel-xe

This series builds on the previous v4, Review Comments have addressed
for the first 2 patches in a series. 1 more VRR related patch dropped.
PTL display enabling patch added. 

Clint Taylor (1):
  drm/i915/cx0: Remove bus reset after every c10 transaction

Dnyaneshwar Bhadane (3):
  drm/i915/ptl: Define IS_PANTHERLAKE macro
  drm/i915/cx0: Extend C10 check to PTL
  drm/i915/xe3lpd: Move async flip bit to PLANE_SURF register

Haridhar Kalvala (1):
  drm/xe/ptl: Enable PTL display

Heikkila, Juha-pekka (1):
  drm/i915/display/xe3: disable x-tiled framebuffers

Matt Roper (1):
  drm/i915/xe3lpd: Update pmdemand programming

Mika Kahola (1):
  drm/i915/xe3lpd: Power request asserting/deasserting

Ravi Kumar Vodapalli (1):
  drm/i915/xe3: Underrun recovery does not exist post Xe2

Suraj Kandpal (2):
  drm/i915/xe3lpd: Disable HDCP Line Rekeying for Xe3
  drm/i915/xe3lpd: Add check to see if edp over type c is allowed

 drivers/gpu/drm/i915/display/intel_cx0_phy.c  | 12 ++-
 .../gpu/drm/i915/display/intel_cx0_phy_regs.h |  3 +
 drivers/gpu/drm/i915/display/intel_display.c  |  2 +-
 .../drm/i915/display/intel_display_device.c   |  5 ++
 .../drm/i915/display/intel_display_device.h   |  1 +
 drivers/gpu/drm/i915/display/intel_dp.c       |  7 +-
 drivers/gpu/drm/i915/display/intel_fb.c       |  2 +-
 drivers/gpu/drm/i915/display/intel_hdcp.c     | 11 ++-
 drivers/gpu/drm/i915/display/intel_pmdemand.c | 73 +++++++++++++------
 drivers/gpu/drm/i915/display/intel_pmdemand.h |  4 +-
 drivers/gpu/drm/i915/display/intel_tc.c       | 40 ++++++++++
 .../drm/i915/display/skl_universal_plane.c    | 13 +++-
 .../i915/display/skl_universal_plane_regs.h   |  1 +
 drivers/gpu/drm/i915/i915_drv.h               |  1 +
 drivers/gpu/drm/i915/i915_reg.h               |  9 +++
 .../gpu/drm/xe/compat-i915-headers/i915_drv.h |  1 +
 drivers/gpu/drm/xe/xe_pci.c                   |  2 +-
 17 files changed, 146 insertions(+), 41 deletions(-)

-- 
2.25.1


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

* [PATCH v5 01/11] drm/i915/xe3lpd: Update pmdemand programming
  2024-10-25 20:47 [PATCH v5 00/11] drm/i915/xe3lpd: ptl display patches Clint Taylor
@ 2024-10-25 20:47 ` Clint Taylor
  2024-10-28 15:19   ` Govindapillai, Vinod
  2024-10-25 20:47 ` [PATCH v5 02/11] drm/i915/xe3lpd: Disable HDCP Line Rekeying for Xe3 Clint Taylor
                   ` (12 subsequent siblings)
  13 siblings, 1 reply; 23+ messages in thread
From: Clint Taylor @ 2024-10-25 20:47 UTC (permalink / raw)
  To: intel-gfx, intel-xe

From: Matt Roper <matthew.d.roper@intel.com>

There are some minor changes to pmdemand handling on Xe3:
 - Active scalers are no longer tracked.  We can simply skip the readout
   and programming of this field.
 - Active dbuf slices are no longer tracked.  We should skip the readout
   and programming of this field and also make sure that it stays 0 in
   our software bookkeeping so that we won't erroneously return true
   from intel_pmdemand_needs_update() due to mismatches.
 - Even though there aren't enough pipes to utilize them, the size of
   the 'active pipes' field has expanded to four bits, taking over the
   register bits previously used for dbuf slices.  Since the lower bits
   of the mask have moved, we need to update our reads/writes to handle
   this properly.

v2: active pipes is no longer always max 3, add in the ability to go to
4 for PTL.
v3: use intel_display for display_ver check, use INTEL_NUM_PIPES
v4: add a conditional for number of pipes macro vs using 3.
v5: reverse conditional order of v4.
v6: undo v5 and fix num_pipes assignment
v7: pass display struct instead of i915, checkpatch fix

Bspec: 68883, 69125
Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
Signed-off-by: Matt Atwood <matthew.s.atwood@intel.com>
Signed-off-by: Clint Taylor <Clinton.A.Taylor@intel.com>
---
 drivers/gpu/drm/i915/display/intel_pmdemand.c | 73 +++++++++++++------
 drivers/gpu/drm/i915/display/intel_pmdemand.h |  4 +-
 drivers/gpu/drm/i915/i915_reg.h               |  1 +
 3 files changed, 53 insertions(+), 25 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_pmdemand.c b/drivers/gpu/drm/i915/display/intel_pmdemand.c
index ceaf9e3147da..32443ae8e76c 100644
--- a/drivers/gpu/drm/i915/display/intel_pmdemand.c
+++ b/drivers/gpu/drm/i915/display/intel_pmdemand.c
@@ -258,6 +258,7 @@ intel_pmdemand_connector_needs_update(struct intel_atomic_state *state)
 
 static bool intel_pmdemand_needs_update(struct intel_atomic_state *state)
 {
+	struct intel_display *display = to_intel_display(state);
 	const struct intel_bw_state *new_bw_state, *old_bw_state;
 	const struct intel_cdclk_state *new_cdclk_state, *old_cdclk_state;
 	const struct intel_crtc_state *new_crtc_state, *old_crtc_state;
@@ -274,12 +275,16 @@ static bool intel_pmdemand_needs_update(struct intel_atomic_state *state)
 	new_dbuf_state = intel_atomic_get_new_dbuf_state(state);
 	old_dbuf_state = intel_atomic_get_old_dbuf_state(state);
 	if (new_dbuf_state &&
-	    (new_dbuf_state->active_pipes !=
-	     old_dbuf_state->active_pipes ||
-	     new_dbuf_state->enabled_slices !=
-	     old_dbuf_state->enabled_slices))
+	    new_dbuf_state->active_pipes != old_dbuf_state->active_pipes)
 		return true;
 
+	if (DISPLAY_VER(display) < 30) {
+		if (new_dbuf_state &&
+		    new_dbuf_state->enabled_slices !=
+		    old_dbuf_state->enabled_slices)
+			return true;
+	}
+
 	new_cdclk_state = intel_atomic_get_new_cdclk_state(state);
 	old_cdclk_state = intel_atomic_get_old_cdclk_state(state);
 	if (new_cdclk_state &&
@@ -327,10 +332,15 @@ int intel_pmdemand_atomic_check(struct intel_atomic_state *state)
 	if (IS_ERR(new_dbuf_state))
 		return PTR_ERR(new_dbuf_state);
 
-	new_pmdemand_state->params.active_pipes =
-		min_t(u8, hweight8(new_dbuf_state->active_pipes), 3);
-	new_pmdemand_state->params.active_dbufs =
-		min_t(u8, hweight8(new_dbuf_state->enabled_slices), 3);
+	if (DISPLAY_VER(i915) < 30) {
+		new_pmdemand_state->params.active_dbufs =
+			min_t(u8, hweight8(new_dbuf_state->enabled_slices), 3);
+		new_pmdemand_state->params.active_pipes =
+			min_t(u8, hweight8(new_dbuf_state->active_pipes), 3);
+	} else {
+		new_pmdemand_state->params.active_pipes =
+			min_t(u8, hweight8(new_dbuf_state->active_pipes), INTEL_NUM_PIPES(i915));
+	}
 
 	new_cdclk_state = intel_atomic_get_cdclk_state(state);
 	if (IS_ERR(new_cdclk_state))
@@ -395,27 +405,32 @@ intel_pmdemand_init_pmdemand_params(struct drm_i915_private *i915,
 
 	reg2 = intel_de_read(i915, XELPDP_INITIATE_PMDEMAND_REQUEST(1));
 
-	/* Set 1*/
 	pmdemand_state->params.qclk_gv_bw =
 		REG_FIELD_GET(XELPDP_PMDEMAND_QCLK_GV_BW_MASK, reg1);
 	pmdemand_state->params.voltage_index =
 		REG_FIELD_GET(XELPDP_PMDEMAND_VOLTAGE_INDEX_MASK, reg1);
 	pmdemand_state->params.qclk_gv_index =
 		REG_FIELD_GET(XELPDP_PMDEMAND_QCLK_GV_INDEX_MASK, reg1);
-	pmdemand_state->params.active_pipes =
-		REG_FIELD_GET(XELPDP_PMDEMAND_PIPES_MASK, reg1);
-	pmdemand_state->params.active_dbufs =
-		REG_FIELD_GET(XELPDP_PMDEMAND_DBUFS_MASK, reg1);
 	pmdemand_state->params.active_phys =
 		REG_FIELD_GET(XELPDP_PMDEMAND_PHYS_MASK, reg1);
 
-	/* Set 2*/
 	pmdemand_state->params.cdclk_freq_mhz =
 		REG_FIELD_GET(XELPDP_PMDEMAND_CDCLK_FREQ_MASK, reg2);
 	pmdemand_state->params.ddiclk_max =
 		REG_FIELD_GET(XELPDP_PMDEMAND_DDICLK_FREQ_MASK, reg2);
-	pmdemand_state->params.scalers =
-		REG_FIELD_GET(XELPDP_PMDEMAND_SCALERS_MASK, reg2);
+
+	if (DISPLAY_VER(i915) >= 30) {
+		pmdemand_state->params.active_pipes =
+			REG_FIELD_GET(XE3_PMDEMAND_PIPES_MASK, reg1);
+	} else {
+		pmdemand_state->params.active_pipes =
+			REG_FIELD_GET(XELPDP_PMDEMAND_PIPES_MASK, reg1);
+		pmdemand_state->params.active_dbufs =
+			REG_FIELD_GET(XELPDP_PMDEMAND_DBUFS_MASK, reg1);
+
+		pmdemand_state->params.scalers =
+			REG_FIELD_GET(XELPDP_PMDEMAND_SCALERS_MASK, reg2);
+	}
 
 unlock:
 	mutex_unlock(&i915->display.pmdemand.lock);
@@ -442,6 +457,10 @@ void intel_pmdemand_program_dbuf(struct drm_i915_private *i915,
 {
 	u32 dbufs = min_t(u32, hweight8(dbuf_slices), 3);
 
+	/* PM Demand only tracks active dbufs on pre-Xe3 platforms */
+	if (DISPLAY_VER(i915) >= 30)
+		return;
+
 	mutex_lock(&i915->display.pmdemand.lock);
 	if (drm_WARN_ON(&i915->drm,
 			!intel_pmdemand_check_prev_transaction(i915)))
@@ -460,9 +479,10 @@ void intel_pmdemand_program_dbuf(struct drm_i915_private *i915,
 }
 
 static void
-intel_pmdemand_update_params(const struct intel_pmdemand_state *new,
-			     const struct intel_pmdemand_state *old,
-			     u32 *reg1, u32 *reg2, bool serialized)
+intel_pmdemand_update_params(struct intel_display *display,
+				 const struct intel_pmdemand_state *new,
+				 const struct intel_pmdemand_state *old,
+				 u32 *reg1, u32 *reg2, bool serialized)
 {
 	/*
 	 * The pmdemand parameter updates happens in two steps. Pre plane and
@@ -495,16 +515,22 @@ intel_pmdemand_update_params(const struct intel_pmdemand_state *new,
 	update_reg(reg1, qclk_gv_bw, XELPDP_PMDEMAND_QCLK_GV_BW_MASK);
 	update_reg(reg1, voltage_index, XELPDP_PMDEMAND_VOLTAGE_INDEX_MASK);
 	update_reg(reg1, qclk_gv_index, XELPDP_PMDEMAND_QCLK_GV_INDEX_MASK);
-	update_reg(reg1, active_pipes, XELPDP_PMDEMAND_PIPES_MASK);
-	update_reg(reg1, active_dbufs, XELPDP_PMDEMAND_DBUFS_MASK);
 	update_reg(reg1, active_phys, XELPDP_PMDEMAND_PHYS_MASK);
 
 	/* Set 2*/
 	update_reg(reg2, cdclk_freq_mhz, XELPDP_PMDEMAND_CDCLK_FREQ_MASK);
 	update_reg(reg2, ddiclk_max, XELPDP_PMDEMAND_DDICLK_FREQ_MASK);
-	update_reg(reg2, scalers, XELPDP_PMDEMAND_SCALERS_MASK);
 	update_reg(reg2, plls, XELPDP_PMDEMAND_PLLS_MASK);
 
+	if (DISPLAY_VER(display) >= 30) {
+		update_reg(reg1, active_pipes, XE3_PMDEMAND_PIPES_MASK);
+	} else {
+		update_reg(reg1, active_pipes, XELPDP_PMDEMAND_PIPES_MASK);
+		update_reg(reg1, active_dbufs, XELPDP_PMDEMAND_DBUFS_MASK);
+
+		update_reg(reg2, scalers, XELPDP_PMDEMAND_SCALERS_MASK);
+	}
+
 #undef update_reg
 }
 
@@ -514,6 +540,7 @@ intel_pmdemand_program_params(struct drm_i915_private *i915,
 			      const struct intel_pmdemand_state *old,
 			      bool serialized)
 {
+	struct intel_display *display = &i915->display;
 	bool changed = false;
 	u32 reg1, mod_reg1;
 	u32 reg2, mod_reg2;
@@ -529,7 +556,7 @@ intel_pmdemand_program_params(struct drm_i915_private *i915,
 	reg2 = intel_de_read(i915, XELPDP_INITIATE_PMDEMAND_REQUEST(1));
 	mod_reg2 = reg2;
 
-	intel_pmdemand_update_params(new, old, &mod_reg1, &mod_reg2,
+	intel_pmdemand_update_params(display, new, old, &mod_reg1, &mod_reg2,
 				     serialized);
 
 	if (reg1 != mod_reg1) {
diff --git a/drivers/gpu/drm/i915/display/intel_pmdemand.h b/drivers/gpu/drm/i915/display/intel_pmdemand.h
index 128fd61f8f14..a1c49efdc493 100644
--- a/drivers/gpu/drm/i915/display/intel_pmdemand.h
+++ b/drivers/gpu/drm/i915/display/intel_pmdemand.h
@@ -20,14 +20,14 @@ struct pmdemand_params {
 	u8 voltage_index;
 	u8 qclk_gv_index;
 	u8 active_pipes;
-	u8 active_dbufs;
+	u8 active_dbufs;	/* pre-Xe3 only */
 	/* Total number of non type C active phys from active_phys_mask */
 	u8 active_phys;
 	u8 plls;
 	u16 cdclk_freq_mhz;
 	/* max from ddi_clocks[] */
 	u16 ddiclk_max;
-	u8 scalers;
+	u8 scalers;		/* pre-Xe3 only */
 };
 
 struct intel_pmdemand_state {
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 405f409e9761..89e4381f8baa 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -2696,6 +2696,7 @@
 #define  XELPDP_PMDEMAND_QCLK_GV_BW_MASK		REG_GENMASK(31, 16)
 #define  XELPDP_PMDEMAND_VOLTAGE_INDEX_MASK		REG_GENMASK(14, 12)
 #define  XELPDP_PMDEMAND_QCLK_GV_INDEX_MASK		REG_GENMASK(11, 8)
+#define  XE3_PMDEMAND_PIPES_MASK			REG_GENMASK(7, 4)
 #define  XELPDP_PMDEMAND_PIPES_MASK			REG_GENMASK(7, 6)
 #define  XELPDP_PMDEMAND_DBUFS_MASK			REG_GENMASK(5, 4)
 #define  XELPDP_PMDEMAND_PHYS_MASK			REG_GENMASK(2, 0)
-- 
2.25.1


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

* [PATCH v5 02/11] drm/i915/xe3lpd: Disable HDCP Line Rekeying for Xe3
  2024-10-25 20:47 [PATCH v5 00/11] drm/i915/xe3lpd: ptl display patches Clint Taylor
  2024-10-25 20:47 ` [PATCH v5 01/11] drm/i915/xe3lpd: Update pmdemand programming Clint Taylor
@ 2024-10-25 20:47 ` Clint Taylor
  2024-10-25 23:13   ` Matt Roper
  2024-10-25 20:47 ` [PATCH v5 03/11] drm/i915/xe3lpd: Add check to see if edp over type c is allowed Clint Taylor
                   ` (11 subsequent siblings)
  13 siblings, 1 reply; 23+ messages in thread
From: Clint Taylor @ 2024-10-25 20:47 UTC (permalink / raw)
  To: intel-gfx, intel-xe

From: Suraj Kandpal <suraj.kandpal@intel.com>

We need to disable HDCP Line Rekeying for Xe3 when we are using an HDMI
encoder. Also remove the Wa comment tag as this follows the bspec and
does not implement the wa.

v2: add additional definition instead of function, commit message typo
fix and update.
v3: restore lost conditional from v2.
v4: subject line and subject message updated, fix the if ladder order,
fix the bit definition order.
v5: Add the bspec link and remove the Wa comment tag

Bspec: 68933
Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>
Signed-off-by: Matt Atwood <matthew.s.atwood@intel.com>
Signed-off-by: Clint Taylor <Clinton.A.Taylor@intel.com>
Signed-off-by: Clint Taylor <clinton.a.taylor@intel.com>
---
 drivers/gpu/drm/i915/display/intel_hdcp.c | 11 +++++++----
 drivers/gpu/drm/i915/i915_reg.h           |  1 +
 2 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_hdcp.c b/drivers/gpu/drm/i915/display/intel_hdcp.c
index ed6aa87403e2..7a32bfef8d87 100644
--- a/drivers/gpu/drm/i915/display/intel_hdcp.c
+++ b/drivers/gpu/drm/i915/display/intel_hdcp.c
@@ -31,7 +31,6 @@
 #define KEY_LOAD_TRIES	5
 #define HDCP2_LC_RETRY_CNT			3
 
-/* WA: 16022217614 */
 static void
 intel_hdcp_disable_hdcp_line_rekeying(struct intel_encoder *encoder,
 				      struct intel_hdcp *hdcp)
@@ -43,14 +42,18 @@ intel_hdcp_disable_hdcp_line_rekeying(struct intel_encoder *encoder,
 		return;
 
 	if (DISPLAY_VER(display) >= 14) {
-		if (IS_DISPLAY_VER_STEP(display, IP_VER(14, 0), STEP_D0, STEP_FOREVER))
-			intel_de_rmw(display, MTL_CHICKEN_TRANS(hdcp->cpu_transcoder),
-				     0, HDCP_LINE_REKEY_DISABLE);
+		if (DISPLAY_VER(display) >= 30)
+			intel_de_rmw(display,
+				     TRANS_DDI_FUNC_CTL(display, hdcp->cpu_transcoder),
+				     0, XE3_TRANS_DDI_HDCP_LINE_REKEY_DISABLE);
 		else if (IS_DISPLAY_VER_STEP(display, IP_VER(14, 1), STEP_B0, STEP_FOREVER) ||
 			 IS_DISPLAY_VER_STEP(display, IP_VER(20, 0), STEP_B0, STEP_FOREVER))
 			intel_de_rmw(display,
 				     TRANS_DDI_FUNC_CTL(display, hdcp->cpu_transcoder),
 				     0, TRANS_DDI_HDCP_LINE_REKEY_DISABLE);
+		else if (IS_DISPLAY_VER_STEP(display, IP_VER(14, 0), STEP_D0, STEP_FOREVER))
+			intel_de_rmw(display, MTL_CHICKEN_TRANS(hdcp->cpu_transcoder),
+				     0, HDCP_LINE_REKEY_DISABLE);
 	}
 }
 
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 89e4381f8baa..8d758947f301 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -3817,6 +3817,7 @@ enum skl_power_gate {
 #define  TRANS_DDI_PVSYNC		(1 << 17)
 #define  TRANS_DDI_PHSYNC		(1 << 16)
 #define  TRANS_DDI_PORT_SYNC_ENABLE	REG_BIT(15)
+#define  XE3_TRANS_DDI_HDCP_LINE_REKEY_DISABLE	REG_BIT(15)
 #define  TRANS_DDI_EDP_INPUT_MASK	(7 << 12)
 #define  TRANS_DDI_EDP_INPUT_A_ON	(0 << 12)
 #define  TRANS_DDI_EDP_INPUT_A_ONOFF	(4 << 12)
-- 
2.25.1


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

* [PATCH v5 03/11] drm/i915/xe3lpd: Add check to see if edp over type c is allowed
  2024-10-25 20:47 [PATCH v5 00/11] drm/i915/xe3lpd: ptl display patches Clint Taylor
  2024-10-25 20:47 ` [PATCH v5 01/11] drm/i915/xe3lpd: Update pmdemand programming Clint Taylor
  2024-10-25 20:47 ` [PATCH v5 02/11] drm/i915/xe3lpd: Disable HDCP Line Rekeying for Xe3 Clint Taylor
@ 2024-10-25 20:47 ` Clint Taylor
  2024-10-25 20:47 ` [PATCH v5 04/11] drm/i915/ptl: Define IS_PANTHERLAKE macro Clint Taylor
                   ` (10 subsequent siblings)
  13 siblings, 0 replies; 23+ messages in thread
From: Clint Taylor @ 2024-10-25 20:47 UTC (permalink / raw)
  To: intel-gfx, intel-xe

From: Suraj Kandpal <suraj.kandpal@intel.com>

Read PICA register to see if edp over type C is possible and then
add the appropriate tables for it.

--v2
-remove bool from intel_encoder have it in runtime_info [Jani]
-initialize the bool in runtime_info init [Jani]
-dont abbreviate the bool [Jani]

--v3
-Remove useless display version check [Jani]
-change the warn on condition [Jani]
-no need for a different function for edp type c check [Jani]
-dont add register in i915_reg [Jani]

Bspec: 68846
Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>
Signed-off-by: Matt Atwood <matthew.s.atwood@intel.com>
Signed-off-by: Clint Taylor <clinton.a.taylor@intel.com>
---
 drivers/gpu/drm/i915/display/intel_cx0_phy.c        | 3 +++
 drivers/gpu/drm/i915/display/intel_cx0_phy_regs.h   | 3 +++
 drivers/gpu/drm/i915/display/intel_display_device.c | 5 +++++
 drivers/gpu/drm/i915/display/intel_display_device.h | 1 +
 drivers/gpu/drm/i915/display/intel_dp.c             | 7 ++++---
 5 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_cx0_phy.c b/drivers/gpu/drm/i915/display/intel_cx0_phy.c
index 8bd5a4d1b735..d05daa7a2b03 100644
--- a/drivers/gpu/drm/i915/display/intel_cx0_phy.c
+++ b/drivers/gpu/drm/i915/display/intel_cx0_phy.c
@@ -2257,9 +2257,12 @@ intel_c20_pll_tables_get(struct intel_crtc_state *crtc_state,
 			 struct intel_encoder *encoder)
 {
 	struct drm_i915_private *i915 = to_i915(encoder->base.dev);
+	struct intel_display *display = to_intel_display(crtc_state);
 
 	if (intel_crtc_has_dp_encoder(crtc_state)) {
 		if (intel_crtc_has_type(crtc_state, INTEL_OUTPUT_EDP)) {
+			if (DISPLAY_RUNTIME_INFO(display)->edp_typec_support)
+				return xe3lpd_c20_dp_edp_tables;
 			if (DISPLAY_VER_FULL(i915) == IP_VER(14, 1))
 				return xe2hpd_c20_edp_tables;
 		}
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 ab3ae110b68f..e8ebb12155a4 100644
--- a/drivers/gpu/drm/i915/display/intel_cx0_phy_regs.h
+++ b/drivers/gpu/drm/i915/display/intel_cx0_phy_regs.h
@@ -363,4 +363,7 @@
 #define HDMI_DIV_MASK		REG_GENMASK16(2, 0)
 #define HDMI_DIV(val)		REG_FIELD_PREP16(HDMI_DIV_MASK, val)
 
+#define PICA_PHY_CONFIG_CONTROL		_MMIO(0x16FE68)
+#define   EDP_ON_TYPEC			REG_BIT(31)
+
 #endif /* __INTEL_CX0_REG_DEFS_H__ */
diff --git a/drivers/gpu/drm/i915/display/intel_display_device.c b/drivers/gpu/drm/i915/display/intel_display_device.c
index aa22189e3853..949838308ec9 100644
--- a/drivers/gpu/drm/i915/display/intel_display_device.c
+++ b/drivers/gpu/drm/i915/display/intel_display_device.c
@@ -9,6 +9,7 @@
 
 #include "i915_drv.h"
 #include "i915_reg.h"
+#include "intel_cx0_phy_regs.h"
 #include "intel_de.h"
 #include "intel_display.h"
 #include "intel_display_device.h"
@@ -1685,6 +1686,10 @@ static void __intel_display_device_info_runtime_init(struct drm_i915_private *i9
 		}
 	}
 
+	if (DISPLAY_VER(i915) >= 30)
+		display_runtime->edp_typec_support =
+			intel_de_read(display, PICA_PHY_CONFIG_CONTROL) & EDP_ON_TYPEC;
+
 	display_runtime->rawclk_freq = intel_read_rawclk(display);
 	drm_dbg_kms(&i915->drm, "rawclk rate: %d kHz\n", display_runtime->rawclk_freq);
 
diff --git a/drivers/gpu/drm/i915/display/intel_display_device.h b/drivers/gpu/drm/i915/display/intel_display_device.h
index 071a36b51f79..410f8b33a8a1 100644
--- a/drivers/gpu/drm/i915/display/intel_display_device.h
+++ b/drivers/gpu/drm/i915/display/intel_display_device.h
@@ -232,6 +232,7 @@ struct intel_display_runtime_info {
 	bool has_hdcp;
 	bool has_dmc;
 	bool has_dsc;
+	bool edp_typec_support;
 };
 
 struct intel_display_device_info {
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 7e29619ba040..9f015b530289 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -6441,10 +6441,11 @@ intel_dp_init_connector(struct intel_digital_port *dig_port,
 
 	if (_intel_dp_is_port_edp(dev_priv, intel_encoder->devdata, port)) {
 		/*
-		 * Currently we don't support eDP on TypeC ports, although in
-		 * theory it could work on TypeC legacy ports.
+		 * Currently we don't support eDP on TypeC ports for DISPLAY_VER < 30,
+		 * although in theory it could work on TypeC legacy ports.
 		 */
-		drm_WARN_ON(dev, intel_encoder_is_tc(intel_encoder));
+		drm_WARN_ON(dev, intel_encoder_is_tc(intel_encoder) &&
+			    DISPLAY_VER(dev_priv) < 30);
 		type = DRM_MODE_CONNECTOR_eDP;
 		intel_encoder->type = INTEL_OUTPUT_EDP;
 
-- 
2.25.1


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

* [PATCH v5 04/11] drm/i915/ptl: Define IS_PANTHERLAKE macro
  2024-10-25 20:47 [PATCH v5 00/11] drm/i915/xe3lpd: ptl display patches Clint Taylor
                   ` (2 preceding siblings ...)
  2024-10-25 20:47 ` [PATCH v5 03/11] drm/i915/xe3lpd: Add check to see if edp over type c is allowed Clint Taylor
@ 2024-10-25 20:47 ` Clint Taylor
  2024-10-25 20:47 ` [PATCH v5 05/11] drm/i915/cx0: Extend C10 check to PTL Clint Taylor
                   ` (9 subsequent siblings)
  13 siblings, 0 replies; 23+ messages in thread
From: Clint Taylor @ 2024-10-25 20:47 UTC (permalink / raw)
  To: intel-gfx, intel-xe

From: Dnyaneshwar Bhadane <dnyaneshwar.bhadane@intel.com>

Common display code requires IS_PANTHERLAKE macro.
Define the macro and set 0 as PTL is no longer support for i915.

Signed-off-by: Dnyaneshwar Bhadane <dnyaneshwar.bhadane@intel.com>
Signed-off-by: Matt Atwood <matthew.s.atwood@intel.com>
Signed-off-by: Clint Taylor <Clinton.A.Taylor@intel.com>
Reviewed-by: Matt Roper <matthew.d.roper@intel.com>
---
 drivers/gpu/drm/i915/i915_drv.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index de73b348b8cf..0f19cbd36829 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -536,6 +536,7 @@ IS_SUBPLATFORM(const struct drm_i915_private *i915,
  */
 #define IS_LUNARLAKE(i915) (0 && i915)
 #define IS_BATTLEMAGE(i915)  (0 && i915)
+#define IS_PANTHERLAKE(i915) (0 && i915)
 
 #define IS_ARROWLAKE(i915) \
 	IS_SUBPLATFORM(i915, INTEL_METEORLAKE, INTEL_SUBPLATFORM_ARL)
-- 
2.25.1


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

* [PATCH v5 05/11] drm/i915/cx0: Extend C10 check to PTL
  2024-10-25 20:47 [PATCH v5 00/11] drm/i915/xe3lpd: ptl display patches Clint Taylor
                   ` (3 preceding siblings ...)
  2024-10-25 20:47 ` [PATCH v5 04/11] drm/i915/ptl: Define IS_PANTHERLAKE macro Clint Taylor
@ 2024-10-25 20:47 ` Clint Taylor
  2024-10-25 20:47 ` [PATCH v5 06/11] drm/i915/cx0: Remove bus reset after every c10 transaction Clint Taylor
                   ` (8 subsequent siblings)
  13 siblings, 0 replies; 23+ messages in thread
From: Clint Taylor @ 2024-10-25 20:47 UTC (permalink / raw)
  To: intel-gfx, intel-xe

From: Dnyaneshwar Bhadane <dnyaneshwar.bhadane@intel.com>

When deciding the type of the phy, add PTL support to make
sure the correct path is taken for selection of C10 PHY.
Only port A is connected C10 PHY for Pantherlake.

Bspec:  72571
Signed-off-by: Dnyaneshwar Bhadane <dnyaneshwar.bhadane@intel.com>
Signed-off-by: Matt Atwood <matthew.s.atwood@intel.com>
Signed-off-by: Clint Taylor <Clinton.A.Taylor@intel.com>
Reviewed-by: Gustavo Sousa <gustavo.sousa@intel.com>
---
 drivers/gpu/drm/i915/display/intel_cx0_phy.c      | 3 +++
 drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h | 1 +
 2 files changed, 4 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_cx0_phy.c b/drivers/gpu/drm/i915/display/intel_cx0_phy.c
index d05daa7a2b03..4d6e1c135bdc 100644
--- a/drivers/gpu/drm/i915/display/intel_cx0_phy.c
+++ b/drivers/gpu/drm/i915/display/intel_cx0_phy.c
@@ -34,6 +34,9 @@ bool intel_encoder_is_c10phy(struct intel_encoder *encoder)
 	struct drm_i915_private *i915 = to_i915(encoder->base.dev);
 	enum phy phy = intel_encoder_to_phy(encoder);
 
+	if (IS_PANTHERLAKE(i915) && phy == PHY_A)
+		return true;
+
 	if ((IS_LUNARLAKE(i915) || IS_METEORLAKE(i915)) && phy < PHY_C)
 		return true;
 
diff --git a/drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h b/drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h
index b7041b578e5e..bd8c3de57dcd 100644
--- a/drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h
+++ b/drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h
@@ -67,6 +67,7 @@ static inline struct drm_i915_private *to_i915(const struct drm_device *dev)
 #define IS_METEORLAKE(dev_priv) IS_PLATFORM(dev_priv, XE_METEORLAKE)
 #define IS_LUNARLAKE(dev_priv) IS_PLATFORM(dev_priv, XE_LUNARLAKE)
 #define IS_BATTLEMAGE(dev_priv)  IS_PLATFORM(dev_priv, XE_BATTLEMAGE)
+#define IS_PANTHERLAKE(dev_priv) IS_PLATFORM(dev_priv, XE_PANTHERLAKE)
 
 #define IS_HASWELL_ULT(dev_priv) (dev_priv && 0)
 #define IS_BROADWELL_ULT(dev_priv) (dev_priv && 0)
-- 
2.25.1


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

* [PATCH v5 06/11] drm/i915/cx0: Remove bus reset after every c10 transaction
  2024-10-25 20:47 [PATCH v5 00/11] drm/i915/xe3lpd: ptl display patches Clint Taylor
                   ` (4 preceding siblings ...)
  2024-10-25 20:47 ` [PATCH v5 05/11] drm/i915/cx0: Extend C10 check to PTL Clint Taylor
@ 2024-10-25 20:47 ` Clint Taylor
  2024-10-28 16:30   ` Gustavo Sousa
  2024-10-25 20:47 ` [PATCH v5 07/11] drm/i915/xe3lpd: Move async flip bit to PLANE_SURF register Clint Taylor
                   ` (7 subsequent siblings)
  13 siblings, 1 reply; 23+ messages in thread
From: Clint Taylor @ 2024-10-25 20:47 UTC (permalink / raw)
  To: intel-gfx, intel-xe

C10 phy timeouts occur on xe3lpd if the c10 bus is reset every
transaction. Starting with xe3lpd this is bus reset not necessary

Signed-off-by: Clint Taylor <clinton.a.taylor@intel.com>
---
 drivers/gpu/drm/i915/display/intel_cx0_phy.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_cx0_phy.c b/drivers/gpu/drm/i915/display/intel_cx0_phy.c
index 4d6e1c135bdc..c6e0cbff5201 100644
--- a/drivers/gpu/drm/i915/display/intel_cx0_phy.c
+++ b/drivers/gpu/drm/i915/display/intel_cx0_phy.c
@@ -224,7 +224,8 @@ static int __intel_cx0_read_once(struct intel_encoder *encoder,
 	 * down and let the message bus to end up
 	 * in a known state
 	 */
-	intel_cx0_bus_reset(encoder, lane);
+	if (DISPLAY_VER(i915) < 30)
+		intel_cx0_bus_reset(encoder, lane);
 
 	return REG_FIELD_GET(XELPDP_PORT_P2M_DATA_MASK, val);
 }
@@ -313,7 +314,8 @@ static int __intel_cx0_write_once(struct intel_encoder *encoder,
 	 * down and let the message bus to end up
 	 * in a known state
 	 */
-	intel_cx0_bus_reset(encoder, lane);
+	if (DISPLAY_VER(i915) < 30)
+		intel_cx0_bus_reset(encoder, lane);
 
 	return 0;
 }
-- 
2.25.1


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

* [PATCH v5 07/11] drm/i915/xe3lpd: Move async flip bit to PLANE_SURF register
  2024-10-25 20:47 [PATCH v5 00/11] drm/i915/xe3lpd: ptl display patches Clint Taylor
                   ` (5 preceding siblings ...)
  2024-10-25 20:47 ` [PATCH v5 06/11] drm/i915/cx0: Remove bus reset after every c10 transaction Clint Taylor
@ 2024-10-25 20:47 ` Clint Taylor
  2024-10-25 20:47 ` [PATCH v5 08/11] drm/i915/xe3: Underrun recovery does not exist post Xe2 Clint Taylor
                   ` (6 subsequent siblings)
  13 siblings, 0 replies; 23+ messages in thread
From: Clint Taylor @ 2024-10-25 20:47 UTC (permalink / raw)
  To: intel-gfx, intel-xe

From: Dnyaneshwar Bhadane <dnyaneshwar.bhadane@intel.com>

The async flip moved from PLANE_CTL to PLANE_SURF for Xe3_LPD.

Bspec: 69853,69878
Signed-off-by: Dnyaneshwar Bhadane <dnyaneshwar.bhadane@intel.com>
Signed-off-by: Matt Atwood <matthew.s.atwood@intel.com>
Signed-off-by: Clint Taylor <Clinton.A.Taylor@intel.com>
Reviewed-by: Shekhar Chauhan <shekhar.chauhan@intel.com>
---
 drivers/gpu/drm/i915/display/skl_universal_plane.c  | 13 +++++++++----
 .../gpu/drm/i915/display/skl_universal_plane_regs.h |  1 +
 2 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/skl_universal_plane.c b/drivers/gpu/drm/i915/display/skl_universal_plane.c
index a0a7ed01415a..60ca4f8c4a3c 100644
--- a/drivers/gpu/drm/i915/display/skl_universal_plane.c
+++ b/drivers/gpu/drm/i915/display/skl_universal_plane.c
@@ -1567,17 +1567,22 @@ skl_plane_async_flip(struct intel_dsb *dsb,
 	struct intel_display *display = to_intel_display(plane->base.dev);
 	enum plane_id plane_id = plane->id;
 	enum pipe pipe = plane->pipe;
-	u32 plane_ctl = plane_state->ctl;
+	u32 plane_ctl = plane_state->ctl, plane_surf;
 
 	plane_ctl |= skl_plane_ctl_crtc(crtc_state);
+	plane_surf = skl_plane_surf(plane_state, 0);
 
-	if (async_flip)
-		plane_ctl |= PLANE_CTL_ASYNC_FLIP;
+	if (async_flip) {
+		if (DISPLAY_VER(display) >= 30)
+			plane_surf |= PLANE_SURF_ASYNC_UPDATE;
+		else
+			plane_ctl |= PLANE_CTL_ASYNC_FLIP;
+	}
 
 	intel_de_write_dsb(display, dsb, PLANE_CTL(pipe, plane_id),
 			   plane_ctl);
 	intel_de_write_dsb(display, dsb, PLANE_SURF(pipe, plane_id),
-			   skl_plane_surf(plane_state, 0));
+			   plane_surf);
 }
 
 static bool intel_format_is_p01x(u32 format)
diff --git a/drivers/gpu/drm/i915/display/skl_universal_plane_regs.h b/drivers/gpu/drm/i915/display/skl_universal_plane_regs.h
index 4ddcd7d46bbd..ff31a00d511e 100644
--- a/drivers/gpu/drm/i915/display/skl_universal_plane_regs.h
+++ b/drivers/gpu/drm/i915/display/skl_universal_plane_regs.h
@@ -159,6 +159,7 @@
 							_PLANE_SURF_2_A, _PLANE_SURF_2_B)
 #define   PLANE_SURF_ADDR_MASK			REG_GENMASK(31, 12)
 #define   PLANE_SURF_DECRYPT			REG_BIT(2)
+#define   PLANE_SURF_ASYNC_UPDATE		REG_BIT(0)
 
 #define _PLANE_KEYMAX_1_A			0x701a0
 #define _PLANE_KEYMAX_2_A			0x702a0
-- 
2.25.1


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

* [PATCH v5 08/11] drm/i915/xe3: Underrun recovery does not exist post Xe2
  2024-10-25 20:47 [PATCH v5 00/11] drm/i915/xe3lpd: ptl display patches Clint Taylor
                   ` (6 preceding siblings ...)
  2024-10-25 20:47 ` [PATCH v5 07/11] drm/i915/xe3lpd: Move async flip bit to PLANE_SURF register Clint Taylor
@ 2024-10-25 20:47 ` Clint Taylor
  2024-10-25 20:47 ` [PATCH v5 09/11] drm/i915/display/xe3: disable x-tiled framebuffers Clint Taylor
                   ` (5 subsequent siblings)
  13 siblings, 0 replies; 23+ messages in thread
From: Clint Taylor @ 2024-10-25 20:47 UTC (permalink / raw)
  To: intel-gfx, intel-xe

From: Ravi Kumar Vodapalli <ravi.kumar.vodapalli@intel.com>

From platforms xe3 Underrun recovery does not exist

v2: improve DISPLAY_VER checking

BSpec: 68849
Signed-off-by: Ravi Kumar Vodapalli <ravi.kumar.vodapalli@intel.com>
Signed-off-by: Matt Atwood <matthew.s.atwood@intel.com>
Signed-off-by: Clint Taylor <Clinton.A.Taylor@intel.com>
Reviewed-by: Sai Teja Pottumuttu <sai.teja.pottumuttu@intel.com>
---
 drivers/gpu/drm/i915/display/intel_display.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index ef1436146325..c904f529d0c5 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -861,7 +861,7 @@ static void icl_set_pipe_chicken(const struct intel_crtc_state *crtc_state)
 	 */
 	if (IS_DG2(dev_priv))
 		tmp &= ~UNDERRUN_RECOVERY_ENABLE_DG2;
-	else if (DISPLAY_VER(dev_priv) >= 13)
+	else if ((DISPLAY_VER(dev_priv) >= 13) && (DISPLAY_VER(dev_priv) < 30))
 		tmp |= UNDERRUN_RECOVERY_DISABLE_ADLP;
 
 	/* Wa_14010547955:dg2 */
-- 
2.25.1


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

* [PATCH v5 09/11] drm/i915/display/xe3: disable x-tiled framebuffers
  2024-10-25 20:47 [PATCH v5 00/11] drm/i915/xe3lpd: ptl display patches Clint Taylor
                   ` (7 preceding siblings ...)
  2024-10-25 20:47 ` [PATCH v5 08/11] drm/i915/xe3: Underrun recovery does not exist post Xe2 Clint Taylor
@ 2024-10-25 20:47 ` Clint Taylor
  2024-10-25 20:47 ` [PATCH v5 10/11] drm/i915/xe3lpd: Power request asserting/deasserting Clint Taylor
                   ` (4 subsequent siblings)
  13 siblings, 0 replies; 23+ messages in thread
From: Clint Taylor @ 2024-10-25 20:47 UTC (permalink / raw)
  To: intel-gfx, intel-xe

From: "Heikkila, Juha-pekka" <juha-pekka.heikkila@intel.com>

Xe3 has no more support for x-tile on display.

v2: Include up to display 29 for X-tiled support. (Gustavo)

Signed-off-by: Heikkila, Juha-pekka <juha-pekka.heikkila@intel.com>
Signed-off-by: Matt Atwood <matthew.s.atwood@intel.com>
Signed-off-by: Clint Taylor <Clinton.A.Taylor@intel.com>
Reviewed-by: Gustavo Sousa <gustavo.sousa@intel.com>
---
 drivers/gpu/drm/i915/display/intel_fb.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_fb.c b/drivers/gpu/drm/i915/display/intel_fb.c
index a7b4cf8b6d50..6a7060889f40 100644
--- a/drivers/gpu/drm/i915/display/intel_fb.c
+++ b/drivers/gpu/drm/i915/display/intel_fb.c
@@ -349,7 +349,7 @@ static const struct intel_modifier_desc intel_modifiers[] = {
 		.plane_caps = INTEL_PLANE_CAP_TILING_Y,
 	}, {
 		.modifier = I915_FORMAT_MOD_X_TILED,
-		.display_ver = DISPLAY_VER_ALL,
+		.display_ver = { 0, 29 },
 		.plane_caps = INTEL_PLANE_CAP_TILING_X,
 	}, {
 		.modifier = DRM_FORMAT_MOD_LINEAR,
-- 
2.25.1


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

* [PATCH v5 10/11] drm/i915/xe3lpd: Power request asserting/deasserting
  2024-10-25 20:47 [PATCH v5 00/11] drm/i915/xe3lpd: ptl display patches Clint Taylor
                   ` (8 preceding siblings ...)
  2024-10-25 20:47 ` [PATCH v5 09/11] drm/i915/display/xe3: disable x-tiled framebuffers Clint Taylor
@ 2024-10-25 20:47 ` Clint Taylor
  2024-10-28 16:39   ` Gustavo Sousa
  2024-10-25 20:47 ` [PATCH v5 11/11] drm/xe/ptl: Enable PTL display Clint Taylor
                   ` (3 subsequent siblings)
  13 siblings, 1 reply; 23+ messages in thread
From: Clint Taylor @ 2024-10-25 20:47 UTC (permalink / raw)
  To: intel-gfx, intel-xe

From: Mika Kahola <mika.kahola@intel.com>

There is a HW issue that arises when there are race conditions
between TCSS entering/exiting TC7 or TC10 states while the
driver is asserting/deasserting TCSS power request. As a
workaround, Display driver will implement a mailbox sequence
to ensure that the TCSS is in TC0 when TCSS power request is
asserted/deasserted.

The sequence is the following

1. Read mailbox command status and wait until run/busy bit is
   clear
2. Write mailbox data value '1' for power request asserting
   and '0' for power request deasserting
3. Write mailbox command run/busy bit and command value with 0x1
4. Read mailbox command and wait until run/busy bit is clear
   before continuing power request.

Signed-off-by: Mika Kahola <mika.kahola@intel.com>
Signed-off-by: Matt Atwood <matthew.s.atwood@intel.com>
Signed-off-by: Clint Taylor <Clinton.A.Taylor@intel.com>
---
 drivers/gpu/drm/i915/display/intel_tc.c | 40 +++++++++++++++++++++++++
 drivers/gpu/drm/i915/i915_reg.h         |  7 +++++
 2 files changed, 47 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_tc.c b/drivers/gpu/drm/i915/display/intel_tc.c
index 6f2ee7dbc43b..7d9f87db381c 100644
--- a/drivers/gpu/drm/i915/display/intel_tc.c
+++ b/drivers/gpu/drm/i915/display/intel_tc.c
@@ -1013,6 +1013,39 @@ xelpdp_tc_phy_wait_for_tcss_power(struct intel_tc_port *tc, bool enabled)
 	return true;
 }
 
+static bool xelpdp_tc_phy_wait_for_tcss_ready(struct drm_i915_private *i915,
+					      bool enable)
+{
+	if (DISPLAY_VER(i915) < 30)
+		return true;
+
+	/* check if mailbox is running busy */
+	if (intel_de_wait_for_clear(i915, TCSS_DISP_MAILBOX_IN_CMD,
+				    TCSS_DISP_MAILBOX_IN_CMD_RUN_BUSY, 10)) {
+		drm_dbg_kms(&i915->drm,
+			    "timeout waiting for TCSS mailbox run/busy bit to clear\n");
+		return false;
+	}
+
+	if (enable)
+		intel_de_write(i915, TCSS_DISP_MAILBOX_IN_DATA, 1);
+	else
+		intel_de_write(i915, TCSS_DISP_MAILBOX_IN_DATA, 0);
+
+	intel_de_write(i915, TCSS_DISP_MAILBOX_IN_CMD,
+		       TCSS_DISP_MAILBOX_IN_CMD_DATA(1));
+
+	/* wait to clear mailbox running busy bit before continuing */
+	if (intel_de_wait_for_clear(i915, TCSS_DISP_MAILBOX_IN_CMD,
+				    TCSS_DISP_MAILBOX_IN_CMD_RUN_BUSY, 10)) {
+		drm_dbg_kms(&i915->drm,
+			    "timeout waiting for TCSS mailbox run/busy bit to clear\n");
+		return false;
+	}
+
+	return true;
+}
+
 static void __xelpdp_tc_phy_enable_tcss_power(struct intel_tc_port *tc, bool enable)
 {
 	struct drm_i915_private *i915 = tc_to_i915(tc);
@@ -1022,6 +1055,13 @@ static void __xelpdp_tc_phy_enable_tcss_power(struct intel_tc_port *tc, bool ena
 
 	assert_tc_cold_blocked(tc);
 
+	/*
+	 * Gfx driver workaround for PTL tcss_rxdetect_clkswb_req/ack handshake
+	 * violation when pwwreq= 0->1 during TC7/10 entry
+	 */
+	drm_WARN_ON(&i915->drm,
+		    !xelpdp_tc_phy_wait_for_tcss_ready(i915, enable));
+
 	val = intel_de_read(i915, reg);
 	if (enable)
 		val |= XELPDP_TCSS_POWER_REQUEST;
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 8d758947f301..452325c7f427 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -4539,6 +4539,13 @@ enum skl_power_gate {
 #define  TCSS_DDI_STATUS_HPD_LIVE_STATUS_TBT	REG_BIT(1)
 #define  TCSS_DDI_STATUS_HPD_LIVE_STATUS_ALT	REG_BIT(0)
 
+#define TCSS_DISP_MAILBOX_IN_CMD		_MMIO(0x161300)
+#define   TCSS_DISP_MAILBOX_IN_CMD_RUN_BUSY	REG_BIT(31)
+#define   TCSS_DISP_MAILBOX_IN_CMD_CMD_MASK	REG_GENMASK(7, 0)
+#define   TCSS_DISP_MAILBOX_IN_CMD_DATA(x)	TCSS_DISP_MAILBOX_IN_CMD_RUN_BUSY | \
+						REG_FIELD_PREP(TCSS_DISP_MAILBOX_IN_CMD_CMD_MASK, (x))
+#define TCSS_DISP_MAILBOX_IN_DATA		_MMIO(0x161304)
+
 #define PRIMARY_SPI_TRIGGER			_MMIO(0x102040)
 #define PRIMARY_SPI_ADDRESS			_MMIO(0x102080)
 #define PRIMARY_SPI_REGIONID			_MMIO(0x102084)
-- 
2.25.1


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

* [PATCH v5 11/11] drm/xe/ptl: Enable PTL display
  2024-10-25 20:47 [PATCH v5 00/11] drm/i915/xe3lpd: ptl display patches Clint Taylor
                   ` (9 preceding siblings ...)
  2024-10-25 20:47 ` [PATCH v5 10/11] drm/i915/xe3lpd: Power request asserting/deasserting Clint Taylor
@ 2024-10-25 20:47 ` Clint Taylor
  2024-10-28 18:45   ` Saarinen, Jani
                     ` (2 more replies)
  2024-10-25 21:36 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915/xe3lpd: ptl display patches (rev5) Patchwork
                   ` (2 subsequent siblings)
  13 siblings, 3 replies; 23+ messages in thread
From: Clint Taylor @ 2024-10-25 20:47 UTC (permalink / raw)
  To: intel-gfx, intel-xe

From: Haridhar Kalvala <haridhar.kalvala@intel.com>

Signed-off-by: Haridhar Kalvala <haridhar.kalvala@intel.com>
Signed-off-by: Clint Taylor <Clinton.A.Taylor@intel.com>
---
 drivers/gpu/drm/xe/xe_pci.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/xe/xe_pci.c b/drivers/gpu/drm/xe/xe_pci.c
index 4085bb3b6550..6f73a243c24c 100644
--- a/drivers/gpu/drm/xe/xe_pci.c
+++ b/drivers/gpu/drm/xe/xe_pci.c
@@ -352,7 +352,7 @@ static const struct xe_device_desc bmg_desc = {
 
 static const struct xe_device_desc ptl_desc = {
 	PLATFORM(PANTHERLAKE),
-	.has_display = false,
+	.has_display = true,
 	.require_force_probe = true,
 };
 
-- 
2.25.1


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

* ✗ Fi.CI.CHECKPATCH: warning for drm/i915/xe3lpd: ptl display patches (rev5)
  2024-10-25 20:47 [PATCH v5 00/11] drm/i915/xe3lpd: ptl display patches Clint Taylor
                   ` (10 preceding siblings ...)
  2024-10-25 20:47 ` [PATCH v5 11/11] drm/xe/ptl: Enable PTL display Clint Taylor
@ 2024-10-25 21:36 ` Patchwork
  2024-10-25 21:36 ` ✗ Fi.CI.SPARSE: " Patchwork
  2024-10-25 21:36 ` ✓ Fi.CI.BAT: success " Patchwork
  13 siblings, 0 replies; 23+ messages in thread
From: Patchwork @ 2024-10-25 21:36 UTC (permalink / raw)
  To: Matt Atwood; +Cc: intel-gfx

== Series Details ==

Series: drm/i915/xe3lpd: ptl display patches (rev5)
URL   : https://patchwork.freedesktop.org/series/140196/
State : warning

== Summary ==

Error: dim checkpatch failed
a6718297a14a drm/i915/xe3lpd: Update pmdemand programming
-:145: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#145: FILE: drivers/gpu/drm/i915/display/intel_pmdemand.c:483:
+intel_pmdemand_update_params(struct intel_display *display,
+				 const struct intel_pmdemand_state *new,

total: 0 errors, 0 warnings, 1 checks, 172 lines checked
6acfa68aa4bb drm/i915/xe3lpd: Disable HDCP Line Rekeying for Xe3
-:21: WARNING:BAD_SIGN_OFF: Duplicate signature
#21: 
Signed-off-by: Clint Taylor <clinton.a.taylor@intel.com>

total: 0 errors, 1 warnings, 0 checks, 35 lines checked
931c1f3ae979 drm/i915/xe3lpd: Add check to see if edp over type c is allowed
4ec527502c70 drm/i915/ptl: Define IS_PANTHERLAKE macro
-:22: CHECK:MACRO_ARG_PRECEDENCE: Macro argument 'i915' may be better as '(i915)' to avoid precedence issues
#22: FILE: drivers/gpu/drm/i915/i915_drv.h:539:
+#define IS_PANTHERLAKE(i915) (0 && i915)

total: 0 errors, 0 warnings, 1 checks, 7 lines checked
3f89723fea91 drm/i915/cx0: Extend C10 check to PTL
608d3ff0d53b drm/i915/cx0: Remove bus reset after every c10 transaction
e7c3282b5f6b drm/i915/xe3lpd: Move async flip bit to PLANE_SURF register
b7514b241f31 drm/i915/xe3: Underrun recovery does not exist post Xe2
e7997b2fec7f drm/i915/display/xe3: disable x-tiled framebuffers
0501e65da334 drm/i915/xe3lpd: Power request asserting/deasserting
-:96: ERROR:COMPLEX_MACRO: Macros with complex values should be enclosed in parentheses
#96: FILE: drivers/gpu/drm/i915/i915_reg.h:4545:
+#define   TCSS_DISP_MAILBOX_IN_CMD_DATA(x)	TCSS_DISP_MAILBOX_IN_CMD_RUN_BUSY | \
+						REG_FIELD_PREP(TCSS_DISP_MAILBOX_IN_CMD_CMD_MASK, (x))

-:97: WARNING:LONG_LINE: line length of 102 exceeds 100 columns
#97: FILE: drivers/gpu/drm/i915/i915_reg.h:4546:
+						REG_FIELD_PREP(TCSS_DISP_MAILBOX_IN_CMD_CMD_MASK, (x))

total: 1 errors, 1 warnings, 0 checks, 65 lines checked
83c2e5a66e59 drm/xe/ptl: Enable PTL display
-:7: WARNING:COMMIT_MESSAGE: Missing commit description - Add an appropriate one

total: 0 errors, 1 warnings, 0 checks, 8 lines checked



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

* ✗ Fi.CI.SPARSE: warning for drm/i915/xe3lpd: ptl display patches (rev5)
  2024-10-25 20:47 [PATCH v5 00/11] drm/i915/xe3lpd: ptl display patches Clint Taylor
                   ` (11 preceding siblings ...)
  2024-10-25 21:36 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915/xe3lpd: ptl display patches (rev5) Patchwork
@ 2024-10-25 21:36 ` Patchwork
  2024-10-25 21:36 ` ✓ Fi.CI.BAT: success " Patchwork
  13 siblings, 0 replies; 23+ messages in thread
From: Patchwork @ 2024-10-25 21:36 UTC (permalink / raw)
  To: Matt Atwood; +Cc: intel-gfx

== Series Details ==

Series: drm/i915/xe3lpd: ptl display patches (rev5)
URL   : https://patchwork.freedesktop.org/series/140196/
State : warning

== Summary ==

Error: dim sparse failed
Sparse version: v0.6.2
Fast mode used, each commit won't be checked separately.



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

* ✓ Fi.CI.BAT: success for drm/i915/xe3lpd: ptl display patches (rev5)
  2024-10-25 20:47 [PATCH v5 00/11] drm/i915/xe3lpd: ptl display patches Clint Taylor
                   ` (12 preceding siblings ...)
  2024-10-25 21:36 ` ✗ Fi.CI.SPARSE: " Patchwork
@ 2024-10-25 21:36 ` Patchwork
  13 siblings, 0 replies; 23+ messages in thread
From: Patchwork @ 2024-10-25 21:36 UTC (permalink / raw)
  To: Matt Atwood; +Cc: intel-gfx

[-- Attachment #1: Type: text/plain, Size: 11890 bytes --]

== Series Details ==

Series: drm/i915/xe3lpd: ptl display patches (rev5)
URL   : https://patchwork.freedesktop.org/series/140196/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_15601 -> Patchwork_140196v5
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140196v5/index.html

Participating hosts (44 -> 45)
------------------------------

  Additional (2): bat-arls-2 fi-skl-6600u 
  Missing    (1): fi-snb-2520m 

Known issues
------------

  Here are the changes found in Patchwork_140196v5 that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@debugfs_test@basic-hwmon:
    - bat-arls-2:         NOTRUN -> [SKIP][1] ([i915#9318])
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140196v5/bat-arls-2/igt@debugfs_test@basic-hwmon.html

  * igt@gem_huc_copy@huc-copy:
    - fi-skl-6600u:       NOTRUN -> [SKIP][2] ([i915#2190])
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140196v5/fi-skl-6600u/igt@gem_huc_copy@huc-copy.html

  * igt@gem_lmem_swapping@random-engines:
    - fi-skl-6600u:       NOTRUN -> [SKIP][3] ([i915#4613]) +3 other tests skip
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140196v5/fi-skl-6600u/igt@gem_lmem_swapping@random-engines.html

  * igt@gem_lmem_swapping@verify-random:
    - bat-arls-2:         NOTRUN -> [SKIP][4] ([i915#10213] / [i915#11671]) +3 other tests skip
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140196v5/bat-arls-2/igt@gem_lmem_swapping@verify-random.html

  * igt@gem_mmap@basic:
    - bat-arls-2:         NOTRUN -> [SKIP][5] ([i915#11343] / [i915#4083])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140196v5/bat-arls-2/igt@gem_mmap@basic.html

  * igt@gem_mmap_gtt@basic:
    - bat-arls-2:         NOTRUN -> [SKIP][6] ([i915#10196] / [i915#4077]) +2 other tests skip
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140196v5/bat-arls-2/igt@gem_mmap_gtt@basic.html

  * igt@gem_render_tiled_blits@basic:
    - bat-arls-2:         NOTRUN -> [SKIP][7] ([i915#10197] / [i915#10211] / [i915#4079])
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140196v5/bat-arls-2/igt@gem_render_tiled_blits@basic.html

  * igt@gem_tiled_pread_basic:
    - bat-arls-2:         NOTRUN -> [SKIP][8] ([i915#10206] / [i915#4079])
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140196v5/bat-arls-2/igt@gem_tiled_pread_basic.html

  * igt@i915_pm_rps@basic-api:
    - bat-arls-2:         NOTRUN -> [SKIP][9] ([i915#10209] / [i915#11681])
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140196v5/bat-arls-2/igt@i915_pm_rps@basic-api.html

  * igt@i915_selftest@live:
    - bat-arlh-3:         [PASS][10] -> [ABORT][11] ([i915#12133])
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15601/bat-arlh-3/igt@i915_selftest@live.html
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140196v5/bat-arlh-3/igt@i915_selftest@live.html
    - bat-arls-2:         NOTRUN -> [ABORT][12] ([i915#12133])
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140196v5/bat-arls-2/igt@i915_selftest@live.html

  * igt@i915_selftest@live@workarounds:
    - bat-arlh-3:         [PASS][13] -> [ABORT][14] ([i915#12061])
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15601/bat-arlh-3/igt@i915_selftest@live@workarounds.html
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140196v5/bat-arlh-3/igt@i915_selftest@live@workarounds.html
    - bat-arls-2:         NOTRUN -> [ABORT][15] ([i915#12061])
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140196v5/bat-arls-2/igt@i915_selftest@live@workarounds.html
    - bat-adlp-6:         [PASS][16] -> [INCOMPLETE][17] ([i915#9413]) +1 other test incomplete
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15601/bat-adlp-6/igt@i915_selftest@live@workarounds.html
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140196v5/bat-adlp-6/igt@i915_selftest@live@workarounds.html

  * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
    - bat-arls-2:         NOTRUN -> [SKIP][18] ([i915#10200] / [i915#12203])
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140196v5/bat-arls-2/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html

  * igt@kms_addfb_basic@framebuffer-vs-set-tiling:
    - bat-arls-2:         NOTRUN -> [SKIP][19] ([i915#10200]) +8 other tests skip
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140196v5/bat-arls-2/igt@kms_addfb_basic@framebuffer-vs-set-tiling.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy:
    - bat-arls-2:         NOTRUN -> [SKIP][20] ([i915#10202] / [i915#11346]) +1 other test skip
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140196v5/bat-arls-2/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html

  * igt@kms_dsc@dsc-basic:
    - bat-arls-2:         NOTRUN -> [SKIP][21] ([i915#11346] / [i915#9886])
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140196v5/bat-arls-2/igt@kms_dsc@dsc-basic.html
    - fi-skl-6600u:       NOTRUN -> [SKIP][22] +9 other tests skip
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140196v5/fi-skl-6600u/igt@kms_dsc@dsc-basic.html

  * igt@kms_force_connector_basic@force-load-detect:
    - bat-arls-2:         NOTRUN -> [SKIP][23] ([i915#10207] / [i915#11346])
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140196v5/bat-arls-2/igt@kms_force_connector_basic@force-load-detect.html

  * igt@kms_psr@psr-primary-mmap-gtt:
    - bat-arls-2:         NOTRUN -> [SKIP][24] ([i915#11346] / [i915#4077] / [i915#9688])
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140196v5/bat-arls-2/igt@kms_psr@psr-primary-mmap-gtt.html

  * igt@kms_psr@psr-primary-mmap-gtt@edp-1:
    - bat-arls-2:         NOTRUN -> [SKIP][25] ([i915#10196] / [i915#4077] / [i915#9688])
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140196v5/bat-arls-2/igt@kms_psr@psr-primary-mmap-gtt@edp-1.html

  * igt@kms_setmode@basic-clone-single-crtc:
    - bat-arls-2:         NOTRUN -> [SKIP][26] ([i915#10208] / [i915#8809])
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140196v5/bat-arls-2/igt@kms_setmode@basic-clone-single-crtc.html

  * igt@prime_vgem@basic-fence-mmap:
    - bat-arls-2:         NOTRUN -> [SKIP][27] ([i915#10196] / [i915#3708] / [i915#4077]) +1 other test skip
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140196v5/bat-arls-2/igt@prime_vgem@basic-fence-mmap.html

  * igt@prime_vgem@basic-fence-read:
    - bat-arls-2:         NOTRUN -> [SKIP][28] ([i915#10212] / [i915#3708])
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140196v5/bat-arls-2/igt@prime_vgem@basic-fence-read.html

  * igt@prime_vgem@basic-read:
    - bat-arls-2:         NOTRUN -> [SKIP][29] ([i915#10214] / [i915#3708])
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140196v5/bat-arls-2/igt@prime_vgem@basic-read.html

  * igt@prime_vgem@basic-write:
    - bat-arls-2:         NOTRUN -> [SKIP][30] ([i915#10216] / [i915#3708])
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140196v5/bat-arls-2/igt@prime_vgem@basic-write.html

  
#### Possible fixes ####

  * igt@i915_selftest@live:
    - bat-mtlp-8:         [ABORT][31] ([i915#12216]) -> [PASS][32] +1 other test pass
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15601/bat-mtlp-8/igt@i915_selftest@live.html
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140196v5/bat-mtlp-8/igt@i915_selftest@live.html
    - bat-dg2-9:          [ABORT][33] ([i915#12133]) -> [PASS][34]
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15601/bat-dg2-9/igt@i915_selftest@live.html
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140196v5/bat-dg2-9/igt@i915_selftest@live.html
    - bat-dg2-11:         [ABORT][35] ([i915#12133]) -> [PASS][36]
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15601/bat-dg2-11/igt@i915_selftest@live.html
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140196v5/bat-dg2-11/igt@i915_selftest@live.html

  * igt@i915_selftest@live@active:
    - bat-dg2-11:         [ABORT][37] ([i915#12305]) -> [PASS][38]
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15601/bat-dg2-11/igt@i915_selftest@live@active.html
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140196v5/bat-dg2-11/igt@i915_selftest@live@active.html

  * igt@i915_selftest@live@client:
    - bat-dg2-9:          [ABORT][39] ([i915#12305]) -> [PASS][40]
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15601/bat-dg2-9/igt@i915_selftest@live@client.html
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140196v5/bat-dg2-9/igt@i915_selftest@live@client.html

  
  [i915#10196]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10196
  [i915#10197]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10197
  [i915#10200]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10200
  [i915#10202]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10202
  [i915#10206]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10206
  [i915#10207]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10207
  [i915#10208]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10208
  [i915#10209]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10209
  [i915#10211]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10211
  [i915#10212]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10212
  [i915#10213]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10213
  [i915#10214]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10214
  [i915#10216]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10216
  [i915#11343]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11343
  [i915#11346]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11346
  [i915#11671]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11671
  [i915#11681]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11681
  [i915#12061]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061
  [i915#12133]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12133
  [i915#12203]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12203
  [i915#12216]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12216
  [i915#12305]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12305
  [i915#2190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2190
  [i915#3708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3708
  [i915#4077]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4077
  [i915#4079]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4079
  [i915#4083]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4083
  [i915#4613]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4613
  [i915#8809]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8809
  [i915#9318]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9318
  [i915#9413]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9413
  [i915#9688]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9688
  [i915#9886]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9886


Build changes
-------------

  * Linux: CI_DRM_15601 -> Patchwork_140196v5

  CI-20190529: 20190529
  CI_DRM_15601: 3ec61d11c7429a65dcc3ac46b9e845f13891a306 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_8086: 18939acec2446c6644644186b090d16e366af8bc @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  Patchwork_140196v5: 3ec61d11c7429a65dcc3ac46b9e845f13891a306 @ git://anongit.freedesktop.org/gfx-ci/linux

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140196v5/index.html

[-- Attachment #2: Type: text/html, Size: 14539 bytes --]

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

* Re: [PATCH v5 02/11] drm/i915/xe3lpd: Disable HDCP Line Rekeying for Xe3
  2024-10-25 20:47 ` [PATCH v5 02/11] drm/i915/xe3lpd: Disable HDCP Line Rekeying for Xe3 Clint Taylor
@ 2024-10-25 23:13   ` Matt Roper
  0 siblings, 0 replies; 23+ messages in thread
From: Matt Roper @ 2024-10-25 23:13 UTC (permalink / raw)
  To: Clint Taylor; +Cc: intel-gfx, intel-xe

On Fri, Oct 25, 2024 at 01:47:34PM -0700, Clint Taylor wrote:
> From: Suraj Kandpal <suraj.kandpal@intel.com>
> 
> We need to disable HDCP Line Rekeying for Xe3 when we are using an HDMI
> encoder. Also remove the Wa comment tag as this follows the bspec and
> does not implement the wa.
> 
> v2: add additional definition instead of function, commit message typo
> fix and update.
> v3: restore lost conditional from v2.
> v4: subject line and subject message updated, fix the if ladder order,
> fix the bit definition order.
> v5: Add the bspec link and remove the Wa comment tag
> 
> Bspec: 68933

I left some comments about this on the older revision.  See
https://lore.kernel.org/all/20241025185808.GR5725@mdroper-desk1.amr.corp.intel.com/


Matt

> Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>
> Signed-off-by: Matt Atwood <matthew.s.atwood@intel.com>
> Signed-off-by: Clint Taylor <Clinton.A.Taylor@intel.com>
> Signed-off-by: Clint Taylor <clinton.a.taylor@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_hdcp.c | 11 +++++++----
>  drivers/gpu/drm/i915/i915_reg.h           |  1 +
>  2 files changed, 8 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_hdcp.c b/drivers/gpu/drm/i915/display/intel_hdcp.c
> index ed6aa87403e2..7a32bfef8d87 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdcp.c
> +++ b/drivers/gpu/drm/i915/display/intel_hdcp.c
> @@ -31,7 +31,6 @@
>  #define KEY_LOAD_TRIES	5
>  #define HDCP2_LC_RETRY_CNT			3
>  
> -/* WA: 16022217614 */
>  static void
>  intel_hdcp_disable_hdcp_line_rekeying(struct intel_encoder *encoder,
>  				      struct intel_hdcp *hdcp)
> @@ -43,14 +42,18 @@ intel_hdcp_disable_hdcp_line_rekeying(struct intel_encoder *encoder,
>  		return;
>  
>  	if (DISPLAY_VER(display) >= 14) {
> -		if (IS_DISPLAY_VER_STEP(display, IP_VER(14, 0), STEP_D0, STEP_FOREVER))
> -			intel_de_rmw(display, MTL_CHICKEN_TRANS(hdcp->cpu_transcoder),
> -				     0, HDCP_LINE_REKEY_DISABLE);
> +		if (DISPLAY_VER(display) >= 30)
> +			intel_de_rmw(display,
> +				     TRANS_DDI_FUNC_CTL(display, hdcp->cpu_transcoder),
> +				     0, XE3_TRANS_DDI_HDCP_LINE_REKEY_DISABLE);
>  		else if (IS_DISPLAY_VER_STEP(display, IP_VER(14, 1), STEP_B0, STEP_FOREVER) ||
>  			 IS_DISPLAY_VER_STEP(display, IP_VER(20, 0), STEP_B0, STEP_FOREVER))
>  			intel_de_rmw(display,
>  				     TRANS_DDI_FUNC_CTL(display, hdcp->cpu_transcoder),
>  				     0, TRANS_DDI_HDCP_LINE_REKEY_DISABLE);
> +		else if (IS_DISPLAY_VER_STEP(display, IP_VER(14, 0), STEP_D0, STEP_FOREVER))
> +			intel_de_rmw(display, MTL_CHICKEN_TRANS(hdcp->cpu_transcoder),
> +				     0, HDCP_LINE_REKEY_DISABLE);
>  	}
>  }
>  
> diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
> index 89e4381f8baa..8d758947f301 100644
> --- a/drivers/gpu/drm/i915/i915_reg.h
> +++ b/drivers/gpu/drm/i915/i915_reg.h
> @@ -3817,6 +3817,7 @@ enum skl_power_gate {
>  #define  TRANS_DDI_PVSYNC		(1 << 17)
>  #define  TRANS_DDI_PHSYNC		(1 << 16)
>  #define  TRANS_DDI_PORT_SYNC_ENABLE	REG_BIT(15)
> +#define  XE3_TRANS_DDI_HDCP_LINE_REKEY_DISABLE	REG_BIT(15)
>  #define  TRANS_DDI_EDP_INPUT_MASK	(7 << 12)
>  #define  TRANS_DDI_EDP_INPUT_A_ON	(0 << 12)
>  #define  TRANS_DDI_EDP_INPUT_A_ONOFF	(4 << 12)
> -- 
> 2.25.1
> 

-- 
Matt Roper
Graphics Software Engineer
Linux GPU Platform Enablement
Intel Corporation

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

* Re: [PATCH v5 01/11] drm/i915/xe3lpd: Update pmdemand programming
  2024-10-25 20:47 ` [PATCH v5 01/11] drm/i915/xe3lpd: Update pmdemand programming Clint Taylor
@ 2024-10-28 15:19   ` Govindapillai, Vinod
  2024-10-28 16:25     ` Gustavo Sousa
  0 siblings, 1 reply; 23+ messages in thread
From: Govindapillai, Vinod @ 2024-10-28 15:19 UTC (permalink / raw)
  To: intel-xe@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
	Taylor,  Clinton A

On Fri, 2024-10-25 at 13:47 -0700, Clint Taylor wrote:
> From: Matt Roper <matthew.d.roper@intel.com>
> 
> There are some minor changes to pmdemand handling on Xe3:
>  - Active scalers are no longer tracked.  We can simply skip the readout
>    and programming of this field.
>  - Active dbuf slices are no longer tracked.  We should skip the readout
>    and programming of this field and also make sure that it stays 0 in
>    our software bookkeeping so that we won't erroneously return true
>    from intel_pmdemand_needs_update() due to mismatches.
>  - Even though there aren't enough pipes to utilize them, the size of
>    the 'active pipes' field has expanded to four bits, taking over the
>    register bits previously used for dbuf slices.  Since the lower bits
>    of the mask have moved, we need to update our reads/writes to handle
>    this properly.
> 
> v2: active pipes is no longer always max 3, add in the ability to go to
> 4 for PTL.
> v3: use intel_display for display_ver check, use INTEL_NUM_PIPES
> v4: add a conditional for number of pipes macro vs using 3.
> v5: reverse conditional order of v4.
> v6: undo v5 and fix num_pipes assignment
> v7: pass display struct instead of i915, checkpatch fix
> 
> Bspec: 68883, 69125
> Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
> Signed-off-by: Matt Atwood <matthew.s.atwood@intel.com>
> Signed-off-by: Clint Taylor <Clinton.A.Taylor@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_pmdemand.c | 73 +++++++++++++------
>  drivers/gpu/drm/i915/display/intel_pmdemand.h |  4 +-
>  drivers/gpu/drm/i915/i915_reg.h               |  1 +
>  3 files changed, 53 insertions(+), 25 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_pmdemand.c
> b/drivers/gpu/drm/i915/display/intel_pmdemand.c
> index ceaf9e3147da..32443ae8e76c 100644
> --- a/drivers/gpu/drm/i915/display/intel_pmdemand.c
> +++ b/drivers/gpu/drm/i915/display/intel_pmdemand.c
> @@ -258,6 +258,7 @@ intel_pmdemand_connector_needs_update(struct intel_atomic_state *state)
>  
>  static bool intel_pmdemand_needs_update(struct intel_atomic_state *state)
>  {
> +       struct intel_display *display = to_intel_display(state);
>         const struct intel_bw_state *new_bw_state, *old_bw_state;
>         const struct intel_cdclk_state *new_cdclk_state, *old_cdclk_state;
>         const struct intel_crtc_state *new_crtc_state, *old_crtc_state;
> @@ -274,12 +275,16 @@ static bool intel_pmdemand_needs_update(struct intel_atomic_state *state)
>         new_dbuf_state = intel_atomic_get_new_dbuf_state(state);
>         old_dbuf_state = intel_atomic_get_old_dbuf_state(state);
>         if (new_dbuf_state &&
> -           (new_dbuf_state->active_pipes !=
> -            old_dbuf_state->active_pipes ||
> -            new_dbuf_state->enabled_slices !=
> -            old_dbuf_state->enabled_slices))
> +           new_dbuf_state->active_pipes != old_dbuf_state->active_pipes)
>                 return true;
>  
> +       if (DISPLAY_VER(display) < 30) {
> +               if (new_dbuf_state &&
> +                   new_dbuf_state->enabled_slices !=
> +                   old_dbuf_state->enabled_slices)
> +                       return true;
> +       }
> +
>         new_cdclk_state = intel_atomic_get_new_cdclk_state(state);
>         old_cdclk_state = intel_atomic_get_old_cdclk_state(state);
>         if (new_cdclk_state &&
> @@ -327,10 +332,15 @@ int intel_pmdemand_atomic_check(struct intel_atomic_state *state)
>         if (IS_ERR(new_dbuf_state))
>                 return PTR_ERR(new_dbuf_state);
>  
> -       new_pmdemand_state->params.active_pipes =
> -               min_t(u8, hweight8(new_dbuf_state->active_pipes), 3);
> -       new_pmdemand_state->params.active_dbufs =
> -               min_t(u8, hweight8(new_dbuf_state->enabled_slices), 3);
> +       if (DISPLAY_VER(i915) < 30) {
> +               new_pmdemand_state->params.active_dbufs =
> +                       min_t(u8, hweight8(new_dbuf_state->enabled_slices), 3);
> +               new_pmdemand_state->params.active_pipes =
> +                       min_t(u8, hweight8(new_dbuf_state->active_pipes), 3);
> +       } else {
> +               new_pmdemand_state->params.active_pipes =
> +                       min_t(u8, hweight8(new_dbuf_state->active_pipes), INTEL_NUM_PIPES(i915));
> +       }
>  
>         new_cdclk_state = intel_atomic_get_cdclk_state(state);
>         if (IS_ERR(new_cdclk_state))
> @@ -395,27 +405,32 @@ intel_pmdemand_init_pmdemand_params(struct drm_i915_private *i915,
>  
>         reg2 = intel_de_read(i915, XELPDP_INITIATE_PMDEMAND_REQUEST(1));
>  
> -       /* Set 1*/
>         pmdemand_state->params.qclk_gv_bw =
>                 REG_FIELD_GET(XELPDP_PMDEMAND_QCLK_GV_BW_MASK, reg1);
>         pmdemand_state->params.voltage_index =
>                 REG_FIELD_GET(XELPDP_PMDEMAND_VOLTAGE_INDEX_MASK, reg1);
>         pmdemand_state->params.qclk_gv_index =
>                 REG_FIELD_GET(XELPDP_PMDEMAND_QCLK_GV_INDEX_MASK, reg1);
> -       pmdemand_state->params.active_pipes =
> -               REG_FIELD_GET(XELPDP_PMDEMAND_PIPES_MASK, reg1);
> -       pmdemand_state->params.active_dbufs =
> -               REG_FIELD_GET(XELPDP_PMDEMAND_DBUFS_MASK, reg1);
>         pmdemand_state->params.active_phys =
>                 REG_FIELD_GET(XELPDP_PMDEMAND_PHYS_MASK, reg1);
>  
> -       /* Set 2*/
>         pmdemand_state->params.cdclk_freq_mhz =
>                 REG_FIELD_GET(XELPDP_PMDEMAND_CDCLK_FREQ_MASK, reg2);
>         pmdemand_state->params.ddiclk_max =
>                 REG_FIELD_GET(XELPDP_PMDEMAND_DDICLK_FREQ_MASK, reg2);
> -       pmdemand_state->params.scalers =
> -               REG_FIELD_GET(XELPDP_PMDEMAND_SCALERS_MASK, reg2);
> +
> +       if (DISPLAY_VER(i915) >= 30) {
> +               pmdemand_state->params.active_pipes =
> +                       REG_FIELD_GET(XE3_PMDEMAND_PIPES_MASK, reg1);
> +       } else {
> +               pmdemand_state->params.active_pipes =
> +                       REG_FIELD_GET(XELPDP_PMDEMAND_PIPES_MASK, reg1);
> +               pmdemand_state->params.active_dbufs =
> +                       REG_FIELD_GET(XELPDP_PMDEMAND_DBUFS_MASK, reg1);
> +
> +               pmdemand_state->params.scalers =
> +                       REG_FIELD_GET(XELPDP_PMDEMAND_SCALERS_MASK, reg2);
> +       }
>  
>  unlock:
>         mutex_unlock(&i915->display.pmdemand.lock);
> @@ -442,6 +457,10 @@ void intel_pmdemand_program_dbuf(struct drm_i915_private *i915,
>  {
>         u32 dbufs = min_t(u32, hweight8(dbuf_slices), 3);
>  
> +       /* PM Demand only tracks active dbufs on pre-Xe3 platforms */
> +       if (DISPLAY_VER(i915) >= 30)
> +               return;
> +
>         mutex_lock(&i915->display.pmdemand.lock);
>         if (drm_WARN_ON(&i915->drm,
>                         !intel_pmdemand_check_prev_transaction(i915)))
> @@ -460,9 +479,10 @@ void intel_pmdemand_program_dbuf(struct drm_i915_private *i915,
>  }
>  
>  static void
> -intel_pmdemand_update_params(const struct intel_pmdemand_state *new,
> -                            const struct intel_pmdemand_state *old,
> -                            u32 *reg1, u32 *reg2, bool serialized)
> +intel_pmdemand_update_params(struct intel_display *display,
> +                                const struct intel_pmdemand_state *new,
> +                                const struct intel_pmdemand_state *old,
> +                                u32 *reg1, u32 *reg2, bool serialized)
Wonder if this need to be aligned!

Otherwise, looks okay to me.

Reviewed-by: Vinod Govindapillai <vinod.govindapillai@intel.com>

>  {
>         /*
>          * The pmdemand parameter updates happens in two steps. Pre plane and
> @@ -495,16 +515,22 @@ intel_pmdemand_update_params(const struct intel_pmdemand_state *new,
>         update_reg(reg1, qclk_gv_bw, XELPDP_PMDEMAND_QCLK_GV_BW_MASK);
>         update_reg(reg1, voltage_index, XELPDP_PMDEMAND_VOLTAGE_INDEX_MASK);
>         update_reg(reg1, qclk_gv_index, XELPDP_PMDEMAND_QCLK_GV_INDEX_MASK);
> -       update_reg(reg1, active_pipes, XELPDP_PMDEMAND_PIPES_MASK);
> -       update_reg(reg1, active_dbufs, XELPDP_PMDEMAND_DBUFS_MASK);
>         update_reg(reg1, active_phys, XELPDP_PMDEMAND_PHYS_MASK);
>  
>         /* Set 2*/
>         update_reg(reg2, cdclk_freq_mhz, XELPDP_PMDEMAND_CDCLK_FREQ_MASK);
>         update_reg(reg2, ddiclk_max, XELPDP_PMDEMAND_DDICLK_FREQ_MASK);
> -       update_reg(reg2, scalers, XELPDP_PMDEMAND_SCALERS_MASK);
>         update_reg(reg2, plls, XELPDP_PMDEMAND_PLLS_MASK);
>  
> +       if (DISPLAY_VER(display) >= 30) {
> +               update_reg(reg1, active_pipes, XE3_PMDEMAND_PIPES_MASK);
> +       } else {
> +               update_reg(reg1, active_pipes, XELPDP_PMDEMAND_PIPES_MASK);
> +               update_reg(reg1, active_dbufs, XELPDP_PMDEMAND_DBUFS_MASK);
> +
> +               update_reg(reg2, scalers, XELPDP_PMDEMAND_SCALERS_MASK);
> +       }
> +
>  #undef update_reg
>  }
>  
> @@ -514,6 +540,7 @@ intel_pmdemand_program_params(struct drm_i915_private *i915,
>                               const struct intel_pmdemand_state *old,
>                               bool serialized)
>  {
> +       struct intel_display *display = &i915->display;
>         bool changed = false;
>         u32 reg1, mod_reg1;
>         u32 reg2, mod_reg2;
> @@ -529,7 +556,7 @@ intel_pmdemand_program_params(struct drm_i915_private *i915,
>         reg2 = intel_de_read(i915, XELPDP_INITIATE_PMDEMAND_REQUEST(1));
>         mod_reg2 = reg2;
>  
> -       intel_pmdemand_update_params(new, old, &mod_reg1, &mod_reg2,
> +       intel_pmdemand_update_params(display, new, old, &mod_reg1, &mod_reg2,
>                                      serialized);
>  
>         if (reg1 != mod_reg1) {
> diff --git a/drivers/gpu/drm/i915/display/intel_pmdemand.h
> b/drivers/gpu/drm/i915/display/intel_pmdemand.h
> index 128fd61f8f14..a1c49efdc493 100644
> --- a/drivers/gpu/drm/i915/display/intel_pmdemand.h
> +++ b/drivers/gpu/drm/i915/display/intel_pmdemand.h
> @@ -20,14 +20,14 @@ struct pmdemand_params {
>         u8 voltage_index;
>         u8 qclk_gv_index;
>         u8 active_pipes;
> -       u8 active_dbufs;
> +       u8 active_dbufs;        /* pre-Xe3 only */
>         /* Total number of non type C active phys from active_phys_mask */
>         u8 active_phys;
>         u8 plls;
>         u16 cdclk_freq_mhz;
>         /* max from ddi_clocks[] */
>         u16 ddiclk_max;
> -       u8 scalers;
> +       u8 scalers;             /* pre-Xe3 only */
>  };
>  
>  struct intel_pmdemand_state {
> diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
> index 405f409e9761..89e4381f8baa 100644
> --- a/drivers/gpu/drm/i915/i915_reg.h
> +++ b/drivers/gpu/drm/i915/i915_reg.h
> @@ -2696,6 +2696,7 @@
>  #define  XELPDP_PMDEMAND_QCLK_GV_BW_MASK               REG_GENMASK(31, 16)
>  #define  XELPDP_PMDEMAND_VOLTAGE_INDEX_MASK            REG_GENMASK(14, 12)
>  #define  XELPDP_PMDEMAND_QCLK_GV_INDEX_MASK            REG_GENMASK(11, 8)
> +#define  XE3_PMDEMAND_PIPES_MASK                       REG_GENMASK(7, 4)
>  #define  XELPDP_PMDEMAND_PIPES_MASK                    REG_GENMASK(7, 6)
>  #define  XELPDP_PMDEMAND_DBUFS_MASK                    REG_GENMASK(5, 4)
>  #define  XELPDP_PMDEMAND_PHYS_MASK                     REG_GENMASK(2, 0)


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

* Re: [PATCH v5 01/11] drm/i915/xe3lpd: Update pmdemand programming
  2024-10-28 15:19   ` Govindapillai, Vinod
@ 2024-10-28 16:25     ` Gustavo Sousa
  0 siblings, 0 replies; 23+ messages in thread
From: Gustavo Sousa @ 2024-10-28 16:25 UTC (permalink / raw)
  To: Govindapillai, Vinod, Taylor, Clinton A,
	intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org

Quoting Govindapillai, Vinod (2024-10-28 12:19:01-03:00)
>On Fri, 2024-10-25 at 13:47 -0700, Clint Taylor wrote:
>> From: Matt Roper <matthew.d.roper@intel.com>
>> 
>> There are some minor changes to pmdemand handling on Xe3:
>>  - Active scalers are no longer tracked.  We can simply skip the readout
>>    and programming of this field.
>>  - Active dbuf slices are no longer tracked.  We should skip the readout
>>    and programming of this field and also make sure that it stays 0 in
>>    our software bookkeeping so that we won't erroneously return true
>>    from intel_pmdemand_needs_update() due to mismatches.
>>  - Even though there aren't enough pipes to utilize them, the size of
>>    the 'active pipes' field has expanded to four bits, taking over the
>>    register bits previously used for dbuf slices.  Since the lower bits
>>    of the mask have moved, we need to update our reads/writes to handle
>>    this properly.
>> 
>> v2: active pipes is no longer always max 3, add in the ability to go to
>> 4 for PTL.
>> v3: use intel_display for display_ver check, use INTEL_NUM_PIPES
>> v4: add a conditional for number of pipes macro vs using 3.
>> v5: reverse conditional order of v4.
>> v6: undo v5 and fix num_pipes assignment
>> v7: pass display struct instead of i915, checkpatch fix
>> 
>> Bspec: 68883, 69125
>> Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
>> Signed-off-by: Matt Atwood <matthew.s.atwood@intel.com>
>> Signed-off-by: Clint Taylor <Clinton.A.Taylor@intel.com>
>> ---
>>  drivers/gpu/drm/i915/display/intel_pmdemand.c | 73 +++++++++++++------
>>  drivers/gpu/drm/i915/display/intel_pmdemand.h |  4 +-
>>  drivers/gpu/drm/i915/i915_reg.h               |  1 +
>>  3 files changed, 53 insertions(+), 25 deletions(-)
>> 
>> diff --git a/drivers/gpu/drm/i915/display/intel_pmdemand.c
>> b/drivers/gpu/drm/i915/display/intel_pmdemand.c
>> index ceaf9e3147da..32443ae8e76c 100644
>> --- a/drivers/gpu/drm/i915/display/intel_pmdemand.c
>> +++ b/drivers/gpu/drm/i915/display/intel_pmdemand.c
>> @@ -258,6 +258,7 @@ intel_pmdemand_connector_needs_update(struct intel_atomic_state *state)
>>  
>>  static bool intel_pmdemand_needs_update(struct intel_atomic_state *state)
>>  {
>> +       struct intel_display *display = to_intel_display(state);
>>         const struct intel_bw_state *new_bw_state, *old_bw_state;
>>         const struct intel_cdclk_state *new_cdclk_state, *old_cdclk_state;
>>         const struct intel_crtc_state *new_crtc_state, *old_crtc_state;
>> @@ -274,12 +275,16 @@ static bool intel_pmdemand_needs_update(struct intel_atomic_state *state)
>>         new_dbuf_state = intel_atomic_get_new_dbuf_state(state);
>>         old_dbuf_state = intel_atomic_get_old_dbuf_state(state);
>>         if (new_dbuf_state &&
>> -           (new_dbuf_state->active_pipes !=
>> -            old_dbuf_state->active_pipes ||
>> -            new_dbuf_state->enabled_slices !=
>> -            old_dbuf_state->enabled_slices))
>> +           new_dbuf_state->active_pipes != old_dbuf_state->active_pipes)
>>                 return true;
>>  
>> +       if (DISPLAY_VER(display) < 30) {
>> +               if (new_dbuf_state &&
>> +                   new_dbuf_state->enabled_slices !=
>> +                   old_dbuf_state->enabled_slices)
>> +                       return true;
>> +       }
>> +
>>         new_cdclk_state = intel_atomic_get_new_cdclk_state(state);
>>         old_cdclk_state = intel_atomic_get_old_cdclk_state(state);
>>         if (new_cdclk_state &&
>> @@ -327,10 +332,15 @@ int intel_pmdemand_atomic_check(struct intel_atomic_state *state)
>>         if (IS_ERR(new_dbuf_state))
>>                 return PTR_ERR(new_dbuf_state);
>>  
>> -       new_pmdemand_state->params.active_pipes =
>> -               min_t(u8, hweight8(new_dbuf_state->active_pipes), 3);
>> -       new_pmdemand_state->params.active_dbufs =
>> -               min_t(u8, hweight8(new_dbuf_state->enabled_slices), 3);
>> +       if (DISPLAY_VER(i915) < 30) {
>> +               new_pmdemand_state->params.active_dbufs =
>> +                       min_t(u8, hweight8(new_dbuf_state->enabled_slices), 3);
>> +               new_pmdemand_state->params.active_pipes =
>> +                       min_t(u8, hweight8(new_dbuf_state->active_pipes), 3);
>> +       } else {
>> +               new_pmdemand_state->params.active_pipes =
>> +                       min_t(u8, hweight8(new_dbuf_state->active_pipes), INTEL_NUM_PIPES(i915));
>> +       }
>>  
>>         new_cdclk_state = intel_atomic_get_cdclk_state(state);
>>         if (IS_ERR(new_cdclk_state))
>> @@ -395,27 +405,32 @@ intel_pmdemand_init_pmdemand_params(struct drm_i915_private *i915,
>>  
>>         reg2 = intel_de_read(i915, XELPDP_INITIATE_PMDEMAND_REQUEST(1));
>>  
>> -       /* Set 1*/
>>         pmdemand_state->params.qclk_gv_bw =
>>                 REG_FIELD_GET(XELPDP_PMDEMAND_QCLK_GV_BW_MASK, reg1);
>>         pmdemand_state->params.voltage_index =
>>                 REG_FIELD_GET(XELPDP_PMDEMAND_VOLTAGE_INDEX_MASK, reg1);
>>         pmdemand_state->params.qclk_gv_index =
>>                 REG_FIELD_GET(XELPDP_PMDEMAND_QCLK_GV_INDEX_MASK, reg1);
>> -       pmdemand_state->params.active_pipes =
>> -               REG_FIELD_GET(XELPDP_PMDEMAND_PIPES_MASK, reg1);
>> -       pmdemand_state->params.active_dbufs =
>> -               REG_FIELD_GET(XELPDP_PMDEMAND_DBUFS_MASK, reg1);
>>         pmdemand_state->params.active_phys =
>>                 REG_FIELD_GET(XELPDP_PMDEMAND_PHYS_MASK, reg1);
>>  
>> -       /* Set 2*/
>>         pmdemand_state->params.cdclk_freq_mhz =
>>                 REG_FIELD_GET(XELPDP_PMDEMAND_CDCLK_FREQ_MASK, reg2);
>>         pmdemand_state->params.ddiclk_max =
>>                 REG_FIELD_GET(XELPDP_PMDEMAND_DDICLK_FREQ_MASK, reg2);
>> -       pmdemand_state->params.scalers =
>> -               REG_FIELD_GET(XELPDP_PMDEMAND_SCALERS_MASK, reg2);
>> +
>> +       if (DISPLAY_VER(i915) >= 30) {
>> +               pmdemand_state->params.active_pipes =
>> +                       REG_FIELD_GET(XE3_PMDEMAND_PIPES_MASK, reg1);
>> +       } else {
>> +               pmdemand_state->params.active_pipes =
>> +                       REG_FIELD_GET(XELPDP_PMDEMAND_PIPES_MASK, reg1);
>> +               pmdemand_state->params.active_dbufs =
>> +                       REG_FIELD_GET(XELPDP_PMDEMAND_DBUFS_MASK, reg1);
>> +
>> +               pmdemand_state->params.scalers =
>> +                       REG_FIELD_GET(XELPDP_PMDEMAND_SCALERS_MASK, reg2);
>> +       }
>>  
>>  unlock:
>>         mutex_unlock(&i915->display.pmdemand.lock);
>> @@ -442,6 +457,10 @@ void intel_pmdemand_program_dbuf(struct drm_i915_private *i915,
>>  {
>>         u32 dbufs = min_t(u32, hweight8(dbuf_slices), 3);
>>  
>> +       /* PM Demand only tracks active dbufs on pre-Xe3 platforms */
>> +       if (DISPLAY_VER(i915) >= 30)
>> +               return;
>> +
>>         mutex_lock(&i915->display.pmdemand.lock);
>>         if (drm_WARN_ON(&i915->drm,
>>                         !intel_pmdemand_check_prev_transaction(i915)))
>> @@ -460,9 +479,10 @@ void intel_pmdemand_program_dbuf(struct drm_i915_private *i915,
>>  }
>>  
>>  static void
>> -intel_pmdemand_update_params(const struct intel_pmdemand_state *new,
>> -                            const struct intel_pmdemand_state *old,
>> -                            u32 *reg1, u32 *reg2, bool serialized)
>> +intel_pmdemand_update_params(struct intel_display *display,
>> +                                const struct intel_pmdemand_state *new,
>> +                                const struct intel_pmdemand_state *old,
>> +                                u32 *reg1, u32 *reg2, bool serialized)
>Wonder if this need to be aligned!

Yep, it looks like we need an alignment fix here indeed. I just applied this
series and the end result is misaligned.

>
>Otherwise, looks okay to me.
>
>Reviewed-by: Vinod Govindapillai <vinod.govindapillai@intel.com>

With the alignment fix, this patch is

Reviewed-by: Gustavo Sousa <gustavo.sousa@intel.com>

as well.

>
>>  {
>>         /*
>>          * The pmdemand parameter updates happens in two steps. Pre plane and
>> @@ -495,16 +515,22 @@ intel_pmdemand_update_params(const struct intel_pmdemand_state *new,
>>         update_reg(reg1, qclk_gv_bw, XELPDP_PMDEMAND_QCLK_GV_BW_MASK);
>>         update_reg(reg1, voltage_index, XELPDP_PMDEMAND_VOLTAGE_INDEX_MASK);
>>         update_reg(reg1, qclk_gv_index, XELPDP_PMDEMAND_QCLK_GV_INDEX_MASK);
>> -       update_reg(reg1, active_pipes, XELPDP_PMDEMAND_PIPES_MASK);
>> -       update_reg(reg1, active_dbufs, XELPDP_PMDEMAND_DBUFS_MASK);
>>         update_reg(reg1, active_phys, XELPDP_PMDEMAND_PHYS_MASK);
>>  
>>         /* Set 2*/
>>         update_reg(reg2, cdclk_freq_mhz, XELPDP_PMDEMAND_CDCLK_FREQ_MASK);
>>         update_reg(reg2, ddiclk_max, XELPDP_PMDEMAND_DDICLK_FREQ_MASK);
>> -       update_reg(reg2, scalers, XELPDP_PMDEMAND_SCALERS_MASK);
>>         update_reg(reg2, plls, XELPDP_PMDEMAND_PLLS_MASK);
>>  
>> +       if (DISPLAY_VER(display) >= 30) {
>> +               update_reg(reg1, active_pipes, XE3_PMDEMAND_PIPES_MASK);
>> +       } else {
>> +               update_reg(reg1, active_pipes, XELPDP_PMDEMAND_PIPES_MASK);
>> +               update_reg(reg1, active_dbufs, XELPDP_PMDEMAND_DBUFS_MASK);
>> +
>> +               update_reg(reg2, scalers, XELPDP_PMDEMAND_SCALERS_MASK);
>> +       }
>> +
>>  #undef update_reg
>>  }
>>  
>> @@ -514,6 +540,7 @@ intel_pmdemand_program_params(struct drm_i915_private *i915,
>>                               const struct intel_pmdemand_state *old,
>>                               bool serialized)
>>  {
>> +       struct intel_display *display = &i915->display;
>>         bool changed = false;
>>         u32 reg1, mod_reg1;
>>         u32 reg2, mod_reg2;
>> @@ -529,7 +556,7 @@ intel_pmdemand_program_params(struct drm_i915_private *i915,
>>         reg2 = intel_de_read(i915, XELPDP_INITIATE_PMDEMAND_REQUEST(1));
>>         mod_reg2 = reg2;
>>  
>> -       intel_pmdemand_update_params(new, old, &mod_reg1, &mod_reg2,
>> +       intel_pmdemand_update_params(display, new, old, &mod_reg1, &mod_reg2,
>>                                      serialized);
>>  
>>         if (reg1 != mod_reg1) {
>> diff --git a/drivers/gpu/drm/i915/display/intel_pmdemand.h
>> b/drivers/gpu/drm/i915/display/intel_pmdemand.h
>> index 128fd61f8f14..a1c49efdc493 100644
>> --- a/drivers/gpu/drm/i915/display/intel_pmdemand.h
>> +++ b/drivers/gpu/drm/i915/display/intel_pmdemand.h
>> @@ -20,14 +20,14 @@ struct pmdemand_params {
>>         u8 voltage_index;
>>         u8 qclk_gv_index;
>>         u8 active_pipes;
>> -       u8 active_dbufs;
>> +       u8 active_dbufs;        /* pre-Xe3 only */
>>         /* Total number of non type C active phys from active_phys_mask */
>>         u8 active_phys;
>>         u8 plls;
>>         u16 cdclk_freq_mhz;
>>         /* max from ddi_clocks[] */
>>         u16 ddiclk_max;
>> -       u8 scalers;
>> +       u8 scalers;             /* pre-Xe3 only */
>>  };
>>  
>>  struct intel_pmdemand_state {
>> diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
>> index 405f409e9761..89e4381f8baa 100644
>> --- a/drivers/gpu/drm/i915/i915_reg.h
>> +++ b/drivers/gpu/drm/i915/i915_reg.h
>> @@ -2696,6 +2696,7 @@
>>  #define  XELPDP_PMDEMAND_QCLK_GV_BW_MASK               REG_GENMASK(31, 16)
>>  #define  XELPDP_PMDEMAND_VOLTAGE_INDEX_MASK            REG_GENMASK(14, 12)
>>  #define  XELPDP_PMDEMAND_QCLK_GV_INDEX_MASK            REG_GENMASK(11, 8)
>> +#define  XE3_PMDEMAND_PIPES_MASK                       REG_GENMASK(7, 4)
>>  #define  XELPDP_PMDEMAND_PIPES_MASK                    REG_GENMASK(7, 6)
>>  #define  XELPDP_PMDEMAND_DBUFS_MASK                    REG_GENMASK(5, 4)
>>  #define  XELPDP_PMDEMAND_PHYS_MASK                     REG_GENMASK(2, 0)
>

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

* Re: [PATCH v5 06/11] drm/i915/cx0: Remove bus reset after every c10 transaction
  2024-10-25 20:47 ` [PATCH v5 06/11] drm/i915/cx0: Remove bus reset after every c10 transaction Clint Taylor
@ 2024-10-28 16:30   ` Gustavo Sousa
  0 siblings, 0 replies; 23+ messages in thread
From: Gustavo Sousa @ 2024-10-28 16:30 UTC (permalink / raw)
  To: Clint Taylor, intel-gfx, intel-xe

Quoting Clint Taylor (2024-10-25 17:47:38-03:00)
>C10 phy timeouts occur on xe3lpd if the c10 bus is reset every
>transaction. Starting with xe3lpd this is bus reset not necessary

I provided a r-b with minor suggestions to this patch in the v4 series:

https://lore.kernel.org/intel-xe/172986437914.1548.2518455286416273948@gjsousa-mobl2/

--
Gustavo Sousa

>
>Signed-off-by: Clint Taylor <clinton.a.taylor@intel.com>
>---
> drivers/gpu/drm/i915/display/intel_cx0_phy.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
>diff --git a/drivers/gpu/drm/i915/display/intel_cx0_phy.c b/drivers/gpu/drm/i915/display/intel_cx0_phy.c
>index 4d6e1c135bdc..c6e0cbff5201 100644
>--- a/drivers/gpu/drm/i915/display/intel_cx0_phy.c
>+++ b/drivers/gpu/drm/i915/display/intel_cx0_phy.c
>@@ -224,7 +224,8 @@ static int __intel_cx0_read_once(struct intel_encoder *encoder,
>          * down and let the message bus to end up
>          * in a known state
>          */
>-        intel_cx0_bus_reset(encoder, lane);
>+        if (DISPLAY_VER(i915) < 30)
>+                intel_cx0_bus_reset(encoder, lane);
> 
>         return REG_FIELD_GET(XELPDP_PORT_P2M_DATA_MASK, val);
> }
>@@ -313,7 +314,8 @@ static int __intel_cx0_write_once(struct intel_encoder *encoder,
>          * down and let the message bus to end up
>          * in a known state
>          */
>-        intel_cx0_bus_reset(encoder, lane);
>+        if (DISPLAY_VER(i915) < 30)
>+                intel_cx0_bus_reset(encoder, lane);
> 
>         return 0;
> }
>-- 
>2.25.1
>

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

* Re: [PATCH v5 10/11] drm/i915/xe3lpd: Power request asserting/deasserting
  2024-10-25 20:47 ` [PATCH v5 10/11] drm/i915/xe3lpd: Power request asserting/deasserting Clint Taylor
@ 2024-10-28 16:39   ` Gustavo Sousa
  0 siblings, 0 replies; 23+ messages in thread
From: Gustavo Sousa @ 2024-10-28 16:39 UTC (permalink / raw)
  To: Clint Taylor, intel-gfx, intel-xe; +Cc: Mika Kahola

Quoting Clint Taylor (2024-10-25 17:47:42-03:00)
>From: Mika Kahola <mika.kahola@intel.com>
>
>There is a HW issue that arises when there are race conditions
>between TCSS entering/exiting TC7 or TC10 states while the
>driver is asserting/deasserting TCSS power request. As a
>workaround, Display driver will implement a mailbox sequence
>to ensure that the TCSS is in TC0 when TCSS power request is
>asserted/deasserted.
>
>The sequence is the following
>
>1. Read mailbox command status and wait until run/busy bit is
>   clear
>2. Write mailbox data value '1' for power request asserting
>   and '0' for power request deasserting
>3. Write mailbox command run/busy bit and command value with 0x1
>4. Read mailbox command and wait until run/busy bit is clear
>   before continuing power request.
>
>Signed-off-by: Mika Kahola <mika.kahola@intel.com>
>Signed-off-by: Matt Atwood <matthew.s.atwood@intel.com>
>Signed-off-by: Clint Taylor <Clinton.A.Taylor@intel.com>

+Mika

Mika has sent an updated version on this and it is available at
https://lore.kernel.org/intel-gfx/20241028125835.78639-1-mika.kahola@intel.com/

I think he might send a new version of that patch based on review
feedback.

--
Gustavo Sousa

>---
> drivers/gpu/drm/i915/display/intel_tc.c | 40 +++++++++++++++++++++++++
> drivers/gpu/drm/i915/i915_reg.h         |  7 +++++
> 2 files changed, 47 insertions(+)
>
>diff --git a/drivers/gpu/drm/i915/display/intel_tc.c b/drivers/gpu/drm/i915/display/intel_tc.c
>index 6f2ee7dbc43b..7d9f87db381c 100644
>--- a/drivers/gpu/drm/i915/display/intel_tc.c
>+++ b/drivers/gpu/drm/i915/display/intel_tc.c
>@@ -1013,6 +1013,39 @@ xelpdp_tc_phy_wait_for_tcss_power(struct intel_tc_port *tc, bool enabled)
>         return true;
> }
> 
>+static bool xelpdp_tc_phy_wait_for_tcss_ready(struct drm_i915_private *i915,
>+                                              bool enable)
>+{
>+        if (DISPLAY_VER(i915) < 30)
>+                return true;
>+
>+        /* check if mailbox is running busy */
>+        if (intel_de_wait_for_clear(i915, TCSS_DISP_MAILBOX_IN_CMD,
>+                                    TCSS_DISP_MAILBOX_IN_CMD_RUN_BUSY, 10)) {
>+                drm_dbg_kms(&i915->drm,
>+                            "timeout waiting for TCSS mailbox run/busy bit to clear\n");
>+                return false;
>+        }
>+
>+        if (enable)
>+                intel_de_write(i915, TCSS_DISP_MAILBOX_IN_DATA, 1);
>+        else
>+                intel_de_write(i915, TCSS_DISP_MAILBOX_IN_DATA, 0);
>+
>+        intel_de_write(i915, TCSS_DISP_MAILBOX_IN_CMD,
>+                       TCSS_DISP_MAILBOX_IN_CMD_DATA(1));
>+
>+        /* wait to clear mailbox running busy bit before continuing */
>+        if (intel_de_wait_for_clear(i915, TCSS_DISP_MAILBOX_IN_CMD,
>+                                    TCSS_DISP_MAILBOX_IN_CMD_RUN_BUSY, 10)) {
>+                drm_dbg_kms(&i915->drm,
>+                            "timeout waiting for TCSS mailbox run/busy bit to clear\n");
>+                return false;
>+        }
>+
>+        return true;
>+}
>+
> static void __xelpdp_tc_phy_enable_tcss_power(struct intel_tc_port *tc, bool enable)
> {
>         struct drm_i915_private *i915 = tc_to_i915(tc);
>@@ -1022,6 +1055,13 @@ static void __xelpdp_tc_phy_enable_tcss_power(struct intel_tc_port *tc, bool ena
> 
>         assert_tc_cold_blocked(tc);
> 
>+        /*
>+         * Gfx driver workaround for PTL tcss_rxdetect_clkswb_req/ack handshake
>+         * violation when pwwreq= 0->1 during TC7/10 entry
>+         */
>+        drm_WARN_ON(&i915->drm,
>+                    !xelpdp_tc_phy_wait_for_tcss_ready(i915, enable));
>+
>         val = intel_de_read(i915, reg);
>         if (enable)
>                 val |= XELPDP_TCSS_POWER_REQUEST;
>diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
>index 8d758947f301..452325c7f427 100644
>--- a/drivers/gpu/drm/i915/i915_reg.h
>+++ b/drivers/gpu/drm/i915/i915_reg.h
>@@ -4539,6 +4539,13 @@ enum skl_power_gate {
> #define  TCSS_DDI_STATUS_HPD_LIVE_STATUS_TBT        REG_BIT(1)
> #define  TCSS_DDI_STATUS_HPD_LIVE_STATUS_ALT        REG_BIT(0)
> 
>+#define TCSS_DISP_MAILBOX_IN_CMD                _MMIO(0x161300)
>+#define   TCSS_DISP_MAILBOX_IN_CMD_RUN_BUSY        REG_BIT(31)
>+#define   TCSS_DISP_MAILBOX_IN_CMD_CMD_MASK        REG_GENMASK(7, 0)
>+#define   TCSS_DISP_MAILBOX_IN_CMD_DATA(x)        TCSS_DISP_MAILBOX_IN_CMD_RUN_BUSY | \
>+                                                REG_FIELD_PREP(TCSS_DISP_MAILBOX_IN_CMD_CMD_MASK, (x))
>+#define TCSS_DISP_MAILBOX_IN_DATA                _MMIO(0x161304)
>+
> #define PRIMARY_SPI_TRIGGER                        _MMIO(0x102040)
> #define PRIMARY_SPI_ADDRESS                        _MMIO(0x102080)
> #define PRIMARY_SPI_REGIONID                        _MMIO(0x102084)
>-- 
>2.25.1
>

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

* RE: [PATCH v5 11/11] drm/xe/ptl: Enable PTL display
  2024-10-25 20:47 ` [PATCH v5 11/11] drm/xe/ptl: Enable PTL display Clint Taylor
@ 2024-10-28 18:45   ` Saarinen, Jani
  2024-10-28 19:12   ` Rodrigo Vivi
  2024-10-28 19:17   ` Matt Roper
  2 siblings, 0 replies; 23+ messages in thread
From: Saarinen, Jani @ 2024-10-28 18:45 UTC (permalink / raw)
  To: Taylor, Clinton A, intel-gfx@lists.freedesktop.org,
	intel-xe@lists.freedesktop.org

Hi, 

> -----Original Message-----
> From: Intel-gfx <intel-gfx-bounces@lists.freedesktop.org> On Behalf Of Clint
> Taylor
> Sent: Friday, 25 October 2024 23.48
> To: intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org
> Subject: [PATCH v5 11/11] drm/xe/ptl: Enable PTL display
> 
> From: Haridhar Kalvala <haridhar.kalvala@intel.com>
> 
> Signed-off-by: Haridhar Kalvala <haridhar.kalvala@intel.com>
> Signed-off-by: Clint Taylor <Clinton.A.Taylor@intel.com>
> ---
>  drivers/gpu/drm/xe/xe_pci.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_pci.c b/drivers/gpu/drm/xe/xe_pci.c index
> 4085bb3b6550..6f73a243c24c 100644
> --- a/drivers/gpu/drm/xe/xe_pci.c
> +++ b/drivers/gpu/drm/xe/xe_pci.c
> @@ -352,7 +352,7 @@ static const struct xe_device_desc bmg_desc = {

Acked-by: Jani Saarinen <jani.saarinen@intel.com>
Tested-by: Jani Saarinen<jani.saarinen@intel.com>

> 
>  static const struct xe_device_desc ptl_desc = {
>  	PLATFORM(PANTHERLAKE),
> -	.has_display = false,
> +	.has_display = true,
>  	.require_force_probe = true,
>  };
> 
> --
> 2.25.1
Br,
Jani

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

* Re: [PATCH v5 11/11] drm/xe/ptl: Enable PTL display
  2024-10-25 20:47 ` [PATCH v5 11/11] drm/xe/ptl: Enable PTL display Clint Taylor
  2024-10-28 18:45   ` Saarinen, Jani
@ 2024-10-28 19:12   ` Rodrigo Vivi
  2024-10-28 19:17   ` Matt Roper
  2 siblings, 0 replies; 23+ messages in thread
From: Rodrigo Vivi @ 2024-10-28 19:12 UTC (permalink / raw)
  To: Clint Taylor; +Cc: intel-gfx, intel-xe

On Fri, Oct 25, 2024 at 01:47:43PM -0700, Clint Taylor wrote:
> From: Haridhar Kalvala <haridhar.kalvala@intel.com>

Every patch needs a commit message. No exception.

> 
> Signed-off-by: Haridhar Kalvala <haridhar.kalvala@intel.com>
> Signed-off-by: Clint Taylor <Clinton.A.Taylor@intel.com>
> ---
>  drivers/gpu/drm/xe/xe_pci.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_pci.c b/drivers/gpu/drm/xe/xe_pci.c
> index 4085bb3b6550..6f73a243c24c 100644
> --- a/drivers/gpu/drm/xe/xe_pci.c
> +++ b/drivers/gpu/drm/xe/xe_pci.c
> @@ -352,7 +352,7 @@ static const struct xe_device_desc bmg_desc = {
>  
>  static const struct xe_device_desc ptl_desc = {
>  	PLATFORM(PANTHERLAKE),
> -	.has_display = false,
> +	.has_display = true,
>  	.require_force_probe = true,
>  };
>  
> -- 
> 2.25.1
> 

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

* Re: [PATCH v5 11/11] drm/xe/ptl: Enable PTL display
  2024-10-25 20:47 ` [PATCH v5 11/11] drm/xe/ptl: Enable PTL display Clint Taylor
  2024-10-28 18:45   ` Saarinen, Jani
  2024-10-28 19:12   ` Rodrigo Vivi
@ 2024-10-28 19:17   ` Matt Roper
  2 siblings, 0 replies; 23+ messages in thread
From: Matt Roper @ 2024-10-28 19:17 UTC (permalink / raw)
  To: Clint Taylor; +Cc: intel-gfx, intel-xe

With an added commit message (something simple like "At this point we
should have enough support landed to turn on and start testing basic
display functionality" would be fine),

Reviewed-by: Matt Roper <matthew.d.roper@intel.com>


Matt

On Fri, Oct 25, 2024 at 01:47:43PM -0700, Clint Taylor wrote:
> From: Haridhar Kalvala <haridhar.kalvala@intel.com>
> 
> Signed-off-by: Haridhar Kalvala <haridhar.kalvala@intel.com>
> Signed-off-by: Clint Taylor <Clinton.A.Taylor@intel.com>
> ---
>  drivers/gpu/drm/xe/xe_pci.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_pci.c b/drivers/gpu/drm/xe/xe_pci.c
> index 4085bb3b6550..6f73a243c24c 100644
> --- a/drivers/gpu/drm/xe/xe_pci.c
> +++ b/drivers/gpu/drm/xe/xe_pci.c
> @@ -352,7 +352,7 @@ static const struct xe_device_desc bmg_desc = {
>  
>  static const struct xe_device_desc ptl_desc = {
>  	PLATFORM(PANTHERLAKE),
> -	.has_display = false,
> +	.has_display = true,
>  	.require_force_probe = true,
>  };
>  
> -- 
> 2.25.1
> 

-- 
Matt Roper
Graphics Software Engineer
Linux GPU Platform Enablement
Intel Corporation

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

end of thread, other threads:[~2024-10-28 19:17 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-25 20:47 [PATCH v5 00/11] drm/i915/xe3lpd: ptl display patches Clint Taylor
2024-10-25 20:47 ` [PATCH v5 01/11] drm/i915/xe3lpd: Update pmdemand programming Clint Taylor
2024-10-28 15:19   ` Govindapillai, Vinod
2024-10-28 16:25     ` Gustavo Sousa
2024-10-25 20:47 ` [PATCH v5 02/11] drm/i915/xe3lpd: Disable HDCP Line Rekeying for Xe3 Clint Taylor
2024-10-25 23:13   ` Matt Roper
2024-10-25 20:47 ` [PATCH v5 03/11] drm/i915/xe3lpd: Add check to see if edp over type c is allowed Clint Taylor
2024-10-25 20:47 ` [PATCH v5 04/11] drm/i915/ptl: Define IS_PANTHERLAKE macro Clint Taylor
2024-10-25 20:47 ` [PATCH v5 05/11] drm/i915/cx0: Extend C10 check to PTL Clint Taylor
2024-10-25 20:47 ` [PATCH v5 06/11] drm/i915/cx0: Remove bus reset after every c10 transaction Clint Taylor
2024-10-28 16:30   ` Gustavo Sousa
2024-10-25 20:47 ` [PATCH v5 07/11] drm/i915/xe3lpd: Move async flip bit to PLANE_SURF register Clint Taylor
2024-10-25 20:47 ` [PATCH v5 08/11] drm/i915/xe3: Underrun recovery does not exist post Xe2 Clint Taylor
2024-10-25 20:47 ` [PATCH v5 09/11] drm/i915/display/xe3: disable x-tiled framebuffers Clint Taylor
2024-10-25 20:47 ` [PATCH v5 10/11] drm/i915/xe3lpd: Power request asserting/deasserting Clint Taylor
2024-10-28 16:39   ` Gustavo Sousa
2024-10-25 20:47 ` [PATCH v5 11/11] drm/xe/ptl: Enable PTL display Clint Taylor
2024-10-28 18:45   ` Saarinen, Jani
2024-10-28 19:12   ` Rodrigo Vivi
2024-10-28 19:17   ` Matt Roper
2024-10-25 21:36 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915/xe3lpd: ptl display patches (rev5) Patchwork
2024-10-25 21:36 ` ✗ Fi.CI.SPARSE: " Patchwork
2024-10-25 21:36 ` ✓ Fi.CI.BAT: success " Patchwork

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox