diff options
| -rw-r--r-- | drivers/gpu/drm/i915/intel_dp.c | 14 | 
1 files changed, 11 insertions, 3 deletions
| diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index 449364187bc0..ba72fbcbbbc9 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c @@ -315,9 +315,17 @@ intel_dp_aux_ch(struct intel_dp *intel_dp,  	else  		precharge = 5; -	if (I915_READ(ch_ctl) & DP_AUX_CH_CTL_SEND_BUSY) { -		DRM_ERROR("dp_aux_ch not started status 0x%08x\n", -			  I915_READ(ch_ctl)); +	/* Try to wait for any previous AUX channel activity */ +	for (try = 0; try < 3; try++) { +		status = I915_READ(ch_ctl); +		if ((status & DP_AUX_CH_CTL_SEND_BUSY) == 0) +			break; +		msleep(1); +	} + +	if (try == 3) { +		WARN(1, "dp_aux_ch not started status 0x%08x\n", +		     I915_READ(ch_ctl));  		return -EBUSY;  	} | 
