drm/amdgpu: update si kicker smc firmware

Use the appropriate smc firmware for each chip revision.
Using the wrong one can cause stability issues.

Acked-by: Edward O'Callaghan <funfunctor@folklore1984.net>
Signed-off-by: Flora Cui <Flora.Cui@amd.com>
Reviewed-by: Junwei Zhang <Jerry.Zhang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Cc: stable@vger.kernel.org
This commit is contained in:
Flora Cui 2016-12-15 13:43:59 +08:00 committed by Alex Deucher
parent 70fd80d6f7
commit 5165484b02
1 changed files with 28 additions and 29 deletions

View File

@ -56,7 +56,6 @@
#define BIOS_SCRATCH_4 0x5cd #define BIOS_SCRATCH_4 0x5cd
MODULE_FIRMWARE("radeon/tahiti_smc.bin"); MODULE_FIRMWARE("radeon/tahiti_smc.bin");
MODULE_FIRMWARE("radeon/tahiti_k_smc.bin");
MODULE_FIRMWARE("radeon/pitcairn_smc.bin"); MODULE_FIRMWARE("radeon/pitcairn_smc.bin");
MODULE_FIRMWARE("radeon/pitcairn_k_smc.bin"); MODULE_FIRMWARE("radeon/pitcairn_k_smc.bin");
MODULE_FIRMWARE("radeon/verde_smc.bin"); MODULE_FIRMWARE("radeon/verde_smc.bin");
@ -7687,49 +7686,49 @@ static int si_dpm_init_microcode(struct amdgpu_device *adev)
chip_name = "tahiti"; chip_name = "tahiti";
break; break;
case CHIP_PITCAIRN: case CHIP_PITCAIRN:
if ((adev->pdev->revision == 0x81) || if ((adev->pdev->revision == 0x81) &&
(adev->pdev->device == 0x6810) || ((adev->pdev->device == 0x6810) ||
(adev->pdev->device == 0x6811) || (adev->pdev->device == 0x6811)))
(adev->pdev->device == 0x6816) ||
(adev->pdev->device == 0x6817) ||
(adev->pdev->device == 0x6806))
chip_name = "pitcairn_k"; chip_name = "pitcairn_k";
else else
chip_name = "pitcairn"; chip_name = "pitcairn";
break; break;
case CHIP_VERDE: case CHIP_VERDE:
if ((adev->pdev->revision == 0x81) || if (((adev->pdev->device == 0x6820) &&
(adev->pdev->revision == 0x83) || ((adev->pdev->revision == 0x81) ||
(adev->pdev->revision == 0x87) || (adev->pdev->revision == 0x83))) ||
(adev->pdev->device == 0x6820) || ((adev->pdev->device == 0x6821) &&
(adev->pdev->device == 0x6821) || ((adev->pdev->revision == 0x83) ||
(adev->pdev->device == 0x6822) || (adev->pdev->revision == 0x87))) ||
(adev->pdev->device == 0x6823) || ((adev->pdev->revision == 0x87) &&
(adev->pdev->device == 0x682A) || ((adev->pdev->device == 0x6823) ||
(adev->pdev->device == 0x682B)) (adev->pdev->device == 0x682b))))
chip_name = "verde_k"; chip_name = "verde_k";
else else
chip_name = "verde"; chip_name = "verde";
break; break;
case CHIP_OLAND: case CHIP_OLAND:
if ((adev->pdev->revision == 0xC7) || if (((adev->pdev->revision == 0x81) &&
(adev->pdev->revision == 0x80) || ((adev->pdev->device == 0x6600) ||
(adev->pdev->revision == 0x81) || (adev->pdev->device == 0x6604) ||
(adev->pdev->revision == 0x83) || (adev->pdev->device == 0x6605) ||
(adev->pdev->revision == 0x87) || (adev->pdev->device == 0x6610))) ||
(adev->pdev->device == 0x6604) || ((adev->pdev->revision == 0x83) &&
(adev->pdev->device == 0x6605)) (adev->pdev->device == 0x6610)))
chip_name = "oland_k"; chip_name = "oland_k";
else else
chip_name = "oland"; chip_name = "oland";
break; break;
case CHIP_HAINAN: case CHIP_HAINAN:
if ((adev->pdev->revision == 0x81) || if (((adev->pdev->revision == 0x81) &&
(adev->pdev->revision == 0x83) || (adev->pdev->device == 0x6660)) ||
(adev->pdev->revision == 0xC3) || ((adev->pdev->revision == 0x83) &&
(adev->pdev->device == 0x6664) || ((adev->pdev->device == 0x6660) ||
(adev->pdev->device == 0x6665) || (adev->pdev->device == 0x6663) ||
(adev->pdev->device == 0x6667)) (adev->pdev->device == 0x6665) ||
(adev->pdev->device == 0x6667))) ||
((adev->pdev->revision == 0xc3) &&
(adev->pdev->device == 0x6665)))
chip_name = "hainan_k"; chip_name = "hainan_k";
else else
chip_name = "hainan"; chip_name = "hainan";