#include <linux/kernel.h>
#include <linux/irqreturn.h>
#include <linux/mutex.h>
#include <linux/bitfield.h>
#include <linux/delay.h>
#include "sp-dev.h"
#include "psp-dev.h"
#include "sev-dev.h"
#include "tee-dev.h"
#include "platform-access.h"
#include "dbc.h"
#include "hsti.h"
struct psp_device *psp_master;
#define PSP_C2PMSG_17_CMDRESP_CMD …
static int psp_mailbox_poll(const void __iomem *cmdresp_reg, unsigned int *cmdresp,
unsigned int timeout_msecs)
{ … }
int psp_mailbox_command(struct psp_device *psp, enum psp_cmd cmd, void *cmdbuff,
unsigned int timeout_msecs, unsigned int *cmdresp)
{ … }
int psp_extended_mailbox_cmd(struct psp_device *psp, unsigned int timeout_msecs,
struct psp_ext_request *req)
{ … }
static struct psp_device *psp_alloc_struct(struct sp_device *sp)
{ … }
static irqreturn_t psp_irq_handler(int irq, void *data)
{ … }
static unsigned int psp_get_capability(struct psp_device *psp)
{ … }
static int psp_check_sev_support(struct psp_device *psp)
{ … }
static int psp_check_tee_support(struct psp_device *psp)
{ … }
static int psp_init(struct psp_device *psp)
{ … }
int psp_dev_init(struct sp_device *sp)
{ … }
void psp_dev_destroy(struct sp_device *sp)
{ … }
void psp_set_sev_irq_handler(struct psp_device *psp, psp_irq_handler_t handler,
void *data)
{ … }
void psp_clear_sev_irq_handler(struct psp_device *psp)
{ … }
struct psp_device *psp_get_master_device(void)
{ … }
void psp_pci_init(void)
{ … }
void psp_pci_exit(void)
{ … }