diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.19.8/0569-drm-amdgpu-gmc8-update-MC-firmware-for-polaris.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-yocto-4.19.8/0569-drm-amdgpu-gmc8-update-MC-firmware-for-polaris.patch | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.19.8/0569-drm-amdgpu-gmc8-update-MC-firmware-for-polaris.patch b/common/recipes-kernel/linux/linux-yocto-4.19.8/0569-drm-amdgpu-gmc8-update-MC-firmware-for-polaris.patch new file mode 100644 index 00000000..141abf9d --- /dev/null +++ b/common/recipes-kernel/linux/linux-yocto-4.19.8/0569-drm-amdgpu-gmc8-update-MC-firmware-for-polaris.patch @@ -0,0 +1,74 @@ +From a786f4438b008a9726c2df531228de253b894faa Mon Sep 17 00:00:00 2001 +From: Alex Deucher <alexander.deucher@amd.com> +Date: Wed, 28 Nov 2018 23:25:41 -0500 +Subject: [PATCH 0569/2940] drm/amdgpu/gmc8: update MC firmware for polaris + +Some variants require different MC firmware images. + +Signed-off-by: Alex Deucher <alexander.deucher@amd.com> +Reviewed-by: Junwei Zhang <Jerry.Zhang@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c | 29 ++++++++++++++++++++++----- + 1 file changed, 24 insertions(+), 5 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c +index 2617d43384e4..1a398c70bffe 100644 +--- a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c ++++ b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c +@@ -56,6 +56,8 @@ MODULE_FIRMWARE("amdgpu/tonga_mc.bin"); + MODULE_FIRMWARE("amdgpu/polaris11_mc.bin"); + MODULE_FIRMWARE("amdgpu/polaris10_mc.bin"); + MODULE_FIRMWARE("amdgpu/polaris12_mc.bin"); ++MODULE_FIRMWARE("amdgpu/polaris11_k_mc.bin"); ++MODULE_FIRMWARE("amdgpu/polaris10_k_mc.bin"); + MODULE_FIRMWARE("amdgpu/polaris12_k_mc.bin"); + + static const u32 golden_settings_tonga_a11[] = +@@ -225,22 +227,39 @@ static int gmc_v8_0_init_microcode(struct amdgpu_device *adev) + chip_name = "tonga"; + break; + case CHIP_POLARIS11: +- chip_name = "polaris11"; ++ if (((adev->pdev->device == 0x67ef) && ++ ((adev->pdev->revision == 0xe0) || ++ (adev->pdev->revision == 0xe5))) || ++ ((adev->pdev->device == 0x67ff) && ++ ((adev->pdev->revision == 0xcf) || ++ (adev->pdev->revision == 0xef) || ++ (adev->pdev->revision == 0xff)))) ++ chip_name = "polaris11_k"; ++ else if ((adev->pdev->device == 0x67ef) && ++ (adev->pdev->revision == 0xe2)) ++ chip_name = "polaris11_k"; ++ else ++ chip_name = "polaris11"; + break; + case CHIP_POLARIS10: +- chip_name = "polaris10"; ++ if ((adev->pdev->device == 0x67df) && ++ ((adev->pdev->revision == 0xe1) || ++ (adev->pdev->revision == 0xf7))) ++ chip_name = "polaris10_k"; ++ else ++ chip_name = "polaris10"; + break; + case CHIP_POLARIS12: +- chip_name = "polaris12"; + if (((adev->pdev->device == 0x6987) && + ((adev->pdev->revision == 0xc0) || + (adev->pdev->revision == 0xc3))) || + ((adev->pdev->device == 0x6981) && + ((adev->pdev->revision == 0x00) || + (adev->pdev->revision == 0x01) || +- (adev->pdev->revision == 0x10)))) { ++ (adev->pdev->revision == 0x10)))) + chip_name = "polaris12_k"; +- } ++ else ++ chip_name = "polaris12"; + break; + case CHIP_FIJI: + case CHIP_CARRIZO: +-- +2.17.1 + |