summaryrefslogtreecommitdiff
path: root/IntelFrameworkPkg/Include/Protocol/LegacyInterrupt.h
diff options
context:
space:
mode:
Diffstat (limited to 'IntelFrameworkPkg/Include/Protocol/LegacyInterrupt.h')
-rw-r--r--IntelFrameworkPkg/Include/Protocol/LegacyInterrupt.h131
1 files changed, 131 insertions, 0 deletions
diff --git a/IntelFrameworkPkg/Include/Protocol/LegacyInterrupt.h b/IntelFrameworkPkg/Include/Protocol/LegacyInterrupt.h
new file mode 100644
index 0000000000..13ac36f31c
--- /dev/null
+++ b/IntelFrameworkPkg/Include/Protocol/LegacyInterrupt.h
@@ -0,0 +1,131 @@
+/** @file
+ This protocol manages the legacy memory regions between 0xc0000 - 0xfffff
+
+ Copyright (c) 2007, 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
+
+ @par Revision Reference:
+ This protocol is defined in Framework for EFI Compatibility Support Module spec
+ Version 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 } \
+ }
+
+typedef struct _EFI_LEGACY_INTERRUPT_PROTOCOL EFI_LEGACY_INTERRUPT_PROTOCOL;
+
+/**
+ Get the number of PIRQs this hardware supports.
+
+ @param This Protocol instance pointer.
+ @param NumberPirsq Number of PIRQs.
+
+ @retval EFI_SUCCESS Number of PIRQs returned.
+
+**/
+typedef
+EFI_STATUS
+(EFIAPI *EFI_LEGACY_INTERRUPT_GET_NUMBER_PIRQS) (
+ IN EFI_LEGACY_INTERRUPT_PROTOCOL *This,
+ OUT UINT8 *NumberPirqs
+ );
+
+/**
+ Gets the PCI location associated with this protocol.
+
+ @param This Protocol instance pointer.
+ @param Bus PCI Bus
+ @param Device PCI Device
+ @param Function PCI Function
+
+ @retval EFI_SUCCESS Bus/Device/Function 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
+ );
+
+/**
+ Read the PIRQ register and return the data
+
+ @param This Protocol instance pointer.
+ @param PirqNumber PIRQ register to read
+ @param PirqData Data read
+
+ @retval EFI_SUCCESS Data was read
+ @retval EFI_INVALID_PARAMETER Invalid PIRQ number
+
+**/
+typedef
+EFI_STATUS
+(EFIAPI *EFI_LEGACY_INTERRUPT_READ_PIRQ) (
+ IN EFI_LEGACY_INTERRUPT_PROTOCOL *This,
+ IN UINT8 PirqNumber,
+ OUT UINT8 *PirqData
+ );
+
+/**
+ Write the specified PIRQ register with the given data.
+
+ @param This Protocol instance pointer.
+ @param PirqNumber PIRQ register to read.
+ @param PirqData Data written.
+
+ @retval EFI_SUCCESS Table pointer returned
+ @retval 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
+ );
+
+/**
+ @par Protocol Description:
+ Abstracts the PIRQ programming from the generic EFI Compatibility Support Modules
+
+ @param GetNumberPirqs
+ Gets the number of PIRQs supported.
+
+ @param GetLocation
+ Gets the PCI bus, device, and function that associated with this protocol.
+
+ @param ReadPirq
+ Reads the indicated PIRQ register.
+
+ @param WritePirq
+ Writes to the indicated PIRQ register.
+
+**/
+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