1. 29 Mar, 2022 1 commit
    • Imre Deak's avatar
      drm/i915: Add a DP1.2 compatible way to read LTTPR capabilities · 657586e4
      Imre Deak authored
      At least some DELL monitors (P2715Q) with DPCD_REV 1.2 return corrupted
      DPCD register values when reading from the 0xF0000- LTTPR range with an
      AUX transaction block size bigger than 1. The DP standard requires 0 to
      be returned - as for any other reserved/invalid addresses - but these
      monitors return the DPCD_REV register value repeated in each byte of the
      read buffer. This will in turn corrupt the values returned by the LTTPRs
      between the source and the monitor: LTTPRs must adjust the values they
      read from the downstream DPRX, for instance right-shift/init the
      downstream DP_PHY_REPEATER_CNT value. Since the value returned by the
      monitor's DPRX is non-zero the adjusted values will be corrupt.
      
      Reading the LTTPR registers one-by-one instead of reading all of them
      with a single AUX transfer works around the issue.
      
      According to the DP standard's 0xF0000 register description:
      "LTTPR-related registers at DPCD Addresses F0000h through F02FFh are
      valid only for DPCD r1.4 (or higher)." While it's unclear if DPCD r1.4
      refers to the DPCD_REV or to the
      LT_TUNABLE_PHY_REPEATER_FIELD_DATA_STRUCTURE_REV register (tickets filed
      at the VESA site to clarify this haven't been addressed), one
      possibility is that it's a restriction due to non-compliant monitors
      described above. Disabling the non-transparent LTTPR mode for all such
      monitors is not a viable solution: the transparent LTTPR mode has its
      own issue causing link training failures and this would affect a lot of
      monitors in use with DPCD_REV < 1.4. Instead this patch works around
      the problem by reading the LTTPR common and PHY cap registers one-by-one
      for any monitor with a DPCD_REV < 1.4.
      
      The standard requires the DPCD capabilities to be read after the LTTPR
      common capabilities are read, so re-read the DPCD capabilities after
      the LTTPR common and PHY caps were read out.
      
      v2:
      - Use for instead of a while loop. (Ville)
      - Add to code comment the monitor model with the problem.
      
      Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/4531
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: default avatarImre Deak <imre.deak@intel.com>
      Reviewed-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20220322143844.42616-1-imre.deak@intel.com
      657586e4
  2. 28 Mar, 2022 3 commits
  3. 21 Mar, 2022 12 commits
  4. 18 Mar, 2022 8 commits
  5. 17 Mar, 2022 2 commits
  6. 16 Mar, 2022 10 commits
  7. 15 Mar, 2022 2 commits
  8. 14 Mar, 2022 2 commits