forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
1.2 KiB
63 lines
1.2 KiB
/* SPDX-License-Identifier: GPL-2.0-only */ |
|
/* |
|
* AMD Platform Security Processor (PSP) interface driver |
|
* |
|
* Copyright (C) 2017-2019 Advanced Micro Devices, Inc. |
|
* |
|
* Author: Brijesh Singh <[email protected]> |
|
*/ |
|
|
|
#ifndef __SEV_DEV_H__ |
|
#define __SEV_DEV_H__ |
|
|
|
#include <linux/device.h> |
|
#include <linux/spinlock.h> |
|
#include <linux/mutex.h> |
|
#include <linux/list.h> |
|
#include <linux/wait.h> |
|
#include <linux/dmapool.h> |
|
#include <linux/hw_random.h> |
|
#include <linux/bitops.h> |
|
#include <linux/interrupt.h> |
|
#include <linux/irqreturn.h> |
|
#include <linux/dmaengine.h> |
|
#include <linux/psp-sev.h> |
|
#include <linux/miscdevice.h> |
|
#include <linux/capability.h> |
|
|
|
#define SEV_CMD_COMPLETE BIT(1) |
|
#define SEV_CMDRESP_CMD_SHIFT 16 |
|
#define SEV_CMDRESP_IOC BIT(0) |
|
|
|
struct sev_misc_dev { |
|
struct kref refcount; |
|
struct miscdevice misc; |
|
}; |
|
|
|
struct sev_device { |
|
struct device *dev; |
|
struct psp_device *psp; |
|
|
|
void __iomem *io_regs; |
|
|
|
struct sev_vdata *vdata; |
|
|
|
int state; |
|
unsigned int int_rcvd; |
|
wait_queue_head_t int_queue; |
|
struct sev_misc_dev *misc; |
|
|
|
u8 api_major; |
|
u8 api_minor; |
|
u8 build; |
|
|
|
void *cmd_buf; |
|
}; |
|
|
|
int sev_dev_init(struct psp_device *psp); |
|
void sev_dev_destroy(struct psp_device *psp); |
|
|
|
void sev_pci_init(void); |
|
void sev_pci_exit(void); |
|
|
|
#endif /* __SEV_DEV_H */
|
|
|