• Ville Syrjälä's avatar
    drm/i915: Do a dummy DPCD read before the actual read · f6a19066
    Ville Syrjälä authored
    Sometimes we seem to get utter garbage from DPCD reads. The resulting
    buffer is filled with the same byte, and the operation completed without
    errors. My HP ZR24w monitor seems particularly susceptible to this
    problem once it's gone into a sleep mode.
    
    The issue seems to happen only for the first AUX message that wakes the
    sink up. But as the first AUX read we often do is the DPCD receiver
    cap it does wreak a bit of havoc with subsequent link training etc. when
    the receiver cap bw/lane/etc. information is garbage.
    
    A sufficient workaround seems to be to perform a single byte dummy read
    before reading the actual data. I suppose that just wakes up the sink
    sufficiently and we can just throw away the returned data in case it's
    crap. DP_DPCD_REV seems like a sufficiently safe location to read here.
    Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
    Reviewed-by: default avatarTodd Previte <tprevite@gmail.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
    f6a19066
intel_dp.c 148 KB