drm/amdgpu: just not load smc firmware if smu is already running
authorRex Zhu <Rex.Zhu@amd.com>
Wed, 26 Oct 2016 05:44:12 +0000 (13:44 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 27 Oct 2016 19:18:29 +0000 (15:18 -0400)
Signed-off-by: Rex Zhu <Rex.Zhu@amd.com>
Acked-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/ci_dpm.c

index 1c3b5c411ef75227e6fd56fbf488fc4ceeb2dc54..f1baf6715b05c61e878d5a222f7967e356994823 100644 (file)
@@ -2207,6 +2207,11 @@ static int ci_upload_firmware(struct amdgpu_device *adev)
        struct ci_power_info *pi = ci_get_pi(adev);
        int i, ret;
 
+       if (amdgpu_ci_is_smc_running(adev)) {
+               DRM_INFO("smc is running, no need to load smc firmware\n");
+               return 0;
+       }
+
        for (i = 0; i < adev->usec_timeout; i++) {
                if (RREG32_SMC(ixRCU_UC_EVENTS) & RCU_UC_EVENTS__boot_seq_done_MASK)
                        break;
@@ -5275,8 +5280,6 @@ static int ci_dpm_enable(struct amdgpu_device *adev)
        struct amdgpu_ps *boot_ps = adev->pm.dpm.boot_ps;
        int ret;
 
-       if (amdgpu_ci_is_smc_running(adev))
-               return -EINVAL;
        if (pi->voltage_control != CISLANDS_VOLTAGE_CONTROL_NONE) {
                ci_enable_voltage_control(adev);
                ret = ci_construct_voltage_tables(adev);