diff options
-rw-r--r-- | drivers/gpu/drm/i915/intel_dp.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index fc51730b89d6..a9a5051419df 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c | |||
@@ -1522,6 +1522,8 @@ intel_dp_link_down(struct intel_dp *intel_dp) | |||
1522 | static void | 1522 | static void |
1523 | intel_dp_check_link_status(struct intel_dp *intel_dp) | 1523 | intel_dp_check_link_status(struct intel_dp *intel_dp) |
1524 | { | 1524 | { |
1525 | int ret; | ||
1526 | |||
1525 | if (!intel_dp->base.base.crtc) | 1527 | if (!intel_dp->base.base.crtc) |
1526 | return; | 1528 | return; |
1527 | 1529 | ||
@@ -1530,6 +1532,15 @@ intel_dp_check_link_status(struct intel_dp *intel_dp) | |||
1530 | return; | 1532 | return; |
1531 | } | 1533 | } |
1532 | 1534 | ||
1535 | /* Try to read receiver status if the link appears to be up */ | ||
1536 | ret = intel_dp_aux_native_read(intel_dp, | ||
1537 | 0x000, intel_dp->dpcd, | ||
1538 | sizeof (intel_dp->dpcd)); | ||
1539 | if (ret != sizeof(intel_dp->dpcd)) { | ||
1540 | intel_dp_link_down(intel_dp); | ||
1541 | return; | ||
1542 | } | ||
1543 | |||
1533 | if (!intel_channel_eq_ok(intel_dp)) { | 1544 | if (!intel_channel_eq_ok(intel_dp)) { |
1534 | intel_dp_start_link_train(intel_dp); | 1545 | intel_dp_start_link_train(intel_dp); |
1535 | intel_dp_complete_link_train(intel_dp); | 1546 | intel_dp_complete_link_train(intel_dp); |