drm/amdgpu: add ta ras fw info (v2)
authorxinhui pan <xinhui.pan@amd.com>
Tue, 20 Nov 2018 02:32:00 +0000 (10:32 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 19 Mar 2019 20:36:50 +0000 (15:36 -0500)
Add ras fw part, xgmi and ras fw are combined together in ta binary.
Reading the data from the info is not implemented yet.

v2: squash in "drm/amdgpu: fix NULL pointer when ta is missing"

Signed-off-by: xinhui pan <xinhui.pan@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_psp.h
drivers/gpu/drm/amd/amdgpu/psp_v11_0.c

index 2ef98cc755d6e0438c551803a14f28570b827333..49c3942e469c39654c47fad7234a050fd199038c 100644 (file)
@@ -150,9 +150,13 @@ struct psp_context
 
        /* xgmi ta firmware and buffer */
        const struct firmware           *ta_fw;
+       uint32_t                        ta_fw_version;
        uint32_t                        ta_xgmi_ucode_version;
        uint32_t                        ta_xgmi_ucode_size;
        uint8_t                         *ta_xgmi_start_addr;
+       uint32_t                        ta_ras_ucode_version;
+       uint32_t                        ta_ras_ucode_size;
+       uint8_t                         *ta_ras_start_addr;
        struct psp_xgmi_context         xgmi_context;
 };
 
index 2c584cc9375f04d96c831023cd6198df8a857092..8fb2676847879119f71aaaae66d609d1a9b931fd 100644 (file)
@@ -116,6 +116,13 @@ static int psp_v11_0_init_microcode(struct psp_context *psp)
                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);
        }
 
        return 0;