diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c | 45 |
1 files changed, 35 insertions, 10 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c index a5df1ef306d9..d9e5aa4a79ef 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c | |||
@@ -834,32 +834,57 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device, | |||
834 | case CHIP_TOPAZ: | 834 | case CHIP_TOPAZ: |
835 | if (((adev->pdev->device == 0x6900) && (adev->pdev->revision == 0x81)) || | 835 | if (((adev->pdev->device == 0x6900) && (adev->pdev->revision == 0x81)) || |
836 | ((adev->pdev->device == 0x6900) && (adev->pdev->revision == 0x83)) || | 836 | ((adev->pdev->device == 0x6900) && (adev->pdev->revision == 0x83)) || |
837 | ((adev->pdev->device == 0x6907) && (adev->pdev->revision == 0x87))) | 837 | ((adev->pdev->device == 0x6907) && (adev->pdev->revision == 0x87))) { |
838 | info->is_kicker = true; | ||
838 | strcpy(fw_name, "amdgpu/topaz_k_smc.bin"); | 839 | strcpy(fw_name, "amdgpu/topaz_k_smc.bin"); |
839 | else | 840 | } else |
840 | strcpy(fw_name, "amdgpu/topaz_smc.bin"); | 841 | strcpy(fw_name, "amdgpu/topaz_smc.bin"); |
841 | break; | 842 | break; |
842 | case CHIP_TONGA: | 843 | case CHIP_TONGA: |
843 | if (((adev->pdev->device == 0x6939) && (adev->pdev->revision == 0xf1)) || | 844 | if (((adev->pdev->device == 0x6939) && (adev->pdev->revision == 0xf1)) || |
844 | ((adev->pdev->device == 0x6938) && (adev->pdev->revision == 0xf1))) | 845 | ((adev->pdev->device == 0x6938) && (adev->pdev->revision == 0xf1))) { |
846 | info->is_kicker = true; | ||
845 | strcpy(fw_name, "amdgpu/tonga_k_smc.bin"); | 847 | strcpy(fw_name, "amdgpu/tonga_k_smc.bin"); |
846 | else | 848 | } else |
847 | strcpy(fw_name, "amdgpu/tonga_smc.bin"); | 849 | strcpy(fw_name, "amdgpu/tonga_smc.bin"); |
848 | break; | 850 | break; |
849 | case CHIP_FIJI: | 851 | case CHIP_FIJI: |
850 | strcpy(fw_name, "amdgpu/fiji_smc.bin"); | 852 | strcpy(fw_name, "amdgpu/fiji_smc.bin"); |
851 | break; | 853 | break; |
852 | case CHIP_POLARIS11: | 854 | case CHIP_POLARIS11: |
853 | if (type == CGS_UCODE_ID_SMU) | 855 | if (type == CGS_UCODE_ID_SMU) { |
854 | strcpy(fw_name, "amdgpu/polaris11_smc.bin"); | 856 | if (((adev->pdev->device == 0x67ef) && |
855 | else if (type == CGS_UCODE_ID_SMU_SK) | 857 | ((adev->pdev->revision == 0xe0) || |
858 | (adev->pdev->revision == 0xe2) || | ||
859 | (adev->pdev->revision == 0xe5))) || | ||
860 | ((adev->pdev->device == 0x67ff) && | ||
861 | ((adev->pdev->revision == 0xcf) || | ||
862 | (adev->pdev->revision == 0xef) || | ||
863 | (adev->pdev->revision == 0xff)))) { | ||
864 | info->is_kicker = true; | ||
865 | strcpy(fw_name, "amdgpu/polaris11_k_smc.bin"); | ||
866 | } else | ||
867 | strcpy(fw_name, "amdgpu/polaris11_smc.bin"); | ||
868 | } else if (type == CGS_UCODE_ID_SMU_SK) { | ||
856 | strcpy(fw_name, "amdgpu/polaris11_smc_sk.bin"); | 869 | strcpy(fw_name, "amdgpu/polaris11_smc_sk.bin"); |
870 | } | ||
857 | break; | 871 | break; |
858 | case CHIP_POLARIS10: | 872 | case CHIP_POLARIS10: |
859 | if (type == CGS_UCODE_ID_SMU) | 873 | if (type == CGS_UCODE_ID_SMU) { |
860 | strcpy(fw_name, "amdgpu/polaris10_smc.bin"); | 874 | if ((adev->pdev->device == 0x67df) && |
861 | else if (type == CGS_UCODE_ID_SMU_SK) | 875 | ((adev->pdev->revision == 0xe0) || |
876 | (adev->pdev->revision == 0xe3) || | ||
877 | (adev->pdev->revision == 0xe4) || | ||
878 | (adev->pdev->revision == 0xe5) || | ||
879 | (adev->pdev->revision == 0xe7) || | ||
880 | (adev->pdev->revision == 0xef))) { | ||
881 | info->is_kicker = true; | ||
882 | strcpy(fw_name, "amdgpu/polaris10_k_smc.bin"); | ||
883 | } else | ||
884 | strcpy(fw_name, "amdgpu/polaris10_smc.bin"); | ||
885 | } else if (type == CGS_UCODE_ID_SMU_SK) { | ||
862 | strcpy(fw_name, "amdgpu/polaris10_smc_sk.bin"); | 886 | strcpy(fw_name, "amdgpu/polaris10_smc_sk.bin"); |
887 | } | ||
863 | break; | 888 | break; |
864 | case CHIP_POLARIS12: | 889 | case CHIP_POLARIS12: |
865 | strcpy(fw_name, "amdgpu/polaris12_smc.bin"); | 890 | strcpy(fw_name, "amdgpu/polaris12_smc.bin"); |