Move intel_dp_joiner_candidate_valid() and the max hdisplay helper to
intel_joiner.c so any encoder can use them.
Replace the DP-only check with intel_joiner_connector_can_join(),
which uses connector type, allowing HDMI to be added later.

Signed-off-by: Ankit Nautiyal <[email protected]>
---
 .../drm/i915/display/intel_display_debugfs.c  |  6 ++--
 drivers/gpu/drm/i915/display/intel_dp.c       | 36 -------------------
 drivers/gpu/drm/i915/display/intel_dp.h       |  9 -----
 drivers/gpu/drm/i915/display/intel_joiner.c   | 35 ++++++++++++++++++
 drivers/gpu/drm/i915/display/intel_joiner.h   |  9 +++++
 5 files changed, 46 insertions(+), 49 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display_debugfs.c 
b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
index 3e302f23f247..7c0864ed0384 100644
--- a/drivers/gpu/drm/i915/display/intel_display_debugfs.c
+++ b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
@@ -43,6 +43,7 @@
 #include "intel_hdcp.h"
 #include "intel_hdmi.h"
 #include "intel_hotplug.h"
+#include "intel_joiner.h"
 #include "intel_link_bw.h"
 #include "intel_panel.h"
 #include "intel_pps.h"
@@ -1352,12 +1353,9 @@ void intel_connector_debugfs_add(struct intel_connector 
*connector)
                                    connector, &i915_dsc_fractional_bpp_fops);
        }
 
-       if ((connector_type == DRM_MODE_CONNECTOR_DisplayPort ||
-            connector_type == DRM_MODE_CONNECTOR_eDP) &&
-           intel_dp_has_joiner(intel_attached_dp(connector))) {
+       if (intel_joiner_connector_can_join(connector))
                debugfs_create_file("i915_joiner_force_enable", 0644, root,
                                    connector, &i915_joiner_fops);
-       }
 
        if (connector_type == DRM_MODE_CONNECTOR_DSI ||
            connector_type == DRM_MODE_CONNECTOR_eDP ||
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c 
b/drivers/gpu/drm/i915/display/intel_dp.c
index 49e4c77b5142..ba724c2e16f6 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -1243,11 +1243,6 @@ intel_dp_sink_format_valid(struct intel_connector 
*connector,
        }
 }
 
-int intel_dp_max_hdisplay_per_pipe(struct intel_display *display)
-{
-       return DISPLAY_VER(display) >= 30 ? 6144 : 5120;
-}
-
 bool intel_dp_has_dsc(const struct intel_connector *connector)
 {
        struct intel_display *display = to_intel_display(connector);
@@ -1268,18 +1263,6 @@ bool intel_dp_has_dsc(const struct intel_connector 
*connector)
        return true;
 }
 
-static
-bool intel_dp_can_join(struct intel_dp *intel_dp,
-                      int num_joined_pipes)
-{
-       struct intel_display *display = to_intel_display(intel_dp);
-
-       if (num_joined_pipes > 1 && !intel_dp_has_joiner(intel_dp))
-               return false;
-
-       return intel_joiner_valid_primary_pipe_mask(display, num_joined_pipes);
-}
-
 bool intel_dp_dotclk_valid(struct intel_display *display,
                           int target_clock,
                           int htotal,
@@ -7515,25 +7498,6 @@ int intel_dp_sdp_min_guardband(const struct 
intel_crtc_state *crtc_state,
        return sdp_guardband;
 }
 
-bool intel_dp_joiner_candidate_valid(struct intel_connector *connector,
-                                    int hdisplay,
-                                    int num_joined_pipes)
-{
-       struct intel_display *display = to_intel_display(connector);
-       struct intel_dp *intel_dp = intel_attached_dp(connector);
-
-       if (!intel_dp_can_join(intel_dp, num_joined_pipes))
-               return false;
-
-       if (hdisplay > num_joined_pipes * 
intel_dp_max_hdisplay_per_pipe(display))
-               return false;
-
-       if (connector->force_joined_pipes && connector->force_joined_pipes != 
num_joined_pipes)
-               return false;
-
-       return true;
-}
-
 u8 intel_dp_as_sdp_transmission_time(void)
 {
        /*
diff --git a/drivers/gpu/drm/i915/display/intel_dp.h 
b/drivers/gpu/drm/i915/display/intel_dp.h
index 17b6e270b05e..26d2313f2662 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.h
+++ b/drivers/gpu/drm/i915/display/intel_dp.h
@@ -221,20 +221,11 @@ int intel_dp_compute_config_late(struct intel_encoder 
*encoder,
                                 struct drm_connector_state *conn_state);
 int intel_dp_sdp_min_guardband(const struct intel_crtc_state *crtc_state,
                               bool assume_all_enabled);
-int intel_dp_max_hdisplay_per_pipe(struct intel_display *display);
 bool intel_dp_dotclk_valid(struct intel_display *display,
                           int target_clock,
                           int htotal,
                           int dsc_slice_count,
                           int num_joined_pipes);
-bool intel_dp_joiner_candidate_valid(struct intel_connector *connector,
-                                    int hdisplay,
-                                    int num_joined_pipes);
-
-#define for_each_joiner_candidate(__connector, __mode, __num_joined_pipes) \
-       for ((__num_joined_pipes) = 1; (__num_joined_pipes) <= 
(I915_MAX_PIPES); (__num_joined_pipes)++) \
-               for_each_if(intel_dp_joiner_candidate_valid(__connector, 
(__mode)->hdisplay, __num_joined_pipes))
-
 u8 intel_dp_as_sdp_transmission_time(void);
 
 int intel_dp_link_init(struct intel_dp *intel_dp);
diff --git a/drivers/gpu/drm/i915/display/intel_joiner.c 
b/drivers/gpu/drm/i915/display/intel_joiner.c
index b9d7c9bfd1a6..4c50f226199d 100644
--- a/drivers/gpu/drm/i915/display/intel_joiner.c
+++ b/drivers/gpu/drm/i915/display/intel_joiner.c
@@ -20,3 +20,38 @@ bool intel_joiner_needs_dsc(struct intel_display *display,
        return (!HAS_UNCOMPRESSED_JOINER(display) && num_joined_pipes == 2) ||
                num_joined_pipes == 4;
 }
+
+static
+int intel_joiner_max_hdisplay_per_pipe(struct intel_display *display)
+{
+       return DISPLAY_VER(display) >= 30 ? 6144 : 5120;
+}
+
+bool intel_joiner_connector_can_join(struct intel_connector *connector)
+{
+       switch (connector->base.connector_type) {
+       case DRM_MODE_CONNECTOR_DisplayPort:
+       case DRM_MODE_CONNECTOR_eDP:
+               return intel_dp_has_joiner(intel_attached_dp(connector));
+       default:
+               return false;
+       }
+}
+
+bool intel_joiner_candidate_valid(struct intel_connector *connector,
+                                 int hdisplay,
+                                 int num_joined_pipes)
+{
+       struct intel_display *display = to_intel_display(connector);
+
+       if (hdisplay > num_joined_pipes * 
intel_joiner_max_hdisplay_per_pipe(display))
+               return false;
+
+       if (connector->force_joined_pipes && connector->force_joined_pipes != 
num_joined_pipes)
+               return false;
+
+       if (num_joined_pipes > 1 && !intel_joiner_connector_can_join(connector))
+               return false;
+
+       return intel_joiner_valid_primary_pipe_mask(display, num_joined_pipes);
+}
diff --git a/drivers/gpu/drm/i915/display/intel_joiner.h 
b/drivers/gpu/drm/i915/display/intel_joiner.h
index a091eab2f86d..85e19ed1527f 100644
--- a/drivers/gpu/drm/i915/display/intel_joiner.h
+++ b/drivers/gpu/drm/i915/display/intel_joiner.h
@@ -8,9 +8,18 @@
 
 #include <linux/types.h>
 
+struct intel_connector;
 struct intel_display;
 
 bool intel_joiner_needs_dsc(struct intel_display *display,
                            int num_joined_pipes);
+bool intel_joiner_connector_can_join(struct intel_connector *connector);
+bool intel_joiner_candidate_valid(struct intel_connector *connector,
+                                 int hdisplay,
+                                 int num_joined_pipes);
+
+#define for_each_joiner_candidate(__connector, __mode, __num_joined_pipes) \
+       for ((__num_joined_pipes) = 1; (__num_joined_pipes) <= 
(I915_MAX_PIPES); (__num_joined_pipes)++) \
+               for_each_if(intel_joiner_candidate_valid(__connector, 
(__mode)->hdisplay, __num_joined_pipes))
 
 #endif /* __INTEL_JOINER_H__ */
-- 
2.50.1

Reply via email to