2011-02-01 06:41:42 +01:00
|
|
|
/** @file
|
|
|
|
*
|
|
|
|
* Copyright (c) 2011, ARM Limited. All rights reserved.
|
|
|
|
*
|
|
|
|
* This program and the accompanying materials
|
|
|
|
* are licensed and made available under the terms and conditions of the BSD License
|
|
|
|
* which accompanies this distribution. The full text of the license may be found at
|
|
|
|
* http://opensource.org/licenses/bsd-license.php
|
|
|
|
*
|
|
|
|
* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
|
|
* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
|
|
*
|
|
|
|
**/
|
|
|
|
|
|
|
|
#include <Library/IoLib.h>
|
|
|
|
#include <Library/ArmPlatformLib.h>
|
|
|
|
#include <Library/DebugLib.h>
|
|
|
|
#include <Library/PcdLib.h>
|
2011-06-03 11:32:39 +02:00
|
|
|
|
2011-02-01 06:41:42 +01:00
|
|
|
#include <Drivers/PL341Dmc.h>
|
2011-06-03 11:32:39 +02:00
|
|
|
#include <Drivers/SP804Timer.h>
|
2011-02-01 06:41:42 +01:00
|
|
|
|
2011-07-01 17:30:01 +02:00
|
|
|
#include <ArmPlatform.h>
|
|
|
|
|
2011-02-01 06:41:42 +01:00
|
|
|
/**
|
|
|
|
Return if Trustzone is supported by your platform
|
|
|
|
|
|
|
|
A non-zero value must be returned if you want to support a Secure World on your platform.
|
|
|
|
ArmPlatformTrustzoneInit() will later set up the secure regions.
|
|
|
|
This function can return 0 even if Trustzone is supported by your processor. In this case,
|
|
|
|
the platform will continue to run in Secure World.
|
|
|
|
|
|
|
|
@return A non-zero value if Trustzone supported.
|
|
|
|
|
|
|
|
**/
|
2011-04-26 20:27:15 +02:00
|
|
|
UINTN
|
|
|
|
ArmPlatformTrustzoneSupported (
|
|
|
|
VOID
|
|
|
|
)
|
|
|
|
{
|
2011-02-01 06:41:42 +01:00
|
|
|
// There is no Trustzone controllers (TZPC & TZASC) and no Secure Memory on RTSM
|
2011-04-26 20:27:15 +02:00
|
|
|
return FALSE;
|
2011-02-01 06:41:42 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
Remap the memory at 0x0
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
**/
|
2011-04-26 20:27:15 +02:00
|
|
|
VOID
|
|
|
|
ArmPlatformBootRemapping (
|
|
|
|
VOID
|
|
|
|
)
|
|
|
|
{
|
2011-02-01 06:41:42 +01:00
|
|
|
// Disable memory remapping and return to normal mapping
|
2011-04-26 20:27:15 +02:00
|
|
|
MmioOr32 (ARM_EB_SYSCTRL, BIT8); //EB_SP810_CTRL_BASE
|
2011-02-01 06:41:42 +01:00
|
|
|
}
|
|
|
|
|
2011-03-31 14:18:28 +02:00
|
|
|
/**
|
|
|
|
Return the current Boot Mode
|
|
|
|
|
|
|
|
This function returns the boot reason on the platform
|
|
|
|
|
|
|
|
**/
|
|
|
|
EFI_BOOT_MODE
|
|
|
|
ArmPlatformGetBootMode (
|
|
|
|
VOID
|
|
|
|
)
|
|
|
|
{
|
|
|
|
return BOOT_WITH_FULL_CONFIGURATION;
|
|
|
|
}
|
|
|
|
|
2011-04-26 20:27:15 +02:00
|
|
|
/**
|
|
|
|
Initialize controllers that must setup in the normal world
|
|
|
|
|
2011-07-01 17:30:01 +02:00
|
|
|
This function is called by the ArmPlatformPkg/PrePi or ArmPlatformPkg/PlatformPei
|
2011-04-26 20:27:15 +02:00
|
|
|
in the PEI phase.
|
|
|
|
|
|
|
|
**/
|
|
|
|
VOID
|
|
|
|
ArmPlatformNormalInitialize (
|
|
|
|
VOID
|
|
|
|
)
|
|
|
|
{
|
2011-06-03 11:32:39 +02:00
|
|
|
// 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);
|
2011-04-26 20:27:15 +02:00
|
|
|
}
|
|
|
|
|
2011-02-01 06:41:42 +01:00
|
|
|
/**
|
|
|
|
Initialize the system (or sometimes called permanent) memory
|
|
|
|
|
|
|
|
This memory is generally represented by the DRAM.
|
|
|
|
|
|
|
|
**/
|
2011-04-26 20:27:15 +02:00
|
|
|
VOID
|
|
|
|
ArmPlatformInitializeSystemMemory (
|
|
|
|
VOID
|
|
|
|
)
|
|
|
|
{
|
|
|
|
// We do not need to initialize the System Memory on RTSM
|
2011-02-01 06:41:42 +01:00
|
|
|
}
|
2011-09-23 01:12:23 +02:00
|
|
|
VOID
|
|
|
|
ArmPlatformGetPlatformPpiList (
|
|
|
|
OUT UINTN *PpiListSize,
|
|
|
|
OUT EFI_PEI_PPI_DESCRIPTOR **PpiList
|
|
|
|
)
|
|
|
|
{
|
|
|
|
*PpiListSize = 0;
|
|
|
|
*PpiList = NULL;
|
|
|
|
}
|
|
|
|
|