OvmfPkg[all]
0.1
|
Data Structures | |
struct | _EFI_LEGACY_8259_PROTOCOL |
Macros | |
#define | EFI_LEGACY_8259_PROTOCOL_GUID |
Typedefs | |
typedef struct _EFI_LEGACY_8259_PROTOCOL | EFI_LEGACY_8259_PROTOCOL |
typedef EFI_STATUS(EFIAPI * | EFI_LEGACY_8259_SET_VECTOR_BASE )(IN EFI_LEGACY_8259_PROTOCOL *This, IN UINT8 MasterBase, IN UINT8 SlaveBase) |
typedef EFI_STATUS(EFIAPI * | EFI_LEGACY_8259_GET_MASK )(IN EFI_LEGACY_8259_PROTOCOL *This, OUT UINT16 *LegacyMask, OUT UINT16 *LegacyEdgeLevel, OUT UINT16 *ProtectedMask, OUT UINT16 *ProtectedEdgeLevel) |
typedef EFI_STATUS(EFIAPI * | EFI_LEGACY_8259_SET_MASK )(IN EFI_LEGACY_8259_PROTOCOL *This, IN UINT16 *LegacyMask, IN UINT16 *LegacyEdgeLevel, IN UINT16 *ProtectedMask, IN UINT16 *ProtectedEdgeLevel) |
typedef EFI_STATUS(EFIAPI * | EFI_LEGACY_8259_SET_MODE )(IN EFI_LEGACY_8259_PROTOCOL *This, IN EFI_8259_MODE Mode, IN UINT16 *Mask, IN UINT16 *EdgeLevel) |
typedef EFI_STATUS(EFIAPI * | EFI_LEGACY_8259_GET_VECTOR )(IN EFI_LEGACY_8259_PROTOCOL *This, IN EFI_8259_IRQ Irq, OUT UINT8 *Vector) |
typedef EFI_STATUS(EFIAPI * | EFI_LEGACY_8259_ENABLE_IRQ )(IN EFI_LEGACY_8259_PROTOCOL *This, IN EFI_8259_IRQ Irq, IN BOOLEAN LevelTriggered) |
typedef EFI_STATUS(EFIAPI * | EFI_LEGACY_8259_DISABLE_IRQ )(IN EFI_LEGACY_8259_PROTOCOL *This, IN EFI_8259_IRQ Irq) |
typedef EFI_STATUS(EFIAPI * | EFI_LEGACY_8259_GET_INTERRUPT_LINE )(IN EFI_LEGACY_8259_PROTOCOL *This, IN EFI_HANDLE PciHandle, OUT UINT8 *Vector) |
typedef EFI_STATUS(EFIAPI * | EFI_LEGACY_8259_END_OF_INTERRUPT )(IN EFI_LEGACY_8259_PROTOCOL *This, IN EFI_8259_IRQ Irq) |
Enumerations | |
enum | EFI_8259_IRQ { Efi8259Irq0, Efi8259Irq1, Efi8259Irq2, Efi8259Irq3, Efi8259Irq4, Efi8259Irq5, Efi8259Irq6, Efi8259Irq7, Efi8259Irq8, Efi8259Irq9, Efi8259Irq10, Efi8259Irq11, Efi8259Irq12, Efi8259Irq13, Efi8259Irq14, Efi8259Irq15, Efi8259IrqMax } |
enum | EFI_8259_MODE { Efi8259LegacyMode, Efi8259ProtectedMode, Efi8259MaxMode } |
Variables | |
EFI_GUID | gEfiLegacy8259ProtocolGuid |
This protocol abstracts the 8259 interrupt controller. This includes PCI IRQ routing needed to program the PCI Interrupt Line register.
Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
#define EFI_LEGACY_8259_PROTOCOL_GUID |
typedef EFI_STATUS(EFIAPI * EFI_LEGACY_8259_DISABLE_IRQ)(IN EFI_LEGACY_8259_PROTOCOL *This, IN EFI_8259_IRQ Irq) |
Disable Irq by masking interrupt in 8259
This | The protocol instance pointer. |
Irq | 8259 IRQ0 - IRQ15. |
EFI_SUCCESS | The Irq was disabled on 8259. |
EFI_INVALID_PARAMETER | The Irq is not valid. |
typedef EFI_STATUS(EFIAPI * EFI_LEGACY_8259_ENABLE_IRQ)(IN EFI_LEGACY_8259_PROTOCOL *This, IN EFI_8259_IRQ Irq, IN BOOLEAN LevelTriggered) |
Enable Irq by unmasking interrupt in 8259
This | The protocol instance pointer. |
Irq | 8259 IRQ0 - IRQ15. |
LevelTriggered | TRUE if level triggered. FALSE if edge triggered. |
EFI_SUCCESS | The Irq was enabled on 8259. |
EFI_INVALID_PARAMETER | The Irq is not valid. |
typedef EFI_STATUS(EFIAPI * EFI_LEGACY_8259_END_OF_INTERRUPT)(IN EFI_LEGACY_8259_PROTOCOL *This, IN EFI_8259_IRQ Irq) |
Send an EOI to 8259
This | The protocol instance pointer. |
Irq | 8259 IRQ0 - IRQ15. |
EFI_SUCCESS | EOI was successfully sent to 8259. |
EFI_INVALID_PARAMETER | The Irq isnot valid. |
typedef EFI_STATUS(EFIAPI * EFI_LEGACY_8259_GET_INTERRUPT_LINE)(IN EFI_LEGACY_8259_PROTOCOL *This, IN EFI_HANDLE PciHandle, OUT UINT8 *Vector) |
PciHandle represents a PCI config space of a PCI function. Vector represents Interrupt Pin (from PCI config space) and it is the data that is programmed into the Interrupt Line (from the PCI config space) register.
This | The protocol instance pointer. |
PciHandle | The PCI function to return the vector for. |
Vector | The vector for the function it matches. |
EFI_SUCCESS | A valid Vector was returned. |
EFI_INVALID_PARAMETER | PciHandle not valid. |
typedef EFI_STATUS(EFIAPI * EFI_LEGACY_8259_GET_MASK)(IN EFI_LEGACY_8259_PROTOCOL *This, OUT UINT16 *LegacyMask, OUT UINT16 *LegacyEdgeLevel, OUT UINT16 *ProtectedMask, OUT UINT16 *ProtectedEdgeLevel) |
Get the 8259 interrupt masks for Irq0 - Irq15. A different mask exists for the legacy mode mask and the protected mode mask. The base address for the 8259 is different for legacy and protected mode, so two masks are required.
This | The protocol instance pointer. |
LegacyMask | Bit 0 is Irq0 - Bit 15 is Irq15. |
LegacyEdgeLevel | Bit 0 is Irq0 - Bit 15 is Irq15. |
ProtectedMask | Bit 0 is Irq0 - Bit 15 is Irq15. |
ProtectedEdgeLevel | Bit 0 is Irq0 - Bit 15 is Irq15. |
EFI_SUCCESS | 8259 status returned. |
EFI_DEVICE_ERROR | Error reading 8259. |
typedef EFI_STATUS(EFIAPI * EFI_LEGACY_8259_GET_VECTOR)(IN EFI_LEGACY_8259_PROTOCOL *This, IN EFI_8259_IRQ Irq, OUT UINT8 *Vector) |
Convert from IRQ to processor interrupt vector number.
This | The protocol instance pointer. |
Irq | 8259 IRQ0 - IRQ15. |
Vector | The processor vector number that matches an Irq. |
EFI_SUCCESS | The Vector matching Irq is returned. |
EFI_INVALID_PARAMETER | The Irq not valid. |
typedef struct _EFI_LEGACY_8259_PROTOCOL EFI_LEGACY_8259_PROTOCOL |
typedef EFI_STATUS(EFIAPI * EFI_LEGACY_8259_SET_MASK)(IN EFI_LEGACY_8259_PROTOCOL *This, IN UINT16 *LegacyMask, IN UINT16 *LegacyEdgeLevel, IN UINT16 *ProtectedMask, IN UINT16 *ProtectedEdgeLevel) |
Set the 8259 interrupt masks for Irq0 - Irq15. A different mask exists for the legacy mode mask and the protected mode mask. The base address for the 8259 is different for legacy and protected mode, so two masks are required. Also set the edge/level masks.
This | The protocol instance pointer. |
LegacyMask | Bit 0 is Irq0 - Bit 15 is Irq15. |
LegacyEdgeLevel | Bit 0 is Irq0 - Bit 15 is Irq15. |
ProtectedMask | Bit 0 is Irq0 - Bit 15 is Irq15. |
ProtectedEdgeLevel | Bit 0 is Irq0 - Bit 15 is Irq15. |
EFI_SUCCESS | 8259 status returned. |
EFI_DEVICE_ERROR | Error writing 8259. |
typedef EFI_STATUS(EFIAPI * EFI_LEGACY_8259_SET_MODE)(IN EFI_LEGACY_8259_PROTOCOL *This, IN EFI_8259_MODE Mode, IN UINT16 *Mask, IN UINT16 *EdgeLevel) |
Set the 8259 mode of operation. The base address for the 8259 is different for legacy and protected mode. The legacy mode requires the master 8259 to have a master base of 0x08 and the slave base of 0x70. The protected mode base locations are not defined. Interrupts must be masked by the caller before this function is called. The interrupt mask from the current mode is saved. The interrupt mask for the new mode is Mask, or if Mask does not exist the previously saved mask is used.
This | The protocol instance pointer. |
Mode | The mode of operation. i.e. the real mode or protected mode. |
Mask | Optional interupt mask for the new mode. |
EdgeLevel | Optional trigger mask for the new mode. |
EFI_SUCCESS | 8259 programmed. |
EFI_DEVICE_ERROR | Error writing to 8259. |
typedef EFI_STATUS(EFIAPI * EFI_LEGACY_8259_SET_VECTOR_BASE)(IN EFI_LEGACY_8259_PROTOCOL *This, IN UINT8 MasterBase, IN UINT8 SlaveBase) |
Get the 8259 interrupt masks for Irq0 - Irq15. A different mask exists for the legacy mode mask and the protected mode mask. The base address for the 8259 is different for legacy and protected mode, so two masks are required.
This | The protocol instance pointer. |
MasterBase | The base vector for the Master PIC in the 8259 controller. |
SlaveBase | The base vector for the Slave PIC in the 8259 controller. |
EFI_SUCCESS | The new bases were programmed. |
EFI_DEVICE_ERROR | A device error occurred programming the vector bases. |
enum EFI_8259_IRQ |
enum EFI_8259_MODE |
EFI_GUID gEfiLegacy8259ProtocolGuid |