[Intel-gfx] [PATCH v2] drm/i915/edp: Do not do link training fallback or prune modes on EDP
Imre Deak
imre.deak at intel.com
Fri Jan 19 15:45:16 UTC 2018
On Thu, Oct 12, 2017 at 12:13:38PM -0700, Manasi Navare wrote:
> In case of eDP because the panel has a fixed mode, the link rate
> and lane count at which it is trained corresponds to the link BW
> required to support the native resolution of the panel. In case of
> panles with lower resolutions where fewer lanes are hooked up internally,
> that number is reflected in the MAX_LANE_COUNT DPCD register of the panel.
> So it is pointless to fallback to lower link rate/lane count in case
> of link training failure on eDP connector since the lower link BW
> will not support the native resolution of the panel and we cannot
> prune the preferred mode on the eDP connector.
>
> In case of Link training failure on the eDP panel, something is wrong
> in the HW internally and hence driver errors out with a loud
> and clear DRM_ERROR message.
>
> v2:
> * Fix the DEBUG_ERROR and add {} in else (Ville Syrjala)
>
> Cc: Clinton Taylor <clinton.a.taylor at intel.com>
> Cc: Jim Bride <jim.bride at linux.intel.com>
> Cc: Jani Nikula <jani.nikula at linux.intel.com>
> Cc: Ville Syrjala <ville.syrjala at linux.intel.com>
> Cc: Dave Airlie <airlied at redhat.com>
> Cc: Daniel Vetter <daniel.vetter at ffwll.ch>
> Signed-off-by: Manasi Navare <manasi.d.navare at intel.com>
> Reviewed-by: Ville Syrjala <ville.syrjala at linux.intel.com>
This fell through the cracks, looks like it partially fixes
https://bugs.freedesktop.org/show_bug.cgi?id=103369
Why link training fails there is not clear.
> ---
> drivers/gpu/drm/i915/intel_dp_link_training.c | 26 +++++++++++++++++---------
> 1 file changed, 17 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_dp_link_training.c b/drivers/gpu/drm/i915/intel_dp_link_training.c
> index 05907fa..cf8fef8 100644
> --- a/drivers/gpu/drm/i915/intel_dp_link_training.c
> +++ b/drivers/gpu/drm/i915/intel_dp_link_training.c
> @@ -328,14 +328,22 @@ intel_dp_start_link_train(struct intel_dp *intel_dp)
> return;
>
> failure_handling:
> - DRM_DEBUG_KMS("[CONNECTOR:%d:%s] Link Training failed at link rate = %d, lane count = %d",
> - intel_connector->base.base.id,
> - intel_connector->base.name,
> - intel_dp->link_rate, intel_dp->lane_count);
> - if (!intel_dp_get_link_train_fallback_values(intel_dp,
> - intel_dp->link_rate,
> - intel_dp->lane_count))
> - /* Schedule a Hotplug Uevent to userspace to start modeset */
> - schedule_work(&intel_connector->modeset_retry_work);
> + /* Dont fallback and prune modes if its eDP */
> + if (!intel_dp_is_edp(intel_dp)) {
> + DRM_DEBUG_KMS("[CONNECTOR:%d:%s] Link Training failed at link rate = %d, lane count = %d",
> + intel_connector->base.base.id,
> + intel_connector->base.name,
> + intel_dp->link_rate, intel_dp->lane_count);
> + if (!intel_dp_get_link_train_fallback_values(intel_dp,
> + intel_dp->link_rate,
> + intel_dp->lane_count))
> + /* Schedule a Hotplug Uevent to userspace to start modeset */
> + schedule_work(&intel_connector->modeset_retry_work);
> + } else {
> + DRM_ERROR("[CONNECTOR:%d:%s] Link Training failed at link rate = %d, lane count = %d",
> + intel_connector->base.base.id,
> + intel_connector->base.name,
> + intel_dp->link_rate, intel_dp->lane_count);
> + }
> return;
> }
> --
> 2.1.4
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
More information about the Intel-gfx
mailing list