aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_sideband.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/i915/intel_sideband.c')
-rw-r--r--drivers/gpu/drm/i915/intel_sideband.c32
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 }