#include <drm/drm_drv.h>
#include <linux/vmalloc.h>
#include "amdgpu.h"
#include "amdgpu_psp.h"
#include "amdgpu_ucode.h"
#include "soc15_common.h"
#include "psp_v14_0.h"
#include "mp/mp_14_0_2_offset.h"
#include "mp/mp_14_0_2_sh_mask.h"
MODULE_FIRMWARE(…) …;
MODULE_FIRMWARE(…) …;
MODULE_FIRMWARE(…) …;
MODULE_FIRMWARE(…) …;
#define USBC_PD_POLLING_LIMIT_S …
#define GFX_CMD_USB_PD_USE_LFB …
#define MBOX_READY_MASK …
#define MBOX_STATUS_MASK …
#define MBOX_COMMAND_MASK …
#define MBOX_READY_FLAG …
#define C2PMSG_CMD_SPI_UPDATE_ROM_IMAGE_ADDR_LO …
#define C2PMSG_CMD_SPI_UPDATE_ROM_IMAGE_ADDR_HI …
#define C2PMSG_CMD_SPI_UPDATE_FLASH_IMAGE …
#define MEM_TRAIN_SEND_MSG_TIMEOUT_US …
static int psp_v14_0_init_microcode(struct psp_context *psp)
{ … }
static bool psp_v14_0_is_sos_alive(struct psp_context *psp)
{ … }
static int psp_v14_0_wait_for_bootloader(struct psp_context *psp)
{ … }
static int psp_v14_0_bootloader_load_component(struct psp_context *psp,
struct psp_bin_desc *bin_desc,
enum psp_bootloader_cmd bl_cmd)
{ … }
static int psp_v14_0_bootloader_load_kdb(struct psp_context *psp)
{ … }
static int psp_v14_0_bootloader_load_spl(struct psp_context *psp)
{ … }
static int psp_v14_0_bootloader_load_sysdrv(struct psp_context *psp)
{ … }
static int psp_v14_0_bootloader_load_soc_drv(struct psp_context *psp)
{ … }
static int psp_v14_0_bootloader_load_intf_drv(struct psp_context *psp)
{ … }
static int psp_v14_0_bootloader_load_dbg_drv(struct psp_context *psp)
{ … }
static int psp_v14_0_bootloader_load_ras_drv(struct psp_context *psp)
{ … }
static int psp_v14_0_bootloader_load_ipkeymgr_drv(struct psp_context *psp)
{ … }
static int psp_v14_0_bootloader_load_sos(struct psp_context *psp)
{ … }
static int psp_v14_0_ring_stop(struct psp_context *psp,
enum psp_ring_type ring_type)
{ … }
static int psp_v14_0_ring_create(struct psp_context *psp,
enum psp_ring_type ring_type)
{ … }
static int psp_v14_0_ring_destroy(struct psp_context *psp,
enum psp_ring_type ring_type)
{ … }
static uint32_t psp_v14_0_ring_get_wptr(struct psp_context *psp)
{ … }
static void psp_v14_0_ring_set_wptr(struct psp_context *psp, uint32_t value)
{ … }
static int psp_v14_0_memory_training_send_msg(struct psp_context *psp, int msg)
{ … }
static int psp_v14_0_memory_training(struct psp_context *psp, uint32_t ops)
{ … }
static int psp_v14_0_load_usbc_pd_fw(struct psp_context *psp, uint64_t fw_pri_mc_addr)
{ … }
static int psp_v14_0_read_usbc_pd_fw(struct psp_context *psp, uint32_t *fw_ver)
{ … }
static int psp_v14_0_exec_spi_cmd(struct psp_context *psp, int cmd)
{ … }
static int psp_v14_0_update_spirom(struct psp_context *psp,
uint64_t fw_pri_mc_addr)
{ … }
static int psp_v14_0_vbflash_status(struct psp_context *psp)
{ … }
static const struct psp_funcs psp_v14_0_funcs = …;
void psp_v14_0_set_psp_funcs(struct psp_context *psp)
{ … }