From 84053df7c4b09a28ab02740fb2521360e8f0311b Mon Sep 17 00:00:00 2001 From: Guo Mang Date: Thu, 22 Dec 2016 19:16:03 +0800 Subject: BroxtonSiPkg: Add Include Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Guo Mang --- .../BroxtonSiPkg/Include/Ppi/BiosReservedMemory.h | 47 +++++++ .../BroxtonSiPkg/Include/Ppi/DramPolicyPpi.h | 72 +++++++++++ .../Ppi/ReadOnlyVariablePreMemoryDescriptorPpi.h | 29 +++++ .../BroxtonSiPkg/Include/Ppi/SiPolicyPpi.h | 29 +++++ .../BroxtonSiPkg/Include/Ppi/VariableStoragePpi.h | 135 +++++++++++++++++++++ 5 files changed, 312 insertions(+) create mode 100644 Silicon/BroxtonSoC/BroxtonSiPkg/Include/Ppi/BiosReservedMemory.h create mode 100644 Silicon/BroxtonSoC/BroxtonSiPkg/Include/Ppi/DramPolicyPpi.h create mode 100644 Silicon/BroxtonSoC/BroxtonSiPkg/Include/Ppi/ReadOnlyVariablePreMemoryDescriptorPpi.h create mode 100644 Silicon/BroxtonSoC/BroxtonSiPkg/Include/Ppi/SiPolicyPpi.h create mode 100644 Silicon/BroxtonSoC/BroxtonSiPkg/Include/Ppi/VariableStoragePpi.h (limited to 'Silicon/BroxtonSoC/BroxtonSiPkg/Include/Ppi') diff --git a/Silicon/BroxtonSoC/BroxtonSiPkg/Include/Ppi/BiosReservedMemory.h b/Silicon/BroxtonSoC/BroxtonSiPkg/Include/Ppi/BiosReservedMemory.h new file mode 100644 index 0000000000..b53210a11e --- /dev/null +++ b/Silicon/BroxtonSoC/BroxtonSiPkg/Include/Ppi/BiosReservedMemory.h @@ -0,0 +1,47 @@ +/** @file + Common header file shared by all source files. + + Copyright (c) 2010 - 2016, Intel Corporation. All rights reserved.
+ + 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 __BIOS_RESERVED_MEMORY_H__ +#define __BIOS_RESERVED_MEMORY_H__ + +// +// BIOS reserved memory config +// +#pragma pack(1) + +typedef struct { + UINT8 Pram; +} BIOS_RESERVED_MEMORY_CONFIG; + +#pragma pack() + +typedef struct _PEI_BIOS_RESERVED_MEMORY_POLICY_PPI PEI_BIOS_RESERVED_MEMORY_POLICY_PPI; + +typedef +EFI_STATUS +(EFIAPI *GET_BIOS_RESERVED_MEMORY_POLICY) ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN PEI_BIOS_RESERVED_MEMORY_POLICY_PPI *This, + IN OUT BIOS_RESERVED_MEMORY_CONFIG *BiosReservedMemoryPolicy + ); + +typedef struct _PEI_BIOS_RESERVED_MEMORY_POLICY_PPI { + GET_BIOS_RESERVED_MEMORY_POLICY GetBiosReservedMemoryPolicy; +} PEI_BIOS_RESERVED_MEMORY_POLICY_PPI; + +extern EFI_GUID gBiosReservedMemoryPolicyPpiGuid; + +#endif //__BIOS_RESERVED_MEMORY_H__ + diff --git a/Silicon/BroxtonSoC/BroxtonSiPkg/Include/Ppi/DramPolicyPpi.h b/Silicon/BroxtonSoC/BroxtonSiPkg/Include/Ppi/DramPolicyPpi.h new file mode 100644 index 0000000000..0d9b1d6e01 --- /dev/null +++ b/Silicon/BroxtonSoC/BroxtonSiPkg/Include/Ppi/DramPolicyPpi.h @@ -0,0 +1,72 @@ +/** @file + Dram Policy PPI is used for specifying platform + related Intel silicon information and policy setting. + + Copyright (c) 2014 - 2016, Intel Corporation. All rights reserved.
+ + 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 _DRAM_POLICY_PPI_H_ +#define _DRAM_POLICY_PPI_H_ + +#define DRAM_POLICY_NUMBER_CHANNELS 4 +#define DRAM_POLICY_NUMBER_BITS 32 +#define DRAM_POLICY_NUMBER_SPD_ADDRESSES 2 + +#pragma pack(push,1) + +typedef struct { + UINT8 RankEnable; + UINT8 DeviceWidth; + UINT8 DramDensity; + UINT8 Option; + UINT8 OdtConfig; + UINT8 TristateClk1; + UINT8 Mode2N; + UINT8 OdtLevels; +} DRP_DRAM_POLICY; + +typedef struct { + UINT8 Package; + UINT8 Profile; + UINT8 MemoryDown; + UINT8 DDR3LPageSize; + UINT8 DDR3LASR; + EFI_PHYSICAL_ADDRESS MrcTrainingDataPtr; + EFI_PHYSICAL_ADDRESS MrcBootDataPtr; + UINT8 ScramblerSupport; + UINT16 ChannelHashMask; + UINT16 SliceHashMask; + UINT8 InterleavedMode; + UINT8 ChannelsSlicesEnabled; /// bit0 = SliceEnabled; bit1 = channelEnabled + UINT8 MinRefRate2xEnabled; + UINT8 DualRankSupportEnabled; + UINT16 SystemMemorySizeLimit; + UINT16 LowMemMaxVal; + UINT16 HighMemMaxVal; + UINT8 DisableFastBoot; + UINT8 RmtMode; + UINT8 RmtCheckRun; + UINT16 RmtMarginCheckScaleHighThreshold; + UINT32 MsgLevelMask; + UINT8 SpdAddress[DRAM_POLICY_NUMBER_SPD_ADDRESSES]; + UINT8 ChSwizzle[DRAM_POLICY_NUMBER_CHANNELS][DRAM_POLICY_NUMBER_BITS]; + DRP_DRAM_POLICY ChDrp[DRAM_POLICY_NUMBER_CHANNELS]; + UINT8 DebugMsgLevel; + UINT8 reserved[13]; +} DRAM_POLICY_PPI; + +#pragma pack(pop) + +extern EFI_GUID gDramPolicyPpiGuid; + +#endif // _DRAM_POLICY_PPI_H_ + diff --git a/Silicon/BroxtonSoC/BroxtonSiPkg/Include/Ppi/ReadOnlyVariablePreMemoryDescriptorPpi.h b/Silicon/BroxtonSoC/BroxtonSiPkg/Include/Ppi/ReadOnlyVariablePreMemoryDescriptorPpi.h new file mode 100644 index 0000000000..05fa80fe9a --- /dev/null +++ b/Silicon/BroxtonSoC/BroxtonSiPkg/Include/Ppi/ReadOnlyVariablePreMemoryDescriptorPpi.h @@ -0,0 +1,29 @@ +/** @file + This file declares the Read Only Variable Pre-Memory Descriptor PPI + This PPI stores the descriptor address for the readonly variable PPI. + When the PPI is shadowed into permanent memory a unique instance of + READ_ONLY_VARIABLE2_PPI can be discovered using this PPI. + + Copyright (c) 2016, Intel Corporation. All rights reserved.
+ + 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 _PEI_READ_ONLY_VARIABLE_PRE_MEMORY_DESC_PPI_H_ +#define _PEI_READ_ONLY_VARIABLE_PRE_MEMORY_DESC_PPI_H_ + +extern EFI_GUID gReadOnlyVariablePreMemoryDescriptorPpiGuid; + +typedef struct { + EFI_PEI_PPI_DESCRIPTOR *PreMemoryDescriptor; +} READ_ONLY_VARIABLE_PRE_MEMORY_DESCRIPTOR_PPI; + +#endif + diff --git a/Silicon/BroxtonSoC/BroxtonSiPkg/Include/Ppi/SiPolicyPpi.h b/Silicon/BroxtonSoC/BroxtonSiPkg/Include/Ppi/SiPolicyPpi.h new file mode 100644 index 0000000000..f50bb30972 --- /dev/null +++ b/Silicon/BroxtonSoC/BroxtonSiPkg/Include/Ppi/SiPolicyPpi.h @@ -0,0 +1,29 @@ +/** @file + Silicon Policy PPI is used for specifying platform + related Intel silicon information and policy setting. + This PPI is consumed by the silicon PEI modules and carried + over to silicon DXE modules. + + Copyright (c) 2016, Intel Corporation. All rights reserved.
+ + 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 _SI_POLICY_PPI_H_ +#define _SI_POLICY_PPI_H_ + +#include + +extern EFI_GUID gSiPolicyPpiGuid; + +typedef struct _SI_POLICY SI_POLICY_PPI; + +#endif // _SI_POLICY_PPI_H_ + diff --git a/Silicon/BroxtonSoC/BroxtonSiPkg/Include/Ppi/VariableStoragePpi.h b/Silicon/BroxtonSoC/BroxtonSiPkg/Include/Ppi/VariableStoragePpi.h new file mode 100644 index 0000000000..5339f6b938 --- /dev/null +++ b/Silicon/BroxtonSoC/BroxtonSiPkg/Include/Ppi/VariableStoragePpi.h @@ -0,0 +1,135 @@ +/** @file + This file declares the Variable Storage PPI + This PPI abstracts read-only access to the UEFI variable store on a + NVM (Non-Volatile Memory) device during the PEI phase. + + Copyright (c) 2016, Intel Corporation. All rights reserved.
+ + 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 _PEI_VARIABLE_STORAGE_PPI_H_ +#define _PEI_VARIABLE_STORAGE_PPI_H_ + +extern EFI_GUID gVariableStoragePpiGuid; + +/// +/// Revision +/// +#define PEI_VARIABLE_STORAGE_PPI_REVISION 1 + +typedef struct _VARIABLE_STORAGE_PPI VARIABLE_STORAGE_PPI; + +/** + Retrieves a PPI instance-specific GUID. + Returns a unique GUID per VARIABLE_STORAGE_PPI instance. + + @param[out] VariableGuid A pointer to an EFI_GUID that is this PPI instance's GUID. + + @retval EFI_SUCCESS The data was returned successfully. + @retval EFI_INVALID_PARAMETER A required parameter is NULL. + +**/ +typedef +EFI_STATUS +(EFIAPI *PEI_VARIABLE_STORAGE_GET_ID)( + OUT EFI_GUID *InstanceGuid + ); + +/** + This service retrieves a variable's value using its name and GUID. + + Read the specified variable from the UEFI variable store. If the Data + buffer is too small to hold the contents of the variable, + the error EFI_BUFFER_TOO_SMALL is returned and DataSize is set to the + required buffer size to obtain the data. + + @param[in] This A pointer to this instance of the VARIABLE_STORAGE_PPI. + @param[in] VariableName A pointer to a null-terminated string that is the variable's name. + @param[in] VariableGuid A pointer to an EFI_GUID that is the variable's GUID. The combination of + VariableGuid and VariableName must be unique. + @param[out] Attributes If non-NULL, on return, points to the variable's attributes. + @param[in, out] DataSize On entry, points to the size in bytes of the Data buffer. + On return, points to the size of the data returned in Data. + @param[out] Data Points to the buffer which will hold the returned variable value. + + @retval EFI_SUCCESS The variable was read successfully. + @retval EFI_NOT_FOUND The variable could not be found. + @retval EFI_BUFFER_TOO_SMALL The DataSize is too small for the resulting data. + DataSize is updated with the size required for + the specified variable. + @retval EFI_INVALID_PARAMETER VariableName, VariableGuid, DataSize or Data is NULL. + @retval EFI_DEVICE_ERROR The variable could not be retrieved because of a device error. + +**/ +typedef +EFI_STATUS +(EFIAPI *PEI_VARIABLE_STORAGE_GET_VARIABLE)( + IN CONST VARIABLE_STORAGE_PPI *This, + IN CONST CHAR16 *VariableName, + IN CONST EFI_GUID *VariableGuid, + OUT UINT32 *Attributes, + IN OUT UINTN *DataSize, + OUT VOID *Data + ); + +/** + Return the next variable name and GUID. + + This function is called multiple times to retrieve the VariableName + and VariableGuid of all variables currently available in the system. + On each call, the previous results are passed into the interface, + and, on return, the interface returns the data for the next + interface. When the entire variable list has been returned, + EFI_NOT_FOUND is returned. + + @param[in] This A pointer to this instance of the VARIABLE_STORAGE_PPI. + + @param[in, out] VariableNameSize On entry, points to the size of the buffer pointed to by + VariableName. On return, the size of the variable name buffer. + @param[in, out] VariableName On entry, a pointer to a null-terminated string that is the + variable's name. On return, points to the next variable's + null-terminated name string. + @param[in, out] VariableGuid On entry, a pointer to an EFI_GUID that is the variable's GUID. + On return, a pointer to the next variable's GUID. + @param[out] VariableAttributes A pointer to the variable attributes. + + @retval EFI_SUCCESS The variable was read successfully. + @retval EFI_NOT_FOUND The variable could not be found. + @retval EFI_BUFFER_TOO_SMALL The VariableNameSize is too small for the resulting + data. VariableNameSize is updated with the size + required for the specified variable. + @retval EFI_INVALID_PARAMETER VariableName, VariableGuid or + VariableNameSize is NULL. + @retval EFI_DEVICE_ERROR The variable could not be retrieved because of a device error. + +**/ +typedef +EFI_STATUS +(EFIAPI *PEI_VARIABLE_STORAGE_GET_NEXT_VARIABLE_NAME)( + IN CONST VARIABLE_STORAGE_PPI *This, + IN OUT UINTN *VariableNameSize, + IN OUT CHAR16 *VariableName, + IN OUT EFI_GUID *VariableGuid, + OUT UINT32 *VariableAttributes + ); + +/// +/// Variable Storage PPI +/// Interface functions for variable NVM storage access in PEI phase. +/// +struct _VARIABLE_STORAGE_PPI { + PEI_VARIABLE_STORAGE_GET_ID GetId; ///< Retrieves a PPI instance-specific GUID + PEI_VARIABLE_STORAGE_GET_VARIABLE GetVariable; ///< Retrieves a variable's value given its name and GUID + PEI_VARIABLE_STORAGE_GET_NEXT_VARIABLE_NAME GetNextVariableName; ///< Return the next variable name and GUID +}; + +#endif + -- cgit v1.2.3