[Intel-xe] [PATCH 14/37] drm/xe: Add intel_pps support too
Rodrigo Vivi
rodrigo.vivi at intel.com
Thu Jan 12 22:25:15 UTC 2023
From: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
I misguidedly believed that this was i915 only due to support on old
platforms, but if I look at intel_num_pps() the code is valid
on all gen12+ platforms too.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
Cc: Matthew Brost <matthew.brost at intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi at intel.com>
---
drivers/gpu/drm/i915/display/intel_pps.c | 14 ++++++-
drivers/gpu/drm/xe/Makefile | 2 +-
drivers/gpu/drm/xe/display/intel_pps.c | 1 +
drivers/gpu/drm/xe/display/intel_pps_stub.c | 43 ---------------------
4 files changed, 14 insertions(+), 46 deletions(-)
create mode 120000 drivers/gpu/drm/xe/display/intel_pps.c
delete mode 100644 drivers/gpu/drm/xe/display/intel_pps_stub.c
diff --git a/drivers/gpu/drm/i915/display/intel_pps.c b/drivers/gpu/drm/i915/display/intel_pps.c
index 7b21438edd9b..9f3675456913 100644
--- a/drivers/gpu/drm/i915/display/intel_pps.c
+++ b/drivers/gpu/drm/i915/display/intel_pps.c
@@ -3,7 +3,6 @@
* Copyright © 2020 Intel Corporation
*/
-#include "g4x_dp.h"
#include "i915_drv.h"
#include "i915_reg.h"
#include "intel_de.h"
@@ -16,6 +15,11 @@
#include "intel_pps.h"
#include "intel_quirks.h"
+#ifdef I915
+#include "g4x_dp.h"
+#include "intel_dpio_phy.h"
+#endif
+
static void vlv_steal_power_sequencer(struct drm_i915_private *dev_priv,
enum pipe pipe);
@@ -81,6 +85,7 @@ intel_wakeref_t intel_pps_unlock(struct intel_dp *intel_dp,
return 0;
}
+#ifdef I915
static void
vlv_power_sequencer_kick(struct intel_dp *intel_dp)
{
@@ -265,6 +270,7 @@ bxt_power_sequencer_idx(struct intel_dp *intel_dp)
return pps_idx;
}
+#endif
typedef bool (*pps_check)(struct drm_i915_private *dev_priv, int pps_idx);
@@ -478,16 +484,18 @@ static void intel_pps_get_registers(struct intel_dp *intel_dp,
struct pps_registers *regs)
{
struct drm_i915_private *dev_priv = dp_to_i915(intel_dp);
- int pps_idx;
+ int pps_idx = 0;
memset(regs, 0, sizeof(*regs));
+#ifdef I915
if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
pps_idx = vlv_power_sequencer_pipe(intel_dp);
else if (IS_GEMINILAKE(dev_priv) || IS_BROXTON(dev_priv))
pps_idx = bxt_power_sequencer_idx(intel_dp);
else
pps_idx = intel_dp->pps.pps_idx;
+#endif
regs->pp_ctrl = PP_CONTROL(pps_idx);
regs->pp_stat = PP_STATUS(pps_idx);
@@ -1684,6 +1692,7 @@ void assert_pps_unlocked(struct drm_i915_private *dev_priv, enum pipe pipe)
return;
if (HAS_PCH_SPLIT(dev_priv)) {
+#ifdef I915
u32 port_sel;
pp_reg = PP_CONTROL(0);
@@ -1710,6 +1719,7 @@ void assert_pps_unlocked(struct drm_i915_private *dev_priv, enum pipe pipe)
/* presumably write lock depends on pipe, not port select */
pp_reg = PP_CONTROL(pipe);
panel_pipe = pipe;
+#endif
} else {
u32 port_sel;
diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile
index 5db7a811efdf..36996fe7d7a4 100644
--- a/drivers/gpu/drm/xe/Makefile
+++ b/drivers/gpu/drm/xe/Makefile
@@ -167,7 +167,7 @@ xe-$(CONFIG_DRM_XE_DISPLAY) += \
display/intel_opregion.o \
display/intel_panel.o \
display/intel_pipe_crc.o \
- display/intel_pps_stub.o \
+ display/intel_pps.o \
display/intel_psr.o \
display/intel_qp_tables.o \
display/intel_quirks.o \
diff --git a/drivers/gpu/drm/xe/display/intel_pps.c b/drivers/gpu/drm/xe/display/intel_pps.c
new file mode 120000
index 000000000000..ce8eef664f23
--- /dev/null
+++ b/drivers/gpu/drm/xe/display/intel_pps.c
@@ -0,0 +1 @@
+../../i915/display/intel_pps.c
\ No newline at end of file
diff --git a/drivers/gpu/drm/xe/display/intel_pps_stub.c b/drivers/gpu/drm/xe/display/intel_pps_stub.c
deleted file mode 100644
index 65a8174165f9..000000000000
--- a/drivers/gpu/drm/xe/display/intel_pps_stub.c
+++ /dev/null
@@ -1,43 +0,0 @@
-#include "intel_pps.h"
-#include "intel_display.h"
-
-intel_wakeref_t intel_pps_lock(struct intel_dp *intel_dp)
-{
- return 0;
-}
-
-intel_wakeref_t intel_pps_unlock(struct intel_dp *intel_dp, intel_wakeref_t wakeref)
-{
- return wakeref;
-}
-
-void intel_pps_backlight_on(struct intel_dp *intel_dp) {}
-void intel_pps_backlight_off(struct intel_dp *intel_dp) {}
-void intel_pps_backlight_power(struct intel_connector *connector, bool enable) {}
-
-bool intel_pps_vdd_on_unlocked(struct intel_dp *intel_dp) { return false; }
-void intel_pps_vdd_off_unlocked(struct intel_dp *intel_dp, bool sync) {}
-void intel_pps_on_unlocked(struct intel_dp *intel_dp) {}
-void intel_pps_off_unlocked(struct intel_dp *intel_dp) {}
-void intel_pps_check_power_unlocked(struct intel_dp *intel_dp) {}
-
-void intel_pps_vdd_on(struct intel_dp *intel_dp) {}
-void intel_pps_on(struct intel_dp *intel_dp) {}
-void intel_pps_off(struct intel_dp *intel_dp) {}
-void intel_pps_vdd_off_sync(struct intel_dp *intel_dp) {}
-bool intel_pps_have_panel_power_or_vdd(struct intel_dp *intel_dp) { return false; }
-void intel_pps_wait_power_cycle(struct intel_dp *intel_dp) {}
-
-bool intel_pps_init(struct intel_dp *intel_dp) { return false; }
-void intel_pps_init_late(struct intel_dp *intel_dp) {}
-void intel_pps_encoder_reset(struct intel_dp *intel_dp) {}
-void intel_pps_reset_all(struct drm_i915_private *i915) {}
-
-void vlv_pps_init(struct intel_encoder *encoder,
- const struct intel_crtc_state *crtc_state) {}
-
-void intel_pps_unlock_regs_wa(struct drm_i915_private *i915) {}
-void intel_pps_setup(struct drm_i915_private *i915) {}
-
-void assert_pps_unlocked(struct drm_i915_private *i915, enum pipe pipe) {}
-
--
2.38.1
More information about the Intel-xe
mailing list