diff options
Diffstat (limited to 'src/soc/amd/common/block/psp/psp.c')
-rw-r--r-- | src/soc/amd/common/block/psp/psp.c | 59 |
1 files changed, 3 insertions, 56 deletions
diff --git a/src/soc/amd/common/block/psp/psp.c b/src/soc/amd/common/block/psp/psp.c index 22404be6d6..479c28bc33 100644 --- a/src/soc/amd/common/block/psp/psp.c +++ b/src/soc/amd/common/block/psp/psp.c @@ -3,8 +3,6 @@ #include <device/mmio.h> #include <cpu/x86/msr.h> -#include <cbfs.h> -#include <region_file.h> #include <timer.h> #include <bootstate.h> #include <console/console.h> @@ -50,7 +48,7 @@ static u32 rd_resp_sts(struct mbox_default_buffer *buffer) * Print meaningful status to the console. Caller only passes a pointer to a * buffer if it's expected to contain its own status. */ -static void print_cmd_status(int cmd_status, struct mbox_default_buffer *buffer) +void psp_print_cmd_status(int cmd_status, struct mbox_default_buffer *buffer) { if (buffer && rd_resp_sts(buffer)) printk(BIOS_DEBUG, "buffer status=0x%x ", rd_resp_sts(buffer)); @@ -79,7 +77,7 @@ int psp_notify_dram(void) cmd_status = send_psp_command(MBOX_BIOS_CMD_DRAM_INFO, &buffer); /* buffer's status shouldn't change but report it if it does */ - print_cmd_status(cmd_status, &buffer); + psp_print_cmd_status(cmd_status, &buffer); return cmd_status; } @@ -103,58 +101,7 @@ static void psp_notify_boot_done(void *unused) cmd_status = send_psp_command(MBOX_BIOS_CMD_BOOT_DONE, &buffer); /* buffer's status shouldn't change but report it if it does */ - print_cmd_status(cmd_status, &buffer); -} - -/* - * Tell the PSP to load a firmware blob from a location in the BIOS image. - */ -int psp_load_named_blob(enum psp_blob_type type, const char *name) -{ - int cmd_status; - u32 command; - void *blob; - struct cbfsf cbfs_file; - struct region_device rdev; - - switch (type) { - case BLOB_SMU_FW: - command = MBOX_BIOS_CMD_SMU_FW; - break; - case BLOB_SMU_FW2: - command = MBOX_BIOS_CMD_SMU_FW2; - break; - default: - printk(BIOS_ERR, "BUG: Invalid PSP blob type %x\n", type); - return -PSPSTS_INVALID_BLOB; - } - - /* type can only be BLOB_SMU_FW or BLOB_SMU_FW2 here, so don't re-check for this */ - if (!CONFIG(SOC_AMD_PSP_SELECTABLE_SMU_FW)) { - printk(BIOS_ERR, "BUG: Selectable firmware is not supported\n"); - return -PSPSTS_UNSUPPORTED; - } - - if (cbfs_boot_locate(&cbfs_file, name, NULL)) { - printk(BIOS_ERR, "BUG: Cannot locate blob for PSP loading\n"); - return -PSPSTS_INVALID_NAME; - } - - cbfs_file_data(&rdev, &cbfs_file); - blob = rdev_mmap_full(&rdev); - if (!blob) { - printk(BIOS_ERR, "BUG: Cannot map blob for PSP loading\n"); - return -PSPSTS_INVALID_NAME; - } - - printk(BIOS_DEBUG, "PSP: Load blob type %x from @%p... ", type, blob); - - /* Blob commands use the buffer registers as data, not pointer to buf */ - cmd_status = send_psp_command(command, blob); - print_cmd_status(cmd_status, NULL); - - rdev_munmap(&rdev, blob); - return cmd_status; + psp_print_cmd_status(cmd_status, &buffer); } BOOT_STATE_INIT_ENTRY(BS_PAYLOAD_BOOT, BS_ON_ENTRY, |