• J
    drm/i915/dp: rewrite DP 2.0 128b/132b link training based on errata · a421d8a9
    Jani Nikula 提交于
    The DP 2.0 errata completely overhauls the 128b/132b link training, with
    no provisions for backward compatibility with the original DP 2.0
    specification.
    
    The changes are too intrusive to consider reusing the same code for both
    8b/10b and 128b/132b, mainly because the LTTPR channel equalisation is
    done concurrently instead of serialized.
    
    NOTES:
    
    * It's a bit unclear when to wait for DP_INTERLANE_ALIGN_DONE and
      per-lane DP_LANE_SYMBOL_LOCKED. Figure xx4 in the SCR implies the
      LANEx_CHANNEL_EQ_DONE sequence may end with either 0x77,0x77,0x85 *or*
      0x33,0x33,0x84 (for four lane configuration in DPCD 0x202..0x204)
      i.e. without the above bits set. Text elsewhere seems contradictory or
      incomplete.
    
    * We read entire link status (6 bytes) everywhere instead of individual
      DPCD addresses.
    
    * There are some subtle ambiguities or contradictions in the order of
      some DPCD access and TPS signal enables/disables. It's also not clear
      whether these are significant.
    
    v4:
    - Wait for intra-hop clear after link training end (Ville)
    - Wait instead of single check for intra-hop clear before link train
    
    v3:
    - Use msecs_to_jiffies_timeout() (Ville)
    - Read status at the beginning of interlane align done loop (Ville)
    - Try to simplify timeout flag use where possible (Ville)
    
    v2:
    - Always try one last time after timeouts to avoid races (Ville)
    - Extend timeout to cover the entire LANEx_EQ_DONE sequence (Ville)
    - Also check for eq interlane align done in LANEx_CDS_DONE Sequence (Ville)
    - Check for Intra-hop status before link training
    
    Cc: Uma Shankar <uma.shankar@intel.com>
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Signed-off-by: NJani Nikula <jani.nikula@intel.com>
    Reviewed-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220208143209.2997337-1-jani.nikula@intel.com
    a421d8a9
intel_dp_link_training.c 44.9 KB