summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorImre Deak <imre.deak@intel.com>2026-01-14 19:22:24 +0300
committerImre Deak <imre.deak@intel.com>2026-01-15 21:19:04 +0300
commit15f908bce5d90fcfbc0599e426530cc10e9dfef3 (patch)
tree4031044404940ce7b0655392a0c04f95fc4caf5f
parente941eb107847f7a910e309799cdde49493b857cf (diff)
downloadlinux-15f908bce5d90fcfbc0599e426530cc10e9dfef3.tar.xz
drm/i915/dp: Factor out intel_dp_dsc_min_slice_count()
Factor out intel_dp_dsc_min_slice_count() for making intel_dp_dsc_get_slice_count() more readable and also to prepare for a follow-up change unifying the eDP and DP slice count/config computation. Reviewed-by: Jouni Högander <jouni.hogander@intel.com> Signed-off-by: Imre Deak <imre.deak@intel.com> Link: https://patch.msgid.link/20260114162232.92731-8-imre.deak@intel.com
-rw-r--r--drivers/gpu/drm/i915/display/intel_dp.c23
1 files changed, 17 insertions, 6 deletions
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 3a12156cd6e5..4455d0a2e59c 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -959,14 +959,11 @@ u32 get_max_compressed_bpp_with_joiner(struct intel_display *display,
return max_bpp;
}
-u8 intel_dp_dsc_get_slice_count(const struct intel_connector *connector,
- int mode_clock, int mode_hdisplay,
- int num_joined_pipes)
+static int intel_dp_dsc_min_slice_count(const struct intel_connector *connector,
+ int mode_clock, int mode_hdisplay)
{
struct intel_display *display = to_intel_display(connector);
- u32 sink_slice_count_mask =
- drm_dp_dsc_sink_slice_count_mask(connector->dp.dsc_dpcd, false);
- u8 min_slice_count, i;
+ u8 min_slice_count;
int max_slice_width;
int tp_rgb_yuv444;
int tp_yuv422_420;
@@ -1025,6 +1022,20 @@ u8 intel_dp_dsc_get_slice_count(const struct intel_connector *connector,
DIV_ROUND_UP(mode_hdisplay,
max_slice_width));
+ return min_slice_count;
+}
+
+u8 intel_dp_dsc_get_slice_count(const struct intel_connector *connector,
+ int mode_clock, int mode_hdisplay,
+ int num_joined_pipes)
+{
+ struct intel_display *display = to_intel_display(connector);
+ int min_slice_count =
+ intel_dp_dsc_min_slice_count(connector, mode_clock, mode_hdisplay);
+ u32 sink_slice_count_mask =
+ drm_dp_dsc_sink_slice_count_mask(connector->dp.dsc_dpcd, false);
+ int i;
+
/* Find the closest match to the valid slice count values */
for (i = 0; i < ARRAY_SIZE(valid_dsc_slicecount); i++) {
u8 test_slice_count = valid_dsc_slicecount[i] * num_joined_pipes;