* [PATCH v3 00/11] drm/i915/xe3lpd: ptl display patches
@ 2024-10-24 22:07 Clint Taylor
2024-10-24 22:07 ` [PATCH v3 01/11] drm/i915/xe3lpd: Update pmdemand programming Clint Taylor
` (13 more replies)
0 siblings, 14 replies; 15+ messages in thread
From: Clint Taylor @ 2024-10-24 22:07 UTC (permalink / raw)
To: intel-gfx, intel-xe
This series builds on the previous v2, further enabling new features
for the platform. 1 patch drop at the request of the author.
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
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 (2):
drm/i915/xe3: Underrun recovery does not exist post Xe2
drm/i915/xe3lpd: Skip disabling VRR during modeset disable
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 | 10 +--
.../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 | 10 ++-
drivers/gpu/drm/i915/display/intel_pmdemand.c | 68 +++++++++++++------
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 +
16 files changed, 147 insertions(+), 40 deletions(-)
--
2.25.1
^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH v3 01/11] drm/i915/xe3lpd: Update pmdemand programming
2024-10-24 22:07 [PATCH v3 00/11] drm/i915/xe3lpd: ptl display patches Clint Taylor
@ 2024-10-24 22:07 ` Clint Taylor
2024-10-24 22:07 ` [PATCH v3 02/11] drm/i915/xe3lpd: Disable HDCP Line Rekeying for Xe3 Clint Taylor
` (12 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: Clint Taylor @ 2024-10-24 22:07 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
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 | 68 +++++++++++++------
drivers/gpu/drm/i915/display/intel_pmdemand.h | 4 +-
drivers/gpu/drm/i915/i915_reg.h | 1 +
3 files changed, 50 insertions(+), 23 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_pmdemand.c b/drivers/gpu/drm/i915/display/intel_pmdemand.c
index ceaf9e3147da..749905b35f2b 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,7 +479,8 @@ void intel_pmdemand_program_dbuf(struct drm_i915_private *i915,
}
static void
-intel_pmdemand_update_params(const struct intel_pmdemand_state *new,
+intel_pmdemand_update_params(struct drm_i915_private *i915,
+ const struct intel_pmdemand_state *new,
const struct intel_pmdemand_state *old,
u32 *reg1, u32 *reg2, bool serialized)
{
@@ -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(i915) >= 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
}
@@ -529,7 +555,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(i915, 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] 15+ messages in thread
* [PATCH v3 02/11] drm/i915/xe3lpd: Disable HDCP Line Rekeying for Xe3
2024-10-24 22:07 [PATCH v3 00/11] drm/i915/xe3lpd: ptl display patches Clint Taylor
2024-10-24 22:07 ` [PATCH v3 01/11] drm/i915/xe3lpd: Update pmdemand programming Clint Taylor
@ 2024-10-24 22:07 ` Clint Taylor
2024-10-24 22:07 ` [PATCH v3 03/11] drm/i915/xe3lpd: Add check to see if edp over type c is allowed Clint Taylor
` (11 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: Clint Taylor @ 2024-10-24 22:07 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.
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.
Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>
Signed-off-by: Matt Atwood <matthew.s.atwood@intel.com>
---
drivers/gpu/drm/i915/display/intel_hdcp.c | 10 +++++++---
drivers/gpu/drm/i915/i915_reg.h | 1 +
2 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_hdcp.c b/drivers/gpu/drm/i915/display/intel_hdcp.c
index ed6aa87403e2..70dfc9d4d6ac 100644
--- a/drivers/gpu/drm/i915/display/intel_hdcp.c
+++ b/drivers/gpu/drm/i915/display/intel_hdcp.c
@@ -43,14 +43,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] 15+ messages in thread
* [PATCH v3 03/11] drm/i915/xe3lpd: Add check to see if edp over type c is allowed
2024-10-24 22:07 [PATCH v3 00/11] drm/i915/xe3lpd: ptl display patches Clint Taylor
2024-10-24 22:07 ` [PATCH v3 01/11] drm/i915/xe3lpd: Update pmdemand programming Clint Taylor
2024-10-24 22:07 ` [PATCH v3 02/11] drm/i915/xe3lpd: Disable HDCP Line Rekeying for Xe3 Clint Taylor
@ 2024-10-24 22:07 ` Clint Taylor
2024-10-24 22:07 ` [PATCH v3 04/11] drm/i915/ptl: Define IS_PANTHERLAKE macro Clint Taylor
` (10 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: Clint Taylor @ 2024-10-24 22:07 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>
Reviewed-by: Mika Kahola <mika.kahola@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] 15+ messages in thread
* [PATCH v3 04/11] drm/i915/ptl: Define IS_PANTHERLAKE macro
2024-10-24 22:07 [PATCH v3 00/11] drm/i915/xe3lpd: ptl display patches Clint Taylor
` (2 preceding siblings ...)
2024-10-24 22:07 ` [PATCH v3 03/11] drm/i915/xe3lpd: Add check to see if edp over type c is allowed Clint Taylor
@ 2024-10-24 22:07 ` Clint Taylor
2024-10-24 22:07 ` [PATCH v3 05/11] drm/i915/cx0: Extend C10 check to PTL Clint Taylor
` (9 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: Clint Taylor @ 2024-10-24 22:07 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>
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 a66e5bb078cf..ca1ab5931e28 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -538,6 +538,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] 15+ messages in thread
* [PATCH v3 05/11] drm/i915/cx0: Extend C10 check to PTL
2024-10-24 22:07 [PATCH v3 00/11] drm/i915/xe3lpd: ptl display patches Clint Taylor
` (3 preceding siblings ...)
2024-10-24 22:07 ` [PATCH v3 04/11] drm/i915/ptl: Define IS_PANTHERLAKE macro Clint Taylor
@ 2024-10-24 22:07 ` Clint Taylor
2024-10-24 22:07 ` [PATCH v3 06/11] drm/i915/cx0: Remove bus reset after every c10 transaction Clint Taylor
` (8 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: Clint Taylor @ 2024-10-24 22:07 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 +++
| 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;
--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] 15+ messages in thread
* [PATCH v3 06/11] drm/i915/cx0: Remove bus reset after every c10 transaction
2024-10-24 22:07 [PATCH v3 00/11] drm/i915/xe3lpd: ptl display patches Clint Taylor
` (4 preceding siblings ...)
2024-10-24 22:07 ` [PATCH v3 05/11] drm/i915/cx0: Extend C10 check to PTL Clint Taylor
@ 2024-10-24 22:07 ` Clint Taylor
2024-10-24 22:07 ` [PATCH v3 07/11] drm/i915/xe3lpd: Move async flip bit to PLANE_SURF register Clint Taylor
` (7 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: Clint Taylor @ 2024-10-24 22:07 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>
Reviewed-by: Mika Kahola <mika.kahola@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..696cf5ed7403 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] 15+ messages in thread
* [PATCH v3 07/11] drm/i915/xe3lpd: Move async flip bit to PLANE_SURF register
2024-10-24 22:07 [PATCH v3 00/11] drm/i915/xe3lpd: ptl display patches Clint Taylor
` (5 preceding siblings ...)
2024-10-24 22:07 ` [PATCH v3 06/11] drm/i915/cx0: Remove bus reset after every c10 transaction Clint Taylor
@ 2024-10-24 22:07 ` Clint Taylor
2024-10-24 22:07 ` [PATCH v3 08/11] drm/i915/xe3: Underrun recovery does not exist post Xe2 Clint Taylor
` (6 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: Clint Taylor @ 2024-10-24 22:07 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] 15+ messages in thread
* [PATCH v3 08/11] drm/i915/xe3: Underrun recovery does not exist post Xe2
2024-10-24 22:07 [PATCH v3 00/11] drm/i915/xe3lpd: ptl display patches Clint Taylor
` (6 preceding siblings ...)
2024-10-24 22:07 ` [PATCH v3 07/11] drm/i915/xe3lpd: Move async flip bit to PLANE_SURF register Clint Taylor
@ 2024-10-24 22:07 ` Clint Taylor
2024-10-24 22:07 ` [PATCH v3 09/11] drm/i915/display/xe3: disable x-tiled framebuffers Clint Taylor
` (5 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: Clint Taylor @ 2024-10-24 22:07 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] 15+ messages in thread
* [PATCH v3 09/11] drm/i915/display/xe3: disable x-tiled framebuffers
2024-10-24 22:07 [PATCH v3 00/11] drm/i915/xe3lpd: ptl display patches Clint Taylor
` (7 preceding siblings ...)
2024-10-24 22:07 ` [PATCH v3 08/11] drm/i915/xe3: Underrun recovery does not exist post Xe2 Clint Taylor
@ 2024-10-24 22:07 ` Clint Taylor
2024-10-24 22:07 ` [PATCH v3 10/11] drm/i915/xe3lpd: Skip disabling VRR during modeset disable Clint Taylor
` (4 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: Clint Taylor @ 2024-10-24 22:07 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] 15+ messages in thread
* [PATCH v3 10/11] drm/i915/xe3lpd: Skip disabling VRR during modeset disable
2024-10-24 22:07 [PATCH v3 00/11] drm/i915/xe3lpd: ptl display patches Clint Taylor
` (8 preceding siblings ...)
2024-10-24 22:07 ` [PATCH v3 09/11] drm/i915/display/xe3: disable x-tiled framebuffers Clint Taylor
@ 2024-10-24 22:07 ` Clint Taylor
2024-10-24 22:07 ` [PATCH v3 11/11] drm/i915/xe3lpd: Power request asserting/deasserting Clint Taylor
` (3 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: Clint Taylor @ 2024-10-24 22:07 UTC (permalink / raw)
To: intel-gfx, intel-xe
From: Ravi Kumar Vodapalli <ravi.kumar.vodapalli@intel.com>
Spec does not request to disable VRR in the modeset disabling
sequence for DP and HDMI for xe3_lpd.
Bspec: 68848
Signed-off-by: Ravi Kumar Vodapalli <ravi.kumar.vodapalli@intel.com>
Signed-off-by: Matt Atwood <matthew.s.atwood@intel.com>
---
drivers/gpu/drm/i915/display/intel_display.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index c904f529d0c5..7a6961432616 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -1310,9 +1310,11 @@ static void intel_pre_plane_update(struct intel_atomic_state *state,
intel_atomic_get_new_crtc_state(state, crtc);
enum pipe pipe = crtc->pipe;
- if (intel_crtc_vrr_disabling(state, crtc)) {
- intel_vrr_disable(old_crtc_state);
- intel_crtc_update_active_timings(old_crtc_state, false);
+ if (DISPLAY_VER(dev_priv) < 30) {
+ if (intel_crtc_vrr_disabling(state, crtc)) {
+ intel_vrr_disable(old_crtc_state);
+ intel_crtc_update_active_timings(old_crtc_state, false);
+ }
}
if (audio_disabling(old_crtc_state, new_crtc_state))
--
2.25.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH v3 11/11] drm/i915/xe3lpd: Power request asserting/deasserting
2024-10-24 22:07 [PATCH v3 00/11] drm/i915/xe3lpd: ptl display patches Clint Taylor
` (9 preceding siblings ...)
2024-10-24 22:07 ` [PATCH v3 10/11] drm/i915/xe3lpd: Skip disabling VRR during modeset disable Clint Taylor
@ 2024-10-24 22:07 ` Clint Taylor
2024-10-24 22:46 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915/xe3lpd: ptl display patches (rev3) Patchwork
` (2 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: Clint Taylor @ 2024-10-24 22:07 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>
---
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] 15+ messages in thread
* ✗ Fi.CI.CHECKPATCH: warning for drm/i915/xe3lpd: ptl display patches (rev3)
2024-10-24 22:07 [PATCH v3 00/11] drm/i915/xe3lpd: ptl display patches Clint Taylor
` (10 preceding siblings ...)
2024-10-24 22:07 ` [PATCH v3 11/11] drm/i915/xe3lpd: Power request asserting/deasserting Clint Taylor
@ 2024-10-24 22:46 ` Patchwork
2024-10-24 22:46 ` ✗ Fi.CI.SPARSE: " Patchwork
2024-10-24 23:24 ` ✗ Fi.CI.BAT: failure " Patchwork
13 siblings, 0 replies; 15+ messages in thread
From: Patchwork @ 2024-10-24 22:46 UTC (permalink / raw)
To: Matt Atwood; +Cc: intel-gfx
== Series Details ==
Series: drm/i915/xe3lpd: ptl display patches (rev3)
URL : https://patchwork.freedesktop.org/series/140196/
State : warning
== Summary ==
Error: dim checkpatch failed
2b6994afd790 drm/i915/xe3lpd: Update pmdemand programming
-:78: ERROR:ELSE_AFTER_BRACE: else should follow close brace '}'
#78: FILE: drivers/gpu/drm/i915/display/intel_pmdemand.c:341:
+ }
+ else
total: 1 errors, 0 warnings, 0 checks, 161 lines checked
2d3f9dcda6bd drm/i915/xe3lpd: Disable HDCP Line Rekeying for Xe3
9c80de54bb94 drm/i915/xe3lpd: Add check to see if edp over type c is allowed
b0f22f4efabb drm/i915/ptl: Define IS_PANTHERLAKE macro
-:21: CHECK:MACRO_ARG_PRECEDENCE: Macro argument 'i915' may be better as '(i915)' to avoid precedence issues
#21: 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
f119df375600 drm/i915/cx0: Extend C10 check to PTL
614dc7fec38c drm/i915/cx0: Remove bus reset after every c10 transaction
504ac4424704 drm/i915/xe3lpd: Move async flip bit to PLANE_SURF register
afeaefeacd2a drm/i915/xe3: Underrun recovery does not exist post Xe2
3dc5b996b720 drm/i915/display/xe3: disable x-tiled framebuffers
ec96bb0d579a drm/i915/xe3lpd: Skip disabling VRR during modeset disable
4c999f7acc8d drm/i915/xe3lpd: Power request asserting/deasserting
-:95: ERROR:COMPLEX_MACRO: Macros with complex values should be enclosed in parentheses
#95: 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))
-:96: WARNING:LONG_LINE: line length of 102 exceeds 100 columns
#96: 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
^ permalink raw reply [flat|nested] 15+ messages in thread
* ✗ Fi.CI.SPARSE: warning for drm/i915/xe3lpd: ptl display patches (rev3)
2024-10-24 22:07 [PATCH v3 00/11] drm/i915/xe3lpd: ptl display patches Clint Taylor
` (11 preceding siblings ...)
2024-10-24 22:46 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915/xe3lpd: ptl display patches (rev3) Patchwork
@ 2024-10-24 22:46 ` Patchwork
2024-10-24 23:24 ` ✗ Fi.CI.BAT: failure " Patchwork
13 siblings, 0 replies; 15+ messages in thread
From: Patchwork @ 2024-10-24 22:46 UTC (permalink / raw)
To: Matt Atwood; +Cc: intel-gfx
== Series Details ==
Series: drm/i915/xe3lpd: ptl display patches (rev3)
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] 15+ messages in thread
* ✗ Fi.CI.BAT: failure for drm/i915/xe3lpd: ptl display patches (rev3)
2024-10-24 22:07 [PATCH v3 00/11] drm/i915/xe3lpd: ptl display patches Clint Taylor
` (12 preceding siblings ...)
2024-10-24 22:46 ` ✗ Fi.CI.SPARSE: " Patchwork
@ 2024-10-24 23:24 ` Patchwork
13 siblings, 0 replies; 15+ messages in thread
From: Patchwork @ 2024-10-24 23:24 UTC (permalink / raw)
To: Matt Atwood; +Cc: intel-gfx
[-- Attachment #1: Type: text/plain, Size: 4529 bytes --]
== Series Details ==
Series: drm/i915/xe3lpd: ptl display patches (rev3)
URL : https://patchwork.freedesktop.org/series/140196/
State : failure
== Summary ==
CI Bug Log - changes from CI_DRM_15592 -> Patchwork_140196v3
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with Patchwork_140196v3 absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in Patchwork_140196v3, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
to document this new failure mode, which will reduce false positives in CI.
External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140196v3/index.html
Participating hosts (45 -> 45)
------------------------------
Additional (1): fi-skl-6600u
Missing (1): fi-snb-2520m
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in Patchwork_140196v3:
### IGT changes ###
#### Possible regressions ####
* igt@gem_exec_fence@basic-wait:
- bat-rpls-4: [PASS][1] -> [DMESG-WARN][2] +1 other test dmesg-warn
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15592/bat-rpls-4/igt@gem_exec_fence@basic-wait.html
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140196v3/bat-rpls-4/igt@gem_exec_fence@basic-wait.html
Known issues
------------
Here are the changes found in Patchwork_140196v3 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@gem_huc_copy@huc-copy:
- fi-skl-6600u: NOTRUN -> [SKIP][3] ([i915#2190])
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140196v3/fi-skl-6600u/igt@gem_huc_copy@huc-copy.html
* igt@gem_lmem_swapping@random-engines:
- fi-skl-6600u: NOTRUN -> [SKIP][4] ([i915#4613]) +3 other tests skip
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140196v3/fi-skl-6600u/igt@gem_lmem_swapping@random-engines.html
* igt@i915_selftest@live:
- bat-mtlp-8: [PASS][5] -> [ABORT][6] ([i915#12216]) +1 other test abort
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15592/bat-mtlp-8/igt@i915_selftest@live.html
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140196v3/bat-mtlp-8/igt@i915_selftest@live.html
* igt@kms_dsc@dsc-basic:
- fi-skl-6600u: NOTRUN -> [SKIP][7] +9 other tests skip
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140196v3/fi-skl-6600u/igt@kms_dsc@dsc-basic.html
#### Possible fixes ####
* igt@i915_selftest@live:
- bat-arlh-2: [ABORT][8] ([i915#12133]) -> [PASS][9]
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15592/bat-arlh-2/igt@i915_selftest@live.html
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140196v3/bat-arlh-2/igt@i915_selftest@live.html
* igt@i915_selftest@live@workarounds:
- bat-arlh-2: [ABORT][10] ([i915#12061]) -> [PASS][11]
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15592/bat-arlh-2/igt@i915_selftest@live@workarounds.html
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140196v3/bat-arlh-2/igt@i915_selftest@live@workarounds.html
- bat-adlp-6: [INCOMPLETE][12] ([i915#9413]) -> [PASS][13] +1 other test pass
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15592/bat-adlp-6/igt@i915_selftest@live@workarounds.html
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140196v3/bat-adlp-6/igt@i915_selftest@live@workarounds.html
[i915#12061]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061
[i915#12133]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12133
[i915#12216]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12216
[i915#2190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2190
[i915#4613]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4613
[i915#9413]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9413
Build changes
-------------
* Linux: CI_DRM_15592 -> Patchwork_140196v3
CI-20190529: 20190529
CI_DRM_15592: df4c2f3aa67cea423504125ceb12ed46ac116cfb @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_8082: c8379ec8b26f3c21bae5473706b23da78bd26ffa @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
Patchwork_140196v3: df4c2f3aa67cea423504125ceb12ed46ac116cfb @ git://anongit.freedesktop.org/gfx-ci/linux
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140196v3/index.html
[-- Attachment #2: Type: text/html, Size: 5316 bytes --]
^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2024-10-24 23:24 UTC | newest]
Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-24 22:07 [PATCH v3 00/11] drm/i915/xe3lpd: ptl display patches Clint Taylor
2024-10-24 22:07 ` [PATCH v3 01/11] drm/i915/xe3lpd: Update pmdemand programming Clint Taylor
2024-10-24 22:07 ` [PATCH v3 02/11] drm/i915/xe3lpd: Disable HDCP Line Rekeying for Xe3 Clint Taylor
2024-10-24 22:07 ` [PATCH v3 03/11] drm/i915/xe3lpd: Add check to see if edp over type c is allowed Clint Taylor
2024-10-24 22:07 ` [PATCH v3 04/11] drm/i915/ptl: Define IS_PANTHERLAKE macro Clint Taylor
2024-10-24 22:07 ` [PATCH v3 05/11] drm/i915/cx0: Extend C10 check to PTL Clint Taylor
2024-10-24 22:07 ` [PATCH v3 06/11] drm/i915/cx0: Remove bus reset after every c10 transaction Clint Taylor
2024-10-24 22:07 ` [PATCH v3 07/11] drm/i915/xe3lpd: Move async flip bit to PLANE_SURF register Clint Taylor
2024-10-24 22:07 ` [PATCH v3 08/11] drm/i915/xe3: Underrun recovery does not exist post Xe2 Clint Taylor
2024-10-24 22:07 ` [PATCH v3 09/11] drm/i915/display/xe3: disable x-tiled framebuffers Clint Taylor
2024-10-24 22:07 ` [PATCH v3 10/11] drm/i915/xe3lpd: Skip disabling VRR during modeset disable Clint Taylor
2024-10-24 22:07 ` [PATCH v3 11/11] drm/i915/xe3lpd: Power request asserting/deasserting Clint Taylor
2024-10-24 22:46 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915/xe3lpd: ptl display patches (rev3) Patchwork
2024-10-24 22:46 ` ✗ Fi.CI.SPARSE: " Patchwork
2024-10-24 23:24 ` ✗ Fi.CI.BAT: failure " Patchwork
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox