[PATCH 0/3] drm/i915: fix USB Type-C reversed connector

Benjamin Tissoires
2015-07-28T16:03:37Z

Hi,

plugging a USB Type-C to HDMI adapter on a Chromebook Pixel 2015 works
only if the HDMI port is in its normal (not reverted) state.
Theorically, the USB chip should provide the information whether or not
the lane are resversed, but I could not find anything in the Intel PRM
regarding this.

So use the technical solution implemented in ChromeOS by Stéphane and
Todd: try to train one lane in the normal setting, if it doesn't work,
then chances are that the lane are reverted.

The ChromeOS commits are:
https://chromium.googlesource.com/chromiumos/third_party/kernel/+/e8c654a0a6d466b3a7b0e84fd27e3a7236a2243e
https://chromium.googlesource.com/chromiumos/third_party/kernel/+/4fed50fad79ba3fde782d913bac2968b2d0262bc

If I could have a Signed-off-by by Stéphane and Todd, that would be even
better :)

I should also note that while testing this, I discovered 2 regressions
in drm-intel-nightly:
- b432e5cfd (drm/i915: BDW clock change support):
this one prevents the Broadwell-U GPU to correctly set the clock when
we connect a 4K monitor over HDMI (30.0 Hz)
Using a lower resolution works (the internal display is 2560x1700)
I ended up disabling in intel_display.c all of the codes that are
broadwell specific, and the default are just working.
- aaf5ec2e5 (drm/i915: Handle HPD when it has actually occurred):
this one raises a storm of errors:
[drm:gen8_irq_handler [i915]] *ERROR* The master control interrupt lied (SDE)!
This doesn't seems to affect the DP output, but having that many
errors is not always a good sign IMO :)
Reverting this commit makes them go away.

Cheers,
Benjamin

Benjamin Tissoires (3):
drm/i915: add parameters to dp_start_link_train and
dp_complete_link_train
drm/i915: hide errors when probing for a reverse display port
drm/i915: Support DDI lane reversal for DP

drivers/gpu/drm/i915/intel_ddi.c | 13 +++
drivers/gpu/drm/i915/intel_dp.c | 173 ++++++++++++++++++++++++++++++---------
drivers/gpu/drm/i915/intel_drv.h | 1 +
3 files changed, 149 insertions(+), 38 deletions(-)

--
2.4.3