aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFlora Cui <Flora.Cui@amd.com>2016-12-15 00:43:59 -0500
committerAlex Deucher <alexander.deucher@amd.com>2017-01-06 17:43:23 -0500
commit5165484b02f2cbedb5bf3a41ff5e8ae16069016c (patch)
tree2e54e4c2035f9918fc5544b81b6451a167c06b9e
parent70fd80d6f7e37bf637331c682fafcce1112750ac (diff)
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
-rw-r--r--drivers/gpu/drm/amd/amdgpu/si_dpm.c57
1 files changed, 28 insertions, 29 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/si_dpm.c b/drivers/gpu/drm/amd/amdgpu/si_dpm.c
index 6c65a1a2de79..0566e9adaf8a 100644
--- a/drivers/gpu/drm/amd/amdgpu/si_dpm.c
+++ b/drivers/gpu/drm/amd/amdgpu/si_dpm.c
@@ -56,7 +56,6 @@
56#define BIOS_SCRATCH_4 0x5cd 56#define BIOS_SCRATCH_4 0x5cd
57 57
58MODULE_FIRMWARE("radeon/tahiti_smc.bin"); 58MODULE_FIRMWARE("radeon/tahiti_smc.bin");
59MODULE_FIRMWARE("radeon/tahiti_k_smc.bin");
60MODULE_FIRMWARE("radeon/pitcairn_smc.bin"); 59MODULE_FIRMWARE("radeon/pitcairn_smc.bin");
61MODULE_FIRMWARE("radeon/pitcairn_k_smc.bin"); 60MODULE_FIRMWARE("radeon/pitcairn_k_smc.bin");
62MODULE_FIRMWARE("radeon/verde_smc.bin"); 61MODULE_FIRMWARE("radeon/verde_smc.bin");
@@ -7687,49 +7686,49 @@ static int si_dpm_init_microcode(struct amdgpu_device *adev)
7687 chip_name = "tahiti"; 7686 chip_name = "tahiti";
7688 break; 7687 break;
7689 case CHIP_PITCAIRN: 7688 case CHIP_PITCAIRN:
7690 if ((adev->pdev->revision == 0x81) || 7689 if ((adev->pdev->revision == 0x81) &&
7691 (adev->pdev->device == 0x6810) || 7690 ((adev->pdev->device == 0x6810) ||
7692 (adev->pdev->device == 0x6811) || 7691 (adev->pdev->device == 0x6811)))
7693 (adev->pdev->device == 0x6816) ||
7694 (adev->pdev->device == 0x6817) ||
7695 (adev->pdev->device == 0x6806))
7696 chip_name = "pitcairn_k"; 7692 chip_name = "pitcairn_k";
7697 else 7693 else
7698 chip_name = "pitcairn"; 7694 chip_name = "pitcairn";
7699 break; 7695 break;
7700 case CHIP_VERDE: 7696 case CHIP_VERDE:
7701 if ((adev->pdev->revision == 0x81) || 7697 if (((adev->pdev->device == 0x6820) &&
7702 (adev->pdev->revision == 0x83) || 7698 ((adev->pdev->revision == 0x81) ||
7703 (adev->pdev->revision == 0x87) || 7699 (adev->pdev->revision == 0x83))) ||
7704 (adev->pdev->device == 0x6820) || 7700 ((adev->pdev->device == 0x6821) &&
7705 (adev->pdev->device == 0x6821) || 7701 ((adev->pdev->revision == 0x83) ||
7706 (adev->pdev->device == 0x6822) || 7702 (adev->pdev->revision == 0x87))) ||
7707 (adev->pdev->device == 0x6823) || 7703 ((adev->pdev->revision == 0x87) &&
7708 (adev->pdev->device == 0x682A) || 7704 ((adev->pdev->device == 0x6823) ||
7709 (adev->pdev->device == 0x682B)) 7705 (adev->pdev->device == 0x682b))))
7710 chip_name = "verde_k"; 7706 chip_name = "verde_k";
7711 else 7707 else
7712 chip_name = "verde"; 7708 chip_name = "verde";
7713 break; 7709 break;
7714 case CHIP_OLAND: 7710 case CHIP_OLAND:
7715 if ((adev->pdev->revision == 0xC7) || 7711 if (((adev->pdev->revision == 0x81) &&
7716 (adev->pdev->revision == 0x80) || 7712 ((adev->pdev->device == 0x6600) ||
7717 (adev->pdev->revision == 0x81) || 7713 (adev->pdev->device == 0x6604) ||
7718 (adev->pdev->revision == 0x83) || 7714 (adev->pdev->device == 0x6605) ||
7719 (adev->pdev->revision == 0x87) || 7715 (adev->pdev->device == 0x6610))) ||
7720 (adev->pdev->device == 0x6604) || 7716 ((adev->pdev->revision == 0x83) &&
7721 (adev->pdev->device == 0x6605)) 7717 (adev->pdev->device == 0x6610)))
7722 chip_name = "oland_k"; 7718 chip_name = "oland_k";
7723 else 7719 else
7724 chip_name = "oland"; 7720 chip_name = "oland";
7725 break; 7721 break;
7726 case CHIP_HAINAN: 7722 case CHIP_HAINAN:
7727 if ((adev->pdev->revision == 0x81) || 7723 if (((adev->pdev->revision == 0x81) &&
7728 (adev->pdev->revision == 0x83) || 7724 (adev->pdev->device == 0x6660)) ||
7729 (adev->pdev->revision == 0xC3) || 7725 ((adev->pdev->revision == 0x83) &&
7730 (adev->pdev->device == 0x6664) || 7726 ((adev->pdev->device == 0x6660) ||
7731 (adev->pdev->device == 0x6665) || 7727 (adev->pdev->device == 0x6663) ||
7732 (adev->pdev->device == 0x6667)) 7728 (adev->pdev->device == 0x6665) ||
7729 (adev->pdev->device == 0x6667))) ||
7730 ((adev->pdev->revision == 0xc3) &&
7731 (adev->pdev->device == 0x6665)))
7733 chip_name = "hainan_k"; 7732 chip_name = "hainan_k";
7734 else 7733 else
7735 chip_name = "hainan"; 7734 chip_name = "hainan";