mirror of https://github.com/acidanthera/audk.git
ArmPlatformPkg: Introduce ArmPlatformInitialize() function
This function is responsible to handle all the specific platform code that must be run in secure world to initialize some controllers. ArmPlatformPkg/Sec: Move the L2x0 initialization to ArmPlatformLib The L2x0 controller must be initialized in secure world. Move its initialization into the ArmPlatformInitialize() of the Cortex A9x4 Core Tile PlatformLib. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11476 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
262a9b0444
commit
8e06b586e8
|
@ -57,6 +57,20 @@ VOID ArmPlatformBootRemapping(VOID) {
|
|||
MmioOr32 (ARM_EB_SYSCTRL, BIT8); //EB_SP810_CTRL_BASE
|
||||
}
|
||||
|
||||
/**
|
||||
Initialize controllers that must setup at the early stage
|
||||
|
||||
Some peripherals must be initialized in Secure World.
|
||||
For example, some L2x0 requires to be initialized in Secure World
|
||||
|
||||
**/
|
||||
VOID
|
||||
ArmPlatformInitialize (
|
||||
VOID
|
||||
) {
|
||||
// Do nothing yet
|
||||
}
|
||||
|
||||
/**
|
||||
Initialize the system (or sometimes called permanent) memory
|
||||
|
||||
|
|
|
@ -90,6 +90,8 @@
|
|||
UefiDriverEntryPoint|MdePkg/Library/UefiDriverEntryPoint/UefiDriverEntryPoint.inf
|
||||
UefiApplicationEntryPoint|MdePkg/Library/UefiApplicationEntryPoint/UefiApplicationEntryPoint.inf
|
||||
|
||||
# ARM PL310 L2 Cache Driver
|
||||
L2X0CacheLib|ArmPkg/Drivers/PL310L2Cache/PL310L2CacheSec.inf
|
||||
# ARM PL341 DMC Driver
|
||||
PL341DmcLib|ArmPkg/Drivers/PL34xDmc/PL341Dmc.inf
|
||||
# ARM PL301 Axi Driver
|
||||
|
@ -132,8 +134,6 @@
|
|||
|
||||
# ARM PL354 SMC Driver
|
||||
PL354SmcSecLib|ArmPkg/Drivers/PL35xSmc/PL354SmcSec.inf
|
||||
# ARM PL310 L2 Cache Driver
|
||||
L2X0CacheLib|ArmPkg/Drivers/PL310L2Cache/PL310L2CacheSec.inf
|
||||
# ARM PL390 General Interrupt Driver in Secure and Non-secure
|
||||
PL390GicSecLib|ArmPkg/Drivers/PL390Gic/PL390GicSec.inf
|
||||
PL390GicNonSecLib|ArmPkg/Drivers/PL390Gic/PL390GicNonSec.inf
|
||||
|
|
|
@ -33,6 +33,7 @@
|
|||
MemoryAllocationLib
|
||||
PL341DmcLib
|
||||
PL301AxiLib
|
||||
L2X0CacheLib
|
||||
|
||||
[Sources.common]
|
||||
CTA9x4.c
|
||||
|
@ -47,3 +48,5 @@
|
|||
[FixedPcd]
|
||||
gArmTokenSpaceGuid.PcdNormalFdBaseAddress
|
||||
gArmTokenSpaceGuid.PcdNormalFdSize
|
||||
|
||||
gArmTokenSpaceGuid.PcdL2x0ControllerBase
|
||||
|
|
|
@ -33,6 +33,7 @@
|
|||
PL354SmcSecLib
|
||||
PL341DmcLib
|
||||
PL301AxiLib
|
||||
L2X0CacheLib
|
||||
|
||||
[Sources.common]
|
||||
CTA9x4.c
|
||||
|
@ -48,3 +49,5 @@
|
|||
[FixedPcd]
|
||||
gArmTokenSpaceGuid.PcdNormalFdBaseAddress
|
||||
gArmTokenSpaceGuid.PcdNormalFdSize
|
||||
|
||||
gArmTokenSpaceGuid.PcdL2x0ControllerBase
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
#include <Library/DebugLib.h>
|
||||
#include <Library/PcdLib.h>
|
||||
#include <Drivers/PL341Dmc.h>
|
||||
#include <Drivers/PL301Axi.h>
|
||||
#include <Library/L2X0CacheLib.h>
|
||||
#include <Library/SerialPortLib.h>
|
||||
|
||||
#define SerialPrint(txt) SerialPortWrite (txt, AsciiStrLen(txt)+1);
|
||||
|
@ -148,6 +150,21 @@ VOID ArmPlatformBootRemapping(VOID) {
|
|||
MmioWrite32(ARM_VE_SYS_CFGRW1_REG, (val32 & 0x0FFFFFFF) | ARM_VE_CFGRW1_REMAP_DRAM);
|
||||
}
|
||||
|
||||
/**
|
||||
Initialize controllers that must setup at the early stage
|
||||
|
||||
Some peripherals must be initialized in Secure World.
|
||||
For example, some L2x0 requires to be initialized in Secure World
|
||||
|
||||
**/
|
||||
VOID
|
||||
ArmPlatformInitialize (
|
||||
VOID
|
||||
) {
|
||||
// The L2x0 controller must be intialize in Secure World
|
||||
L2x0CacheInit(PcdGet32(PcdL2x0ControllerBase), FALSE);
|
||||
}
|
||||
|
||||
/**
|
||||
Initialize the system (or sometimes called permanent) memory
|
||||
|
||||
|
|
|
@ -67,6 +67,18 @@ VOID ArmPlatformIsMemoryInitialized(VOID);
|
|||
**/
|
||||
VOID ArmPlatformInitializeBootMemory(VOID);
|
||||
|
||||
/**
|
||||
Initialize controllers that must setup at the early stage
|
||||
|
||||
Some peripherals must be initialized in Secure World.
|
||||
For example, some L2x0 requires to be initialized in Secure World
|
||||
|
||||
**/
|
||||
VOID
|
||||
ArmPlatformInitialize (
|
||||
VOID
|
||||
);
|
||||
|
||||
/**
|
||||
Initialize the system (or sometimes called permanent) memory
|
||||
|
||||
|
|
|
@ -21,7 +21,6 @@
|
|||
#include <Library/ArmLib.h>
|
||||
#include <Chipset/ArmV7.h>
|
||||
#include <Drivers/PL390Gic.h>
|
||||
#include <Library/L2X0CacheLib.h>
|
||||
#include <Library/SerialPortLib.h>
|
||||
#include <Library/ArmPlatformLib.h>
|
||||
|
||||
|
@ -106,8 +105,9 @@ CEntryPoint (
|
|||
}
|
||||
|
||||
if (CoreId == 0) {
|
||||
// Initialize L2X0 but not enabled
|
||||
L2x0CacheInit(PcdGet32(PcdL2x0ControllerBase), FALSE);
|
||||
// Initialize peripherals that must be done at the early stage
|
||||
// Example: Some L2x0 controllers must be initialized in Secure World
|
||||
ArmPlatformInitialize ();
|
||||
|
||||
// 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
|
||||
|
|
|
@ -32,7 +32,6 @@
|
|||
[Packages]
|
||||
MdePkg/MdePkg.dec
|
||||
MdeModulePkg/MdeModulePkg.dec
|
||||
EmbeddedPkg/EmbeddedPkg.dec
|
||||
ArmPkg/ArmPkg.dec
|
||||
ArmPlatformPkg/ArmPlatformPkg.dec
|
||||
|
||||
|
@ -42,7 +41,6 @@
|
|||
IoLib
|
||||
ArmLib
|
||||
ArmPlatformLib
|
||||
L2X0CacheLib
|
||||
PL390GicSecLib
|
||||
SerialPortLib
|
||||
|
||||
|
@ -61,7 +59,5 @@
|
|||
gArmPlatformTokenSpaceGuid.PcdCPUCoresSecMonStackBase
|
||||
gArmPlatformTokenSpaceGuid.PcdCPUCoreSecMonStackSize
|
||||
|
||||
gArmTokenSpaceGuid.PcdL2x0ControllerBase
|
||||
|
||||
gArmTokenSpaceGuid.PcdGicDistributorBase
|
||||
gArmTokenSpaceGuid.PcdGicInterruptInterfaceBase
|
||||
|
|
Loading…
Reference in New Issue