drm/i915/dp_mst: Use output_format to get the final link bpp
authorAnkit Nautiyal <ankit.k.nautiyal@intel.com>
Thu, 17 Aug 2023 14:24:44 +0000 (19:54 +0530)
committerAnkit Nautiyal <ankit.k.nautiyal@intel.com>
Fri, 18 Aug 2023 04:12:15 +0000 (09:42 +0530)
The final link bpp used to calculate the m_n values depend on the
output_format. Though the output_format is set to RGB for MST case and
the link bpp will be same as the pipe bpp, for the sake of semantics,
lets calculate the m_n values with the link bpp, instead of pipe_bpp.

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/20230817142459.89764-4-ankit.k.nautiyal@intel.com
drivers/gpu/drm/i915/display/intel_dp.c
drivers/gpu/drm/i915/display/intel_dp.h
drivers/gpu/drm/i915/display/intel_dp_mst.c

index ebf216596fddeb8d1557b95235f85fc5fe54ff15..a8b67805f3d412afce99f090a1b900adfc155bd3 100644 (file)
@@ -965,7 +965,7 @@ int intel_dp_min_bpp(enum intel_output_format output_format)
                return 8 * 3;
 }
 
-static int intel_dp_output_bpp(enum intel_output_format output_format, int bpp)
+int intel_dp_output_bpp(enum intel_output_format output_format, int bpp)
 {
        /*
         * bpp value was assumed to RGB format. And YCbCr 4:2:0 output
index bb4f976af296b7e25318c45e57cdb3d53cb8bde5..7dd015385054afb49a24a92911252aa1a88d7528 100644 (file)
@@ -144,5 +144,6 @@ void intel_dp_pcon_dsc_configure(struct intel_dp *intel_dp,
 void intel_dp_phy_test(struct intel_encoder *encoder);
 
 void intel_dp_wait_source_oui(struct intel_dp *intel_dp);
+int intel_dp_output_bpp(enum intel_output_format output_format, int bpp);
 
 #endif /* __INTEL_DP_H__ */
index aa8d9d5706266a670bbda6c30548d7b3662446ec..ef5375eb923ee750adeee31ad24583d089e8cf58 100644 (file)
@@ -155,6 +155,7 @@ static int intel_dp_mst_compute_link_config(struct intel_encoder *encoder,
        const struct drm_display_mode *adjusted_mode =
                &crtc_state->hw.adjusted_mode;
        int slots = -EINVAL;
+       int link_bpp;
 
        slots = intel_dp_mst_find_vcpi_slots_for_bpp(encoder, crtc_state, limits->max_bpp,
                                                     limits->min_bpp, limits,
@@ -163,7 +164,9 @@ static int intel_dp_mst_compute_link_config(struct intel_encoder *encoder,
        if (slots < 0)
                return slots;
 
-       intel_link_compute_m_n(crtc_state->pipe_bpp,
+       link_bpp = intel_dp_output_bpp(crtc_state->output_format, crtc_state->pipe_bpp);
+
+       intel_link_compute_m_n(link_bpp,
                               crtc_state->lane_count,
                               adjusted_mode->crtc_clock,
                               crtc_state->port_clock,