Commit 939bc3e4 authored by Ankit Nautiyal's avatar Ankit Nautiyal
Browse files

drm/i915/dp: Return early if dsc is required but not supported



Currently, when bandwidth is insufficient for a given mode, we attempt
to use DSC. This is indicated by a debug print, followed by a check for
DSC support.

The debug message states that we are trying DSC, but DSC might not be
supported, which can give an incorrect picture in the logs if we bail
out later.

Correct the order for both DP and DP MST to:
- Check if DSC is required and supported, and return early if DSC is
not supported.
- Print a debug message to indicate that DSC will be tried next.

Suggested-by: default avatarJani Nikula <jani.nikula@linux.intel.com>
Signed-off-by: default avatarAnkit Nautiyal <ankit.k.nautiyal@intel.com>
Reviewed-by: default avatarSuraj Kandpal <suraj.kandpal@intel.com>
Reviewed-by: default avatarJani Nikula <jani.nikula@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20250103031424.1732774-1-ankit.k.nautiyal@intel.com
parent 173876aa
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -2642,15 +2642,17 @@ intel_dp_compute_link_config(struct intel_encoder *encoder,
			dsc_needed = true;
	}

	if (dsc_needed && !intel_dp_supports_dsc(intel_dp, connector, pipe_config)) {
		drm_dbg_kms(display->drm, "DSC required but not available\n");
		return -EINVAL;
	}

	if (dsc_needed) {
		drm_dbg_kms(display->drm,
			    "Try DSC (fallback=%s, joiner=%s, force=%s)\n",
			    str_yes_no(ret), str_yes_no(joiner_needs_dsc),
			    str_yes_no(intel_dp->force_dsc_en));

		if (!intel_dp_supports_dsc(intel_dp, connector, pipe_config))
			return -EINVAL;

		if (!intel_dp_compute_config_limits(intel_dp, pipe_config,
						    respect_downstream_limits,
						    true,
+5 −2
Original line number Diff line number Diff line
@@ -633,14 +633,17 @@ static int mst_stream_compute_config(struct intel_encoder *encoder,
			dsc_needed = true;
	}

	if (dsc_needed && !intel_dp_supports_dsc(intel_dp, connector, pipe_config)) {
		drm_dbg_kms(display->drm, "DSC required but not available\n");
		return -EINVAL;
	}

	/* enable compression if the mode doesn't fit available BW */
	if (dsc_needed) {
		drm_dbg_kms(display->drm, "Try DSC (fallback=%s, joiner=%s, force=%s)\n",
			    str_yes_no(ret), str_yes_no(joiner_needs_dsc),
			    str_yes_no(intel_dp->force_dsc_en));

		if (!intel_dp_supports_dsc(intel_dp, connector, pipe_config))
			return -EINVAL;

		if (!mst_stream_compute_config_limits(intel_dp, connector,
						      pipe_config, true,