From aa01abaa779cb30614c014a9314fe4f63bba0f88 Mon Sep 17 00:00:00 2001 From: oliviermartin Date: Tue, 26 Apr 2011 18:27:15 +0000 Subject: [PATCH] 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 --- .../ArmRealViewEbLibRTSM/ArmRealViewEb.c | 49 +++++++++++++++---- .../Library/ArmVExpressLibCTA9x4/CTA9x4.c | 41 +++++++++++++--- .../Include/Library/ArmPlatformLib.h | 46 +++++++++++++---- ArmPlatformPkg/PlatformPei/PlatformPei.c | 3 ++ ArmPlatformPkg/Sec/Sec.c | 2 +- 5 files changed, 115 insertions(+), 26 deletions(-) diff --git a/ArmPlatformPkg/ArmRealViewEbPkg/Library/ArmRealViewEbLibRTSM/ArmRealViewEb.c b/ArmPlatformPkg/ArmRealViewEbPkg/Library/ArmRealViewEbLibRTSM/ArmRealViewEb.c index 070db6ab59..8be95ce38f 100644 --- a/ArmPlatformPkg/ArmRealViewEbPkg/Library/ArmRealViewEbLibRTSM/ArmRealViewEb.c +++ b/ArmPlatformPkg/ArmRealViewEbPkg/Library/ArmRealViewEbLibRTSM/ArmRealViewEb.c @@ -29,9 +29,13 @@ @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 - return FALSE; + return FALSE; } /** @@ -41,8 +45,12 @@ UINTN ArmPlatformTrustzoneSupported(VOID) { of the secure peripherals and memory regions. **/ -VOID ArmPlatformTrustzoneInit(VOID) { - ASSERT(FALSE); +VOID +ArmPlatformTrustzoneInit ( + VOID + ) +{ + ASSERT(FALSE); } /** @@ -52,9 +60,13 @@ VOID ArmPlatformTrustzoneInit(VOID) { 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 - MmioOr32 (ARM_EB_SYSCTRL, BIT8); //EB_SP810_CTRL_BASE + MmioOr32 (ARM_EB_SYSCTRL, BIT8); //EB_SP810_CTRL_BASE } /** @@ -79,18 +91,37 @@ ArmPlatformGetBootMode ( **/ VOID -ArmPlatformInitialize ( +ArmPlatformSecInitialize ( VOID ) { // 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 This memory is generally represented by the DRAM. **/ -VOID ArmPlatformInitializeSystemMemory(VOID) { - // We do not need to initialize the System Memory on RTSM +VOID +ArmPlatformInitializeSystemMemory ( + VOID + ) +{ + // We do not need to initialize the System Memory on RTSM } diff --git a/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibCTA9x4/CTA9x4.c b/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibCTA9x4/CTA9x4.c index 490dda1a92..82b4ae14cb 100644 --- a/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibCTA9x4/CTA9x4.c +++ b/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibCTA9x4/CTA9x4.c @@ -63,8 +63,12 @@ struct pl341_dmc_config ddr_timings = { @return A non-zero value if Trustzone supported. **/ -UINTN ArmPlatformTrustzoneSupported(VOID) { - return (MmioRead32(ARM_VE_SYS_CFGRW1_REG) & ARM_VE_CFGRW1_TZASC_EN_BIT_MASK); +UINTN +ArmPlatformTrustzoneSupported ( + VOID + ) +{ + 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. **/ -VOID ArmPlatformBootRemapping(VOID) { +VOID +ArmPlatformBootRemapping ( + VOID + ) +{ UINT32 val32 = MmioRead32(ARM_VE_SYS_CFGRW1_REG); //Scc - CFGRW1 // we remap the DRAM to 0x0 MmioWrite32(ARM_VE_SYS_CFGRW1_REG, (val32 & 0x0FFFFFFF) | ARM_VE_CFGRW1_REMAP_DRAM); @@ -174,20 +182,39 @@ VOID ArmPlatformBootRemapping(VOID) { **/ VOID -ArmPlatformInitialize ( +ArmPlatformSecInitialize ( VOID ) { // The L2x0 controller must be intialize in Secure World 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 This memory is generally represented by the DRAM. **/ -VOID ArmPlatformInitializeSystemMemory(VOID) { - PL341DmcInit(&ddr_timings); - PL301AxiInit(ARM_VE_FAXI_BASE); +VOID +ArmPlatformInitializeSystemMemory ( + VOID + ) +{ + PL341DmcInit(&ddr_timings); + PL301AxiInit(ARM_VE_FAXI_BASE); } diff --git a/ArmPlatformPkg/Include/Library/ArmPlatformLib.h b/ArmPlatformPkg/Include/Library/ArmPlatformLib.h index ec95941b51..3fec90298c 100644 --- a/ArmPlatformPkg/Include/Library/ArmPlatformLib.h +++ b/ArmPlatformPkg/Include/Library/ArmPlatformLib.h @@ -65,7 +65,10 @@ VOID ArmPlatformIsMemoryInitialized(VOID); pointer is not used (probably required to use assembly language) **/ -VOID ArmPlatformInitializeBootMemory(VOID); +VOID +ArmPlatformInitializeBootMemory ( + VOID + ); /** Return the current Boot Mode @@ -88,7 +91,19 @@ ArmPlatformGetBootMode ( **/ 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 ); @@ -98,7 +113,10 @@ ArmPlatformInitialize ( This memory is generally represented by the DRAM. **/ -VOID ArmPlatformInitializeSystemMemory(VOID); +VOID +ArmPlatformInitializeSystemMemory ( + VOID + ); /** 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. **/ -VOID ArmPlatformBootRemapping(VOID); +VOID +ArmPlatformBootRemapping ( + VOID + ); /** Return if Trustzone is supported by your platform @@ -120,7 +141,10 @@ VOID ArmPlatformBootRemapping(VOID); @return A non-zero value if Trustzone supported. **/ -UINTN ArmPlatformTrustzoneSupported(VOID); +UINTN +ArmPlatformTrustzoneSupported ( + VOID + ); /** Initialize the Secure peripherals and memory regions @@ -129,7 +153,10 @@ UINTN ArmPlatformTrustzoneSupported(VOID); 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 @@ -156,9 +183,10 @@ VOID ArmPlatformGetPeiMemory ( entry **/ -VOID ArmPlatformGetVirtualMemoryMap ( - OUT ARM_MEMORY_REGION_DESCRIPTOR** VirtualMemoryMap -); +VOID +ArmPlatformGetVirtualMemoryMap ( + OUT ARM_MEMORY_REGION_DESCRIPTOR** VirtualMemoryMap + ); /** Return the EFI Memory Map of your platform diff --git a/ArmPlatformPkg/PlatformPei/PlatformPei.c b/ArmPlatformPkg/PlatformPei/PlatformPei.c index 0d90173670..f3e96782f1 100644 --- a/ArmPlatformPkg/PlatformPei/PlatformPei.c +++ b/ArmPlatformPkg/PlatformPei/PlatformPei.c @@ -73,6 +73,9 @@ Returns: DEBUG ((EFI_D_ERROR, "Platform PEIM Loaded\n")); + // Initialize the platform specific controllers + ArmPlatformNormalInitialize (); + BuildCpuHob (PcdGet8 (PcdPrePiCpuMemorySize), PcdGet8 (PcdPrePiCpuIoSize)); BuildFvHob (FixedPcdGet32(PcdFlashFvMainBase), FixedPcdGet32(PcdFlashFvMainSize)); diff --git a/ArmPlatformPkg/Sec/Sec.c b/ArmPlatformPkg/Sec/Sec.c index 508f418ce3..b8e5225520 100644 --- a/ArmPlatformPkg/Sec/Sec.c +++ b/ArmPlatformPkg/Sec/Sec.c @@ -115,7 +115,7 @@ CEntryPoint ( if (CoreId == ARM_PRIMARY_CORE) { // Initialize peripherals that must be done at the early stage // 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 are in standalone, we need the initialization to copy the UEFI firmware into DRAM -- 2.39.2