MdeModulePkg: Add definitions for EDKII PEI NVME host controller PPI

Introduces the below PPI:

struct EDKII_NVM_EXPRESS_HOST_CONTROLLER_PPI {
  EDKII_NVM_EXPRESS_HC_GET_MMIO_BAR       GetNvmeHcMmioBar;
  EDKII_NVM_EXPRESS_HC_GET_DEVICE_PATH    GetNvmeHcDevicePath;
};

The GetNvmeHcMmioBar service will provide the caller with the MMIO BAR
address of each NVMe HC within the system;

The GetNvmeHcDevicePath service will provide the caller with the device
path information of each NVMe HC.

Cc: Eric Dong <eric.dong@intel.com>
Cc: Jiewen Yao <jiewen.yao@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Hao Wu <hao.a.wu@intel.com>
Reviewed-by: Star Zeng <star.zeng@intel.com>
Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>
This commit is contained in:
Hao Wu 2018-05-02 14:12:12 +08:00
parent cc0d998b8b
commit 508acb5f6c
2 changed files with 95 additions and 0 deletions

View File

@ -0,0 +1,92 @@
/** @file
Copyright (c) 2018, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
#ifndef _EDKII_NVM_EXPRESS_HOST_CONTROLLER_PPI_H_
#define _EDKII_NVM_EXPRESS_HOST_CONTROLLER_PPI_H_
#include <Protocol/DevicePath.h>
///
/// Global ID for the EDKII_NVM_EXPRESS_HOST_CONTROLLER_PPI.
///
#define EDKII_NVME_EXPRESS_HOST_CONTROLLER_PPI_GUID \
{ \
0xcae3aa63, 0x676f, 0x4da3, { 0xbd, 0x50, 0x6c, 0xc5, 0xed, 0xde, 0x9a, 0xad } \
}
//
// Forward declaration for the EDKII_NVM_EXPRESS_HOST_CONTROLLER_PPI.
//
typedef struct _EDKII_NVM_EXPRESS_HOST_CONTROLLER_PPI EDKII_NVM_EXPRESS_HOST_CONTROLLER_PPI;
/**
Get the MMIO base address of NVM Express host controller.
@param[in] This The PPI instance pointer.
@param[in] ControllerId The ID of the NVM Express host controller.
@param[out] MmioBar The MMIO base address of the controller.
@retval EFI_SUCCESS The operation succeeds.
@retval EFI_INVALID_PARAMETER The parameters are invalid.
@retval EFI_NOT_FOUND The specified NVM Express host controller not
found.
**/
typedef
EFI_STATUS
(EFIAPI *EDKII_NVM_EXPRESS_HC_GET_MMIO_BAR) (
IN EDKII_NVM_EXPRESS_HOST_CONTROLLER_PPI *This,
IN UINT8 ControllerId,
OUT UINTN *MmioBar
);
/**
Get the device path of NVM Express host controller.
@param[in] This The PPI instance pointer.
@param[in] ControllerId The ID of the NVM Express host controller.
@param[out] DevicePathLength The length of the device path in bytes specified
by DevicePath.
@param[out] DevicePath The device path of NVM Express host controller.
This field re-uses EFI Device Path Protocol as
defined by Section 10.2 EFI Device Path Protocol
of UEFI 2.7 Specification.
@retval EFI_SUCCESS The operation succeeds.
@retval EFI_INVALID_PARAMETER The parameters are invalid.
@retval EFI_NOT_FOUND The specified NVM Express host controller not
found.
@retval EFI_OUT_OF_RESOURCES The operation fails due to lack of resources.
**/
typedef
EFI_STATUS
(EFIAPI *EDKII_NVM_EXPRESS_HC_GET_DEVICE_PATH) (
IN EDKII_NVM_EXPRESS_HOST_CONTROLLER_PPI *This,
IN UINT8 ControllerId,
OUT UINTN *DevicePathLength,
OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath
);
//
// This PPI contains a set of services to interact with the NVM Express host
// controller.
//
struct _EDKII_NVM_EXPRESS_HOST_CONTROLLER_PPI {
EDKII_NVM_EXPRESS_HC_GET_MMIO_BAR GetNvmeHcMmioBar;
EDKII_NVM_EXPRESS_HC_GET_DEVICE_PATH GetNvmeHcDevicePath;
};
extern EFI_GUID gEdkiiPeiNvmExpressHostControllerPpiGuid;
#endif

View File

@ -471,6 +471,9 @@
## Include/Ppi/PlatformSpecificResetHandler.h
gEdkiiPlatformSpecificResetHandlerPpiGuid = { 0x75cf14ae, 0x3441, 0x49dc, { 0xaa, 0x10, 0xbb, 0x35, 0xa7, 0xba, 0x8b, 0xab } }
## Include/Ppi/NvmExpressHostController.h
gEdkiiPeiNvmExpressHostControllerPpiGuid = { 0xcae3aa63, 0x676f, 0x4da3, { 0xbd, 0x50, 0x6c, 0xc5, 0xed, 0xde, 0x9a, 0xad } }
[Protocols]
## Load File protocol provides capability to load and unload EFI image into memory and execute it.
# Include/Protocol/LoadPe32Image.h