]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/i915/dp: Factor out align_max_sink_dsc_input_bpp()
authorImre Deak <imre.deak@intel.com>
Mon, 22 Dec 2025 15:35:30 +0000 (17:35 +0200)
committerImre Deak <imre.deak@intel.com>
Tue, 13 Jan 2026 16:42:12 +0000 (18:42 +0200)
Factor out align_max_sink_dsc_input_bpp(), also used later for computing
the maximum DSC input BPP limit.

Reviewed-by: Vinod Govindapillai <vinod.govindapillai@intel.com>
Reviewed-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Imre Deak <imre.deak@intel.com>
Link: https://patch.msgid.link/20251222153547.713360-4-imre.deak@intel.com
drivers/gpu/drm/i915/display/intel_dp.c

index cc0549b41045b640e47a9a0531e9a51d5a2fb589..5b08d308ead1b6368b2cd32a7888a48d6476fd30 100644 (file)
@@ -1894,12 +1894,27 @@ int intel_dp_dsc_max_src_input_bpc(struct intel_display *display)
        return intel_dp_dsc_min_src_input_bpc();
 }
 
+static int align_max_sink_dsc_input_bpp(const struct intel_connector *connector,
+                                       int max_pipe_bpp)
+{
+       u8 dsc_bpc[3];
+       int num_bpc;
+       int i;
+
+       num_bpc = drm_dp_dsc_sink_supported_input_bpcs(connector->dp.dsc_dpcd,
+                                                      dsc_bpc);
+       for (i = 0; i < num_bpc; i++) {
+               if (dsc_bpc[i] * 3 <= max_pipe_bpp)
+                       return dsc_bpc[i] * 3;
+       }
+
+       return 0;
+}
+
 int intel_dp_dsc_compute_max_bpp(const struct intel_connector *connector,
                                 u8 max_req_bpc)
 {
        struct intel_display *display = to_intel_display(connector);
-       int i, num_bpc;
-       u8 dsc_bpc[3] = {};
        int dsc_max_bpc;
 
        dsc_max_bpc = intel_dp_dsc_max_src_input_bpc(display);
@@ -1909,14 +1924,7 @@ int intel_dp_dsc_compute_max_bpp(const struct intel_connector *connector,
 
        dsc_max_bpc = min(dsc_max_bpc, max_req_bpc);
 
-       num_bpc = drm_dp_dsc_sink_supported_input_bpcs(connector->dp.dsc_dpcd,
-                                                      dsc_bpc);
-       for (i = 0; i < num_bpc; i++) {
-               if (dsc_max_bpc >= dsc_bpc[i])
-                       return dsc_bpc[i] * 3;
-       }
-
-       return 0;
+       return align_max_sink_dsc_input_bpp(connector, dsc_max_bpc * 3);
 }
 
 static int intel_dp_source_dsc_version_minor(struct intel_display *display)