diff options
Diffstat (limited to 'ArmPkg/Drivers/ArmGicDxe/ArmGicDxe.h')
-rw-r--r-- | ArmPkg/Drivers/ArmGicDxe/ArmGicDxe.h | 88 |
1 files changed, 66 insertions, 22 deletions
diff --git a/ArmPkg/Drivers/ArmGicDxe/ArmGicDxe.h b/ArmPkg/Drivers/ArmGicDxe/ArmGicDxe.h index 4ae46e7..610792f 100644 --- a/ArmPkg/Drivers/ArmGicDxe/ArmGicDxe.h +++ b/ArmPkg/Drivers/ArmGicDxe/ArmGicDxe.h @@ -21,42 +21,86 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include <Protocol/HardwareInterrupt.h>
#include <Protocol/HardwareInterrupt2.h>
-extern UINTN mGicNumInterrupts;
-extern HARDWARE_INTERRUPT_HANDLER *gRegisteredInterruptHandlers;
-extern EFI_CPU_ARCH_PROTOCOL *gCpuArch;
+extern EFI_CPU_ARCH_PROTOCOL *gCpuArch;
-// Common API
+// GicV2 API
EFI_STATUS
-InstallAndRegisterInterruptService (
- IN EFI_HARDWARE_INTERRUPT_PROTOCOL *InterruptProtocol,
- IN EFI_HARDWARE_INTERRUPT2_PROTOCOL *Interrupt2Protocol,
- IN EFI_CPU_INTERRUPT_HANDLER InterruptHandler,
- IN EFI_EVENT_NOTIFY ExitBootServicesEvent
+GicV2DxeInitialize (
+ IN EFI_HANDLE ImageHandle,
+ IN EFI_SYSTEM_TABLE *SystemTable
);
+// GicV3 API
+EFI_STATUS
+GicV3DxeInitialize (
+ IN EFI_HANDLE ImageHandle,
+ IN EFI_SYSTEM_TABLE *SystemTable
+ );
+
+// GicV5 API
+EFI_STATUS
+GicV5DxeInitialize (
+ VOID
+ );
+
+// Shared code
+
EFI_STATUS
EFIAPI
-RegisterInterruptSource (
+GicCommonRegisterInterruptSource (
IN EFI_HARDWARE_INTERRUPT_PROTOCOL *This,
IN HARDWARE_INTERRUPT_SOURCE Source,
- IN HARDWARE_INTERRUPT_HANDLER Handler
+ IN HARDWARE_INTERRUPT_HANDLER Handler,
+ IN HARDWARE_INTERRUPT_HANDLER *HandlerDest
);
-// GicV2 API
EFI_STATUS
-GicV2DxeInitialize (
- IN EFI_HANDLE ImageHandle,
- IN EFI_SYSTEM_TABLE *SystemTable
+EFIAPI
+GicCommonInstallAndRegisterInterruptService (
+ IN EFI_HARDWARE_INTERRUPT_PROTOCOL *InterruptProtocol,
+ IN EFI_HARDWARE_INTERRUPT2_PROTOCOL *Interrupt2Protocol,
+ IN EFI_CPU_INTERRUPT_HANDLER InterruptHandler,
+ IN EFI_EVENT_NOTIFY ExitBootServicesEvent
);
-// GicV3 API
-EFI_STATUS
-GicV3DxeInitialize (
- IN EFI_HANDLE ImageHandle,
- IN EFI_SYSTEM_TABLE *SystemTable
+/**
+ *
+ * Return whether the Source interrupt index refers to an extended shared
+ * interrupt.
+ *
+ * @param Source The source intid to test
+ *
+ * @return True if Source is an extended SPI intid, false otherwise.
+ */
+BOOLEAN
+GicCommonSourceIsExtSpi (
+ IN UINTN Source
);
-// Shared code
+/**
+ * Return whether this is a special interrupt.
+ *
+ * @param Source The source intid to test
+ *
+ * @return True if Source is a special interrupt intid, false otherwise.
+ */
+BOOLEAN
+GicCommonSourceIsSpecialInterrupt (
+ IN UINTN Source
+ );
+
+/**
+ *
+ * Return whether the Source interrupt index refers to a shared interrupt (SPI)
+ *
+ * @param Source The source intid to test
+ *
+ * @return True if Source is a SPI intid, false otherwise.
+ */
+BOOLEAN
+GicCommonSourceIsSpi (
+ IN UINTN Source
+ );
/**
Calculate GICD_ICFGRn base address and corresponding bit
@@ -70,7 +114,7 @@ GicV3DxeInitialize ( @retval EFI_UNSUPPORTED Source interrupt is not supported.
**/
EFI_STATUS
-GicGetDistributorIcfgBaseAndBit (
+GicCommonGetDistributorIcfgBaseAndBit (
IN HARDWARE_INTERRUPT_SOURCE Source,
OUT UINTN *RegAddress,
OUT UINTN *Config1Bit
|