drm/amdgpu: Add sdma fw v3 structure
authorLikun Gao <Likun.Gao@amd.com>
Mon, 6 Feb 2023 07:13:43 +0000 (15:13 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 30 Apr 2024 14:03:12 +0000 (10:03 -0400)
Add sdma firmware struct version 3 to support
sdma v7_0 firmware.

Signed-off-by: Likun Gao <Likun.Gao@amd.com>
Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c
drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.h

index 0867fd9..42794b1 100644 (file)
@@ -323,6 +323,12 @@ void amdgpu_ucode_print_sdma_hdr(const struct common_firmware_header *hdr)
                DRM_DEBUG("ctl_ucode_offset: %u\n", le32_to_cpu(sdma_hdr->ctl_ucode_offset));
                DRM_DEBUG("ctl_jt_offset: %u\n", le32_to_cpu(sdma_hdr->ctl_jt_offset));
                DRM_DEBUG("ctl_jt_size: %u\n", le32_to_cpu(sdma_hdr->ctl_jt_size));
+       } else if (version_major == 3) {
+               const struct sdma_firmware_header_v3_0 *sdma_hdr =
+                       container_of(hdr, struct sdma_firmware_header_v3_0, header);
+
+               DRM_DEBUG("ucode_reversion: %u\n",
+                         le32_to_cpu(sdma_hdr->ucode_feature_version));
        } else {
                DRM_ERROR("Unknown SDMA ucode version: %u.%u\n",
                          version_major, version_minor);
index 105d4de..9a061c7 100644 (file)
@@ -346,6 +346,14 @@ struct umsch_mm_firmware_header_v1_0 {
        uint32_t umsch_mm_data_start_addr_hi;
 };
 
+/* version_major=3, version_minor=0 */
+struct sdma_firmware_header_v3_0 {
+    struct common_firmware_header header;
+    uint32_t ucode_feature_version;
+    uint32_t ucode_offset_bytes;
+    uint32_t ucode_size_bytes;
+};
+
 /* gpu info payload */
 struct gpu_info_firmware_v1_0 {
        uint32_t gc_num_se;
@@ -431,6 +439,7 @@ union amdgpu_firmware_header {
        struct sdma_firmware_header_v1_0 sdma;
        struct sdma_firmware_header_v1_1 sdma_v1_1;
        struct sdma_firmware_header_v2_0 sdma_v2_0;
+       struct sdma_firmware_header_v3_0 sdma_v3_0;
        struct gpu_info_firmware_header_v1_0 gpu_info;
        struct dmcu_firmware_header_v1_0 dmcu;
        struct dmcub_firmware_header_v1_0 dmcub;