drm/amdgpu: refine vcn firmware loading
authorYang Wang <kevinyang.wang@amd.com>
Thu, 30 May 2024 15:33:27 +0000 (23:33 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 14 Jun 2024 20:17:12 +0000 (16:17 -0400)
refine vcn firmware loading

Signed-off-by: Yang Wang <kevinyang.wang@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c

index 5e2b7c3407244fed4fc803e8e61b0d09d3887b09..8d65b096db90097a618ead38fd6f8c5be5dae81b 100644 (file)
@@ -94,18 +94,14 @@ static void amdgpu_vcn_idle_work_handler(struct work_struct *work);
 int amdgpu_vcn_early_init(struct amdgpu_device *adev)
 {
        char ucode_prefix[25];
-       char fw_name[40];
        int r, i;
 
+       amdgpu_ucode_ip_version_decode(adev, UVD_HWIP, ucode_prefix, sizeof(ucode_prefix));
        for (i = 0; i < adev->vcn.num_vcn_inst; i++) {
-               amdgpu_ucode_ip_version_decode(adev, UVD_HWIP, ucode_prefix, sizeof(ucode_prefix));
-               snprintf(fw_name, sizeof(fw_name), "amdgpu/%s.bin", ucode_prefix);
-               if (amdgpu_ip_version(adev, UVD_HWIP, 0) ==  IP_VERSION(4, 0, 6) &&
-                       i == 1) {
-                       snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_%d.bin", ucode_prefix, i);
-               }
-
-               r = amdgpu_ucode_request(adev, &adev->vcn.fw[i], fw_name);
+               if (i == 1 && amdgpu_ip_version(adev, UVD_HWIP, 0) ==  IP_VERSION(4, 0, 6))
+                       r = amdgpu_ucode_request(adev, &adev->vcn.fw[i], "amdgpu/%s_%d.bin", ucode_prefix, i);
+               else
+                       r = amdgpu_ucode_request(adev, &adev->vcn.fw[i], "amdgpu/%s.bin", ucode_prefix);
                if (r) {
                        amdgpu_ucode_release(&adev->vcn.fw[i]);
                        return r;