• Imre Deak's avatar
    drm/i915: Switch to LTTPR non-transparent mode link training · b30edfd8
    Imre Deak authored
    The DP Standard's recommendation is to use the LTTPR non-transparent
    mode link training if LTTPRs are detected, so let's do this.
    
    Besides power-saving, the advantages of this are that the maximum number
    of LTTPRs can only be used in non-transparent mode (the limit is 5-8 in
    transparent mode), and it provides a way to narrow down the reason for a
    link training failure to a given link segment. Non-transparent mode is
    probably also the mode that was tested the most by the industry.
    
    The changes in this patchset:
    - Pass the DP PHY that is currently link trained to all LT helpers, so
      that these can access the correct LTTPR/DPRX DPCD registers.
    - During LT take into account the LTTPR common lane rate/count and the
      per LTTPR-PHY vswing/pre-emph limits.
    - Switch to LTTPR non-transparent LT mode and train each link segment
      according to the sequence in DP Standard v2.0 (complete CR/EQ for
      each segment before continuing with the next segment).
    
    v2:
    - Switch to non-transparent mode during connector detection, which is
      required before reading the per-PHY LTTPR capabilities.
    - Move the DP_PHY_LTTPR() macro to drm_dp_helper.h (Ville)
    - Use the new drm_dp_dpcd_read_phy_link_status() instead of adding the
      same logic to intel_dp_get_link_status(). (Ville)
    - Make intel_dp_lttpr_phy_caps() return a pointer to the whole array
      instead of a pointer to its first element. (Ville)
    - Add the intel_dp_phy_is_downstream_of_source() helper. (Ville)
    - Add a code comment about the disable->enable quirk of
      non-transparent mode.
    - Add the intel_dp_training_pattern_set_reg() helper.
    - Fix checkpatch/sparse warns.
    
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Reviewed-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
    Signed-off-by: default avatarImre Deak <imre.deak@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20201007170917.1764556-7-imre.deak@intel.com
    b30edfd8
intel_dp_link_training.h 945 Bytes