Commit Graph

47 Commits

Author SHA1 Message Date
oliviermartin cfe1bb1765 ArmPlatformPkg/DebugSecExtraActionLib: Added Warning comment to signal the DRAM must be inititalized at this stage
Since the System Memory initialization has been moved inside ArmPlatformSecLib
on some platforms, the use of this library could crash if the firmware engineer
forgot to initialize the DRAM.
This library 'patches' the DRAM to add an infinite loop.

Signed-off-by: Olivier Martin <olivier.martin@arm.com>



git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13262 6f19259b-4bc3-4df7-8a09-765794883524
2012-05-02 20:15:49 +00:00
oliviermartin e314d564db ArmPlatformPkg: Introduced 'ArmPlatformSecLib'
The function only used in Secure Firmware used to be mixed with
the Non-Secure/Normal functions in ArmPlatformLib.
When the Secure Firmware was not required for some platforms (eg:
BeagleBoard), these functions were empty functions.
This new interface has been created to clean the ArmPlatformLib
interface between the SEC and PEI phases.

Signed-off-by: Olivier Martin <olivier.martin@arm.com>



git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13260 6f19259b-4bc3-4df7-8a09-765794883524
2012-05-02 20:13:32 +00:00
oliviermartin 315649cda2 ArmPkg/ArmGicLib: Replaced 'ArmGicAcknowledgeSgiFrom' by 'ArmGicAcknowledgeInterrupt'
The function 'ArmGicAcknowledgeSgiFrom' was actually acknowledging Interrupts (and not only SGIs).


ArmPkg/ArmGicLib: Introduced the PCD PcdGicPrimaryCoreId

This PCD defines the Id of the primary core in the GIC.


Signed-off-by: Olivier Martin <olivier.martin@arm.com>



git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13259 6f19259b-4bc3-4df7-8a09-765794883524
2012-05-02 20:09:16 +00:00
oliviermartin 4c19ece32a ArmPkg/ArmGicLib: Changed ArmGicSendSgiTo() to allow to send a specific SGI
Signed-off-by: Olivier Martin <olivier.martin@arm.com>



git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13258 6f19259b-4bc3-4df7-8a09-765794883524
2012-05-02 20:08:03 +00:00
oliviermartin 40ab42ddca EmbeddedPkg/SerialDxe: Do not block UART when no data is available on the port
Signed-off-by: Olivier Martin <olivier.martin@arm.com>



git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13255 6f19259b-4bc3-4df7-8a09-765794883524
2012-05-02 20:04:42 +00:00
oliviermartin 836c350061 ArmPkg/ArmLib: Added new functions to access ARM coprocessors
Signed-off-by: Olivier Martin <olivier.martin@arm.com>



git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13253 6f19259b-4bc3-4df7-8a09-765794883524
2012-05-02 20:02:39 +00:00
oliviermartin 7fffeef9be ARM Packages: Fixed th 'NS' (Non Secure) bit in the MMU page Table Descriptor
The 'NS' bit must only be set in Secure world to define the Non-Secure region
of the Non-Secure World.
This bit must not be set in Non-Secure World.

Signed-off-by: Olivier Martin <olivier.martin@arm.com>


git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13252 6f19259b-4bc3-4df7-8a09-765794883524
2012-05-02 20:00:54 +00:00
oliviermartin 96a8bc1150 ArmPkg/PeCoffExtraActionLib: Enabled DS-5 command line when using ARM Toolchain v5
Signed-off-by: Olivier Martin <olivier.martin@arm.com>



git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13251 6f19259b-4bc3-4df7-8a09-765794883524
2012-05-02 19:58:46 +00:00
oliviermartin f463bb00ad ArmPlatformPkg/ArmPlatformGlobalVariableLib: Fixed calculation of GlobalVariableBase
Signed-off-by: Olivier Martin <olivier.martin@arm.com>



git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13248 6f19259b-4bc3-4df7-8a09-765794883524
2012-05-02 19:54:21 +00:00
oliviermartin d9efd68ef5 ArmPlatformPkg/ArmPlatformGlobalVariableLib: Added new function ArmPlatformGetGlobalVariableAddress()
This function returns the address of a Global Variable in the Global Variable Region.

Signed-off-by: Olivier Martin <olivier.martin@arm.com>



git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13246 6f19259b-4bc3-4df7-8a09-765794883524
2012-05-02 19:51:08 +00:00
oliviermartin f437141a9c ArmPlatformPkg: Renamed and Invoked earlier ArmPlatformNormalInitialize()
- ArmPlatformNormalInitialize() has been renamed into ArmPlatformInitialize()
- Make the function be called at the early stage of the PEI phase as some
  platforms require their interconnects or clocks to be initialize before any
  access to Timers or UARTs.

Signed-off-by: Olivier Martin <olivier.martin@arm.com>



git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13245 6f19259b-4bc3-4df7-8a09-765794883524
2012-05-02 19:49:35 +00:00
oliviermartin 5e7731443c ArmPlatformPkg/Sec: Allowed the Secondary Cores to set the Secure/Non Secure bits to their PPIs
The GICD_IGROUPR0 is banked for each connected processor. It means the
Non-Secure bits for the PPIs (Private Peripheral Interrupts) must be
configured for every processor.



git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13135 6f19259b-4bc3-4df7-8a09-765794883524
2012-03-26 11:03:36 +00:00
oliviermartin eac42a514b ArmPlatformPkg/ArmSmcLib: Added helper library to make SMC call to the Secure World
This library adds C-wrapper around the SMC instruction and allows to pass
parameters to the Secure World.



git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13133 6f19259b-4bc3-4df7-8a09-765794883524
2012-03-26 10:59:50 +00:00
oliviermartin f15f91a22f ArmPlatformPkg/ArmPlatformGlobalVariableLib: Fixed incorrect type casting
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13121 6f19259b-4bc3-4df7-8a09-765794883524
2012-03-26 10:41:50 +00:00
oliviermartin 051e63bb55 ArmPlatformPkg/PL011Uart: Allowed to change UART settings in its initialization function
Because this driver can be used for different purposes (Terminal, Debug port, communication),
its initialization function has been extended to accept additional settings.



git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13071 6f19259b-4bc3-4df7-8a09-765794883524
2012-02-29 17:19:52 +00:00
oliviermartin 8cc852f791 ArmPlatformPkg: Move the Secure Monitor initialization into a separate 'ArmTrustedMonitorLib' library
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13059 6f19259b-4bc3-4df7-8a09-765794883524
2012-02-28 17:27:15 +00:00
oliviermartin 0db25ccc6c ArmPlatformPkg: Minor code changes (comments, misspellings, coding stylei, line endings)
- Fixed misspellings
- Updated Copyright
- Remove unused sections in INF file
- Fixed incorrect commentsi
- Fixed coding style
- Fixed line endings (CRLR)



git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13052 6f19259b-4bc3-4df7-8a09-765794883524
2012-02-28 17:11:42 +00:00
oliviermartin 782d45d1e3 ArmPlatformPkg/ArmPlatformGlobalVariableLib: Added an assert to ensure the 'VariableOffset' belongs to the GlobalVariable region
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13043 6f19259b-4bc3-4df7-8a09-765794883524
2012-02-27 10:26:16 +00:00
oliviermartin 99565b88c1 ArmPlatform/PrePi: Fixed PrePi for MP Cores platform and Global Variable region settings
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12638 6f19259b-4bc3-4df7-8a09-765794883524
2011-11-01 23:41:52 +00:00
oliviermartin 8d0fe26cbf ArmPlatformPkg: Remove ArmPlatformBootRemapping() function from the ArmPlatformLib
Memory map remapping is a platform specific feature only enabled by some platforms.
Instead of keeping this function empty for most platforms, the function has been
removed. This feature can easily fit in any other ArmPlatformLib function.



git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12632 6f19259b-4bc3-4df7-8a09-765794883524
2011-11-01 23:36:59 +00:00
oliviermartin 886f97c86b ARM Packages: Fixed Build failings/warnings/EDK2 coding convention
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12458 6f19259b-4bc3-4df7-8a09-765794883524
2011-09-27 16:42:47 +00:00
oliviermartin 12fcdcb83d ArmPlatformPkg: Create an ARM Platform DSC / FDF / ArmPlatformLib template
By copying these templates, it should make easier to port EDK2 to new ARM
Platforms.

- ArmPlatformPkg.(dsc|fdf): For EDK2 firmwares which support the full boot
story from cold boot to OS loading
- ArmPlatformPkg-2ndstage.(dsc|fdf): For EDK2 as a second stage boot loader
(either started after a proprietary ROM firmware or x-loader)


git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12457 6f19259b-4bc3-4df7-8a09-765794883524
2011-09-27 16:40:46 +00:00
oliviermartin 8fc38a3f50 ArmPlatformPkg: Introduce ArmPlatformGlobalVariableLib
This library hides where the 'XIP' Global Variable are located in the memory.
It is expected the Sec/PrePi modules define the Global Variable area through
the GlobalVariable HOB.

The ArmPlatformGlobalVariableLib library allows access to global variables by
their offsets in this region.




git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12420 6f19259b-4bc3-4df7-8a09-765794883524
2011-09-22 23:11:03 +00:00
oliviermartin f92b93c9a3 ARM Packages: Rename PcdNormal* into Pcd* PCDs
The denomination 'Normal' was used to make reference to the 'Normal'
or 'Non Secure' or 'Non Trusted' world.
To avoid confusion, this prefix has been removed from PCDs to define
the normal world.

The PCDs explicitely related to the Secure/Trusted World continue to
have the 'Sec' prefix.



git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12416 6f19259b-4bc3-4df7-8a09-765794883524
2011-09-22 23:06:31 +00:00
oliviermartin 0787bc6184 ArmPlatformPkg: Introduce Primary core macros
On MpCore system, the primary core can now be any core of the system.

To identify the primary core, you can use 'gArmTokenSpaceGuid.PcdArmPrimaryCoreMask'
and 'gArmTokenSpaceGuid.PcdArmPrimaryCore'.
These PCDs by default use the ClusterId and CoreId to identify the core. And the
primary core is defined as the ClusetrId=0 and CoreId=0.

The helper macros are: IS_PRIMARY_CORE(MpId), GET_CORE_ID(MpId), GET_CLUSTER_ID(MpId),
GET_CORE_POS(MpId), PRIMARY_CORE_ID.



git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12412 6f19259b-4bc3-4df7-8a09-765794883524
2011-09-22 23:01:13 +00:00
oliviermartin 55a0d64b88 ArmPkg: Renamed library 'PL390GicLib' into 'ArmGicLib'
This library is the interface for the ARM Generic Interrupt Controller
Architecture Specification.
ARM Platform can use any GIC controller (not necessary PL390 GIC).




git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12411 6f19259b-4bc3-4df7-8a09-765794883524
2011-09-22 22:59:52 +00:00
oliviermartin cc1e814923 ArmPlatformPkg: Fix ARM RealView EB and VE builds
Tested with RVCTLINUX and ARMGCC toolchains.



git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12233 6f19259b-4bc3-4df7-8a09-765794883524
2011-08-30 16:54:48 +00:00
oliviermartin ca8afbca68 ArmPlatformPkg: Changed the reference base of the PI Global Pointer Offset
Before the PI Global Pointer Offsets were refered to the top of the Global Pointer region (negative offset).
After this commit the Global Pointer Offset are relative to the base of the Global Pointer region.



git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12172 6f19259b-4bc3-4df7-8a09-765794883524
2011-08-18 22:02:20 +00:00
oliviermartin e1808603dc ArmPlatformPkg/PrePiHobListPointerLib: Fixed pointer calculation
In the PrePi module, the global variables are located at the top of the stack.
At the opposite of the PeiCore where the global variables are located in the
middle of the stack. The top stack region is reserved for Temporary Memory.



git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12167 6f19259b-4bc3-4df7-8a09-765794883524
2011-08-18 11:23:28 +00:00
oliviermartin 2dde40b1ff ArmPlatformPkg/SP804TimerLib: Fix delay functions to be reentrant
In the previous implementation, if the MicroSecondDelay or NanoSecondDelay
were called while a delay function was already running, the timer HW controller
was reinitialized with the new settings and it was discarding the settings
of the first called delay function.



git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12163 6f19259b-4bc3-4df7-8a09-765794883524
2011-08-18 10:14:33 +00:00
oliviermartin 9e4a626c06 ArmPlatformPkg/SP804TimerLib: Fixed macro timer base addresses
The base address for the Metronome and Performance timer were reverted.




git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12162 6f19259b-4bc3-4df7-8a09-765794883524
2011-08-18 10:06:38 +00:00
oliviermartin 2ee8536623 ArmPlatformPkg: Fix warnings
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12001 6f19259b-4bc3-4df7-8a09-765794883524
2011-07-07 10:52:07 +00:00
oliviermartin a6caee65ac ArmPlatformPkg: Remove PcdStandalone from Sec module and Introduce ArmPlatformSecExtraAction()
The PcdStandalone is a PCD ARM Ltd uses to make the difference between a standalone UEFI (boot
from cold boot to Boot Manager without user intervention) and a Debug UEFI firmware (the firmware
engineer has to copy the Normale World image into the DRAM to enable his/her firmware).

By coping the firmware into DRAM in the non standalone version it is much faster than reflashing
the NOR Flash after each build.

ArmPlatformSecExtraAction() function is called just before the Sec module jump to normal world.
The platform firmware can run extra actions at this stage.
The 'ARM Standalone' concept has moved to the implementation of ArmPlatformSecExtraAction() for
the ARM development boards (in ArmPlatformPkg/Library/DebugSecExtraActionLib).


ArmPlatformPkg: Enable DebugAgentLib in Sec and PrePeiCore


ArmPlatformPkg: Fix line endings in some source files

Use CR+LF line endings as defined by the EDK2 coding convention




git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11991 6f19259b-4bc3-4df7-8a09-765794883524
2011-07-06 16:07:54 +00:00
oliviermartin bcd8fa799d ArmPlatformPkg/SP804TimerLib: Fixed the performance timer
The SP804 timer counts down. Change GetPerformanceCounterProperties ()
to declare this property.




git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11989 6f19259b-4bc3-4df7-8a09-765794883524
2011-07-06 13:43:50 +00:00
oliviermartin fb42fffeb8 ArmPlatformPkg: Fix build issues
Other compiler version ... other warnings



git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11970 6f19259b-4bc3-4df7-8a09-765794883524
2011-07-04 10:18:18 +00:00
oliviermartin 3c4b742c18 ArmPlatformPkg/PrePiHobListPointerLib: Get the HobListPointer from the stop of the stack
When using ArmPlatformPkg/PrePeiCore or ArmPlatformPkg/PrePi, the global variable during
the XIP phase are stored on the top of the stack.
Global variables are defined by their PCD offset from the top of this stack.

For example, the HobListPtr is defined at the offset PcdHobListPtrGlobalOffset.



git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11958 6f19259b-4bc3-4df7-8a09-765794883524
2011-07-01 15:45:52 +00:00
oliviermartin 633724f462 ArmPkg: Move ARM Platform drivers from ArmPkg/Drivers/ to ArmPlatformPkg/Drivers/ (2)
... svn did not like my way to move folder from one directory to another one :-/




git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11957 6f19259b-4bc3-4df7-8a09-765794883524
2011-07-01 15:40:16 +00:00
oliviermartin 5cc45b70c3 ArmPkg: Move ARM Platform drivers from ArmPkg/Drivers/ to ArmPlatformPkg/Drivers/
The idea is to keep ArmPkg responsible for the ARM architectural modules and ArmPlatformPkg
the ARM development platform packages (with their respective drivers).


ArmPlatformPkg: Reduce driver dependency on ArmPlatform.h

- Move some driver definitions from C-Macro to PCD values
- Unify PCD driver namespace




git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11956 6f19259b-4bc3-4df7-8a09-765794883524
2011-07-01 15:30:01 +00:00
oliviermartin 47a8e12fe1 ArmPlatformPkg/PrePeiCore: Reserve some memory on the top of the stack for Global Variables in XIP code
The size of this memory is controlled by a PCD. The Global Variable in this regsion are defined by their offset.

This memory region can be use to store the PEI Services Table Pointer.
Update the PeiServicesTablePointerLib to use this region instead of PcdPeiServicePtrAddr.



git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11803 6f19259b-4bc3-4df7-8a09-765794883524
2011-06-11 12:03:00 +00:00
oliviermartin 6a15908fd6 ArmPlatformPkg/EblCmdLib: Add the 'devicepaths' EBL command
This command start alls the available drivers and prints out all the
device paths of the platform.



git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11801 6f19259b-4bc3-4df7-8a09-765794883524
2011-06-11 11:59:31 +00:00
oliviermartin 0f4386e775 ArmPlatformPkg/PL031RealTimeClockLib: Implement PL031 RTC drive
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11793 6f19259b-4bc3-4df7-8a09-765794883524
2011-06-11 11:20:27 +00:00
oliviermartin 9e2b420ee9 ArmPkg: Fix coding style to follow EDK2 coding convention
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11789 6f19259b-4bc3-4df7-8a09-765794883524
2011-06-11 11:15:55 +00:00
oliviermartin ce9cc403bd ArmPlatformPkg/SP804Timer: Introduce gArmPlatformTokenSpaceGuid.PcdSP804FrequencyInMHz
This PCD defines the speed of the SP804 timer. The default value is 1MHz.



git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11745 6f19259b-4bc3-4df7-8a09-765794883524
2011-06-03 09:33:35 +00:00
oliviermartin 23792dea0c ArmPlatformPkg/SP804Timer: Remove the SP810 System Controller dependency
The SP804 drivers must not consider the presence of the SP810 System Controller
on the platform. The SP810 was used to enable the SP804 Dual Timers on ArmVExpress.
It is the role of the Platform specific driver to enable to the SP804 dual timers
if required.

The former SP810 initialization code has moved to ArmPlatformLib for ArmRealViewEb
and ArmVersatileExpress.



git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11744 6f19259b-4bc3-4df7-8a09-765794883524
2011-06-03 09:32:39 +00:00
oliviermartin 9dcfb8e5c8 ArmPlatformPkg/PL011Uart: Create PL011 UART driver
This library makes the interface with the PL011 UART controller.
This library can be linked to different types of driver (Serial Console,
debugger, etc) using PL011 UART controller.


ArmPlatformPkg/PL011SerialPortLib: Use Drivers/PL011Uart

Remove the direct accesses to the PL011 UART controller to use the PL011Uart
library.



git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11743 6f19259b-4bc3-4df7-8a09-765794883524
2011-06-03 09:31:02 +00:00
oliviermartin 2cf4b60895 ArmPkg/Mmu: Support page size granularity in the initial MMU setting
Formerly, it was only possible to use section size granularity for the
translation table regions.
This change allows to define initial translation table regions with
4K-byte granularty (page size granularity).



git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11467 6f19259b-4bc3-4df7-8a09-765794883524
2011-03-31 11:23:55 +00:00
andrewfish 1d5d0ae92d Add ArmPlatformPkg from ARM Ltd. patch.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11291 6f19259b-4bc3-4df7-8a09-765794883524
2011-02-01 05:41:42 +00:00