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
