/* $NoKeywords */ /** * @file * * IscpPpi.h * * Contains Intra-SoC Communication Protocol-Protocol Interface definitions. * * @xrefitem bom "File Content Label" "Release Content" * @e project: FDK * @e sub-project: UEFI * @e version: $Revision: 334098 $ @e date: $Date: 2016-01-08 14:21:15 -0600 (Fri, 08 Jan 2016) $ * */ /***************************************************************************** * * Copyright 2013 - 2016 ADVANCED MICRO DEVICES, INC. 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_ISCP_PPI_H_ #define _PEI_ISCP_PPI_H_ /*---------------------------------------------------------------------------------------- * M O D U L E S U S E D *---------------------------------------------------------------------------------------- */ #include /*---------------------------------------------------------------------------------------- * D E F I N I T I O N S A N D M A C R O S *---------------------------------------------------------------------------------------- */ #define PEI_ISCP_PPI_GUID {\ 0xca2c1ecd, 0xc702, 0x49b1, { 0xae, 0x24, 0x9b, 0x6f, 0xa8, 0x71, 0x3b, 0x23 } \ } /*---------------------------------------------------------------------------------------- * T Y P E D E F S A N D S T R U C T U R E S *---------------------------------------------------------------------------------------- */ typedef struct _EFI_PEI_ISCP_PPI EFI_PEI_ISCP_PPI; /// ISCP Memory Transaction typedef EFI_STATUS (EFIAPI *PEI_ISCP_MEMORY_TRANSACTION)( IN CONST EFI_PEI_SERVICES **PeiServices, ///< Pointer to the PEI Services Table IN OUT AMD_MEMORY_RANGE_DESCRIPTOR *MemRangeDescriptor ///< Pointer to Memory Range Descriptor ); /// ISCP Fuse Transaction typedef EFI_STATUS (EFIAPI *PEI_ISCP_FUSE_TRANSACTION)( IN CONST EFI_PEI_SERVICES **PeiServices, ///< Pointer to the PEI Services Table IN OUT ISCP_FUSE_INFO *FuseInfo ///< Pointer to the Fuse Info structure ); /// ISCP CPU Retrieve ID Transaction typedef EFI_STATUS (EFIAPI *PEI_ISCP_CPU_RETRIEVE_ID_TRANSACTION)( IN CONST EFI_PEI_SERVICES **PeiServices, ///< Pointer to the PEI Services Table IN OUT ISCP_CPU_RESET_INFO *CpuResetInfo ///< Pointer to CPU Reset Info structure ); /// ISCP CPU Reset transaction typedef EFI_STATUS (EFIAPI *PEI_ISCP_CPU_RESET_TRANSACTION)( IN CONST EFI_PEI_SERVICES **PeiServices, ///< Pointer to the PEI Services Table IN OUT ISCP_CPU_RESET_INFO *CpuResetInfo ///< Pointer to CPU Reset Info structure ); /// ISCP Get Real-Time-Clock Transaction typedef EFI_STATUS (EFIAPI *PEI_ISCP_GET_RTC_TRANSACTION)( IN CONST EFI_PEI_SERVICES **PeiServices, ///< Pointer to the PEI Services Table IN OUT ISCP_RTC_INFO *RtcInfo ///< Pointer to the Real-Time-Clock ); /// ISCP Set Real-Time-Clock Transaction typedef EFI_STATUS (EFIAPI *PEI_ISCP_SET_RTC_TRANSACTION)( IN CONST EFI_PEI_SERVICES **PeiServices, ///< Pointer to the PEI Services Table IN OUT ISCP_RTC_INFO *RtcInfo ///< Pointer to the Real-Time-Clock ); /// ISCP Get MAC Address Transaction typedef EFI_STATUS (EFIAPI *PEI_ISCP_GET_MAC_ADDRESS_TRANSACTION)( IN CONST EFI_PEI_SERVICES **PeiServices, ///< Pointer to the PEI Services Table IN OUT ISCP_MAC_INFO *MacInfo ///< Pointer to the MAC Address info ); /// ISCP Set MAC Address Transaction typedef EFI_STATUS (EFIAPI *PEI_ISCP_SET_MAC_ADDRESS_TRANSACTION)( IN CONST EFI_PEI_SERVICES **PeiServices, ///< Pointer to the PEI Services Table IN OUT ISCP_MAC_INFO *MacInfo ///< Pointer to the MAC Address info ); /// ISCP Update Firmware Volume Block Transaction typedef EFI_STATUS (EFIAPI *PEI_ISCP_UPDATE_FV_BLOCK_TRANSACTION)( IN CONST EFI_PEI_SERVICES **PeiServices, ///< Pointer to the PEI Services Table IN CONST UINT32 Offset, ///< Offset from base of FV Block IN OUT UINT8 *NvData, ///< Pointer to the NV data being stored IN CONST UINT32 NvSize ///< Size of NV Data being stored ); /// SCP Load Firmware Volume Block Transaction typedef EFI_STATUS (EFIAPI *PEI_ISCP_LOAD_FV_BLOCK_TRANSACTION)( IN CONST EFI_PEI_SERVICES **PeiServices, ///< Pointer to the PEI Services Table IN CONST UINT32 Offset, ///< Offset from base of FV Block IN OUT UINT8 *NvData, ///< Pointer to the NV data being stored IN CONST UINT32 NvSize ///< Size of NV Data being stored ); /// ISCP Erase Firmware Volume Block Transaction typedef EFI_STATUS (EFIAPI *PEI_ISCP_ERASE_FV_BLOCK_TRANSACTION)( IN CONST EFI_PEI_SERVICES **PeiServices, ///< Pointer to the PEI Services Table IN CONST UINT32 Offset, ///< Offset from base of FV Block IN CONST UINT32 NvSize ///< Size of NV Data being stored ); /// ISCP PCIE Reset Transaction typedef EFI_STATUS (EFIAPI *PEI_ISCP_PCIE_RESET_TRANSACTION)( IN CONST EFI_PEI_SERVICES **PeiServices, ///< Pointer to the PEI Services Table IN OUT ISCP_PCIE_RESET_INFO *PcieResetInfo ///< Pointer to PCIE Reset info structure ); /// ISCP Send UART Config Transaction typedef EFI_STATUS (EFIAPI *PEI_ISCP_SEND_UART_CONFIG_TRANSACTION)( IN CONST EFI_PEI_SERVICES **PeiServices, ///< Pointer to the PEI Services Table IN OUT ISCP_UART_INFO *UartInfo ///< Pointer to UART Config info structure ); /// ISCP Sata1 get Transaction typedef EFI_STATUS (EFIAPI *PEI_ISCP_SATA1_GET_TRANSACTION)( IN CONST EFI_PEI_SERVICES **PeiServices, ///< Pointer to the PEI Services Table IN OUT ISCP_SATA1_RESET_INFO *Sata1ResetInfo ///< Pointer to SATA1 reset structure ); /// ISCP BMC Present typedef EFI_STATUS (EFIAPI *PEI_ISCP_BMC_PRESENT_TRANSACTION)( IN CONST EFI_PEI_SERVICES **PeiServices, ///< Pointer to the PEI Services Table OUT ISCP_BMC_PRESENCE_INFO *BmcPresenceInfo ///< Pointer to BMC presence structure ); /// This PPI provides several services in PEI to work with the underlying /// Intra-SOC Communication Protocol capabilities of the platform. These /// services include the ability for PEI to send/receive Firmware Setup data, /// retrieve memory data, retrieve fuse data, perform CPU core reset, e.g launch, /// retrieve OEM NVRAM transactions. struct _EFI_PEI_ISCP_PPI { PEI_ISCP_MEMORY_TRANSACTION ExecuteMemoryTransaction; PEI_ISCP_FUSE_TRANSACTION ExecuteFuseTransaction; PEI_ISCP_CPU_RETRIEVE_ID_TRANSACTION ExecuteCpuRetrieveIdTransaction; PEI_ISCP_CPU_RESET_TRANSACTION ExecuteCpuResetTransaction; PEI_ISCP_GET_RTC_TRANSACTION ExecuteGetRtcTransaction; PEI_ISCP_SET_RTC_TRANSACTION ExecuteSetRtcTransaction; PEI_ISCP_GET_MAC_ADDRESS_TRANSACTION ExecuteGetMacAddressTransaction; PEI_ISCP_SET_MAC_ADDRESS_TRANSACTION ExecuteSetMacAddressTransaction; PEI_ISCP_UPDATE_FV_BLOCK_TRANSACTION ExecuteUpdateFvBlock; PEI_ISCP_LOAD_FV_BLOCK_TRANSACTION ExecuteLoadNvBlock; PEI_ISCP_ERASE_FV_BLOCK_TRANSACTION ExecuteEraseNvBlock; PEI_ISCP_PCIE_RESET_TRANSACTION ExecutePcieResetTransaction; PEI_ISCP_SEND_UART_CONFIG_TRANSACTION ExecuteSendUartConfigTransaction; PEI_ISCP_SATA1_GET_TRANSACTION ExecuteSata1GetTransaction; PEI_ISCP_BMC_PRESENT_TRANSACTION ExecuteBmcPresentTransaction; }; extern EFI_GUID gPeiIscpPpiGuid; #endif // #ifndef _PEI_ISCP_PPI_H_