#include <Library/ArmPlatformLib.h>
#include <Library/DebugLib.h>
#include <Library/PcdLib.h>
+
#include <Drivers/PL341Dmc.h>
+#include <Drivers/SP804Timer.h>
+
+#include <ArmPlatform.h>
/**
Return if Trustzone is supported by your platform
@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;
}
/**
- Initialize the Secure peripherals and memory regions
+ Remap the memory at 0x0
- If Trustzone is supported by your platform then this function makes the required initialization
- of the secure peripherals and memory regions.
+ Some platform requires or gives the ability to remap the memory at the address 0x0.
+ This function can do nothing if this feature is not relevant to your platform.
**/
-VOID ArmPlatformTrustzoneInit(VOID) {
- ASSERT(FALSE);
+VOID
+ArmPlatformBootRemapping (
+ VOID
+ )
+{
+ // Disable memory remapping and return to normal mapping
+ MmioOr32 (ARM_EB_SYSCTRL, BIT8); //EB_SP810_CTRL_BASE
}
/**
- Remap the memory at 0x0
+ Return the current Boot Mode
- Some platform requires or gives the ability to remap the memory at the address 0x0.
- This function can do nothing if this feature is not relevant to your platform.
+ This function returns the boot reason on the platform
**/
-VOID ArmPlatformBootRemapping(VOID) {
- // Disable memory remapping and return to normal mapping
- MmioOr32 (ARM_EB_SYSCTRL, BIT8); //EB_SP810_CTRL_BASE
+EFI_BOOT_MODE
+ArmPlatformGetBootMode (
+ VOID
+ )
+{
+ return BOOT_WITH_FULL_CONFIGURATION;
+}
+
+/**
+ Initialize controllers that must setup in the normal world
+
+ This function is called by the ArmPlatformPkg/PrePi or ArmPlatformPkg/PlatformPei
+ in the PEI phase.
+
+**/
+VOID
+ArmPlatformNormalInitialize (
+ VOID
+ )
+{
+ // Configure periodic timer (TIMER0) for 1MHz operation
+ MmioOr32 (SP810_CTRL_BASE + SP810_SYS_CTRL_REG, SP810_SYS_CTRL_TIMER0_TIMCLK);
+ // Configure 1MHz clock
+ MmioOr32 (SP810_CTRL_BASE + SP810_SYS_CTRL_REG, SP810_SYS_CTRL_TIMER1_TIMCLK);
+ // configure SP810 to use 1MHz clock and disable
+ MmioAndThenOr32 (SP810_CTRL_BASE + SP810_SYS_CTRL_REG, ~SP810_SYS_CTRL_TIMER2_EN, SP810_SYS_CTRL_TIMER2_TIMCLK);
+ // Configure SP810 to use 1MHz clock and disable
+ MmioAndThenOr32 (SP810_CTRL_BASE + SP810_SYS_CTRL_REG, ~SP810_SYS_CTRL_TIMER3_EN, SP810_SYS_CTRL_TIMER3_TIMCLK);
}
/**
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
}