MdeModulePkg/NvmExpressPei: Use PCI_DEVICE_PPI to manage Nvme device
https://bugzilla.tianocore.org/show_bug.cgi?id=4017 This change modifies NvmExpressPei library to allow usage both EDKII_PCI_DEVICE_PPI and EDKII_NVM_EXPRESS_HOST_CONTROLLER_PPI to manage Nvme device. Cc: Hao A Wu <hao.a.wu@intel.com> Cc: Ray Ni <ray.ni@intel.com> Signed-off-by: Xiao X Chen <xiao.x.chen@intel.com> Reviewed-by: Hao A Wu <hao.a.wu@intel.com>
This commit is contained in:
committed by
mergify[bot]
parent
31a94f7fba
commit
9ca7ece8b3
@@ -14,6 +14,7 @@
|
||||
#include <PiPei.h>
|
||||
|
||||
#include <IndustryStandard/Nvme.h>
|
||||
#include <IndustryStandard/Pci.h>
|
||||
|
||||
#include <Ppi/NvmExpressHostController.h>
|
||||
#include <Ppi/BlockIo.h>
|
||||
@@ -22,6 +23,7 @@
|
||||
#include <Ppi/NvmExpressPassThru.h>
|
||||
#include <Ppi/IoMmu.h>
|
||||
#include <Ppi/EndOfPeiPhase.h>
|
||||
#include <Ppi/PciDevice.h>
|
||||
|
||||
#include <Library/DebugLib.h>
|
||||
#include <Library/PeiServicesLib.h>
|
||||
@@ -29,6 +31,7 @@
|
||||
#include <Library/BaseMemoryLib.h>
|
||||
#include <Library/IoLib.h>
|
||||
#include <Library/TimerLib.h>
|
||||
#include <Library/DevicePathLib.h>
|
||||
|
||||
//
|
||||
// Structure forward declarations
|
||||
@@ -36,6 +39,17 @@
|
||||
typedef struct _PEI_NVME_NAMESPACE_INFO PEI_NVME_NAMESPACE_INFO;
|
||||
typedef struct _PEI_NVME_CONTROLLER_PRIVATE_DATA PEI_NVME_CONTROLLER_PRIVATE_DATA;
|
||||
|
||||
/**
|
||||
Macro that checks whether device is a NVMHCI Interface.
|
||||
|
||||
@param _p Specified device.
|
||||
|
||||
@retval TRUE Device is a NVMHCI Interface.
|
||||
@retval FALSE Device is not a NVMHCI Interface.
|
||||
|
||||
**/
|
||||
#define IS_PCI_NVMHCI(_p) IS_CLASS3 (_p, PCI_CLASS_MASS_STORAGE, PCI_CLASS_MASS_STORAGE_SOLID_STATE, PCI_IF_MASS_STORAGE_SOLID_STATE_ENTERPRISE_NVMHCI)
|
||||
|
||||
#include "NvmExpressPeiHci.h"
|
||||
#include "NvmExpressPeiPassThru.h"
|
||||
#include "NvmExpressPeiBlockIo.h"
|
||||
@@ -345,4 +359,44 @@ NvmeS3SkipThisController (
|
||||
IN UINTN HcDevicePathLength
|
||||
);
|
||||
|
||||
/**
|
||||
Callback for EDKII_PCI_DEVICE_PPI installation.
|
||||
|
||||
@param[in] PeiServices Pointer to PEI Services Table.
|
||||
@param[in] NotifyDescriptor Pointer to the descriptor for the Notification
|
||||
event that caused this function to execute.
|
||||
@param[in] Ppi Pointer to the PPI data associated with this function.
|
||||
|
||||
@retval EFI_SUCCESS The function completes successfully
|
||||
@retval Others Cannot initialize Nvme controller from given PCI_DEVICE_PPI
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
NvmePciDevicePpiInstallationCallback (
|
||||
IN EFI_PEI_SERVICES **PeiServices,
|
||||
IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor,
|
||||
IN VOID *Ppi
|
||||
);
|
||||
|
||||
/**
|
||||
Callback for EDKII_NVM_EXPRESS_HOST_CONTROLLER_PPI installation.
|
||||
|
||||
@param[in] PeiServices Pointer to PEI Services Table.
|
||||
@param[in] NotifyDescriptor Pointer to the descriptor for the Notification
|
||||
event that caused this function to execute.
|
||||
@param[in] Ppi Pointer to the PPI data associated with this function.
|
||||
|
||||
@retval EFI_SUCCESS The function completes successfully
|
||||
@retval Others Cannot initialize Nvme controller from given EDKII_NVM_EXPRESS_HOST_CONTROLLER_PPI
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
NvmeHostControllerPpiInstallationCallback (
|
||||
IN EFI_PEI_SERVICES **PeiServices,
|
||||
IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor,
|
||||
IN VOID *Ppi
|
||||
);
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user