]> git.proxmox.com Git - mirror_edk2.git/blob - IntelFrameworkPkg/Include/Protocol/LegacyInterrupt.h
Grammatical and disclaimer changes (does not follow internal C coding stds.)
[mirror_edk2.git] / IntelFrameworkPkg / Include / Protocol / LegacyInterrupt.h
1 /** @file
2 This protocol abstracts the PIRQ programming from the generic EFI Compatibility Support Modules (CSMs).
3
4 Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved<BR>
5 This program and the accompanying materials are licensed and made available under
6 the terms and conditions of the BSD License that accompanies this distribution.
7 The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php.
9
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12
13 @par Revision Reference:
14 This protocol is defined in Framework for the EFI Compatibility Support Module specification.
15 Version 0.97.
16
17 **/
18
19 #ifndef _EFI_LEGACY_INTERRUPT_H_
20 #define _EFI_LEGACY_INTERRUPT_H_
21
22
23 #define EFI_LEGACY_INTERRUPT_PROTOCOL_GUID \
24 { \
25 0x31ce593d, 0x108a, 0x485d, {0xad, 0xb2, 0x78, 0xf2, 0x1f, 0x29, 0x66, 0xbe } \
26 }
27
28 typedef struct _EFI_LEGACY_INTERRUPT_PROTOCOL EFI_LEGACY_INTERRUPT_PROTOCOL;
29
30 /**
31 Get the number of PIRQs this hardware supports.
32
33 @param This The protocol instance pointer.
34 @param NumberPirsq The number of PIRQs that are supported.
35
36 @retval EFI_SUCCESS The number of PIRQs was returned successfully.
37
38 **/
39 typedef
40 EFI_STATUS
41 (EFIAPI *EFI_LEGACY_INTERRUPT_GET_NUMBER_PIRQS)(
42 IN EFI_LEGACY_INTERRUPT_PROTOCOL *This,
43 OUT UINT8 *NumberPirqs
44 );
45
46 /**
47 Gets the PCI location associated with this protocol.
48
49 @param This The Protocol instance pointer.
50 @param Bus The PCI Bus.
51 @param Device The PCI Device.
52 @param Function The PCI Function.
53
54 @retval EFI_SUCCESS The Bus, Device, and Function were returned successfully.
55
56 **/
57 typedef
58 EFI_STATUS
59 (EFIAPI *EFI_LEGACY_INTERRUPT_GET_LOCATION)(
60 IN EFI_LEGACY_INTERRUPT_PROTOCOL *This,
61 OUT UINT8 *Bus,
62 OUT UINT8 *Device,
63 OUT UINT8 *Function
64 );
65
66 /**
67 Read the PIRQ register and return the data
68
69 @param This The protocol instance pointer.
70 @param PirqNumber The PIRQ register to read.
71 @param PirqData The data read.
72
73 @retval EFI_SUCCESS The data was read.
74 @retval EFI_INVALID_PARAMETER Invalid PIRQ number.
75
76 **/
77 typedef
78 EFI_STATUS
79 (EFIAPI *EFI_LEGACY_INTERRUPT_READ_PIRQ)(
80 IN EFI_LEGACY_INTERRUPT_PROTOCOL *This,
81 IN UINT8 PirqNumber,
82 OUT UINT8 *PirqData
83 );
84
85 /**
86 Write the specified PIRQ register with the given data.
87
88 @param This The protocol instance pointer.
89 @param PirqNumber A PIRQ register to read.
90 @param PirqData The data to write.
91
92 @retval EFI_SUCCESS The PIRQ was programmed.
93 @retval EFI_INVALID_PARAMETER Invalid PIRQ number.
94
95 **/
96 typedef
97 EFI_STATUS
98 (EFIAPI *EFI_LEGACY_INTERRUPT_WRITE_PIRQ)(
99 IN EFI_LEGACY_INTERRUPT_PROTOCOL *This,
100 IN UINT8 PirqNumber,
101 IN UINT8 PirqData
102 );
103
104 struct _EFI_LEGACY_INTERRUPT_PROTOCOL {
105 ///
106 /// Gets the number of PIRQs supported.
107 ///
108 EFI_LEGACY_INTERRUPT_GET_NUMBER_PIRQS GetNumberPirqs;
109
110 ///
111 /// Gets the PCI bus, device, and function that is associated with this protocol.
112 ///
113 EFI_LEGACY_INTERRUPT_GET_LOCATION GetLocation;
114
115 ///
116 /// Reads the indicated PIRQ register.
117 ///
118 EFI_LEGACY_INTERRUPT_READ_PIRQ ReadPirq;
119
120 ///
121 /// Writes to the indicated PIRQ register.
122 ///
123 EFI_LEGACY_INTERRUPT_WRITE_PIRQ WritePirq;
124 };
125
126 extern EFI_GUID gEfiLegacyInterruptProtocolGuid;
127
128 #endif