diff options
author | Alex Deucher <alexander.deucher@amd.com> | 2017-02-08 22:35:51 -0500 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2017-02-09 10:54:45 -0500 |
commit | a52d120f62b83cafa14570c83c033a5de7458a01 (patch) | |
tree | 070a7e9f0bbf5237202a31bdc31847dd0b879ce5 /drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c | |
parent | 4d8d44c6ce8ce3c01f4dcc18fdaf542e0d16df45 (diff) |
drm/amdgpu: add support for new smc firmware on polaris
Some polaris variants require new smc firmware.
Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c | 33 |
1 files changed, 27 insertions, 6 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c index a5df1ef306d9..fa34dcae392f 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c | |||
@@ -850,16 +850,37 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device, | |||
850 | strcpy(fw_name, "amdgpu/fiji_smc.bin"); | 850 | strcpy(fw_name, "amdgpu/fiji_smc.bin"); |
851 | break; | 851 | break; |
852 | case CHIP_POLARIS11: | 852 | case CHIP_POLARIS11: |
853 | if (type == CGS_UCODE_ID_SMU) | 853 | if (type == CGS_UCODE_ID_SMU) { |
854 | strcpy(fw_name, "amdgpu/polaris11_smc.bin"); | 854 | if (((adev->pdev->device == 0x67ef) && |
855 | else if (type == CGS_UCODE_ID_SMU_SK) | 855 | ((adev->pdev->revision == 0xe0) || |
856 | (adev->pdev->revision == 0xe2) || | ||
857 | (adev->pdev->revision == 0xe5))) || | ||
858 | ((adev->pdev->device == 0x67ff) && | ||
859 | ((adev->pdev->revision == 0xcf) || | ||
860 | (adev->pdev->revision == 0xef) || | ||
861 | (adev->pdev->revision == 0xff)))) | ||
862 | strcpy(fw_name, "amdgpu/polaris11_k_smc.bin"); | ||
863 | else | ||
864 | strcpy(fw_name, "amdgpu/polaris11_smc.bin"); | ||
865 | } else if (type == CGS_UCODE_ID_SMU_SK) { | ||
856 | strcpy(fw_name, "amdgpu/polaris11_smc_sk.bin"); | 866 | strcpy(fw_name, "amdgpu/polaris11_smc_sk.bin"); |
867 | } | ||
857 | break; | 868 | break; |
858 | case CHIP_POLARIS10: | 869 | case CHIP_POLARIS10: |
859 | if (type == CGS_UCODE_ID_SMU) | 870 | if (type == CGS_UCODE_ID_SMU) { |
860 | strcpy(fw_name, "amdgpu/polaris10_smc.bin"); | 871 | if ((adev->pdev->device == 0x67df) && |
861 | else if (type == CGS_UCODE_ID_SMU_SK) | 872 | ((adev->pdev->revision == 0xe0) || |
873 | (adev->pdev->revision == 0xe3) || | ||
874 | (adev->pdev->revision == 0xe4) || | ||
875 | (adev->pdev->revision == 0xe5) || | ||
876 | (adev->pdev->revision == 0xe7) || | ||
877 | (adev->pdev->revision == 0xef))) | ||
878 | strcpy(fw_name, "amdgpu/polaris10_k_smc.bin"); | ||
879 | else | ||
880 | strcpy(fw_name, "amdgpu/polaris10_smc.bin"); | ||
881 | } else if (type == CGS_UCODE_ID_SMU_SK) { | ||
862 | strcpy(fw_name, "amdgpu/polaris10_smc_sk.bin"); | 882 | strcpy(fw_name, "amdgpu/polaris10_smc_sk.bin"); |
883 | } | ||
863 | break; | 884 | break; |
864 | case CHIP_POLARIS12: | 885 | case CHIP_POLARIS12: |
865 | strcpy(fw_name, "amdgpu/polaris12_smc.bin"); | 886 | strcpy(fw_name, "amdgpu/polaris12_smc.bin"); |