Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /*
0003  * AMD Platform Security Processor (PSP) interface driver
0004  *
0005  * Copyright (C) 2017-2019 Advanced Micro Devices, Inc.
0006  *
0007  * Author: Brijesh Singh <brijesh.singh@amd.com>
0008  */
0009 
0010 #ifndef __SEV_DEV_H__
0011 #define __SEV_DEV_H__
0012 
0013 #include <linux/device.h>
0014 #include <linux/spinlock.h>
0015 #include <linux/mutex.h>
0016 #include <linux/list.h>
0017 #include <linux/wait.h>
0018 #include <linux/dmapool.h>
0019 #include <linux/hw_random.h>
0020 #include <linux/bitops.h>
0021 #include <linux/interrupt.h>
0022 #include <linux/irqreturn.h>
0023 #include <linux/dmaengine.h>
0024 #include <linux/psp-sev.h>
0025 #include <linux/miscdevice.h>
0026 #include <linux/capability.h>
0027 
0028 #define SEV_CMD_COMPLETE        BIT(1)
0029 #define SEV_CMDRESP_CMD_SHIFT       16
0030 #define SEV_CMDRESP_IOC         BIT(0)
0031 
0032 struct sev_misc_dev {
0033     struct kref refcount;
0034     struct miscdevice misc;
0035 };
0036 
0037 struct sev_device {
0038     struct device *dev;
0039     struct psp_device *psp;
0040 
0041     void __iomem *io_regs;
0042 
0043     struct sev_vdata *vdata;
0044 
0045     int state;
0046     unsigned int int_rcvd;
0047     wait_queue_head_t int_queue;
0048     struct sev_misc_dev *misc;
0049 
0050     u8 api_major;
0051     u8 api_minor;
0052     u8 build;
0053 
0054     void *cmd_buf;
0055 };
0056 
0057 int sev_dev_init(struct psp_device *psp);
0058 void sev_dev_destroy(struct psp_device *psp);
0059 
0060 void sev_pci_init(void);
0061 void sev_pci_exit(void);
0062 
0063 #endif /* __SEV_DEV_H */