drm/amdgpu: read reg in each iterator of psp_wait_for loop
authorZhang, Jerry <Jerry.Zhang@amd.com>
Fri, 14 Jul 2017 10:20:17 +0000 (18:20 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 25 Jul 2017 20:28:02 +0000 (16:28 -0400)
v2: fix the SOS loading failure for PSP v3.1

Signed-off-by: Junwei Zhang <Jerry.Zhang@amd.com>
Cc: stable@vger.kernel.org
Acked-by: Alex Deucher <alexander.deucher@amd.com> (v1)
Acked-by: Huang Rui <ray.huang@amd.com> (v1)
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c
drivers/gpu/drm/amd/amdgpu/psp_v3_1.c

index 9f83264ba9ebde2dadd91cef2c1e4872927b406e..68def1057f0e6167297e71eb18d4945e62f1d0e0 100644 (file)
@@ -98,9 +98,8 @@ int psp_wait_for(struct psp_context *psp, uint32_t reg_index,
        int i;
        struct amdgpu_device *adev = psp->adev;
 
-       val = RREG32(reg_index);
-
        for (i = 0; i < adev->usec_timeout; i++) {
+               val = RREG32(reg_index);
                if (check_changed) {
                        if (val != reg_val)
                                return 0;
index 48f69fe6b9e2486f8c15d267184a29def026d008..2a535a4b8d5b3263dde9158f09be3c8d5547ce12 100644 (file)
@@ -237,11 +237,9 @@ int psp_v3_1_bootloader_load_sos(struct psp_context *psp)
 
        /* there might be handshake issue with hardware which needs delay */
        mdelay(20);
-#if 0
        ret = psp_wait_for(psp, SOC15_REG_OFFSET(MP0, 0, mmMP0_SMN_C2PMSG_81),
                           RREG32_SOC15(MP0, 0, mmMP0_SMN_C2PMSG_81),
                           0, true);
-#endif
 
        return ret;
 }