drm/radeon/kms: don't poll forever if MC GDDR link training fails
authorAlex Deucher <alexander.deucher@amd.com>
Wed, 2 Nov 2011 22:08:25 +0000 (18:08 -0400)
committerDave Airlie <airlied@redhat.com>
Thu, 3 Nov 2011 17:53:26 +0000 (17:53 +0000)
Bail if we hit the timeout limit.

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
drivers/gpu/drm/radeon/ni.c

index 56afaff6299a9f0986b6f6fc5ed6ad324bac57ea..722cfb39899230620f0622ca61644b3117dd261d 100644 (file)
@@ -261,8 +261,11 @@ int ni_mc_load_microcode(struct radeon_device *rdev)
                WREG32(MC_SEQ_SUP_CNTL, 0x00000001);
 
                /* wait for training to complete */
-               while (!(RREG32(MC_IO_PAD_CNTL_D0) & MEM_FALL_OUT_CMD))
-                       udelay(10);
+               for (i = 0; i < rdev->usec_timeout; i++) {
+                       if (RREG32(MC_IO_PAD_CNTL_D0) & MEM_FALL_OUT_CMD)
+                               break;
+                       udelay(1);
+               }
 
                if (running)
                        WREG32(MC_SHARED_BLACKOUT_CNTL, blackout);