audk/QuarkPlatformPkg/Platform/Pei/PlatformInit/PlatformEarlyInit.h

302 lines
7.9 KiB
C

/** @file
The header file of Platform PEIM.
Copyright (c) 2013 Intel Corporation.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef __PLATFORM_EARLY_INIT_H__
#define __PLATFORM_EARLY_INIT_H__
#define PEI_STALL_RESOLUTION 1
#define STALL_PEIM_SIGNATURE SIGNATURE_32('p','p','u','s')
typedef struct {
UINT32 Signature;
EFI_FFS_FILE_HEADER *FfsHeader;
EFI_PEI_NOTIFY_DESCRIPTOR StallNotify;
} STALL_CALLBACK_STATE_INFORMATION;
#define STALL_PEIM_FROM_THIS(a) CR (a, STALL_CALLBACK_STATE_INFORMATION, StallNotify, STALL_PEIM_SIGNATURE)
//
// USB Phy Registers
//
#define USB2_GLOBAL_PORT 0x4001
#define USB2_PLL1 0x7F02
#define USB2_PLL2 0x7F03
#define USB2_COMPBG 0x7F04
/**
Peform the boot mode determination logic
If the box is closed, then
1. If it's first time to boot, it's boot with full config .
2. If the ChassisIntrution is selected, force to be a boot with full config
3. Otherwise it's boot with no change.
@param PeiServices General purpose services available to every PEIM.
@param BootMode The detected boot mode.
@retval EFI_SUCCESS if the boot mode could be set
**/
EFI_STATUS
UpdateBootMode (
IN EFI_PEI_SERVICES **PeiServices,
OUT EFI_BOOT_MODE *BootMode
);
/**
This function reset the entire platform, including all processor and devices, and
reboots the system.
@param PeiServices General purpose services available to every PEIM.
@retval EFI_SUCCESS if it completed successfully.
**/
EFI_STATUS
EFIAPI
ResetSystem (
IN CONST EFI_PEI_SERVICES **PeiServices
);
/**
This function will be called when MRC is done.
@param PeiServices General purpose services available to every PEIM.
@param NotifyDescriptor Information about the notify event..
@param Ppi The notify context.
@retval EFI_SUCCESS If the function completed successfully.
**/
EFI_STATUS
EFIAPI
MemoryDiscoveredPpiNotifyCallback (
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor,
IN VOID *Ppi
);
/**
This is the callback function notified by FvFileLoader PPI, it depends on FvFileLoader PPI to load
the PEIM into memory.
@param PeiServices General purpose services available to every PEIM.
@param NotifyDescriptor The context of notification.
@param Ppi The notify PPI.
@retval EFI_SUCCESS if it completed successfully.
**/
EFI_STATUS
EFIAPI
FvFileLoaderPpiNotifyCallback (
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor,
IN VOID *Ppi
);
/**
This function provides a blocking stall for reset at least the given number of microseconds
stipulated in the final argument.
@param PeiServices General purpose services available to every PEIM.
@param this Pointer to the local data for the interface.
@param Microseconds number of microseconds for which to stall.
@retval EFI_SUCCESS the function provided at least the required stall.
**/
EFI_STATUS
EFIAPI
Stall (
IN CONST EFI_PEI_SERVICES **PeiServices,
IN CONST EFI_PEI_STALL_PPI *This,
IN UINTN Microseconds
);
/**
This function initialize recovery functionality by installing the recovery PPI.
@param PeiServices General purpose services available to every PEIM.
@retval EFI_SUCCESS if the interface could be successfully installed.
**/
EFI_STATUS
EFIAPI
PeimInitializeRecovery (
IN EFI_PEI_SERVICES **PeiServices
);
/**
This function
1. Calling MRC to initialize memory.
2. Install EFI Memory.
3. Create HOB of system memory.
@param PeiServices Pointer to the PEI Service Table
@retval EFI_SUCCESS If it completes successfully.
**/
EFI_STATUS
MemoryInit (
IN EFI_PEI_SERVICES **PeiServices
);
/** Return info derived from Installing Memory by MemoryInit.
@param[out] RmuMainBaseAddressPtr Return RmuMainBaseAddress to this location.
@param[out] SmramDescriptorPtr Return start of Smram descriptor list to this location.
@param[out] NumSmramRegionsPtr Return numbers of Smram regions to this location.
@return Address of RMU shadow region at the top of available memory.
@return List of Smram descriptors for each Smram region.
@return Numbers of Smram regions.
**/
VOID
EFIAPI
InfoPostInstallMemory (
OUT UINT32 *RmuMainBaseAddressPtr OPTIONAL,
OUT EFI_SMRAM_DESCRIPTOR **SmramDescriptorPtr OPTIONAL,
OUT UINTN *NumSmramRegionsPtr OPTIONAL
);
/**
This function provides the implementation of AtaController PPI Enable Channel function.
@param PeiServices General purpose services available to every PEIM.
@param this Pointer to the local data for the interface.
@param ChannelMask This parameter is used to specify primary or slavery IDE channel.
@retval EFI_SUCCESS Procedure returned successfully.
**/
EFI_STATUS
EnableAtaChannel (
IN EFI_PEI_SERVICES **PeiServices,
IN PEI_ATA_CONTROLLER_PPI *This,
IN UINT8 ChannelMask
);
/**
This function provides the implementation of AtaController PPI Get IDE channel Register Base Address
@param PeiServices General purpose services available to every PEIM.
@param this Pointer to the local data for the interface.
@param IdeRegsBaseAddr Pointer to IDE_REGS_BASE_ADDR struct, which is used to record
IDE Command and Control regeisters Base Address.
@retval EFI_SUCCESS Procedure returned successfully.
**/
EFI_STATUS
GetIdeRegsBaseAddr (
IN EFI_PEI_SERVICES **PeiServices,
IN PEI_ATA_CONTROLLER_PPI *This,
IN IDE_REGS_BASE_ADDR *IdeRegsBaseAddr
);
VOID
EFIAPI
InitializeUSBPhy (
VOID
);
/**
This function provides early platform initialisation.
@param PlatformInfo Pointer to platform Info structure.
**/
VOID
EFIAPI
EarlyPlatformInit (
VOID
);
/**
This function provides early platform GPIO initialisation.
@param PlatformType Platform type for GPIO init.
**/
VOID
EFIAPI
EarlyPlatformLegacyGpioInit (
IN CONST EFI_PLATFORM_TYPE PlatformType
);
/**
Performs any early platform specific GPIO manipulation.
@param PlatformType Platform type GPIO manipulation.
**/
VOID
EFIAPI
EarlyPlatformLegacyGpioManipulation (
IN CONST EFI_PLATFORM_TYPE PlatformType
);
/**
Performs any early platform specific GPIO Controller init & manipulation.
@param PlatformType Platform type for GPIO init & manipulation.
**/
VOID
EFIAPI
EarlyPlatformGpioCtrlerInitAndManipulation (
IN CONST EFI_PLATFORM_TYPE PlatformType
);
/**
Performs any early platform init of SoC Ethernet Mac devices.
@param IohMac0Address Mac address to program into Mac0 device.
@param IohMac1Address Mac address to program into Mac1 device.
**/
VOID
EFIAPI
EarlyPlatformMacInit (
IN CONST UINT8 *IohMac0Address,
IN CONST UINT8 *IohMac1Address
);
/**
Find security headers using EFI_CAPSULE_VARIABLE_NAME variables and build Hobs.
@param PeiServices General purpose services available to every PEIM.
@retval 0 if no security headers found.
@return number of security header hobs built.
**/
UINTN
EFIAPI
FindCapsuleSecurityHeadersAndBuildHobs (
IN EFI_PEI_SERVICES **PeiServices
);
/**
Build capsule security header hob.
@param SecHdr Pointer to security header.
@retval NULL if failure to build HOB.
@return pointer to built hob.
**/
VOID *
EFIAPI
BuildCapsuleSecurityHeaderHob (
IN VOID *SecHdr
);
#endif