[Intel-gfx] [PATCH v2 09/12] drm/i915/dp: Prevent link training fallback on disconnected port
Ville Syrjälä
ville.syrjala at linux.intel.com
Thu May 4 14:54:44 UTC 2023
On Thu, May 04, 2023 at 02:10:45AM +0300, Imre Deak wrote:
> Prevent downgrading the link training maximum lane count/rate if the
> sink is disconnected - and so the link training failure is expected. In
> such cases modeset failures due to the reduced max link params would be
> just confusing for user space (instead of which the correct thing it
> should act on is the sink disconnect signaled by a hotplug event,
> requiring a disabling modeset).
>
> Signed-off-by: Imre Deak <imre.deak at intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_dp.h | 1 +
> drivers/gpu/drm/i915/display/intel_dp_link_training.c | 5 +++++
> 2 files changed, 6 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.h b/drivers/gpu/drm/i915/display/intel_dp.h
> index 488da392fafe5..ca12a1733df6f 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.h
> +++ b/drivers/gpu/drm/i915/display/intel_dp.h
> @@ -102,6 +102,7 @@ void intel_dp_set_infoframes(struct intel_encoder *encoder, bool enable,
> void intel_read_dp_sdp(struct intel_encoder *encoder,
> struct intel_crtc_state *crtc_state,
> unsigned int type);
> +bool intel_dp_is_connected(struct intel_dp *intel_dp);
> bool intel_digital_port_connected(struct intel_encoder *encoder);
> int intel_dp_dsc_compute_bpp(struct intel_dp *intel_dp, u8 dsc_max_bpc);
> u16 intel_dp_dsc_get_output_bpp(struct drm_i915_private *i915,
> diff --git a/drivers/gpu/drm/i915/display/intel_dp_link_training.c b/drivers/gpu/drm/i915/display/intel_dp_link_training.c
> index 2fe076e2d64b3..fcccf410f7693 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp_link_training.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp_link_training.c
> @@ -1088,6 +1088,11 @@ static void intel_dp_schedule_fallback_link_training(struct intel_dp *intel_dp,
> {
> struct intel_connector *intel_connector = intel_dp->attached_connector;
>
> + if (!intel_dp_is_connected(intel_dp)) {
> + lt_dbg(intel_dp, DP_PHY_DPRX, "Link Training failed on disconnected sink.\n");
> + return;
> + }
> +
> if (intel_dp->hobl_active) {
> lt_dbg(intel_dp, DP_PHY_DPRX,
> "Link Training failed with HOBL active, not enabling it from now on\n");
> --
> 2.37.2
--
Ville Syrjälä
Intel
More information about the Intel-gfx
mailing list