#include <Ppi/BlockIo.h>\r
#include <Ppi/BlockIo2.h>\r
#include <Ppi/StorageSecurityCommand.h>\r
+#include <Ppi/NvmExpressPassThru.h>\r
#include <Ppi/IoMmu.h>\r
#include <Ppi/EndOfPeiPhase.h>\r
\r
PEI_NVME_CONTROLLER_PRIVATE_DATA *Controller;\r
};\r
\r
+#define NVME_CONTROLLER_NSID 0\r
+\r
//\r
// Unique signature for private data structure.\r
//\r
struct _PEI_NVME_CONTROLLER_PRIVATE_DATA {\r
UINT32 Signature;\r
UINTN MmioBase;\r
+ EFI_NVM_EXPRESS_PASS_THRU_MODE PassThruMode;\r
UINTN DevicePathLength;\r
EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
\r
EFI_PEI_RECOVERY_BLOCK_IO_PPI BlkIoPpi;\r
EFI_PEI_RECOVERY_BLOCK_IO2_PPI BlkIo2Ppi;\r
EDKII_PEI_STORAGE_SECURITY_CMD_PPI StorageSecurityPpi;\r
+ EDKII_PEI_NVM_EXPRESS_PASS_THRU_PPI NvmePassThruPpi;\r
EFI_PEI_PPI_DESCRIPTOR BlkIoPpiList;\r
EFI_PEI_PPI_DESCRIPTOR BlkIo2PpiList;\r
EFI_PEI_PPI_DESCRIPTOR StorageSecurityPpiList;\r
+ EFI_PEI_PPI_DESCRIPTOR NvmePassThruPpiList;\r
EFI_PEI_NOTIFY_DESCRIPTOR EndOfPeiNotifyList;\r
\r
//\r
CR (a, PEI_NVME_CONTROLLER_PRIVATE_DATA, BlkIo2Ppi, NVME_PEI_CONTROLLER_PRIVATE_DATA_SIGNATURE)\r
#define GET_NVME_PEIM_HC_PRIVATE_DATA_FROM_THIS_STROAGE_SECURITY(a) \\r
CR (a, PEI_NVME_CONTROLLER_PRIVATE_DATA, StorageSecurityPpi, NVME_PEI_CONTROLLER_PRIVATE_DATA_SIGNATURE)\r
+#define GET_NVME_PEIM_HC_PRIVATE_DATA_FROM_THIS_NVME_PASSTHRU(a) \\r
+ CR (a, PEI_NVME_CONTROLLER_PRIVATE_DATA, NvmePassThruPpi, NVME_PEI_CONTROLLER_PRIVATE_DATA_SIGNATURE)\r
#define GET_NVME_PEIM_HC_PRIVATE_DATA_FROM_THIS_NOTIFY(a) \\r
CR (a, PEI_NVME_CONTROLLER_PRIVATE_DATA, EndOfPeiNotifyList, NVME_PEI_CONTROLLER_PRIVATE_DATA_SIGNATURE)\r
\r