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:
oliviermartin 2011-03-31 12:12:58 +00:00
parent 262a9b0444
commit 8e06b586e8
8 changed files with 54 additions and 9 deletions

View File

@ -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

View File

@ -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

View File

@ -33,6 +33,7 @@
MemoryAllocationLib
PL341DmcLib
PL301AxiLib
L2X0CacheLib
[Sources.common]
CTA9x4.c
@ -47,3 +48,5 @@
[FixedPcd]
gArmTokenSpaceGuid.PcdNormalFdBaseAddress
gArmTokenSpaceGuid.PcdNormalFdSize
gArmTokenSpaceGuid.PcdL2x0ControllerBase

View File

@ -33,6 +33,7 @@
PL354SmcSecLib
PL341DmcLib
PL301AxiLib
L2X0CacheLib
[Sources.common]
CTA9x4.c
@ -48,3 +49,5 @@
[FixedPcd]
gArmTokenSpaceGuid.PcdNormalFdBaseAddress
gArmTokenSpaceGuid.PcdNormalFdSize
gArmTokenSpaceGuid.PcdL2x0ControllerBase

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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