aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
diff options
context:
space:
mode:
authorAlex Deucher <alexander.deucher@amd.com>2017-02-08 22:35:51 -0500
committerAlex Deucher <alexander.deucher@amd.com>2017-02-09 10:54:45 -0500
commita52d120f62b83cafa14570c83c033a5de7458a01 (patch)
tree070a7e9f0bbf5237202a31bdc31847dd0b879ce5 /drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
parent4d8d44c6ce8ce3c01f4dcc18fdaf542e0d16df45 (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.c33
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");