Changes for V4 ============== 1) Move delete of QuarkSocPkg\QuarkNorthCluster\Binary\QuarkMicrocode from QuarkPlatformPkg commit to QuarkSocPkg commit 2) Fix incorrect license header in PlatformSecLibModStrs.uni Changes for V3 ============== 1) Set PcdResetOnMemoryTypeInformationChange FALSE in QuarkMin.dsc This is required because QuarkMin.dsc uses the emulated variable driver that does not preserve any non-volatile UEFI variables across reset. If the condition is met where the memory type information variable needs to be updated, then the system will reset every time the UEFI Shell is run. By setting this PCD to FALSE, then reset action is disabled. 2) Move one binary file to QuarkSocBinPkg 3) Change RMU.bin FILE statements to INF statement in DSC FD region to be compatible with PACKAGES_PATH search for QuarkSocBinPkg Changes for V2 ============== 1) Use new generic PCI serial driver PciSioSerialDxe in MdeModulePkg 2) Configure PcdPciSerialParameters for PCI serial driver for Quark 3) Use new MtrrLib API to reduce time to set MTRRs for all DRAM 4) Convert all UNI files to utf-8 5) Replace tabs with spaces and remove trailing spaces 6) Add License.txt Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Michael Kinney <michael.d.kinney@intel.com> Acked-by: Jordan Justen <jordan.l.justen@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@19287 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			308 lines
		
	
	
		
			8.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			308 lines
		
	
	
		
			8.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
The header file of Platform PEIM.
 | 
						|
 | 
						|
Copyright (c) 2013 Intel Corporation.
 | 
						|
 | 
						|
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 __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
 |