drm/i915: Check for FRL training before DP Link training
authorAnkit Nautiyal <ankit.k.nautiyal@intel.com>
Fri, 18 Dec 2020 10:37:18 +0000 (16:07 +0530)
committerJani Nikula <jani.nikula@intel.com>
Tue, 22 Dec 2020 15:54:54 +0000 (17:54 +0200)
This patch calls functions to check FRL training requirements
for an HDMI2.1 sink, when connected through PCON.
The call is made before the DP link training. In case FRL is not
required or failure during FRL training, the TMDS mode is selected
for the pcon.

v2: moved check_frl_training() just after FEC READY, before
starting DP link training.

v3: rebase

Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
Reviewed-by: Uma Shankar <uma.shankar@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20201218103723.30844-11-ankit.k.nautiyal@intel.com
drivers/gpu/drm/i915/display/intel_ddi.c
drivers/gpu/drm/i915/display/intel_dp.c

index 92940a0..fd39d39 100644 (file)
@@ -3651,6 +3651,8 @@ static void tgl_ddi_pre_enable_dp(struct intel_atomic_state *state,
         */
        intel_dp_sink_set_fec_ready(intel_dp, crtc_state);
 
+       intel_dp_check_frl_training(intel_dp);
+
        /*
         * 7.i Follow DisplayPort specification training sequence (see notes for
         *     failure handling)
index 26f82e3..b8dc247 100644 (file)
@@ -4252,6 +4252,7 @@ static void intel_enable_dp(struct intel_atomic_state *state,
 
        intel_dp_set_power(intel_dp, DP_SET_POWER_D0);
        intel_dp_configure_protocol_converter(intel_dp);
+       intel_dp_check_frl_training(intel_dp);
        intel_dp_start_link_train(intel_dp, pipe_config);
        intel_dp_stop_link_train(intel_dp, pipe_config);
 
@@ -6173,6 +6174,7 @@ int intel_dp_retrain_link(struct intel_encoder *encoder,
                    !intel_dp_mst_is_master_trans(crtc_state))
                        continue;
 
+               intel_dp_check_frl_training(intel_dp);
                intel_dp_start_link_train(intel_dp, crtc_state);
                intel_dp_stop_link_train(intel_dp, crtc_state);
                break;