aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.19.8/2212-drm-amdgpu-psp11-skip-ta-firmware-for-navi10.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.19.8/2212-drm-amdgpu-psp11-skip-ta-firmware-for-navi10.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.19.8/2212-drm-amdgpu-psp11-skip-ta-firmware-for-navi10.patch79
1 files changed, 79 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.19.8/2212-drm-amdgpu-psp11-skip-ta-firmware-for-navi10.patch b/common/recipes-kernel/linux/linux-yocto-4.19.8/2212-drm-amdgpu-psp11-skip-ta-firmware-for-navi10.patch
new file mode 100644
index 00000000..22f5c0b1
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-4.19.8/2212-drm-amdgpu-psp11-skip-ta-firmware-for-navi10.patch
@@ -0,0 +1,79 @@
+From 40edf5b00e5f56a5af0b4ab7278810763d5ec454 Mon Sep 17 00:00:00 2001
+From: Hawking Zhang <Hawking.Zhang@amd.com>
+Date: Sat, 16 Feb 2019 22:22:46 +0800
+Subject: [PATCH 2212/2940] drm/amdgpu/psp11: skip ta firmware for navi10
+
+Signed-off-by: Hawking Zhang <Hawking.Zhang@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/psp_v11_0.c | 54 ++++++++++++++------------
+ 1 file changed, 30 insertions(+), 24 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/psp_v11_0.c b/drivers/gpu/drm/amd/amdgpu/psp_v11_0.c
+index 02c326790455..345a57a49365 100644
+--- a/drivers/gpu/drm/amd/amdgpu/psp_v11_0.c
++++ b/drivers/gpu/drm/amd/amdgpu/psp_v11_0.c
+@@ -136,30 +136,36 @@ static int psp_v11_0_init_microcode(struct psp_context *psp)
+ adev->psp.asd_start_addr = (uint8_t *)asd_hdr +
+ le32_to_cpu(asd_hdr->header.ucode_array_offset_bytes);
+
+- snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_ta.bin", chip_name);
+- err = request_firmware(&adev->psp.ta_fw, fw_name, adev->dev);
+- if (err) {
+- release_firmware(adev->psp.ta_fw);
+- adev->psp.ta_fw = NULL;
+- dev_info(adev->dev,
+- "psp v11.0: Failed to load firmware \"%s\"\n", fw_name);
+- } else {
+- err = amdgpu_ucode_validate(adev->psp.ta_fw);
+- if (err)
+- goto out2;
+-
+- ta_hdr = (const struct ta_firmware_header_v1_0 *)adev->psp.ta_fw->data;
+- adev->psp.ta_xgmi_ucode_version = le32_to_cpu(ta_hdr->ta_xgmi_ucode_version);
+- adev->psp.ta_xgmi_ucode_size = le32_to_cpu(ta_hdr->ta_xgmi_size_bytes);
+- adev->psp.ta_xgmi_start_addr = (uint8_t *)ta_hdr +
+- le32_to_cpu(ta_hdr->header.ucode_array_offset_bytes);
+-
+- adev->psp.ta_fw_version = le32_to_cpu(ta_hdr->header.ucode_version);
+-
+- adev->psp.ta_ras_ucode_version = le32_to_cpu(ta_hdr->ta_ras_ucode_version);
+- adev->psp.ta_ras_ucode_size = le32_to_cpu(ta_hdr->ta_ras_size_bytes);
+- adev->psp.ta_ras_start_addr = (uint8_t *)adev->psp.ta_xgmi_start_addr +
+- le32_to_cpu(ta_hdr->ta_ras_offset_bytes);
++ switch (adev->asic_type) {
++ case CHIP_VEGA20:
++ snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_ta.bin", chip_name);
++ err = request_firmware(&adev->psp.ta_fw, fw_name, adev->dev);
++ if (err) {
++ release_firmware(adev->psp.ta_fw);
++ adev->psp.ta_fw = NULL;
++ dev_info(adev->dev,
++ "psp v11.0: Failed to load firmware \"%s\"\n", fw_name);
++ } else {
++ err = amdgpu_ucode_validate(adev->psp.ta_fw);
++ if (err)
++ goto out2;
++
++ ta_hdr = (const struct ta_firmware_header_v1_0 *)adev->psp.ta_fw->data;
++ adev->psp.ta_xgmi_ucode_version = le32_to_cpu(ta_hdr->ta_xgmi_ucode_version);
++ adev->psp.ta_xgmi_ucode_size = le32_to_cpu(ta_hdr->ta_xgmi_size_bytes);
++ adev->psp.ta_xgmi_start_addr = (uint8_t *)ta_hdr +
++ le32_to_cpu(ta_hdr->header.ucode_array_offset_bytes);
++ adev->psp.ta_fw_version = le32_to_cpu(ta_hdr->header.ucode_version);
++ adev->psp.ta_ras_ucode_version = le32_to_cpu(ta_hdr->ta_ras_ucode_version);
++ adev->psp.ta_ras_ucode_size = le32_to_cpu(ta_hdr->ta_ras_size_bytes);
++ adev->psp.ta_ras_start_addr = (uint8_t *)adev->psp.ta_xgmi_start_addr +
++ le32_to_cpu(ta_hdr->ta_ras_offset_bytes);
++ }
++ break;
++ case CHIP_NAVI10:
++ break;
++ default:
++ BUG();
+ }
+
+ return 0;
+--
+2.17.1
+