diff mbox

drm/radeon/kms: evergreen & ni reset SPI block on CP resume

Message ID 1314216017-4730-1-git-send-email-j.glisse@gmail.com (mailing list archive)
State Accepted
Headers show

Commit Message

Jerome Glisse Aug. 24, 2011, 8 p.m. UTC
From: Jerome Glisse <jglisse@redhat.com>

For some reason SPI block is in broken state after module
unloading. This lead to broken rendering after reloading
module. Fix this by reseting SPI block in CP resume function

Signed-off-by: Jerome Glisse <jglisse@redhat.com
---
 drivers/gpu/drm/radeon/evergreen.c |    1 +
 drivers/gpu/drm/radeon/ni.c        |    1 +
 2 files changed, 2 insertions(+), 0 deletions(-)

Comments

Alex Deucher Aug. 24, 2011, 8:02 p.m. UTC | #1
On Wed, Aug 24, 2011 at 4:00 PM,  <j.glisse@gmail.com> wrote:
> From: Jerome Glisse <jglisse@redhat.com>
>
> For some reason SPI block is in broken state after module
> unloading. This lead to broken rendering after reloading
> module. Fix this by reseting SPI block in CP resume function

Looks good to me.

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>

>
> Signed-off-by: Jerome Glisse <jglisse@redhat.com
> ---
>  drivers/gpu/drm/radeon/evergreen.c |    1 +
>  drivers/gpu/drm/radeon/ni.c        |    1 +
>  2 files changed, 2 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c
> index fb5fa08..d8d71a3 100644
> --- a/drivers/gpu/drm/radeon/evergreen.c
> +++ b/drivers/gpu/drm/radeon/evergreen.c
> @@ -1357,6 +1357,7 @@ int evergreen_cp_resume(struct radeon_device *rdev)
>                                 SOFT_RESET_PA |
>                                 SOFT_RESET_SH |
>                                 SOFT_RESET_VGT |
> +                                SOFT_RESET_SPI |
>                                 SOFT_RESET_SX));
>        RREG32(GRBM_SOFT_RESET);
>        mdelay(15);
> diff --git a/drivers/gpu/drm/radeon/ni.c b/drivers/gpu/drm/radeon/ni.c
> index 44c4750..a2e00fa 100644
> --- a/drivers/gpu/drm/radeon/ni.c
> +++ b/drivers/gpu/drm/radeon/ni.c
> @@ -1159,6 +1159,7 @@ int cayman_cp_resume(struct radeon_device *rdev)
>                                 SOFT_RESET_PA |
>                                 SOFT_RESET_SH |
>                                 SOFT_RESET_VGT |
> +                                SOFT_RESET_SPI |
>                                 SOFT_RESET_SX));
>        RREG32(GRBM_SOFT_RESET);
>        mdelay(15);
> --
> 1.7.1
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel
>
diff mbox

Patch

diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c
index fb5fa08..d8d71a3 100644
--- a/drivers/gpu/drm/radeon/evergreen.c
+++ b/drivers/gpu/drm/radeon/evergreen.c
@@ -1357,6 +1357,7 @@  int evergreen_cp_resume(struct radeon_device *rdev)
 				 SOFT_RESET_PA |
 				 SOFT_RESET_SH |
 				 SOFT_RESET_VGT |
+				 SOFT_RESET_SPI |
 				 SOFT_RESET_SX));
 	RREG32(GRBM_SOFT_RESET);
 	mdelay(15);
diff --git a/drivers/gpu/drm/radeon/ni.c b/drivers/gpu/drm/radeon/ni.c
index 44c4750..a2e00fa 100644
--- a/drivers/gpu/drm/radeon/ni.c
+++ b/drivers/gpu/drm/radeon/ni.c
@@ -1159,6 +1159,7 @@  int cayman_cp_resume(struct radeon_device *rdev)
 				 SOFT_RESET_PA |
 				 SOFT_RESET_SH |
 				 SOFT_RESET_VGT |
+				 SOFT_RESET_SPI |
 				 SOFT_RESET_SX));
 	RREG32(GRBM_SOFT_RESET);
 	mdelay(15);