aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon/ni.c
diff options
context:
space:
mode:
authorAlex Deucher <alexander.deucher@amd.com>2011-11-02 18:08:25 -0400
committerDave Airlie <airlied@redhat.com>2011-11-03 13:53:26 -0400
commit0e2c978ef2248156f36db7fcda8c7b67998ec58a (patch)
tree182909abe3a59518140a6f10099a5af0c5c73941 /drivers/gpu/drm/radeon/ni.c
parentcf2aff6eff251b6fbdaf8c253e65ff7c693de8cd (diff)
drm/radeon/kms: don't poll forever if MC GDDR link training fails
Bail if we hit the timeout limit. Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/radeon/ni.c')
-rw-r--r--drivers/gpu/drm/radeon/ni.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/gpu/drm/radeon/ni.c b/drivers/gpu/drm/radeon/ni.c
index 56afaff6299a..722cfb398992 100644
--- a/drivers/gpu/drm/radeon/ni.c
+++ b/drivers/gpu/drm/radeon/ni.c
@@ -261,8 +261,11 @@ int ni_mc_load_microcode(struct radeon_device *rdev)
261 WREG32(MC_SEQ_SUP_CNTL, 0x00000001); 261 WREG32(MC_SEQ_SUP_CNTL, 0x00000001);
262 262
263 /* wait for training to complete */ 263 /* wait for training to complete */
264 while (!(RREG32(MC_IO_PAD_CNTL_D0) & MEM_FALL_OUT_CMD)) 264 for (i = 0; i < rdev->usec_timeout; i++) {
265 udelay(10); 265 if (RREG32(MC_IO_PAD_CNTL_D0) & MEM_FALL_OUT_CMD)
266 break;
267 udelay(1);
268 }
266 269
267 if (running) 270 if (running)
268 WREG32(MC_SHARED_BLACKOUT_CNTL, blackout); 271 WREG32(MC_SHARED_BLACKOUT_CNTL, blackout);