intel_joiner_valid_primary_pipe_mask() implements joiner-specific
pipe validation logic and is only used by the joiner code.

Move the helper, along with find_consecutive_bits() dependency, from
intel_display.c to intel_joiner.c to keep joiner-related functionality
grouped together.

Signed-off-by: Ankit Nautiyal <[email protected]>
---
 drivers/gpu/drm/i915/display/intel_display.c | 47 --------------------
 drivers/gpu/drm/i915/display/intel_joiner.c  | 47 ++++++++++++++++++++
 drivers/gpu/drm/i915/display/intel_joiner.h  |  2 +
 3 files changed, 49 insertions(+), 47 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display.c 
b/drivers/gpu/drm/i915/display/intel_display.c
index f9233b5f5b6a..ea41432a86b7 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -192,53 +192,6 @@ is_trans_port_sync_mode(const struct intel_crtc_state 
*crtc_state)
                is_trans_port_sync_slave(crtc_state);
 }
 
-/*
- * Return a bitmask of all the start indices of consecutive bitfields of size
- * width in mask.
- */
-static unsigned long find_consecutive_bits(unsigned long mask, int width)
-{
-       unsigned long bit, out_mask = 0;
-
-       if (!width)
-               return 0;
-
-       for_each_set_bit(bit, &mask, BITS_PER_TYPE(mask)) {
-               /* For each set bit, see if the following bits are set also */
-               unsigned long bitfield = GENMASK(bit + width - 1, bit);
-
-               if ((mask & bitfield) == bitfield)
-                       out_mask |= BIT(bit);
-       }
-
-       return out_mask;
-}
-
-/*
- * Return a bitmask of all valid joiner primary pipes for joining
- * num_joined_pipes pipes. For completeness, return all valid pipes for
- * num_joined_pipes == 1.
- *
- * Return 0 if the platform doesn't support joining for the requested number of
- * pipes, or there are not enough consecutive pipes available.
- */
-u8 intel_joiner_valid_primary_pipe_mask(struct intel_display *display, int 
num_joined_pipes)
-{
-       if (num_joined_pipes == 1) {
-               return DISPLAY_RUNTIME_INFO(display)->pipe_mask;
-       } else if (num_joined_pipes == 2) {
-               if (!HAS_UNCOMPRESSED_JOINER(display) && 
!HAS_BIGJOINER(display))
-                       return 0;
-       } else if (num_joined_pipes == 4) {
-               if (!HAS_ULTRAJOINER(display))
-                       return 0;
-       } else {
-               return 0;
-       }
-
-       return find_consecutive_bits(DISPLAY_RUNTIME_INFO(display)->pipe_mask, 
num_joined_pipes);
-}
-
 static enum pipe joiner_primary_pipe(const struct intel_crtc_state *crtc_state)
 {
        return ffs(crtc_state->joiner_pipes) - 1;
diff --git a/drivers/gpu/drm/i915/display/intel_joiner.c 
b/drivers/gpu/drm/i915/display/intel_joiner.c
index 4c50f226199d..9dfe855f5668 100644
--- a/drivers/gpu/drm/i915/display/intel_joiner.c
+++ b/drivers/gpu/drm/i915/display/intel_joiner.c
@@ -55,3 +55,50 @@ bool intel_joiner_candidate_valid(struct intel_connector 
*connector,
 
        return intel_joiner_valid_primary_pipe_mask(display, num_joined_pipes);
 }
+
+/*
+ * Return a bitmask of all the start indices of consecutive bitfields of size
+ * width in mask.
+ */
+static unsigned long find_consecutive_bits(unsigned long mask, int width)
+{
+       unsigned long bit, out_mask = 0;
+
+       if (!width)
+               return 0;
+
+       for_each_set_bit(bit, &mask, BITS_PER_TYPE(mask)) {
+               /* For each set bit, see if the following bits are set also */
+               unsigned long bitfield = GENMASK(bit + width - 1, bit);
+
+               if ((mask & bitfield) == bitfield)
+                       out_mask |= BIT(bit);
+       }
+
+       return out_mask;
+}
+
+/*
+ * Return a bitmask of all valid joiner primary pipes for joining
+ * num_joined_pipes pipes. For completeness, return all valid pipes for
+ * num_joined_pipes == 1.
+ *
+ * Return 0 if the platform doesn't support joining for the requested number of
+ * pipes, or there are not enough consecutive pipes available.
+ */
+u8 intel_joiner_valid_primary_pipe_mask(struct intel_display *display, int 
num_joined_pipes)
+{
+       if (num_joined_pipes == 1) {
+               return DISPLAY_RUNTIME_INFO(display)->pipe_mask;
+       } else if (num_joined_pipes == 2) {
+               if (!HAS_UNCOMPRESSED_JOINER(display) && 
!HAS_BIGJOINER(display))
+                       return 0;
+       } else if (num_joined_pipes == 4) {
+               if (!HAS_ULTRAJOINER(display))
+                       return 0;
+       } else {
+               return 0;
+       }
+
+       return find_consecutive_bits(DISPLAY_RUNTIME_INFO(display)->pipe_mask, 
num_joined_pipes);
+}
diff --git a/drivers/gpu/drm/i915/display/intel_joiner.h 
b/drivers/gpu/drm/i915/display/intel_joiner.h
index 85e19ed1527f..962b9724c112 100644
--- a/drivers/gpu/drm/i915/display/intel_joiner.h
+++ b/drivers/gpu/drm/i915/display/intel_joiner.h
@@ -22,4 +22,6 @@ bool intel_joiner_candidate_valid(struct intel_connector 
*connector,
        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))
 
+u8 intel_joiner_valid_primary_pipe_mask(struct intel_display *display, int 
num_joined_pipes);
+
 #endif /* __INTEL_JOINER_H__ */
-- 
2.50.1

Reply via email to