diff options
Diffstat (limited to 'drivers/gpu/drm/radeon/rs600.c')
-rw-r--r-- | drivers/gpu/drm/radeon/rs600.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/drivers/gpu/drm/radeon/rs600.c b/drivers/gpu/drm/radeon/rs600.c index ec46eb45e34c..4fc700684dcd 100644 --- a/drivers/gpu/drm/radeon/rs600.c +++ b/drivers/gpu/drm/radeon/rs600.c | |||
@@ -684,9 +684,7 @@ int rs600_irq_process(struct radeon_device *rdev) | |||
684 | WREG32(RADEON_BUS_CNTL, msi_rearm | RS600_MSI_REARM); | 684 | WREG32(RADEON_BUS_CNTL, msi_rearm | RS600_MSI_REARM); |
685 | break; | 685 | break; |
686 | default: | 686 | default: |
687 | msi_rearm = RREG32(RADEON_MSI_REARM_EN) & ~RV370_MSI_REARM_EN; | 687 | WREG32(RADEON_MSI_REARM_EN, RV370_MSI_REARM_EN); |
688 | WREG32(RADEON_MSI_REARM_EN, msi_rearm); | ||
689 | WREG32(RADEON_MSI_REARM_EN, msi_rearm | RV370_MSI_REARM_EN); | ||
690 | break; | 688 | break; |
691 | } | 689 | } |
692 | } | 690 | } |
@@ -878,6 +876,8 @@ static int rs600_startup(struct radeon_device *rdev) | |||
878 | 876 | ||
879 | int rs600_resume(struct radeon_device *rdev) | 877 | int rs600_resume(struct radeon_device *rdev) |
880 | { | 878 | { |
879 | int r; | ||
880 | |||
881 | /* Make sur GART are not working */ | 881 | /* Make sur GART are not working */ |
882 | rs600_gart_disable(rdev); | 882 | rs600_gart_disable(rdev); |
883 | /* Resume clock before doing reset */ | 883 | /* Resume clock before doing reset */ |
@@ -896,7 +896,11 @@ int rs600_resume(struct radeon_device *rdev) | |||
896 | radeon_surface_init(rdev); | 896 | radeon_surface_init(rdev); |
897 | 897 | ||
898 | rdev->accel_working = true; | 898 | rdev->accel_working = true; |
899 | return rs600_startup(rdev); | 899 | r = rs600_startup(rdev); |
900 | if (r) { | ||
901 | rdev->accel_working = false; | ||
902 | } | ||
903 | return r; | ||
900 | } | 904 | } |
901 | 905 | ||
902 | int rs600_suspend(struct radeon_device *rdev) | 906 | int rs600_suspend(struct radeon_device *rdev) |