[PATCH 3/3] drm/amdgpu: fix to clear ASIC INIT COMPLETE bit on resuming phase

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



ASIC_INIT_COMPLETE bit must be cleared during S3 resuming phase,
because VBIOS will check the bit to decide if execute ASIC_Init
posting via kernel driver.

Signed-off-by: Huang Rui <ray.huang at amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c     | 5 ++++-
 drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c | 6 +++++-
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c
index ad43299..b0dd72a8 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c
@@ -1727,8 +1727,11 @@ void amdgpu_atombios_scratch_regs_restore(struct amdgpu_device *adev)
 {
 	int i;
 
-	for (i = 0; i < AMDGPU_BIOS_NUM_SCRATCH; i++)
+	for (i = 0; i < AMDGPU_BIOS_NUM_SCRATCH; i++) {
+		if (i == 7)
+			adev->bios_scratch[i] &= ~ATOM_S7_ASIC_INIT_COMPLETE_MASK;
 		WREG32(mmBIOS_SCRATCH_0 + i, adev->bios_scratch[i]);
+	}
 }
 
 void amdgpu_atombios_scratch_regs_engine_hung(struct amdgpu_device *adev,
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c
index 4b9abd6..c7e28bf 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c
@@ -26,6 +26,7 @@
 #include "atomfirmware.h"
 #include "amdgpu_atomfirmware.h"
 #include "atom.h"
+#include "atombios.h"
 
 #define get_index_into_master_table(master_table, table_name) (offsetof(struct master_table, table_name) / sizeof(uint16_t))
 
@@ -77,8 +78,11 @@ void amdgpu_atomfirmware_scratch_regs_restore(struct amdgpu_device *adev)
 {
 	int i;
 
-	for (i = 0; i < AMDGPU_BIOS_NUM_SCRATCH; i++)
+	for (i = 0; i < AMDGPU_BIOS_NUM_SCRATCH; i++) {
+		if (i == 7)
+			adev->bios_scratch[i] &= ~ATOM_S7_ASIC_INIT_COMPLETE_MASK;
 		WREG32(adev->bios_scratch_reg_offset + i, adev->bios_scratch[i]);
+	}
 }
 
 int amdgpu_atomfirmware_allocate_fb_scratch(struct amdgpu_device *adev)
-- 
2.7.4



[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux