|
@@ -850,16 +850,37 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
|
|
|
strcpy(fw_name, "amdgpu/fiji_smc.bin");
|
|
|
break;
|
|
|
case CHIP_POLARIS11:
|
|
|
- if (type == CGS_UCODE_ID_SMU)
|
|
|
- strcpy(fw_name, "amdgpu/polaris11_smc.bin");
|
|
|
- else if (type == CGS_UCODE_ID_SMU_SK)
|
|
|
+ if (type == CGS_UCODE_ID_SMU) {
|
|
|
+ if (((adev->pdev->device == 0x67ef) &&
|
|
|
+ ((adev->pdev->revision == 0xe0) ||
|
|
|
+ (adev->pdev->revision == 0xe2) ||
|
|
|
+ (adev->pdev->revision == 0xe5))) ||
|
|
|
+ ((adev->pdev->device == 0x67ff) &&
|
|
|
+ ((adev->pdev->revision == 0xcf) ||
|
|
|
+ (adev->pdev->revision == 0xef) ||
|
|
|
+ (adev->pdev->revision == 0xff))))
|
|
|
+ strcpy(fw_name, "amdgpu/polaris11_k_smc.bin");
|
|
|
+ else
|
|
|
+ strcpy(fw_name, "amdgpu/polaris11_smc.bin");
|
|
|
+ } else if (type == CGS_UCODE_ID_SMU_SK) {
|
|
|
strcpy(fw_name, "amdgpu/polaris11_smc_sk.bin");
|
|
|
+ }
|
|
|
break;
|
|
|
case CHIP_POLARIS10:
|
|
|
- if (type == CGS_UCODE_ID_SMU)
|
|
|
- strcpy(fw_name, "amdgpu/polaris10_smc.bin");
|
|
|
- else if (type == CGS_UCODE_ID_SMU_SK)
|
|
|
+ if (type == CGS_UCODE_ID_SMU) {
|
|
|
+ if ((adev->pdev->device == 0x67df) &&
|
|
|
+ ((adev->pdev->revision == 0xe0) ||
|
|
|
+ (adev->pdev->revision == 0xe3) ||
|
|
|
+ (adev->pdev->revision == 0xe4) ||
|
|
|
+ (adev->pdev->revision == 0xe5) ||
|
|
|
+ (adev->pdev->revision == 0xe7) ||
|
|
|
+ (adev->pdev->revision == 0xef)))
|
|
|
+ strcpy(fw_name, "amdgpu/polaris10_k_smc.bin");
|
|
|
+ else
|
|
|
+ strcpy(fw_name, "amdgpu/polaris10_smc.bin");
|
|
|
+ } else if (type == CGS_UCODE_ID_SMU_SK) {
|
|
|
strcpy(fw_name, "amdgpu/polaris10_smc_sk.bin");
|
|
|
+ }
|
|
|
break;
|
|
|
case CHIP_POLARIS12:
|
|
|
strcpy(fw_name, "amdgpu/polaris12_smc.bin");
|