drm/i915/pps: add vlv_pps_port_disable()
authorJani Nikula <jani.nikula@intel.com>
Wed, 18 Sep 2024 17:47:46 +0000 (20:47 +0300)
committerJani Nikula <jani.nikula@intel.com>
Thu, 19 Sep 2024 07:48:50 +0000 (10:48 +0300)
Add vlv_pps_port_disable() and move the VLV/CHV active pipe clear there
from intel_dp_link_down(), hiding the PPS pipe details inside PPS code.

Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/2546716a448205ca5af085cec9faeb5e5deac287.1726681620.git.jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
drivers/gpu/drm/i915/display/g4x_dp.c
drivers/gpu/drm/i915/display/intel_pps.c
drivers/gpu/drm/i915/display/intel_pps.h

index edbd654..e3db1cb 100644 (file)
@@ -477,12 +477,8 @@ intel_dp_link_down(struct intel_encoder *encoder,
 
        msleep(intel_dp->pps.panel_power_down_delay);
 
-       if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) {
-               intel_wakeref_t wakeref;
-
-               with_intel_pps_lock(intel_dp, wakeref)
-                       intel_dp->pps.vlv_active_pipe = INVALID_PIPE;
-       }
+       if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
+               vlv_pps_port_disable(encoder, old_crtc_state);
 }
 
 static void g4x_dp_audio_enable(struct intel_encoder *encoder,
index e4b17bd..465a555 100644 (file)
@@ -1272,6 +1272,18 @@ void vlv_pps_init(struct intel_encoder *encoder,
        pps_init_registers(intel_dp, true);
 }
 
+/* Call on all DP, not just eDP */
+void vlv_pps_port_disable(struct intel_encoder *encoder,
+                         const struct intel_crtc_state *crtc_state)
+{
+       struct intel_dp *intel_dp = enc_to_intel_dp(encoder);
+
+       intel_wakeref_t wakeref;
+
+       with_intel_pps_lock(intel_dp, wakeref)
+               intel_dp->pps.vlv_active_pipe = INVALID_PIPE;
+}
+
 static void pps_vdd_init(struct intel_dp *intel_dp)
 {
        struct intel_display *display = to_intel_display(intel_dp);
index 6509768..795e25c 100644 (file)
@@ -49,6 +49,8 @@ void vlv_pps_pipe_init(struct intel_dp *intel_dp);
 void vlv_pps_pipe_reset(struct intel_dp *intel_dp);
 void vlv_pps_init(struct intel_encoder *encoder,
                  const struct intel_crtc_state *crtc_state);
+void vlv_pps_port_disable(struct intel_encoder *encoder,
+                         const struct intel_crtc_state *crtc_state);
 
 void intel_pps_unlock_regs_wa(struct intel_display *display);
 void intel_pps_setup(struct intel_display *display);