mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-30 17:14:07 +02:00
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
|
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
|
Initialize the system (or sometimes called permanent) memory
|
||||||
|
|
||||||
|
@ -90,6 +90,8 @@
|
|||||||
UefiDriverEntryPoint|MdePkg/Library/UefiDriverEntryPoint/UefiDriverEntryPoint.inf
|
UefiDriverEntryPoint|MdePkg/Library/UefiDriverEntryPoint/UefiDriverEntryPoint.inf
|
||||||
UefiApplicationEntryPoint|MdePkg/Library/UefiApplicationEntryPoint/UefiApplicationEntryPoint.inf
|
UefiApplicationEntryPoint|MdePkg/Library/UefiApplicationEntryPoint/UefiApplicationEntryPoint.inf
|
||||||
|
|
||||||
|
# ARM PL310 L2 Cache Driver
|
||||||
|
L2X0CacheLib|ArmPkg/Drivers/PL310L2Cache/PL310L2CacheSec.inf
|
||||||
# ARM PL341 DMC Driver
|
# ARM PL341 DMC Driver
|
||||||
PL341DmcLib|ArmPkg/Drivers/PL34xDmc/PL341Dmc.inf
|
PL341DmcLib|ArmPkg/Drivers/PL34xDmc/PL341Dmc.inf
|
||||||
# ARM PL301 Axi Driver
|
# ARM PL301 Axi Driver
|
||||||
@ -132,8 +134,6 @@
|
|||||||
|
|
||||||
# ARM PL354 SMC Driver
|
# ARM PL354 SMC Driver
|
||||||
PL354SmcSecLib|ArmPkg/Drivers/PL35xSmc/PL354SmcSec.inf
|
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
|
# ARM PL390 General Interrupt Driver in Secure and Non-secure
|
||||||
PL390GicSecLib|ArmPkg/Drivers/PL390Gic/PL390GicSec.inf
|
PL390GicSecLib|ArmPkg/Drivers/PL390Gic/PL390GicSec.inf
|
||||||
PL390GicNonSecLib|ArmPkg/Drivers/PL390Gic/PL390GicNonSec.inf
|
PL390GicNonSecLib|ArmPkg/Drivers/PL390Gic/PL390GicNonSec.inf
|
||||||
|
@ -33,6 +33,7 @@
|
|||||||
MemoryAllocationLib
|
MemoryAllocationLib
|
||||||
PL341DmcLib
|
PL341DmcLib
|
||||||
PL301AxiLib
|
PL301AxiLib
|
||||||
|
L2X0CacheLib
|
||||||
|
|
||||||
[Sources.common]
|
[Sources.common]
|
||||||
CTA9x4.c
|
CTA9x4.c
|
||||||
@ -47,3 +48,5 @@
|
|||||||
[FixedPcd]
|
[FixedPcd]
|
||||||
gArmTokenSpaceGuid.PcdNormalFdBaseAddress
|
gArmTokenSpaceGuid.PcdNormalFdBaseAddress
|
||||||
gArmTokenSpaceGuid.PcdNormalFdSize
|
gArmTokenSpaceGuid.PcdNormalFdSize
|
||||||
|
|
||||||
|
gArmTokenSpaceGuid.PcdL2x0ControllerBase
|
||||||
|
@ -33,6 +33,7 @@
|
|||||||
PL354SmcSecLib
|
PL354SmcSecLib
|
||||||
PL341DmcLib
|
PL341DmcLib
|
||||||
PL301AxiLib
|
PL301AxiLib
|
||||||
|
L2X0CacheLib
|
||||||
|
|
||||||
[Sources.common]
|
[Sources.common]
|
||||||
CTA9x4.c
|
CTA9x4.c
|
||||||
@ -48,3 +49,5 @@
|
|||||||
[FixedPcd]
|
[FixedPcd]
|
||||||
gArmTokenSpaceGuid.PcdNormalFdBaseAddress
|
gArmTokenSpaceGuid.PcdNormalFdBaseAddress
|
||||||
gArmTokenSpaceGuid.PcdNormalFdSize
|
gArmTokenSpaceGuid.PcdNormalFdSize
|
||||||
|
|
||||||
|
gArmTokenSpaceGuid.PcdL2x0ControllerBase
|
||||||
|
@ -18,6 +18,8 @@
|
|||||||
#include <Library/DebugLib.h>
|
#include <Library/DebugLib.h>
|
||||||
#include <Library/PcdLib.h>
|
#include <Library/PcdLib.h>
|
||||||
#include <Drivers/PL341Dmc.h>
|
#include <Drivers/PL341Dmc.h>
|
||||||
|
#include <Drivers/PL301Axi.h>
|
||||||
|
#include <Library/L2X0CacheLib.h>
|
||||||
#include <Library/SerialPortLib.h>
|
#include <Library/SerialPortLib.h>
|
||||||
|
|
||||||
#define SerialPrint(txt) SerialPortWrite (txt, AsciiStrLen(txt)+1);
|
#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);
|
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
|
Initialize the system (or sometimes called permanent) memory
|
||||||
|
|
||||||
|
@ -67,6 +67,18 @@ VOID ArmPlatformIsMemoryInitialized(VOID);
|
|||||||
**/
|
**/
|
||||||
VOID ArmPlatformInitializeBootMemory(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
|
Initialize the system (or sometimes called permanent) memory
|
||||||
|
|
||||||
|
@ -21,7 +21,6 @@
|
|||||||
#include <Library/ArmLib.h>
|
#include <Library/ArmLib.h>
|
||||||
#include <Chipset/ArmV7.h>
|
#include <Chipset/ArmV7.h>
|
||||||
#include <Drivers/PL390Gic.h>
|
#include <Drivers/PL390Gic.h>
|
||||||
#include <Library/L2X0CacheLib.h>
|
|
||||||
#include <Library/SerialPortLib.h>
|
#include <Library/SerialPortLib.h>
|
||||||
#include <Library/ArmPlatformLib.h>
|
#include <Library/ArmPlatformLib.h>
|
||||||
|
|
||||||
@ -106,8 +105,9 @@ CEntryPoint (
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (CoreId == 0) {
|
if (CoreId == 0) {
|
||||||
// Initialize L2X0 but not enabled
|
// Initialize peripherals that must be done at the early stage
|
||||||
L2x0CacheInit(PcdGet32(PcdL2x0ControllerBase), FALSE);
|
// 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 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
|
||||||
|
@ -32,7 +32,6 @@
|
|||||||
[Packages]
|
[Packages]
|
||||||
MdePkg/MdePkg.dec
|
MdePkg/MdePkg.dec
|
||||||
MdeModulePkg/MdeModulePkg.dec
|
MdeModulePkg/MdeModulePkg.dec
|
||||||
EmbeddedPkg/EmbeddedPkg.dec
|
|
||||||
ArmPkg/ArmPkg.dec
|
ArmPkg/ArmPkg.dec
|
||||||
ArmPlatformPkg/ArmPlatformPkg.dec
|
ArmPlatformPkg/ArmPlatformPkg.dec
|
||||||
|
|
||||||
@ -42,7 +41,6 @@
|
|||||||
IoLib
|
IoLib
|
||||||
ArmLib
|
ArmLib
|
||||||
ArmPlatformLib
|
ArmPlatformLib
|
||||||
L2X0CacheLib
|
|
||||||
PL390GicSecLib
|
PL390GicSecLib
|
||||||
SerialPortLib
|
SerialPortLib
|
||||||
|
|
||||||
@ -61,7 +59,5 @@
|
|||||||
gArmPlatformTokenSpaceGuid.PcdCPUCoresSecMonStackBase
|
gArmPlatformTokenSpaceGuid.PcdCPUCoresSecMonStackBase
|
||||||
gArmPlatformTokenSpaceGuid.PcdCPUCoreSecMonStackSize
|
gArmPlatformTokenSpaceGuid.PcdCPUCoreSecMonStackSize
|
||||||
|
|
||||||
gArmTokenSpaceGuid.PcdL2x0ControllerBase
|
|
||||||
|
|
||||||
gArmTokenSpaceGuid.PcdGicDistributorBase
|
gArmTokenSpaceGuid.PcdGicDistributorBase
|
||||||
gArmTokenSpaceGuid.PcdGicInterruptInterfaceBase
|
gArmTokenSpaceGuid.PcdGicInterruptInterfaceBase
|
||||||
|
Loading…
x
Reference in New Issue
Block a user