]> git.proxmox.com Git - mirror_edk2.git/blobdiff - IntelFrameworkPkg/Include/Framework/PeiCis.h
Remove IntelFrameworkModulePkg
[mirror_edk2.git] / IntelFrameworkPkg / Include / Framework / PeiCis.h
index b58f3dcd1c1048533eb07a49842a78e38fdccaf0..d73161aff7d962e84bb4bdba851f120db5cf3e10 100644 (file)
@@ -1,33 +1,38 @@
 /** @file\r
-  PI PEI master include file. This file should match the PI spec.\r
+  The Include file for definitions in the Intel Platform Innovation Framework for EFI\r
+  Pre-EFI Initialization Core Interface Specification (PEI CIS) Version 0.91.\r
 \r
-  Copyright (c) 2006 - 2007, Intel Corporation                                                         \r
-  All rights reserved. This program and the accompanying materials                          \r
-  are licensed and made available under the terms and conditions of the BSD License         \r
-  which accompanies this distribution.  The full text of the license may be found at        \r
-  http://opensource.org/licenses/bsd-license.php                                            \r
-\r
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     \r
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             \r
-\r
-  @par Revision Reference:\r
-  Version 1.0.\r
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
 \r
 #ifndef __PEICIS_H__\r
 #define __PEICIS_H__\r
 \r
-#include <PiPei.h>\r
 #include <Ppi/PciCfg.h>\r
+//\r
+// Framework PEI Specification Revision information\r
+//\r
+#define FRAMEWORK_PEI_SPECIFICATION_MAJOR_REVISION    0\r
+#define FRAMEWORK_PEI_SPECIFICATION_MINOR_REVISION    91\r
+\r
+\r
+//\r
+// PEI services signature and Revision defined in Framework PEI spec\r
+//\r
+#define FRAMEWORK_PEI_SERVICES_SIGNATURE               0x5652455320494550ULL\r
+#define FRAMEWORK_PEI_SERVICES_REVISION               ((FRAMEWORK_PEI_SPECIFICATION_MAJOR_REVISION<<16) | (FRAMEWORK_PEI_SPECIFICATION_MINOR_REVISION))\r
+\r
+\r
 \r
 typedef struct _FRAMEWORK_EFI_PEI_SERVICES FRAMEWORK_EFI_PEI_SERVICES;\r
 \r
 /**\r
-  The PEI Dispatcher will invoke each PEIM one time.  During this pass, the PEI \r
-  Dispatcher will pass control to the PEIM at the AddressOfEntryPoint in the PE Header. \r
+  The PEI Dispatcher will invoke each PEIM one time.  During this pass, the PEI\r
+  Dispatcher will pass control to the PEIM at the AddressOfEntryPoint in the PE Header.\r
 \r
-  @param  FfsHeader        Pointer to the FFS file header.\r
+  @param  FfsHeader        The pointer to the FFS file header.\r
   @param  PeiServices      Describes the list of possible PEI Services.\r
 \r
   @return Status code\r
@@ -36,19 +41,19 @@ typedef struct _FRAMEWORK_EFI_PEI_SERVICES FRAMEWORK_EFI_PEI_SERVICES;
 typedef\r
 EFI_STATUS\r
 (EFIAPI *EFI_PEIM_ENTRY_POINT)(\r
-  IN EFI_FFS_FILE_HEADER       *FfsHeader,\r
-  IN EFI_PEI_SERVICES          **PeiServices\r
+  IN EFI_FFS_FILE_HEADER            *FfsHeader,\r
+  IN EFI_PEI_SERVICES               **PeiServices\r
   );\r
-  \r
+\r
 /**\r
-  The purpose of the service is to abstract the capability of the PEI \r
-  Foundation to discover instances of firmware volumes in the system. \r
-  Given the input file pointer, this service searches for the next \r
+  This service abstracts the capability of the PEI\r
+  Foundation to discover instances of firmware volumes in the system.\r
+  Given the input file pointer, this service searches for the next\r
   matching file in the Firmware File System (FFS) volume.\r
 \r
   @param  PeiServices      An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.\r
   @param  Instance         This instance of the firmware volume to find. The value 0 is the Boot Firmware Volume (BFV).\r
-  @param  FwVolHeader      Pointer to the firmware volume header of the volume to return.\r
+  @param  FwVolHeader      The pointer to the firmware volume header of the volume to return.\r
 \r
   @retval EFI_SUCCESS           The volume was found.\r
   @retval EFI_NOT_FOUND         The volume was not found.\r
@@ -57,108 +62,144 @@ EFI_STATUS
 **/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI *EFI_PEI_FFS_FIND_NEXT_VOLUME) (\r
-  IN FRAMEWORK_EFI_PEI_SERVICES      **PeiServices,\r
-  IN UINTN                           Instance,\r
-  IN OUT EFI_FIRMWARE_VOLUME_HEADER  **FwVolHeader\r
+(EFIAPI *EFI_PEI_FFS_FIND_NEXT_VOLUME)(\r
+  IN FRAMEWORK_EFI_PEI_SERVICES     **PeiServices,\r
+  IN UINTN                          Instance,\r
+  IN OUT EFI_FIRMWARE_VOLUME_HEADER **FwVolHeader\r
   );\r
-    \r
+\r
 /**\r
-  The purpose of the service is to abstract the capability of the PEI \r
-  Foundation to discover instances of firmware files in the system. \r
-  Given the input file pointer, this service searches for the next matching \r
+  This service abstracts the capability of the PEI\r
+  Foundation to discover instances of firmware files in the system.\r
+  Given the input file pointer, this service searches for the next matching\r
   file in the Firmware File System (FFS) volume.\r
 \r
   @param  PeiServices      An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.\r
   @param  SearchType       A filter to find files only of this type.\r
-  @param  FwVolHeader      Pointer to the firmware volume header of the volume to search.This parameter \r
+  @param  FwVolHeader      The pointer to the firmware volume header of the volume to search. This parameter\r
                            must point to a valid FFS volume.\r
-  @param  FileHeader       Pointer to the current file from which to begin searching.This pointer will be \r
-                           updated upon return to reflect the file found.\r
+  @param  FileHeader       The pointer to the current file from which to begin searching. Upon return this pointer will be\r
+                           updated to reflect the file found.\r
 \r
-  @retval EFI_SUCCESS           The file was found.\r
-  @retval EFI_NOT_FOUND         The file was not found.\r
-  @retval EFI_NOT_FOUND         The header checksum was not zero.\r
+  @retval EFI_SUCCESS      The file was found.\r
+  @retval EFI_NOT_FOUND    The file was not found.\r
+  @retval EFI_NOT_FOUND    The header checksum was not zero.\r
 \r
 **/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI *EFI_PEI_FFS_FIND_NEXT_FILE) (\r
-  IN FRAMEWORK_EFI_PEI_SERVICES  **PeiServices,\r
-  IN EFI_FV_FILETYPE             SearchType,\r
-  IN EFI_FIRMWARE_VOLUME_HEADER  *FwVolHeader,\r
-  IN OUT EFI_FFS_FILE_HEADER     **FileHeader\r
+(EFIAPI *EFI_PEI_FFS_FIND_NEXT_FILE)(\r
+  IN FRAMEWORK_EFI_PEI_SERVICES     **PeiServices,\r
+  IN EFI_FV_FILETYPE                SearchType,\r
+  IN EFI_FIRMWARE_VOLUME_HEADER     *FwVolHeader,\r
+  IN OUT EFI_FFS_FILE_HEADER        **FileHeader\r
   );\r
 \r
 /**\r
-  Given the input file pointer, this service searches for the next \r
-  matching file in the Firmware File System (FFS) volume. \r
+  Given the input file pointer, this service searches for the next\r
+  matching file in the Firmware File System (FFS) volume.\r
 \r
   @param  PeiServices      An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.\r
   @param  SectionType      The value of the section type to find.\r
   @param  FfsFileHeader    A pointer to the file header that contains the set of sections to be searched.\r
   @param  SectionData      A pointer to the discovered section, if successful.\r
 \r
-  @retval EFI_SUCCESS           The section was found.\r
-  @retval EFI_NOT_FOUND         The section was not found.\r
+  @retval EFI_SUCCESS      The section was found.\r
+  @retval EFI_NOT_FOUND    The section was not found.\r
 \r
 **/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI *EFI_PEI_FFS_FIND_SECTION_DATA) (\r
-  IN FRAMEWORK_EFI_PEI_SERVICES  **PeiServices,\r
-  IN EFI_SECTION_TYPE            SectionType,\r
-  IN EFI_FFS_FILE_HEADER         *FfsFileHeader,\r
-  IN OUT VOID                    **SectionData\r
+(EFIAPI *EFI_PEI_FFS_FIND_SECTION_DATA)(\r
+  IN FRAMEWORK_EFI_PEI_SERVICES     **PeiServices,\r
+  IN EFI_SECTION_TYPE               SectionType,\r
+  IN EFI_FFS_FILE_HEADER            *FfsFileHeader,\r
+  IN OUT VOID                       **SectionData\r
   );\r
-        \r
+\r
+///\r
+///  FRAMEWORK_EFI_PEI_SERVICES is a collection of functions whose implementation is provided by the PEI\r
+///  Foundation. The table may be located in the temporary or permanent memory, depending upon the capabilities\r
+///  and phase of execution of PEI.\r
+///\r
+///  These services fall into various classes, including the following:\r
+///  - Managing the boot mode.\r
+///  - Allocating both early and permanent memory.\r
+///  - Supporting the Firmware File System (FFS).\r
+///  - Abstracting the PPI database abstraction.\r
+///  - Creating Hand-Off Blocks (HOBs).\r
+///\r
 struct _FRAMEWORK_EFI_PEI_SERVICES {\r
-  EFI_TABLE_HEADER            Hdr;\r
+  EFI_TABLE_HEADER                  Hdr;\r
   //\r
   // PPI Functions\r
   //\r
-  EFI_PEI_INSTALL_PPI         InstallPpi;\r
-  EFI_PEI_REINSTALL_PPI       ReInstallPpi;\r
-  EFI_PEI_LOCATE_PPI          LocatePpi;\r
-  EFI_PEI_NOTIFY_PPI          NotifyPpi;\r
+  EFI_PEI_INSTALL_PPI               InstallPpi;\r
+  EFI_PEI_REINSTALL_PPI             ReInstallPpi;\r
+  EFI_PEI_LOCATE_PPI                LocatePpi;\r
+  EFI_PEI_NOTIFY_PPI                NotifyPpi;\r
   //\r
   // Boot Mode Functions\r
   //\r
-  EFI_PEI_GET_BOOT_MODE       GetBootMode;\r
-  EFI_PEI_SET_BOOT_MODE       SetBootMode;\r
+  EFI_PEI_GET_BOOT_MODE             GetBootMode;\r
+  EFI_PEI_SET_BOOT_MODE             SetBootMode;\r
   //\r
   // HOB Functions\r
   //\r
-  EFI_PEI_GET_HOB_LIST        GetHobList;\r
-  EFI_PEI_CREATE_HOB          CreateHob;\r
+  EFI_PEI_GET_HOB_LIST              GetHobList;\r
+  EFI_PEI_CREATE_HOB                CreateHob;\r
   //\r
   // Firmware Volume Functions\r
   //\r
-  EFI_PEI_FFS_FIND_NEXT_VOLUME   FfsFindNextVolume;\r
-  EFI_PEI_FFS_FIND_NEXT_FILE     FfsFindNextFile;\r
-  EFI_PEI_FFS_FIND_SECTION_DATA  FfsFindSectionData;\r
+  EFI_PEI_FFS_FIND_NEXT_VOLUME      FfsFindNextVolume;\r
+  EFI_PEI_FFS_FIND_NEXT_FILE        FfsFindNextFile;\r
+  EFI_PEI_FFS_FIND_SECTION_DATA     FfsFindSectionData;\r
   //\r
   // PEI Memory Functions\r
   //\r
-  EFI_PEI_INSTALL_PEI_MEMORY  InstallPeiMemory;\r
-  EFI_PEI_ALLOCATE_PAGES      AllocatePages;\r
-  EFI_PEI_ALLOCATE_POOL       AllocatePool;\r
-  EFI_PEI_COPY_MEM            CopyMem;\r
-  EFI_PEI_SET_MEM             SetMem;\r
+  EFI_PEI_INSTALL_PEI_MEMORY        InstallPeiMemory;\r
+  EFI_PEI_ALLOCATE_PAGES            AllocatePages;\r
+  EFI_PEI_ALLOCATE_POOL             AllocatePool;\r
+  EFI_PEI_COPY_MEM                  CopyMem;\r
+  EFI_PEI_SET_MEM                   SetMem;\r
   //\r
+  // (the following interfaces are installed by publishing PEIM)\r
   // Status Code\r
-  EFI_PEI_REPORT_STATUS_CODE  ReportStatusCode;\r
   //\r
-  // Reset\r
+  EFI_PEI_REPORT_STATUS_CODE        ReportStatusCode;\r
   //\r
-  EFI_PEI_RESET_SYSTEM        ResetSystem;\r
+  // Reset\r
   //\r
-  // (the following interfaces are installed by publishing PEIM)\r
+  EFI_PEI_RESET_SYSTEM              ResetSystem;\r
+  ///\r
+  /// Inconsistent with specification here:\r
+  /// In Framework Spec, PeiCis0.91, CpuIo and PciCfg are NOT pointers.\r
+  ///\r
+\r
   //\r
   // I/O Abstractions\r
   //\r
-  EFI_PEI_CPU_IO_PPI          *CpuIo;\r
-  EFI_PEI_PCI_CFG_PPI        *PciCfg;\r
+  EFI_PEI_CPU_IO_PPI                *CpuIo;\r
+  EFI_PEI_PCI_CFG_PPI               *PciCfg;\r
 };\r
-  \r
-#endif  \r
+///\r
+/// Enumeration of reset types defined in the Framework Specification PeiCis.\r
+///\r
+typedef enum {\r
+  ///\r
+  /// Used to induce a system-wide reset. This sets all circuitry within the\r
+  /// system to its initial state.  This type of reset is asynchronous to system\r
+  /// operation and operates withgout regard to cycle boundaries.  EfiColdReset\r
+  /// is tantamount to a system power cycle.\r
+  ///\r
+  EfiPeiResetCold,\r
+  ///\r
+  /// Used to induce a system-wide initialization. The processors are set to their\r
+  /// initial state, and pending cycles are not corrupted.  If the system does\r
+  /// not support this reset type, then an EfiResetCold must be performed.\r
+  ///\r
+  EfiPeiResetWarm,\r
+} EFI_PEI_RESET_TYPE;\r
+\r
+#endif\r
+\r