/*++ Copyright (c) 1999 - 2006, 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 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: LegacyInterrupt.h Abstract: This protocol manages the PIRQ for PCI devices Revision History The EFI Legacy Interrupt Protocol is compliant with CSM spec 0.96. --*/ #ifndef _EFI_LEGACY_INTERRUPT_H_ #define _EFI_LEGACY_INTERRUPT_H_ #define EFI_LEGACY_INTERRUPT_PROTOCOL_GUID \ { \ 0x31ce593d, 0x108a, 0x485d, {0xad, 0xb2, 0x78, 0xf2, 0x1f, 0x29, 0x66, 0xbe} \ } EFI_FORWARD_DECLARATION (EFI_LEGACY_INTERRUPT_PROTOCOL); typedef EFI_STATUS (EFIAPI *EFI_LEGACY_INTERRUPT_GET_NUMBER_PIRQS) ( IN EFI_LEGACY_INTERRUPT_PROTOCOL * This, OUT UINT8 *NumberPirqs ); /*++ Routine Description: Return the number of PIRQs this hardware supports. Arguments: This - Protocol instance pointer. NumberPirsq - Number of PIRQs. Returns: EFI_SUCCESS - Number of PIRQs returned. --*/ typedef EFI_STATUS (EFIAPI *EFI_LEGACY_INTERRUPT_GET_LOCATION) ( IN EFI_LEGACY_INTERRUPT_PROTOCOL * This, OUT UINT8 *Bus, OUT UINT8 *Device, OUT UINT8 *Function ); /*++ Routine Description: Return PCI location of this device. $PIR table requires this info. Arguments: This - Protocol instance pointer. Bus - PCI Bus Device - PCI Device Function - PCI Function Returns: EFI_SUCCESS - Bus/Device/Function returned --*/ typedef EFI_STATUS (EFIAPI *EFI_LEGACY_INTERRUPT_READ_PIRQ) ( IN EFI_LEGACY_INTERRUPT_PROTOCOL * This, IN UINT8 PirqNumber, OUT UINT8 *PirqData ); /*++ Routine Description: Read the PIRQ register and return the data Arguments: This - Protocol instance pointer. PirqNumber - PIRQ register to read PirqData - Data read Returns: EFI_SUCCESS - Data was read EFI_INVALID_PARAMETER - Invalid PIRQ number --*/ typedef EFI_STATUS (EFIAPI *EFI_LEGACY_INTERRUPT_WRITE_PIRQ) ( IN EFI_LEGACY_INTERRUPT_PROTOCOL * This, IN UINT8 PirqNumber, IN UINT8 PirqData ); /*++ Routine Description: Write the specified PIRQ register with the given data. Arguments: This - Protocol instance pointer. PirqNumber - PIRQ register to read. PirqData - Data written. Returns: EFI_SUCCESS - Table pointer returned EFI_INVALID_PARAMETER - Invalid PIRQ number --*/ struct _EFI_LEGACY_INTERRUPT_PROTOCOL { EFI_LEGACY_INTERRUPT_GET_NUMBER_PIRQS GetNumberPirqs; EFI_LEGACY_INTERRUPT_GET_LOCATION GetLocation; EFI_LEGACY_INTERRUPT_READ_PIRQ ReadPirq; EFI_LEGACY_INTERRUPT_WRITE_PIRQ WritePirq; }; extern EFI_GUID gEfiLegacyInterruptProtocolGuid; #endif