mirror of https://github.com/acidanthera/audk.git
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:
parent
bf7d7a673b
commit
aa01abaa77
|
@ -29,7 +29,11 @@
|
||||||
@return A non-zero value if Trustzone supported.
|
@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
|
// There is no Trustzone controllers (TZPC & TZASC) and no Secure Memory on RTSM
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
@ -41,7 +45,11 @@ UINTN ArmPlatformTrustzoneSupported(VOID) {
|
||||||
of the secure peripherals and memory regions.
|
of the secure peripherals and memory regions.
|
||||||
|
|
||||||
**/
|
**/
|
||||||
VOID ArmPlatformTrustzoneInit(VOID) {
|
VOID
|
||||||
|
ArmPlatformTrustzoneInit (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
ASSERT(FALSE);
|
ASSERT(FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -52,7 +60,11 @@ VOID ArmPlatformTrustzoneInit(VOID) {
|
||||||
This function can do nothing if this feature is not relevant to your platform.
|
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
|
// 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
|
VOID
|
||||||
ArmPlatformInitialize (
|
ArmPlatformSecInitialize (
|
||||||
VOID
|
VOID
|
||||||
) {
|
) {
|
||||||
// Do nothing yet
|
// 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
|
Initialize the system (or sometimes called permanent) memory
|
||||||
|
|
||||||
This memory is generally represented by the DRAM.
|
This memory is generally represented by the DRAM.
|
||||||
|
|
||||||
**/
|
**/
|
||||||
VOID ArmPlatformInitializeSystemMemory(VOID) {
|
VOID
|
||||||
|
ArmPlatformInitializeSystemMemory (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
// We do not need to initialize the System Memory on RTSM
|
// We do not need to initialize the System Memory on RTSM
|
||||||
}
|
}
|
||||||
|
|
|
@ -63,7 +63,11 @@ struct pl341_dmc_config ddr_timings = {
|
||||||
@return A non-zero value if Trustzone supported.
|
@return A non-zero value if Trustzone supported.
|
||||||
|
|
||||||
**/
|
**/
|
||||||
UINTN ArmPlatformTrustzoneSupported(VOID) {
|
UINTN
|
||||||
|
ArmPlatformTrustzoneSupported (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
return (MmioRead32(ARM_VE_SYS_CFGRW1_REG) & ARM_VE_CFGRW1_TZASC_EN_BIT_MASK);
|
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.
|
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
|
UINT32 val32 = MmioRead32(ARM_VE_SYS_CFGRW1_REG); //Scc - CFGRW1
|
||||||
// we remap the DRAM to 0x0
|
// we remap the DRAM to 0x0
|
||||||
MmioWrite32(ARM_VE_SYS_CFGRW1_REG, (val32 & 0x0FFFFFFF) | ARM_VE_CFGRW1_REMAP_DRAM);
|
MmioWrite32(ARM_VE_SYS_CFGRW1_REG, (val32 & 0x0FFFFFFF) | ARM_VE_CFGRW1_REMAP_DRAM);
|
||||||
|
@ -174,20 +182,39 @@ VOID ArmPlatformBootRemapping(VOID) {
|
||||||
|
|
||||||
**/
|
**/
|
||||||
VOID
|
VOID
|
||||||
ArmPlatformInitialize (
|
ArmPlatformSecInitialize (
|
||||||
VOID
|
VOID
|
||||||
) {
|
) {
|
||||||
// The L2x0 controller must be intialize in Secure World
|
// The L2x0 controller must be intialize in Secure World
|
||||||
L2x0CacheInit(PcdGet32(PcdL2x0ControllerBase), FALSE);
|
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
|
Initialize the system (or sometimes called permanent) memory
|
||||||
|
|
||||||
This memory is generally represented by the DRAM.
|
This memory is generally represented by the DRAM.
|
||||||
|
|
||||||
**/
|
**/
|
||||||
VOID ArmPlatformInitializeSystemMemory(VOID) {
|
VOID
|
||||||
|
ArmPlatformInitializeSystemMemory (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
PL341DmcInit(&ddr_timings);
|
PL341DmcInit(&ddr_timings);
|
||||||
PL301AxiInit(ARM_VE_FAXI_BASE);
|
PL301AxiInit(ARM_VE_FAXI_BASE);
|
||||||
}
|
}
|
||||||
|
|
|
@ -65,7 +65,10 @@ VOID ArmPlatformIsMemoryInitialized(VOID);
|
||||||
pointer is not used (probably required to use assembly language)
|
pointer is not used (probably required to use assembly language)
|
||||||
|
|
||||||
**/
|
**/
|
||||||
VOID ArmPlatformInitializeBootMemory(VOID);
|
VOID
|
||||||
|
ArmPlatformInitializeBootMemory (
|
||||||
|
VOID
|
||||||
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Return the current Boot Mode
|
Return the current Boot Mode
|
||||||
|
@ -88,7 +91,19 @@ ArmPlatformGetBootMode (
|
||||||
|
|
||||||
**/
|
**/
|
||||||
VOID
|
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
|
VOID
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -98,7 +113,10 @@ ArmPlatformInitialize (
|
||||||
This memory is generally represented by the DRAM.
|
This memory is generally represented by the DRAM.
|
||||||
|
|
||||||
**/
|
**/
|
||||||
VOID ArmPlatformInitializeSystemMemory(VOID);
|
VOID
|
||||||
|
ArmPlatformInitializeSystemMemory (
|
||||||
|
VOID
|
||||||
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Remap the memory at 0x0
|
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.
|
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
|
Return if Trustzone is supported by your platform
|
||||||
|
@ -120,7 +141,10 @@ VOID ArmPlatformBootRemapping(VOID);
|
||||||
@return A non-zero value if Trustzone supported.
|
@return A non-zero value if Trustzone supported.
|
||||||
|
|
||||||
**/
|
**/
|
||||||
UINTN ArmPlatformTrustzoneSupported(VOID);
|
UINTN
|
||||||
|
ArmPlatformTrustzoneSupported (
|
||||||
|
VOID
|
||||||
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Initialize the Secure peripherals and memory regions
|
Initialize the Secure peripherals and memory regions
|
||||||
|
@ -129,7 +153,10 @@ UINTN ArmPlatformTrustzoneSupported(VOID);
|
||||||
of the secure peripherals and memory regions.
|
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
|
Return the information about the memory region in permanent memory used by PEI
|
||||||
|
@ -156,9 +183,10 @@ VOID ArmPlatformGetPeiMemory (
|
||||||
entry
|
entry
|
||||||
|
|
||||||
**/
|
**/
|
||||||
VOID ArmPlatformGetVirtualMemoryMap (
|
VOID
|
||||||
|
ArmPlatformGetVirtualMemoryMap (
|
||||||
OUT ARM_MEMORY_REGION_DESCRIPTOR** VirtualMemoryMap
|
OUT ARM_MEMORY_REGION_DESCRIPTOR** VirtualMemoryMap
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Return the EFI Memory Map of your platform
|
Return the EFI Memory Map of your platform
|
||||||
|
|
|
@ -73,6 +73,9 @@ Returns:
|
||||||
|
|
||||||
DEBUG ((EFI_D_ERROR, "Platform PEIM Loaded\n"));
|
DEBUG ((EFI_D_ERROR, "Platform PEIM Loaded\n"));
|
||||||
|
|
||||||
|
// Initialize the platform specific controllers
|
||||||
|
ArmPlatformNormalInitialize ();
|
||||||
|
|
||||||
BuildCpuHob (PcdGet8 (PcdPrePiCpuMemorySize), PcdGet8 (PcdPrePiCpuIoSize));
|
BuildCpuHob (PcdGet8 (PcdPrePiCpuMemorySize), PcdGet8 (PcdPrePiCpuIoSize));
|
||||||
|
|
||||||
BuildFvHob (FixedPcdGet32(PcdFlashFvMainBase), FixedPcdGet32(PcdFlashFvMainSize));
|
BuildFvHob (FixedPcdGet32(PcdFlashFvMainBase), FixedPcdGet32(PcdFlashFvMainSize));
|
||||||
|
|
|
@ -115,7 +115,7 @@ CEntryPoint (
|
||||||
if (CoreId == ARM_PRIMARY_CORE) {
|
if (CoreId == ARM_PRIMARY_CORE) {
|
||||||
// Initialize peripherals that must be done at the early stage
|
// Initialize peripherals that must be done at the early stage
|
||||||
// Example: Some L2x0 controllers must be initialized in Secure World
|
// 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 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
|
// If we are in standalone, we need the initialization to copy the UEFI firmware into DRAM
|
||||||
|
|
Loading…
Reference in New Issue