]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Bus/Pci/NvmExpressPei/NvmExpressPei.h
MdeModulePkg/NvmExpressPei: Add logic to produce SSC PPI
[mirror_edk2.git] / MdeModulePkg / Bus / Pci / NvmExpressPei / NvmExpressPei.h
index 0135eca6f0489d848442108a4e3cdacfc956359c..89666160a19652c582c5f51da6ba880d77109d05 100644 (file)
@@ -25,6 +25,7 @@
 #include <Ppi/NvmExpressHostController.h>\r
 #include <Ppi/BlockIo.h>\r
 #include <Ppi/BlockIo2.h>\r
+#include <Ppi/StorageSecurityCommand.h>\r
 #include <Ppi/IoMmu.h>\r
 #include <Ppi/EndOfPeiPhase.h>\r
 \r
@@ -44,6 +45,7 @@ typedef struct _PEI_NVME_CONTROLLER_PRIVATE_DATA  PEI_NVME_CONTROLLER_PRIVATE_DA
 #include "NvmExpressPeiHci.h"\r
 #include "NvmExpressPeiPassThru.h"\r
 #include "NvmExpressPeiBlockIo.h"\r
+#include "NvmExpressPeiStorageSecurity.h"\r
 \r
 //\r
 // NVME PEI driver implementation related definitions\r
@@ -90,10 +92,15 @@ struct _PEI_NVME_NAMESPACE_INFO {
 struct _PEI_NVME_CONTROLLER_PRIVATE_DATA {\r
   UINT32                                    Signature;\r
   UINTN                                     MmioBase;\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
   EFI_PEI_PPI_DESCRIPTOR                    BlkIoPpiList;\r
   EFI_PEI_PPI_DESCRIPTOR                    BlkIo2PpiList;\r
+  EFI_PEI_PPI_DESCRIPTOR                    StorageSecurityPpiList;\r
   EFI_PEI_NOTIFY_DESCRIPTOR                 EndOfPeiNotifyList;\r
 \r
   //\r
@@ -139,11 +146,13 @@ struct _PEI_NVME_CONTROLLER_PRIVATE_DATA {
   PEI_NVME_NAMESPACE_INFO                   *NamespaceInfo;\r
 };\r
 \r
-#define GET_NVME_PEIM_HC_PRIVATE_DATA_FROM_THIS_BLKIO(a)     \\r
+#define GET_NVME_PEIM_HC_PRIVATE_DATA_FROM_THIS_BLKIO(a)               \\r
   CR (a, PEI_NVME_CONTROLLER_PRIVATE_DATA, BlkIoPpi, NVME_PEI_CONTROLLER_PRIVATE_DATA_SIGNATURE)\r
-#define GET_NVME_PEIM_HC_PRIVATE_DATA_FROM_THIS_BLKIO2(a)    \\r
+#define GET_NVME_PEIM_HC_PRIVATE_DATA_FROM_THIS_BLKIO2(a)              \\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_NOTIFY(a)    \\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_NOTIFY(a)              \\r
   CR (a, PEI_NVME_CONTROLLER_PRIVATE_DATA, EndOfPeiNotifyList, NVME_PEI_CONTROLLER_PRIVATE_DATA_SIGNATURE)\r
 \r
 \r
@@ -257,4 +266,47 @@ NvmePeimEndOfPei (
   IN VOID                       *Ppi\r
   );\r
 \r
+/**\r
+  Check the validity of the device path of a NVM Express host controller.\r
+\r
+  @param[in] DevicePath          A pointer to the EFI_DEVICE_PATH_PROTOCOL\r
+                                 structure.\r
+  @param[in] DevicePathLength    The length of the device path.\r
+\r
+  @retval EFI_SUCCESS              The device path is valid.\r
+  @retval EFI_INVALID_PARAMETER    The device path is invalid.\r
+\r
+**/\r
+EFI_STATUS\r
+NvmeIsHcDevicePathValid (\r
+  IN EFI_DEVICE_PATH_PROTOCOL    *DevicePath,\r
+  IN UINTN                       DevicePathLength\r
+  );\r
+\r
+/**\r
+  Build the device path for an Nvm Express device with given namespace identifier\r
+  and namespace extended unique identifier.\r
+\r
+  @param[in]  Private              A pointer to the PEI_NVME_CONTROLLER_PRIVATE_DATA\r
+                                   data structure.\r
+  @param[in]  NamespaceId          The given namespace identifier.\r
+  @param[in]  NamespaceUuid        The given namespace extended unique identifier.\r
+  @param[out] DevicePathLength     The length of the device path in bytes specified\r
+                                   by DevicePath.\r
+  @param[out] DevicePath           The device path of Nvm Express device.\r
+\r
+  @retval EFI_SUCCESS              The operation succeeds.\r
+  @retval EFI_INVALID_PARAMETER    The parameters are invalid.\r
+  @retval EFI_OUT_OF_RESOURCES     The operation fails due to lack of resources.\r
+\r
+**/\r
+EFI_STATUS\r
+NvmeBuildDevicePath (\r
+  IN  PEI_NVME_CONTROLLER_PRIVATE_DATA    *Private,\r
+  IN  UINT32                              NamespaceId,\r
+  IN  UINT64                              NamespaceUuid,\r
+  OUT UINTN                               *DevicePathLength,\r
+  OUT EFI_DEVICE_PATH_PROTOCOL            **DevicePath\r
+  );\r
+\r
 #endif\r