]> git.proxmox.com Git - mirror_edk2.git/commitdiff
ArmPlatformPkg: Introduce ArmPlatformInitialize() function
authoroliviermartin <oliviermartin@6f19259b-4bc3-4df7-8a09-765794883524>
Thu, 31 Mar 2011 12:12:58 +0000 (12:12 +0000)
committeroliviermartin <oliviermartin@6f19259b-4bc3-4df7-8a09-765794883524>
Thu, 31 Mar 2011 12:12:58 +0000 (12:12 +0000)
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

ArmPlatformPkg/ArmRealViewEbPkg/Library/ArmRealViewEbLibRTSM/ArmRealViewEb.c
ArmPlatformPkg/ArmVExpressPkg/ArmVExpress-CTA9x4.dsc
ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibCTA9x4/ArmVExpressLib.inf
ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibCTA9x4/ArmVExpressSecLib.inf
ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibCTA9x4/CTA9x4.c
ArmPlatformPkg/Include/Library/ArmPlatformLib.h
ArmPlatformPkg/Sec/Sec.c
ArmPlatformPkg/Sec/Sec.inf

index 2bbca875e82f44c8555fe05f250b6b79d494b705..003f6571633d2cac64270aeccb0dcfde31ef73f8 100644 (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
 
index c5aa4772b9e96b5bb835e75c41e46f4a85eb09e6..c0e3103a731fd8472dda204b39a821448769eefe 100644 (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
   
   # 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
index 15e20b67830c70d146910bd6d6fba4df413fbf0d..80631240a78b1358ebb4371edd565dcf3f0bec9e 100644 (file)
@@ -33,6 +33,7 @@
   MemoryAllocationLib
   PL341DmcLib
   PL301AxiLib
+  L2X0CacheLib
 
 [Sources.common]
   CTA9x4.c
@@ -47,3 +48,5 @@
 [FixedPcd]
   gArmTokenSpaceGuid.PcdNormalFdBaseAddress
   gArmTokenSpaceGuid.PcdNormalFdSize
+
+  gArmTokenSpaceGuid.PcdL2x0ControllerBase
index aef37b2f7e9013551e795ead26046aef033c82ae..aefd53c4869b6f7c820a9365bcf1054ae99381c6 100644 (file)
@@ -33,6 +33,7 @@
   PL354SmcSecLib\r
   PL341DmcLib\r
   PL301AxiLib\r
+  L2X0CacheLib\r
 \r
 [Sources.common]\r
   CTA9x4.c\r
@@ -48,3 +49,5 @@
 [FixedPcd]\r
   gArmTokenSpaceGuid.PcdNormalFdBaseAddress\r
   gArmTokenSpaceGuid.PcdNormalFdSize\r
+\r
+  gArmTokenSpaceGuid.PcdL2x0ControllerBase\r
index 69091d1119faf0a67e27cf2f4bcffd130a565b7a..2d39207e2941fed70a6c0f30018d51c3db7b3bd7 100644 (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
 
index fe57c5a353608544f5c38e637237683eb2b55018..c9b215e6dc84559f4028205965946e114634959a 100644 (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
 
index 4199f381ba9481d0249f1d4a0370901a7d1bad3e..7106e90026aeb6a0cf669ca9b42d5d19f32691cb 100644 (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
index e3ab22150e9716756b9c6d2d25f3d16c37ac3f67..38bd8b9be30d7f9a9ffdd1b568ace5d0360bef45 100644 (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