ArmPlatformPkg/ArmPlatformLib: Renamed ArmPlatformInitialize into ArmPlatformSecInitialize

Some platforms require some of their controllers to be initialized in Secure world.
This function make the difference between Secure and Normal world platform initialization.


ArmPlatformPkg/ArmPlatformLib: Introduce ArmPlatformNormalInitialize

Contain the code that initializes platform controllers that would be initialized in Normal World
by PlatformPei.




git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11591 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
oliviermartin 2011-04-26 18:27:15 +00:00
parent bf7d7a673b
commit aa01abaa77
5 changed files with 115 additions and 26 deletions

View File

@ -29,9 +29,13 @@
@return A non-zero value if Trustzone supported.
**/
UINTN ArmPlatformTrustzoneSupported(VOID) {
UINTN
ArmPlatformTrustzoneSupported (
VOID
)
{
// There is no Trustzone controllers (TZPC & TZASC) and no Secure Memory on RTSM
return FALSE;
return FALSE;
}
/**
@ -41,8 +45,12 @@ UINTN ArmPlatformTrustzoneSupported(VOID) {
of the secure peripherals and memory regions.
**/
VOID ArmPlatformTrustzoneInit(VOID) {
ASSERT(FALSE);
VOID
ArmPlatformTrustzoneInit (
VOID
)
{
ASSERT(FALSE);
}
/**
@ -52,9 +60,13 @@ VOID ArmPlatformTrustzoneInit(VOID) {
This function can do nothing if this feature is not relevant to your platform.
**/
VOID ArmPlatformBootRemapping(VOID) {
VOID
ArmPlatformBootRemapping (
VOID
)
{
// Disable memory remapping and return to normal mapping
MmioOr32 (ARM_EB_SYSCTRL, BIT8); //EB_SP810_CTRL_BASE
MmioOr32 (ARM_EB_SYSCTRL, BIT8); //EB_SP810_CTRL_BASE
}
/**
@ -79,18 +91,37 @@ ArmPlatformGetBootMode (
**/
VOID
ArmPlatformInitialize (
ArmPlatformSecInitialize (
VOID
) {
// Do nothing yet
}
/**
Initialize controllers that must setup in the normal world
This function is called by the ArmPlatformPkg/Pei or ArmPlatformPkg/Pei/PlatformPeim
in the PEI phase.
**/
VOID
ArmPlatformNormalInitialize (
VOID
)
{
// Nothing to do here
}
/**
Initialize the system (or sometimes called permanent) memory
This memory is generally represented by the DRAM.
**/
VOID ArmPlatformInitializeSystemMemory(VOID) {
// We do not need to initialize the System Memory on RTSM
VOID
ArmPlatformInitializeSystemMemory (
VOID
)
{
// We do not need to initialize the System Memory on RTSM
}

View File

@ -63,8 +63,12 @@ struct pl341_dmc_config ddr_timings = {
@return A non-zero value if Trustzone supported.
**/
UINTN ArmPlatformTrustzoneSupported(VOID) {
return (MmioRead32(ARM_VE_SYS_CFGRW1_REG) & ARM_VE_CFGRW1_TZASC_EN_BIT_MASK);
UINTN
ArmPlatformTrustzoneSupported (
VOID
)
{
return (MmioRead32(ARM_VE_SYS_CFGRW1_REG) & ARM_VE_CFGRW1_TZASC_EN_BIT_MASK);
}
/**
@ -160,7 +164,11 @@ ArmPlatformGetBootMode (
This function can do nothing if this feature is not relevant to your platform.
**/
VOID ArmPlatformBootRemapping(VOID) {
VOID
ArmPlatformBootRemapping (
VOID
)
{
UINT32 val32 = MmioRead32(ARM_VE_SYS_CFGRW1_REG); //Scc - CFGRW1
// we remap the DRAM to 0x0
MmioWrite32(ARM_VE_SYS_CFGRW1_REG, (val32 & 0x0FFFFFFF) | ARM_VE_CFGRW1_REMAP_DRAM);
@ -174,20 +182,39 @@ VOID ArmPlatformBootRemapping(VOID) {
**/
VOID
ArmPlatformInitialize (
ArmPlatformSecInitialize (
VOID
) {
// The L2x0 controller must be intialize in Secure World
L2x0CacheInit(PcdGet32(PcdL2x0ControllerBase), FALSE);
}
/**
Initialize controllers that must setup in the normal world
This function is called by the ArmPlatformPkg/Pei or ArmPlatformPkg/Pei/PlatformPeim
in the PEI phase.
**/
VOID
ArmPlatformNormalInitialize (
VOID
)
{
// Nothing to do here
}
/**
Initialize the system (or sometimes called permanent) memory
This memory is generally represented by the DRAM.
**/
VOID ArmPlatformInitializeSystemMemory(VOID) {
PL341DmcInit(&ddr_timings);
PL301AxiInit(ARM_VE_FAXI_BASE);
VOID
ArmPlatformInitializeSystemMemory (
VOID
)
{
PL341DmcInit(&ddr_timings);
PL301AxiInit(ARM_VE_FAXI_BASE);
}

View File

@ -65,7 +65,10 @@ VOID ArmPlatformIsMemoryInitialized(VOID);
pointer is not used (probably required to use assembly language)
**/
VOID ArmPlatformInitializeBootMemory(VOID);
VOID
ArmPlatformInitializeBootMemory (
VOID
);
/**
Return the current Boot Mode
@ -88,7 +91,19 @@ ArmPlatformGetBootMode (
**/
VOID
ArmPlatformInitialize (
ArmPlatformSecInitialize (
VOID
);
/**
Initialize controllers that must setup in the normal world
This function is called by the ArmPlatformPkg/Pei or ArmPlatformPkg/Pei/PlatformPeim
in the PEI phase.
**/
VOID
ArmPlatformNormalInitialize (
VOID
);
@ -98,7 +113,10 @@ ArmPlatformInitialize (
This memory is generally represented by the DRAM.
**/
VOID ArmPlatformInitializeSystemMemory(VOID);
VOID
ArmPlatformInitializeSystemMemory (
VOID
);
/**
Remap the memory at 0x0
@ -107,7 +125,10 @@ VOID ArmPlatformInitializeSystemMemory(VOID);
This function can do nothing if this feature is not relevant to your platform.
**/
VOID ArmPlatformBootRemapping(VOID);
VOID
ArmPlatformBootRemapping (
VOID
);
/**
Return if Trustzone is supported by your platform
@ -120,7 +141,10 @@ VOID ArmPlatformBootRemapping(VOID);
@return A non-zero value if Trustzone supported.
**/
UINTN ArmPlatformTrustzoneSupported(VOID);
UINTN
ArmPlatformTrustzoneSupported (
VOID
);
/**
Initialize the Secure peripherals and memory regions
@ -129,7 +153,10 @@ UINTN ArmPlatformTrustzoneSupported(VOID);
of the secure peripherals and memory regions.
**/
VOID ArmPlatformTrustzoneInit(VOID);
VOID
ArmPlatformTrustzoneInit (
VOID
);
/**
Return the information about the memory region in permanent memory used by PEI
@ -156,9 +183,10 @@ VOID ArmPlatformGetPeiMemory (
entry
**/
VOID ArmPlatformGetVirtualMemoryMap (
OUT ARM_MEMORY_REGION_DESCRIPTOR** VirtualMemoryMap
);
VOID
ArmPlatformGetVirtualMemoryMap (
OUT ARM_MEMORY_REGION_DESCRIPTOR** VirtualMemoryMap
);
/**
Return the EFI Memory Map of your platform

View File

@ -73,6 +73,9 @@ Returns:
DEBUG ((EFI_D_ERROR, "Platform PEIM Loaded\n"));
// Initialize the platform specific controllers
ArmPlatformNormalInitialize ();
BuildCpuHob (PcdGet8 (PcdPrePiCpuMemorySize), PcdGet8 (PcdPrePiCpuIoSize));
BuildFvHob (FixedPcdGet32(PcdFlashFvMainBase), FixedPcdGet32(PcdFlashFvMainSize));

View File

@ -115,7 +115,7 @@ CEntryPoint (
if (CoreId == ARM_PRIMARY_CORE) {
// Initialize peripherals that must be done at the early stage
// Example: Some L2x0 controllers must be initialized in Secure World
ArmPlatformInitialize ();
ArmPlatformSecInitialize ();
// If we skip the PEI Core we could want to initialize the DRAM in the SEC phase.
// If we are in standalone, we need the initialization to copy the UEFI firmware into DRAM