IntelFrameworkPkg/Include/Protocol/Legacy8259.h File Reference


Data Structures

struct  _EFI_LEGACY_8259_PROTOCOL

Defines

#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

Detailed Description

This protocol abstracts the 8259 interrupt controller. This includes PCI IRQ routing needed to program the PCI Interrupt Line register.

Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License that 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.

Revision Reference:
This protocol is defined in Framework for EFI Compatibility Support Module spec Version 0.97.

Define Documentation

#define EFI_LEGACY_8259_PROTOCOL_GUID

Value:

{ \
    0x38321dba, 0x4fe0, 0x4e17, {0x8a, 0xec, 0x41, 0x30, 0x55, 0xea, 0xed, 0xc1 } \
  }


Typedef Documentation

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

Parameters:
This The protocol instance pointer.
Irq 8259 IRQ0 - IRQ15.
Return values:
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

Parameters:
This The protocol instance pointer.
Irq 8259 IRQ0 - IRQ15.
LevelTriggered TRUE if level triggered. FALSE if edge triggered.
Return values:
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

Parameters:
This The protocol instance pointer.
Irq 8259 IRQ0 - IRQ15.
Return values:
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.

Parameters:
This The protocol instance pointer.
PciHandle The PCI function to return the vector for.
Vector The vector for the function it matches.
Return values:
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.

Parameters:
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.
Return values:
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.

Parameters:
This The protocol instance pointer.
Irq 8259 IRQ0 - IRQ15.
Vector The processor vector number that matches an Irq.
Return values:
EFI_SUCCESS The Vector matching Irq is returned.
EFI_INVALID_PARAMETER The Irq not valid.

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.

Parameters:
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.
Return values:
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.

Parameters:
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.
Return values:
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.

Parameters:
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.
Return values:
EFI_SUCCESS The new bases were programmed.
EFI_DEVICE_ERROR A device error occured programming the vector bases.


Enumeration Type Documentation

Enumerator:
Efi8259Irq0 
Efi8259Irq1 
Efi8259Irq2 
Efi8259Irq3 
Efi8259Irq4 
Efi8259Irq5 
Efi8259Irq6 
Efi8259Irq7 
Efi8259Irq8 
Efi8259Irq9 
Efi8259Irq10 
Efi8259Irq11 
Efi8259Irq12 
Efi8259Irq13 
Efi8259Irq14 
Efi8259Irq15 
Efi8259IrqMax 

Enumerator:
Efi8259LegacyMode 
Efi8259ProtectedMode 
Efi8259MaxMode 


Variable Documentation


Generated on Wed Sep 2 13:08:33 2015 for IntelFrameworkPkg[ALL] by  doxygen 1.5.7.1