Commit f77d8675 authored by Imre Deak's avatar Imre Deak
Browse files

drm/i915/dp_mst: Enable fractional link bpps on MST if the bpp is forced



Enable using a fractional (compressed) link bpp on MST links, if this is
supported and the link bpp is forced. Fractional link bpps will be
enabled by default as a follow-up change after testing this
functionality within a set of commonly used MST monitors and docks/hubs
which support it.

Reviewed-by: default avatarAnkit Nautiyal <ankit.k.nautiyal@intel.com>
Signed-off-by: default avatarImre Deak <imre.deak@intel.com>
Link: https://lore.kernel.org/r/20250509180340.554867-13-imre.deak@intel.com
parent f7f46a80
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -2103,7 +2103,7 @@ static int dsc_src_max_compressed_bpp(struct intel_dp *intel_dp)
/*
 * Note: for pre-13 display you still need to check the validity of each step.
 */
static int intel_dp_dsc_bpp_step_x16(const struct intel_connector *connector)
int intel_dp_dsc_bpp_step_x16(const struct intel_connector *connector)
{
	struct intel_display *display = to_intel_display(connector);
	u8 incr = drm_dp_dsc_sink_bpp_incr(connector->dp.dsc_dpcd);
@@ -2111,6 +2111,10 @@ static int intel_dp_dsc_bpp_step_x16(const struct intel_connector *connector)
	if (DISPLAY_VER(display) < 14 || !incr)
		return fxp_q4_from_int(1);

	if (connector->mst.dp &&
	    !connector->link.force_bpp_x16 && !connector->mst.dp->force_dsc_fractional_bpp_en)
		return fxp_q4_from_int(1);

	/* fxp q4 */
	return fxp_q4_from_int(1) / incr;
}
+2 −0
Original line number Diff line number Diff line
@@ -212,4 +212,6 @@ int intel_dp_dsc_min_src_compressed_bpp(void);
int intel_dp_compute_min_hblank(struct intel_crtc_state *crtc_state,
				const struct drm_connector_state *conn_state);

int intel_dp_dsc_bpp_step_x16(const struct intel_connector *connector);

#endif /* __INTEL_DP_H__ */
+1 −1
Original line number Diff line number Diff line
@@ -499,7 +499,7 @@ static int mst_stream_dsc_compute_link_config(struct intel_dp *intel_dp,
		    "DSC Sink supported compressed min bpp " FXP_Q4_FMT " compressed max bpp " FXP_Q4_FMT "\n",
		    FXP_Q4_ARGS(min_compressed_bpp_x16), FXP_Q4_ARGS(max_compressed_bpp_x16));

	bpp_step_x16 = fxp_q4_from_int(1);
	bpp_step_x16 = intel_dp_dsc_bpp_step_x16(connector);

	max_compressed_bpp_x16 = min(max_compressed_bpp_x16, fxp_q4_from_int(crtc_state->pipe_bpp) - bpp_step_x16);