drm/amdgpu: Add fw load in gfx_v8 and sdma_v3
authorRex Zhu <Rex.Zhu@amd.com>
Sat, 29 Sep 2018 07:57:31 +0000 (15:57 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 9 Oct 2018 22:08:17 +0000 (17:08 -0500)
gfx and sdma can be initialized before smu.

Reviewed-by: Evan Quan <evan.quan@amd.com>
Signed-off-by: Rex Zhu <Rex.Zhu@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c

index 3d0f277a6523f80a4e2ee7e66c94c494b94448bc..8439f9a6f2812f323b597cef7609da0e450b4c1f 100644 (file)
@@ -4175,9 +4175,20 @@ static void gfx_v8_0_rlc_start(struct amdgpu_device *adev)
 
 static int gfx_v8_0_rlc_resume(struct amdgpu_device *adev)
 {
+       int r;
+
        gfx_v8_0_rlc_stop(adev);
        gfx_v8_0_rlc_reset(adev);
        gfx_v8_0_init_pg(adev);
+
+       if (adev->powerplay.pp_funcs->load_firmware) {
+               r = adev->powerplay.pp_funcs->load_firmware(adev->powerplay.pp_handle);
+               if (r) {
+                       pr_err("firmware loading failed\n");
+                       return r;
+               }
+       }
+
        gfx_v8_0_rlc_start(adev);
 
        return 0;
index 6fb3edaba0ec065fdd57f5af7866e93006bf39b2..0bdde7f84adf0e664d88a3bede0add9c1c50b637 100644 (file)
@@ -788,6 +788,14 @@ static int sdma_v3_0_start(struct amdgpu_device *adev)
 {
        int r;
 
+       if (adev->powerplay.pp_funcs->load_firmware) {
+               r = adev->powerplay.pp_funcs->load_firmware(adev->powerplay.pp_handle);
+               if (r) {
+                       pr_err("firmware loading failed\n");
+                       return r;
+               }
+       }
+
        /* disable sdma engine before programing it */
        sdma_v3_0_ctx_switch_enable(adev, false);
        sdma_v3_0_enable(adev, false);