Add intel_pps_backlight_initial_pipe() and move the VLV/CHV initial
backlight pipe logic there, hiding the PPS pipe details inside PPS code.

Signed-off-by: Jani Nikula <[email protected]>
---
 drivers/gpu/drm/i915/display/intel_dp.c  | 18 ++----------------
 drivers/gpu/drm/i915/display/intel_pps.c | 24 ++++++++++++++++++++++++
 drivers/gpu/drm/i915/display/intel_pps.h |  1 +
 3 files changed, 27 insertions(+), 16 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_dp.c 
b/drivers/gpu/drm/i915/display/intel_dp.c
index d1c02de97f5b..e7e0f574d66e 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -6602,23 +6602,9 @@ intel_edp_add_properties(struct intel_dp *intel_dp)
 static void intel_edp_backlight_setup(struct intel_dp *intel_dp,
                                      struct intel_connector *connector)
 {
-       struct drm_i915_private *i915 = dp_to_i915(intel_dp);
-       enum pipe pipe = INVALID_PIPE;
-
-       if (IS_VALLEYVIEW(i915) || IS_CHERRYVIEW(i915)) {
-               /*
-                * Figure out the current pipe for the initial backlight setup.
-                * If the current pipe isn't valid, try the PPS pipe, and if 
that
-                * fails just assume pipe A.
-                */
-               pipe = vlv_active_pipe(intel_dp);
-
-               if (pipe != PIPE_A && pipe != PIPE_B)
-                       pipe = intel_dp->pps.pps_pipe;
+       enum pipe pipe;
 
-               if (pipe != PIPE_A && pipe != PIPE_B)
-                       pipe = PIPE_A;
-       }
+       pipe = intel_pps_backlight_initial_pipe(intel_dp);
 
        intel_backlight_setup(connector, pipe);
 }
diff --git a/drivers/gpu/drm/i915/display/intel_pps.c 
b/drivers/gpu/drm/i915/display/intel_pps.c
index a7f7e5e1f3aa..5382a1a0dbac 100644
--- a/drivers/gpu/drm/i915/display/intel_pps.c
+++ b/drivers/gpu/drm/i915/display/intel_pps.c
@@ -1071,6 +1071,30 @@ void intel_pps_off(struct intel_dp *intel_dp)
                intel_pps_off_unlocked(intel_dp);
 }
 
+enum pipe intel_pps_backlight_initial_pipe(struct intel_dp *intel_dp)
+{
+       struct intel_display *display = to_intel_display(intel_dp);
+       struct drm_i915_private *i915 = to_i915(display->drm);
+       enum pipe pipe = INVALID_PIPE;
+
+       if (IS_VALLEYVIEW(i915) || IS_CHERRYVIEW(i915)) {
+               /*
+                * Figure out the current pipe for the initial backlight setup.
+                * If the current pipe isn't valid, try the PPS pipe, and if 
that
+                * fails just assume pipe A.
+                */
+               pipe = vlv_active_pipe(intel_dp);
+
+               if (pipe != PIPE_A && pipe != PIPE_B)
+                       pipe = intel_dp->pps.pps_pipe;
+
+               if (pipe != PIPE_A && pipe != PIPE_B)
+                       pipe = PIPE_A;
+       }
+
+       return pipe;
+}
+
 /* Enable backlight in the panel power control. */
 void intel_pps_backlight_on(struct intel_dp *intel_dp)
 {
diff --git a/drivers/gpu/drm/i915/display/intel_pps.h 
b/drivers/gpu/drm/i915/display/intel_pps.h
index 42f0377a93a8..7a23c9d9aebf 100644
--- a/drivers/gpu/drm/i915/display/intel_pps.h
+++ b/drivers/gpu/drm/i915/display/intel_pps.h
@@ -23,6 +23,7 @@ intel_wakeref_t intel_pps_unlock(struct intel_dp *intel_dp, 
intel_wakeref_t wake
 #define with_intel_pps_lock(dp, wf)                                            
\
        for ((wf) = intel_pps_lock(dp); (wf); (wf) = intel_pps_unlock((dp), 
(wf)))
 
+enum pipe intel_pps_backlight_initial_pipe(struct intel_dp *intel_dp);
 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);
-- 
2.39.2

Reply via email to