aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/4032-drm-amdgpu-add-new-rlc-firmware-header-format-v2.1.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/4032-drm-amdgpu-add-new-rlc-firmware-header-format-v2.1.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/4032-drm-amdgpu-add-new-rlc-firmware-header-format-v2.1.patch101
1 files changed, 101 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/4032-drm-amdgpu-add-new-rlc-firmware-header-format-v2.1.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/4032-drm-amdgpu-add-new-rlc-firmware-header-format-v2.1.patch
new file mode 100644
index 00000000..dbe7ba98
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/4032-drm-amdgpu-add-new-rlc-firmware-header-format-v2.1.patch
@@ -0,0 +1,101 @@
+From d4986785f319fe3d6b4711520d051d6668ef28bb Mon Sep 17 00:00:00 2001
+From: Huang Rui <ray.huang@amd.com>
+Date: Mon, 22 Jan 2018 17:51:35 +0800
+Subject: [PATCH 4032/4131] drm/amdgpu: add new rlc firmware header format v2.1
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Signed-off-by: Huang Rui <ray.huang@amd.com>
+Acked-by: Alex Deucher <alexander.deucher@amd.com>
+Acked-by: Christian König <christian.koenig@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c | 34 +++++++++++++++++++++++++++++--
+ drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.h | 19 +++++++++++++++++
+ 2 files changed, 51 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c
+index dd6f989..84d6525 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c
+@@ -161,8 +161,38 @@ void amdgpu_ucode_print_rlc_hdr(const struct common_firmware_header *hdr)
+ le32_to_cpu(rlc_hdr->reg_list_format_separate_array_offset_bytes));
+ DRM_DEBUG("reg_list_separate_size_bytes: %u\n",
+ le32_to_cpu(rlc_hdr->reg_list_separate_size_bytes));
+- DRM_DEBUG("reg_list_separate_size_bytes: %u\n",
+- le32_to_cpu(rlc_hdr->reg_list_separate_size_bytes));
++ DRM_DEBUG("reg_list_separate_array_offset_bytes: %u\n",
++ le32_to_cpu(rlc_hdr->reg_list_separate_array_offset_bytes));
++ if (version_minor == 1) {
++ const struct rlc_firmware_header_v2_1 *v2_1 =
++ container_of(rlc_hdr, struct rlc_firmware_header_v2_1, v2_0);
++ DRM_DEBUG("reg_list_format_direct_reg_list_length: %u\n",
++ le32_to_cpu(v2_1->reg_list_format_direct_reg_list_length));
++ DRM_DEBUG("save_restore_list_cntl_ucode_ver: %u\n",
++ le32_to_cpu(v2_1->save_restore_list_cntl_ucode_ver));
++ DRM_DEBUG("save_restore_list_cntl_feature_ver: %u\n",
++ le32_to_cpu(v2_1->save_restore_list_cntl_feature_ver));
++ DRM_DEBUG("save_restore_list_cntl_size_bytes %u\n",
++ le32_to_cpu(v2_1->save_restore_list_cntl_size_bytes));
++ DRM_DEBUG("save_restore_list_cntl_offset_bytes: %u\n",
++ le32_to_cpu(v2_1->save_restore_list_cntl_offset_bytes));
++ DRM_DEBUG("save_restore_list_gpm_ucode_ver: %u\n",
++ le32_to_cpu(v2_1->save_restore_list_gpm_ucode_ver));
++ DRM_DEBUG("save_restore_list_gpm_feature_ver: %u\n",
++ le32_to_cpu(v2_1->save_restore_list_gpm_feature_ver));
++ DRM_DEBUG("save_restore_list_gpm_size_bytes %u\n",
++ le32_to_cpu(v2_1->save_restore_list_gpm_size_bytes));
++ DRM_DEBUG("save_restore_list_gpm_offset_bytes: %u\n",
++ le32_to_cpu(v2_1->save_restore_list_gpm_offset_bytes));
++ DRM_DEBUG("save_restore_list_srm_ucode_ver: %u\n",
++ le32_to_cpu(v2_1->save_restore_list_srm_ucode_ver));
++ DRM_DEBUG("save_restore_list_srm_feature_ver: %u\n",
++ le32_to_cpu(v2_1->save_restore_list_srm_feature_ver));
++ DRM_DEBUG("save_restore_list_srm_size_bytes %u\n",
++ le32_to_cpu(v2_1->save_restore_list_srm_size_bytes));
++ DRM_DEBUG("save_restore_list_srm_offset_bytes: %u\n",
++ le32_to_cpu(v2_1->save_restore_list_srm_offset_bytes));
++ }
+ } else {
+ DRM_ERROR("Unknown RLC ucode version: %u.%u\n", version_major, version_minor);
+ }
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.h
+index fa7b25e..6ba6912 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.h
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.h
+@@ -98,6 +98,24 @@ struct rlc_firmware_header_v2_0 {
+ uint32_t reg_list_separate_array_offset_bytes; /* payload offset from the start of the header */
+ };
+
++/* version_major=2, version_minor=1 */
++struct rlc_firmware_header_v2_1 {
++ struct rlc_firmware_header_v2_0 v2_0;
++ uint32_t reg_list_format_direct_reg_list_length; /* length of direct reg list format array */
++ uint32_t save_restore_list_cntl_ucode_ver;
++ uint32_t save_restore_list_cntl_feature_ver;
++ uint32_t save_restore_list_cntl_size_bytes;
++ uint32_t save_restore_list_cntl_offset_bytes;
++ uint32_t save_restore_list_gpm_ucode_ver;
++ uint32_t save_restore_list_gpm_feature_ver;
++ uint32_t save_restore_list_gpm_size_bytes;
++ uint32_t save_restore_list_gpm_offset_bytes;
++ uint32_t save_restore_list_srm_ucode_ver;
++ uint32_t save_restore_list_srm_feature_ver;
++ uint32_t save_restore_list_srm_size_bytes;
++ uint32_t save_restore_list_srm_offset_bytes;
++};
++
+ /* version_major=1, version_minor=0 */
+ struct sdma_firmware_header_v1_0 {
+ struct common_firmware_header header;
+@@ -148,6 +166,7 @@ union amdgpu_firmware_header {
+ struct gfx_firmware_header_v1_0 gfx;
+ struct rlc_firmware_header_v1_0 rlc;
+ struct rlc_firmware_header_v2_0 rlc_v2_0;
++ struct rlc_firmware_header_v2_1 rlc_v2_1;
+ struct sdma_firmware_header_v1_0 sdma;
+ struct sdma_firmware_header_v1_1 sdma_v1_1;
+ struct gpu_info_firmware_header_v1_0 gpu_info;
+--
+2.7.4
+