]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/i915/dp: Use num_joined_pipes in bigjoiner_bw_max_bpp
authorAnkit Nautiyal <ankit.k.nautiyal@intel.com>
Mon, 30 Sep 2024 16:35:44 +0000 (22:05 +0530)
committerAnkit Nautiyal <ankit.k.nautiyal@intel.com>
Tue, 1 Oct 2024 09:04:55 +0000 (14:34 +0530)
Streamline the helper to get max compressed bpp for bigjoiner case, to
effectively use num of pipes joined. This will make the addition of
ultrajoiner limitations easier and improve redability.

Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240930163549.416410-9-ankit.k.nautiyal@intel.com
drivers/gpu/drm/i915/display/intel_dp.c

index 29f8cb9c4dd00e8e74f7377e8c7cd467682c4e6b..a85527a55dc06c5ebc04399ac0d1d35c8051a1e7 100644 (file)
@@ -864,16 +864,21 @@ static int bigjoiner_interface_bits(struct intel_display *display)
        return DISPLAY_VER(display) >= 14 ? 36 : 24;
 }
 
-static u32 bigjoiner_bw_max_bpp(struct intel_display *display, u32 mode_clock)
+static u32 bigjoiner_bw_max_bpp(struct intel_display *display, u32 mode_clock,
+                               int num_joined_pipes)
 {
        u32 max_bpp;
        /* With bigjoiner multiple dsc engines are used in parallel so PPC is 2 */
        int ppc = 2;
+       int num_big_joiners = num_joined_pipes / 2;
 
        max_bpp = display->cdclk.max_cdclk_freq * ppc * bigjoiner_interface_bits(display) /
                  intel_dp_mode_to_fec_clock(mode_clock);
 
+       max_bpp *= num_big_joiners;
+
        return max_bpp;
+
 }
 
 static u32 small_joiner_ram_max_bpp(struct intel_display *display,
@@ -903,7 +908,8 @@ u32 get_max_compressed_bpp_with_joiner(struct drm_i915_private *i915,
                                                            num_joined_pipes);
 
        if (num_joined_pipes == 2) {
-               u32 max_bpp_bigjoiner = bigjoiner_bw_max_bpp(display, mode_clock);
+               u32 max_bpp_bigjoiner = bigjoiner_bw_max_bpp(display, mode_clock,
+                                                            num_joined_pipes);
 
                return min(max_bpp_small_joiner_ram, max_bpp_bigjoiner);
        }