diff options
Diffstat (limited to 'drivers/gpu/drm/i915/intel_dp.c')
-rw-r--r-- | drivers/gpu/drm/i915/intel_dp.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index 2151d13772b8..2c555f91bfae 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c | |||
@@ -588,7 +588,18 @@ intel_dp_i2c_aux_ch(struct i2c_adapter *adapter, int mode, | |||
588 | DRM_DEBUG_KMS("aux_ch native nack\n"); | 588 | DRM_DEBUG_KMS("aux_ch native nack\n"); |
589 | return -EREMOTEIO; | 589 | return -EREMOTEIO; |
590 | case AUX_NATIVE_REPLY_DEFER: | 590 | case AUX_NATIVE_REPLY_DEFER: |
591 | udelay(100); | 591 | /* |
592 | * For now, just give more slack to branch devices. We | ||
593 | * could check the DPCD for I2C bit rate capabilities, | ||
594 | * and if available, adjust the interval. We could also | ||
595 | * be more careful with DP-to-Legacy adapters where a | ||
596 | * long legacy cable may force very low I2C bit rates. | ||
597 | */ | ||
598 | if (intel_dp->dpcd[DP_DOWNSTREAMPORT_PRESENT] & | ||
599 | DP_DWN_STRM_PORT_PRESENT) | ||
600 | usleep_range(500, 600); | ||
601 | else | ||
602 | usleep_range(300, 400); | ||
592 | continue; | 603 | continue; |
593 | default: | 604 | default: |
594 | DRM_ERROR("aux_ch invalid native reply 0x%02x\n", | 605 | DRM_ERROR("aux_ch invalid native reply 0x%02x\n", |
@@ -1456,7 +1467,7 @@ static void intel_edp_psr_setup(struct intel_dp *intel_dp) | |||
1456 | 1467 | ||
1457 | /* Avoid continuous PSR exit by masking memup and hpd */ | 1468 | /* Avoid continuous PSR exit by masking memup and hpd */ |
1458 | I915_WRITE(EDP_PSR_DEBUG_CTL, EDP_PSR_DEBUG_MASK_MEMUP | | 1469 | I915_WRITE(EDP_PSR_DEBUG_CTL, EDP_PSR_DEBUG_MASK_MEMUP | |
1459 | EDP_PSR_DEBUG_MASK_HPD); | 1470 | EDP_PSR_DEBUG_MASK_HPD | EDP_PSR_DEBUG_MASK_LPSP); |
1460 | 1471 | ||
1461 | intel_dp->psr_setup_done = true; | 1472 | intel_dp->psr_setup_done = true; |
1462 | } | 1473 | } |