]> Git Repo - linux.git/blobdiff - drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c
Merge tag 'v5.3-rc1' into regulator-5.3
[linux.git] / drivers / gpu / drm / amd / amdgpu / amdgpu_ucode.c
index 524f70f2b52f2ddf770eb1e32796b9bf1a2479d9..bfaa0eac3213fa93a137d60464c90a32bc6db8d6 100644 (file)
@@ -77,6 +77,14 @@ void amdgpu_ucode_print_smc_hdr(const struct common_firmware_header *hdr)
                        container_of(hdr, struct smc_firmware_header_v1_0, header);
 
                DRM_DEBUG("ucode_start_addr: %u\n", le32_to_cpu(smc_hdr->ucode_start_addr));
+       } else if (version_major == 2) {
+               const struct smc_firmware_header_v1_0 *v1_hdr =
+                       container_of(hdr, struct smc_firmware_header_v1_0, header);
+               const struct smc_firmware_header_v2_0 *v2_hdr =
+                       container_of(v1_hdr, struct smc_firmware_header_v2_0, v1_0);
+
+               DRM_INFO("ppt_offset_bytes: %u\n", le32_to_cpu(v2_hdr->ppt_offset_bytes));
+               DRM_INFO("ppt_size_bytes: %u\n", le32_to_cpu(v2_hdr->ppt_size_bytes));
        } else {
                DRM_ERROR("Unknown SMC ucode version: %u.%u\n", version_major, version_minor);
        }
@@ -227,6 +235,46 @@ void amdgpu_ucode_print_sdma_hdr(const struct common_firmware_header *hdr)
        }
 }
 
+void amdgpu_ucode_print_psp_hdr(const struct common_firmware_header *hdr)
+{
+       uint16_t version_major = le16_to_cpu(hdr->header_version_major);
+       uint16_t version_minor = le16_to_cpu(hdr->header_version_minor);
+
+       DRM_DEBUG("PSP\n");
+       amdgpu_ucode_print_common_hdr(hdr);
+
+       if (version_major == 1) {
+               const struct psp_firmware_header_v1_0 *psp_hdr =
+                       container_of(hdr, struct psp_firmware_header_v1_0, header);
+
+               DRM_DEBUG("ucode_feature_version: %u\n",
+                         le32_to_cpu(psp_hdr->ucode_feature_version));
+               DRM_DEBUG("sos_offset_bytes: %u\n",
+                         le32_to_cpu(psp_hdr->sos_offset_bytes));
+               DRM_DEBUG("sos_size_bytes: %u\n",
+                         le32_to_cpu(psp_hdr->sos_size_bytes));
+               if (version_minor == 1) {
+                       const struct psp_firmware_header_v1_1 *psp_hdr_v1_1 =
+                               container_of(psp_hdr, struct psp_firmware_header_v1_1, v1_0);
+                       DRM_DEBUG("toc_header_version: %u\n",
+                                 le32_to_cpu(psp_hdr_v1_1->toc_header_version));
+                       DRM_DEBUG("toc_offset_bytes: %u\n",
+                                 le32_to_cpu(psp_hdr_v1_1->toc_offset_bytes));
+                       DRM_DEBUG("toc_size_bytes: %u\n",
+                                 le32_to_cpu(psp_hdr_v1_1->toc_size_bytes));
+                       DRM_DEBUG("kdb_header_version: %u\n",
+                                 le32_to_cpu(psp_hdr_v1_1->kdb_header_version));
+                       DRM_DEBUG("kdb_offset_bytes: %u\n",
+                                 le32_to_cpu(psp_hdr_v1_1->kdb_offset_bytes));
+                       DRM_DEBUG("kdb_size_bytes: %u\n",
+                                 le32_to_cpu(psp_hdr_v1_1->kdb_size_bytes));
+               }
+       } else {
+               DRM_ERROR("Unknown PSP ucode version: %u.%u\n",
+                         version_major, version_minor);
+       }
+}
+
 void amdgpu_ucode_print_gpu_info_hdr(const struct common_firmware_header *hdr)
 {
        uint16_t version_major = le16_to_cpu(hdr->header_version_major);
@@ -302,6 +350,7 @@ amdgpu_ucode_get_load_type(struct amdgpu_device *adev, int load_type)
        case CHIP_RAVEN:
        case CHIP_VEGA12:
        case CHIP_VEGA20:
+       case CHIP_NAVI10:
                if (!load_type)
                        return AMDGPU_FW_LOAD_DIRECT;
                else
This page took 0.04074 seconds and 4 git commands to generate.