drm/amdgpu: distinguish rlc fw for different SKU
authorLikun Gao <Likun.Gao@amd.com>
Wed, 29 Nov 2023 02:59:53 +0000 (10:59 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 30 Nov 2023 23:26:31 +0000 (18:26 -0500)
For some SKU, rlc firmware should use different one
compared with the normal rlc firmware.

Signed-off-by: Likun Gao <Likun.Gao@amd.com>
Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c

index 288e926e5cd4313966b92ead7297f86709d50cc6..c659ef0f47ce5421f2102556590dc966aa397b39 100644 (file)
@@ -67,6 +67,7 @@ MODULE_FIRMWARE("amdgpu/gc_11_0_0_pfp.bin");
 MODULE_FIRMWARE("amdgpu/gc_11_0_0_me.bin");
 MODULE_FIRMWARE("amdgpu/gc_11_0_0_mec.bin");
 MODULE_FIRMWARE("amdgpu/gc_11_0_0_rlc.bin");
+MODULE_FIRMWARE("amdgpu/gc_11_0_0_rlc_1.bin");
 MODULE_FIRMWARE("amdgpu/gc_11_0_0_toc.bin");
 MODULE_FIRMWARE("amdgpu/gc_11_0_1_pfp.bin");
 MODULE_FIRMWARE("amdgpu/gc_11_0_1_me.bin");
@@ -567,7 +568,11 @@ static int gfx_v11_0_init_microcode(struct amdgpu_device *adev)
        }
 
        if (!amdgpu_sriov_vf(adev)) {
-               snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_rlc.bin", ucode_prefix);
+               if (amdgpu_ip_version(adev, GC_HWIP, 0) == IP_VERSION(11, 0, 0) &&
+                   adev->pdev->revision == 0xCE)
+                       snprintf(fw_name, sizeof(fw_name), "amdgpu/gc_11_0_0_rlc_1.bin");
+               else
+                       snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_rlc.bin", ucode_prefix);
                err = amdgpu_ucode_request(adev, &adev->gfx.rlc_fw, fw_name);
                if (err)
                        goto out;