diff options
author | Olivier Martin <olivier.martin@arm.com> | 2014-10-27 10:27:27 +0000 |
---|---|---|
committer | oliviermartin <oliviermartin@Edk2> | 2014-10-27 10:27:27 +0000 |
commit | d5c6b7fca306f5034f1200261bf9f77c52498cd5 (patch) | |
tree | ccc8967fa82a66f39bc7887fe7139fa3fb5620e3 /ArmPkg/Drivers/ArmGic/ArmGicDxe.c | |
parent | f1e2b7283ea6fa12691edee22aca403c3b3af24c (diff) | |
download | edk2-platforms-d5c6b7fca306f5034f1200261bf9f77c52498cd5.tar.xz |
ArmPkg/ArmGic: Introduced ArmGicGetSupportedArchRevision()
This function returns the revision of the GIC Architecture.
Some GICv3 controllers can work in GICv2 mode. Switching to an
older GIC revision is driven by the higher level exception level.
This function allows code to support any GIC revision at runtime.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Olivier Martin <olivier.martin@arm.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16231 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'ArmPkg/Drivers/ArmGic/ArmGicDxe.c')
-rw-r--r-- | ArmPkg/Drivers/ArmGic/ArmGicDxe.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/ArmPkg/Drivers/ArmGic/ArmGicDxe.c b/ArmPkg/Drivers/ArmGic/ArmGicDxe.c index 37c32504a5..8be2d6fe5e 100644 --- a/ArmPkg/Drivers/ArmGic/ArmGicDxe.c +++ b/ArmPkg/Drivers/ArmGic/ArmGicDxe.c @@ -33,6 +33,7 @@ Abstract: @retval EFI_SUCCESS Protocol registered
@retval EFI_OUT_OF_RESOURCES Cannot allocate protocol data structure
@retval EFI_DEVICE_ERROR Hardware problems
+ @retval EFI_UNSUPPORTED GIC version not supported
**/
EFI_STATUS
@@ -41,9 +42,16 @@ InterruptDxeInitialize ( IN EFI_SYSTEM_TABLE *SystemTable
)
{
- EFI_STATUS Status;
+ EFI_STATUS Status;
+ ARM_GIC_ARCH_REVISION Revision;
- Status = GicV2DxeInitialize (ImageHandle, SystemTable);
+ Revision = ArmGicGetSupportedArchRevision ();
+
+ if (Revision == ARM_GIC_ARCH_REVISION_2) {
+ Status = GicV2DxeInitialize (ImageHandle, SystemTable);
+ } else {
+ Status = EFI_UNSUPPORTED;
+ }
return Status;
}
|