diff options
Diffstat (limited to 'drivers/gpu/drm/i915/intel_sideband.c')
-rw-r--r-- | drivers/gpu/drm/i915/intel_sideband.c | 32 |
1 files changed, 22 insertions, 10 deletions
diff --git a/drivers/gpu/drm/i915/intel_sideband.c b/drivers/gpu/drm/i915/intel_sideband.c index c3998188cf35..1a840bf92eea 100644 --- a/drivers/gpu/drm/i915/intel_sideband.c +++ b/drivers/gpu/drm/i915/intel_sideband.c | |||
@@ -51,7 +51,9 @@ static int vlv_sideband_rw(struct drm_i915_private *dev_priv, u32 devfn, | |||
51 | 51 | ||
52 | WARN_ON(!mutex_is_locked(&dev_priv->sb_lock)); | 52 | WARN_ON(!mutex_is_locked(&dev_priv->sb_lock)); |
53 | 53 | ||
54 | if (wait_for((I915_READ(VLV_IOSF_DOORBELL_REQ) & IOSF_SB_BUSY) == 0, 5)) { | 54 | if (intel_wait_for_register(dev_priv, |
55 | VLV_IOSF_DOORBELL_REQ, IOSF_SB_BUSY, 0, | ||
56 | 5)) { | ||
55 | DRM_DEBUG_DRIVER("IOSF sideband idle wait (%s) timed out\n", | 57 | DRM_DEBUG_DRIVER("IOSF sideband idle wait (%s) timed out\n", |
56 | is_read ? "read" : "write"); | 58 | is_read ? "read" : "write"); |
57 | return -EAGAIN; | 59 | return -EAGAIN; |
@@ -62,7 +64,9 @@ static int vlv_sideband_rw(struct drm_i915_private *dev_priv, u32 devfn, | |||
62 | I915_WRITE(VLV_IOSF_DATA, *val); | 64 | I915_WRITE(VLV_IOSF_DATA, *val); |
63 | I915_WRITE(VLV_IOSF_DOORBELL_REQ, cmd); | 65 | I915_WRITE(VLV_IOSF_DOORBELL_REQ, cmd); |
64 | 66 | ||
65 | if (wait_for((I915_READ(VLV_IOSF_DOORBELL_REQ) & IOSF_SB_BUSY) == 0, 5)) { | 67 | if (intel_wait_for_register(dev_priv, |
68 | VLV_IOSF_DOORBELL_REQ, IOSF_SB_BUSY, 0, | ||
69 | 5)) { | ||
66 | DRM_DEBUG_DRIVER("IOSF sideband finish wait (%s) timed out\n", | 70 | DRM_DEBUG_DRIVER("IOSF sideband finish wait (%s) timed out\n", |
67 | is_read ? "read" : "write"); | 71 | is_read ? "read" : "write"); |
68 | return -ETIMEDOUT; | 72 | return -ETIMEDOUT; |
@@ -202,8 +206,9 @@ u32 intel_sbi_read(struct drm_i915_private *dev_priv, u16 reg, | |||
202 | u32 value = 0; | 206 | u32 value = 0; |
203 | WARN_ON(!mutex_is_locked(&dev_priv->sb_lock)); | 207 | WARN_ON(!mutex_is_locked(&dev_priv->sb_lock)); |
204 | 208 | ||
205 | if (wait_for((I915_READ(SBI_CTL_STAT) & SBI_BUSY) == 0, | 209 | if (intel_wait_for_register(dev_priv, |
206 | 100)) { | 210 | SBI_CTL_STAT, SBI_BUSY, 0, |
211 | 100)) { | ||
207 | DRM_ERROR("timeout waiting for SBI to become ready\n"); | 212 | DRM_ERROR("timeout waiting for SBI to become ready\n"); |
208 | return 0; | 213 | return 0; |
209 | } | 214 | } |
@@ -216,8 +221,11 @@ u32 intel_sbi_read(struct drm_i915_private *dev_priv, u16 reg, | |||
216 | value = SBI_CTL_DEST_MPHY | SBI_CTL_OP_IORD; | 221 | value = SBI_CTL_DEST_MPHY | SBI_CTL_OP_IORD; |
217 | I915_WRITE(SBI_CTL_STAT, value | SBI_BUSY); | 222 | I915_WRITE(SBI_CTL_STAT, value | SBI_BUSY); |
218 | 223 | ||
219 | if (wait_for((I915_READ(SBI_CTL_STAT) & (SBI_BUSY | SBI_RESPONSE_FAIL)) == 0, | 224 | if (intel_wait_for_register(dev_priv, |
220 | 100)) { | 225 | SBI_CTL_STAT, |
226 | SBI_BUSY | SBI_RESPONSE_FAIL, | ||
227 | 0, | ||
228 | 100)) { | ||
221 | DRM_ERROR("timeout waiting for SBI to complete read transaction\n"); | 229 | DRM_ERROR("timeout waiting for SBI to complete read transaction\n"); |
222 | return 0; | 230 | return 0; |
223 | } | 231 | } |
@@ -232,8 +240,9 @@ void intel_sbi_write(struct drm_i915_private *dev_priv, u16 reg, u32 value, | |||
232 | 240 | ||
233 | WARN_ON(!mutex_is_locked(&dev_priv->sb_lock)); | 241 | WARN_ON(!mutex_is_locked(&dev_priv->sb_lock)); |
234 | 242 | ||
235 | if (wait_for((I915_READ(SBI_CTL_STAT) & SBI_BUSY) == 0, | 243 | if (intel_wait_for_register(dev_priv, |
236 | 100)) { | 244 | SBI_CTL_STAT, SBI_BUSY, 0, |
245 | 100)) { | ||
237 | DRM_ERROR("timeout waiting for SBI to become ready\n"); | 246 | DRM_ERROR("timeout waiting for SBI to become ready\n"); |
238 | return; | 247 | return; |
239 | } | 248 | } |
@@ -247,8 +256,11 @@ void intel_sbi_write(struct drm_i915_private *dev_priv, u16 reg, u32 value, | |||
247 | tmp = SBI_CTL_DEST_MPHY | SBI_CTL_OP_IOWR; | 256 | tmp = SBI_CTL_DEST_MPHY | SBI_CTL_OP_IOWR; |
248 | I915_WRITE(SBI_CTL_STAT, SBI_BUSY | tmp); | 257 | I915_WRITE(SBI_CTL_STAT, SBI_BUSY | tmp); |
249 | 258 | ||
250 | if (wait_for((I915_READ(SBI_CTL_STAT) & (SBI_BUSY | SBI_RESPONSE_FAIL)) == 0, | 259 | if (intel_wait_for_register(dev_priv, |
251 | 100)) { | 260 | SBI_CTL_STAT, |
261 | SBI_BUSY | SBI_RESPONSE_FAIL, | ||
262 | 0, | ||
263 | 100)) { | ||
252 | DRM_ERROR("timeout waiting for SBI to complete write transaction\n"); | 264 | DRM_ERROR("timeout waiting for SBI to complete write transaction\n"); |
253 | return; | 265 | return; |
254 | } | 266 | } |