drm/amdgpu: Add PSP public function to load a list of FWs
authorLijo Lazar <lijo.lazar@amd.com>
Tue, 16 Mar 2021 12:56:43 +0000 (20:56 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 9 Apr 2021 20:46:18 +0000 (16:46 -0400)
v1: Adds a function to load a list of FWs as passed by the caller. This is
needed as only a select need to loaded for some use cases.

v2: Omit unrelated change, remove info log, fix return value when count is 0

Signed-off-by: Lijo Lazar <lijo.lazar@amd.com>
Reviewed-by: Feifei Xu <Feifei.Xu@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_psp.c
drivers/gpu/drm/amd/amdgpu/amdgpu_psp.h

index f5ae310..c36c8fc 100644 (file)
@@ -2227,6 +2227,22 @@ static bool fw_load_skip_check(struct psp_context *psp,
        return false;
 }
 
+int psp_load_fw_list(struct psp_context *psp,
+                    struct amdgpu_firmware_info **ucode_list, int ucode_count)
+{
+       int ret = 0, i;
+       struct amdgpu_firmware_info *ucode;
+
+       for (i = 0; i < ucode_count; ++i) {
+               ucode = ucode_list[i];
+               psp_print_fw_hdr(psp, ucode);
+               ret = psp_execute_np_fw_load(psp, ucode);
+               if (ret)
+                       return ret;
+       }
+       return ret;
+}
+
 static int psp_np_fw_load(struct psp_context *psp)
 {
        int i, ret;
index 64f1433..46a5328 100644 (file)
@@ -420,4 +420,7 @@ int psp_init_ta_microcode(struct psp_context *psp,
                          const char *chip_name);
 int psp_get_fw_attestation_records_addr(struct psp_context *psp,
                                        uint64_t *output_ptr);
+
+int psp_load_fw_list(struct psp_context *psp,
+                    struct amdgpu_firmware_info **ucode_list, int ucode_count);
 #endif