/*++ | |
Copyright (c) 2013-2017, ARM Ltd. All rights reserved.<BR> | |
SPDX-License-Identifier: BSD-2-Clause-Patent | |
--*/ | |
#ifndef ARM_GIC_DXE_H_ | |
#define ARM_GIC_DXE_H_ | |
#include <Library/ArmGicLib.h> | |
#include <Library/ArmLib.h> | |
#include <Library/DebugLib.h> | |
#include <Library/IoLib.h> | |
#include <Library/MemoryAllocationLib.h> | |
#include <Library/UefiBootServicesTableLib.h> | |
#include <Library/UefiLib.h> | |
#include <Protocol/Cpu.h> | |
#include <Protocol/HardwareInterrupt.h> | |
#include <Protocol/HardwareInterrupt2.h> | |
extern UINTN mGicNumInterrupts; | |
extern HARDWARE_INTERRUPT_HANDLER *gRegisteredInterruptHandlers; | |
// Common 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 | |
); | |
EFI_STATUS | |
EFIAPI | |
RegisterInterruptSource ( | |
IN EFI_HARDWARE_INTERRUPT_PROTOCOL *This, | |
IN HARDWARE_INTERRUPT_SOURCE Source, | |
IN HARDWARE_INTERRUPT_HANDLER Handler | |
); | |
// GicV2 API | |
EFI_STATUS | |
GicV2DxeInitialize ( | |
IN EFI_HANDLE ImageHandle, | |
IN EFI_SYSTEM_TABLE *SystemTable | |
); | |
// GicV3 API | |
EFI_STATUS | |
GicV3DxeInitialize ( | |
IN EFI_HANDLE ImageHandle, | |
IN EFI_SYSTEM_TABLE *SystemTable | |
); | |
// Shared code | |
/** | |
Calculate GICD_ICFGRn base address and corresponding bit | |
field Int_config[1] of the GIC distributor register. | |
@param Source Hardware source of the interrupt. | |
@param RegAddress Corresponding GICD_ICFGRn base address. | |
@param Config1Bit Bit number of F Int_config[1] bit in the register. | |
@retval EFI_SUCCESS Source interrupt supported. | |
@retval EFI_UNSUPPORTED Source interrupt is not supported. | |
**/ | |
EFI_STATUS | |
GicGetDistributorIcfgBaseAndBit ( | |
IN HARDWARE_INTERRUPT_SOURCE Source, | |
OUT UINTN *RegAddress, | |
OUT UINTN *Config1Bit | |
); | |
#endif // ARM_GIC_DXE_H_ |