From e700a1fc9158cd8f956bd9d2a1867f47ee6591cc Mon Sep 17 00:00:00 2001 From: Olivier Martin Date: Fri, 4 Jul 2014 11:16:48 +0000 Subject: ArmPkg/ArmGic: Introduced helper functions to access the GIC controller Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Olivier Martin git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15621 6f19259b-4bc3-4df7-8a09-765794883524 --- ArmPkg/Drivers/ArmGic/ArmGicDxe.c | 76 +++++++++++++-------------------------- 1 file changed, 24 insertions(+), 52 deletions(-) (limited to 'ArmPkg/Drivers') diff --git a/ArmPkg/Drivers/ArmGic/ArmGicDxe.c b/ArmPkg/Drivers/ArmGic/ArmGicDxe.c index 9608c314ed..c360d113be 100644 --- a/ArmPkg/Drivers/ArmGic/ArmGicDxe.c +++ b/ArmPkg/Drivers/ArmGic/ArmGicDxe.c @@ -2,19 +2,19 @@ Copyright (c) 2009, Hewlett-Packard Company. All rights reserved.
Portions copyright (c) 2010, Apple Inc. All rights reserved.
-Portions copyright (c) 2011-2013, ARM Ltd. All rights reserved.
+Portions copyright (c) 2011-2014, ARM Ltd. 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. +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. Module Name: - Gic.c + ArmGicDxe.c Abstract: @@ -111,21 +111,13 @@ EnableInterruptSource ( IN HARDWARE_INTERRUPT_SOURCE Source ) { - UINT32 RegOffset; - UINTN RegShift; - if (Source > mGicNumInterrupts) { ASSERT(FALSE); return EFI_UNSUPPORTED; } - - // Calculate enable register offset and bit position - RegOffset = Source / 32; - RegShift = Source % 32; - // Write set-enable register - MmioWrite32 (PcdGet32(PcdGicDistributorBase) + ARM_GIC_ICDISER + (4*RegOffset), 1 << RegShift); - + ArmGicEnableInterrupt (FixedPcdGet32 (PcdGicDistributorBase), Source); + return EFI_SUCCESS; } @@ -146,21 +138,13 @@ DisableInterruptSource ( IN HARDWARE_INTERRUPT_SOURCE Source ) { - UINT32 RegOffset; - UINTN RegShift; - if (Source > mGicNumInterrupts) { ASSERT(FALSE); return EFI_UNSUPPORTED; } - - // Calculate enable register offset and bit position - RegOffset = Source / 32; - RegShift = Source % 32; - // Write set-enable register - MmioWrite32 (PcdGet32(PcdGicDistributorBase) + ARM_GIC_ICDICER + (4*RegOffset), 1 << RegShift); - + ArmGicDisableInterrupt (PcdGet32(PcdGicDistributorBase), Source); + return EFI_SUCCESS; } @@ -183,24 +167,13 @@ GetInterruptSourceState ( IN BOOLEAN *InterruptState ) { - UINT32 RegOffset; - UINTN RegShift; - if (Source > mGicNumInterrupts) { ASSERT(FALSE); return EFI_UNSUPPORTED; } - - // calculate enable register offset and bit position - RegOffset = Source / 32; - RegShift = Source % 32; - - if ((MmioRead32 (PcdGet32(PcdGicDistributorBase) + ARM_GIC_ICDISER + (4*RegOffset)) & (1<InstallMultipleProtocolInterfaces ( &gHardwareInterruptHandle, &gHardwareInterruptProtocolGuid, &gHardwareInterruptProtocol, NULL ); ASSERT_EFI_ERROR (Status); - + // // Get the CPU protocol that this driver requires. // -- cgit v1.2.3