mirror of
https://github.com/torvalds/linux.git
synced 2026-06-01 11:03:43 +02:00
drm/i915/dp_mst: Disable DSC on ICL MST outputs
Enabling DSC on ICL MST outputs is broken leading to FIFO pipe / transcoder underruns and blank screen. On TGL+ platforms MST/DSC works - after fixing the known issues in [1] - however to make this work on ICL requires more work. So far DSC on MST probably didn't get enabled for users - due to an issue fixed by [2] - but after fixing that, DSC could get enabled, leading to a blank screen in ICL/MST configurations which do work atm. To prevent this disable MST/DSC on ICL for now. [1] https://lore.kernel.org/all/20231030155843.2251023-1-imre.deak@intel.com [2] https://lore.kernel.org/all/20231030155843.2251023-31-imre.deak@intel.com v2 (Ville): - Use DISPLAY_VER >= 12 instead of > 11. - Explain the ICL DSC issue in code comment. Cc: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Signed-off-by: Imre Deak <imre.deak@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20231102194434.2634786-1-imre.deak@intel.com
This commit is contained in:
parent
70a3cbbe62
commit
ab67821fa9
|
|
@ -43,6 +43,7 @@
|
|||
#include "intel_dpio_phy.h"
|
||||
#include "intel_hdcp.h"
|
||||
#include "intel_hotplug.h"
|
||||
#include "intel_vdsc.h"
|
||||
#include "skl_scaler.h"
|
||||
|
||||
static int intel_dp_mst_check_constraints(struct drm_i915_private *i915, int bpp,
|
||||
|
|
@ -297,6 +298,18 @@ static int intel_dp_mst_update_slots(struct intel_encoder *encoder,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static bool
|
||||
intel_dp_mst_dsc_source_support(const struct intel_crtc_state *crtc_state)
|
||||
{
|
||||
struct drm_i915_private *i915 = to_i915(crtc_state->uapi.crtc->dev);
|
||||
|
||||
/*
|
||||
* FIXME: Enabling DSC on ICL results in blank screen and FIFO pipe /
|
||||
* transcoder underruns, re-enable DSC after fixing this issue.
|
||||
*/
|
||||
return DISPLAY_VER(i915) >= 12 && intel_dsc_source_support(crtc_state);
|
||||
}
|
||||
|
||||
static bool
|
||||
intel_dp_mst_compute_config_limits(struct intel_dp *intel_dp,
|
||||
struct intel_crtc_state *crtc_state,
|
||||
|
|
@ -375,6 +388,9 @@ static int intel_dp_mst_compute_config(struct intel_encoder *encoder,
|
|||
str_yes_no(ret),
|
||||
str_yes_no(intel_dp->force_dsc_en));
|
||||
|
||||
if (!intel_dp_mst_dsc_source_support(pipe_config))
|
||||
return -EINVAL;
|
||||
|
||||
if (!intel_dp_mst_compute_config_limits(intel_dp,
|
||||
pipe_config,
|
||||
true,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user