aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu
diff options
context:
space:
mode:
authorAlex Deucher <alexdeucher@gmail.com>2010-12-20 12:35:03 -0500
committerDave Airlie <airlied@redhat.com>2010-12-20 21:52:54 -0500
commit9f0c4f9c2f835eee1bbb93f96bf9483d56f1892b (patch)
tree25676eaf238f2ae045b15029f77a010bfc280f9a /drivers/gpu
parent92971021c632876108ea2e06290a56a9157578f5 (diff)
drm/radeon/kms: fix evergreen asic reset
Only reset the grbm blocks, srbm tends to lock the GPU if not done properly and in most cases is not necessary. Also, no need to call asic init after reset the grbm blocks. Signed-off-by: Alex Deucher <alexdeucher@gmail.com> Cc: stable@kernel.org Reviewed-by: Jerome Glisse <jglisse@redhat.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/radeon/evergreen.c15
1 files changed, 0 insertions, 15 deletions
diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c
index 39fa75bf7c4f..6ced1ba2bee8 100644
--- a/drivers/gpu/drm/radeon/evergreen.c
+++ b/drivers/gpu/drm/radeon/evergreen.c
@@ -1924,7 +1924,6 @@ bool evergreen_gpu_is_lockup(struct radeon_device *rdev)
1924static int evergreen_gpu_soft_reset(struct radeon_device *rdev) 1924static int evergreen_gpu_soft_reset(struct radeon_device *rdev)
1925{ 1925{
1926 struct evergreen_mc_save save; 1926 struct evergreen_mc_save save;
1927 u32 srbm_reset = 0;
1928 u32 grbm_reset = 0; 1927 u32 grbm_reset = 0;
1929 1928
1930 dev_info(rdev->dev, "GPU softreset \n"); 1929 dev_info(rdev->dev, "GPU softreset \n");
@@ -1963,16 +1962,6 @@ static int evergreen_gpu_soft_reset(struct radeon_device *rdev)
1963 udelay(50); 1962 udelay(50);
1964 WREG32(GRBM_SOFT_RESET, 0); 1963 WREG32(GRBM_SOFT_RESET, 0);
1965 (void)RREG32(GRBM_SOFT_RESET); 1964 (void)RREG32(GRBM_SOFT_RESET);
1966
1967 /* reset all the system blocks */
1968 srbm_reset = SRBM_SOFT_RESET_ALL_MASK;
1969
1970 dev_info(rdev->dev, " SRBM_SOFT_RESET=0x%08X\n", srbm_reset);
1971 WREG32(SRBM_SOFT_RESET, srbm_reset);
1972 (void)RREG32(SRBM_SOFT_RESET);
1973 udelay(50);
1974 WREG32(SRBM_SOFT_RESET, 0);
1975 (void)RREG32(SRBM_SOFT_RESET);
1976 /* Wait a little for things to settle down */ 1965 /* Wait a little for things to settle down */
1977 udelay(50); 1966 udelay(50);
1978 dev_info(rdev->dev, " GRBM_STATUS=0x%08X\n", 1967 dev_info(rdev->dev, " GRBM_STATUS=0x%08X\n",
@@ -1983,10 +1972,6 @@ static int evergreen_gpu_soft_reset(struct radeon_device *rdev)
1983 RREG32(GRBM_STATUS_SE1)); 1972 RREG32(GRBM_STATUS_SE1));
1984 dev_info(rdev->dev, " SRBM_STATUS=0x%08X\n", 1973 dev_info(rdev->dev, " SRBM_STATUS=0x%08X\n",
1985 RREG32(SRBM_STATUS)); 1974 RREG32(SRBM_STATUS));
1986 /* After reset we need to reinit the asic as GPU often endup in an
1987 * incoherent state.
1988 */
1989 atom_asic_init(rdev->mode_info.atom_context);
1990 evergreen_mc_resume(rdev, &save); 1975 evergreen_mc_resume(rdev, &save);
1991 return 0; 1976 return 0;
1992} 1977}