]> git.proxmox.com Git - mirror_edk2.git/blob - EdkCompatibilityPkg/Foundation/Framework/Protocol/LegacyInterrupt/LegacyInterrupt.h
946d00c6db2175baa29d33291f12c36f5495c65b
[mirror_edk2.git] / EdkCompatibilityPkg / Foundation / Framework / Protocol / LegacyInterrupt / LegacyInterrupt.h
1 /*++
2
3 Copyright (c) 1999 - 2006, Intel Corporation. All rights reserved.<BR>
4 This program and the accompanying materials
5 are licensed and made available under the terms and conditions of the BSD License
6 which accompanies this distribution. The full text of the license may be found at
7 http://opensource.org/licenses/bsd-license.php
8
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
11
12
13 Module Name:
14
15 LegacyInterrupt.h
16
17 Abstract:
18
19 This protocol manages the PIRQ for PCI devices
20
21 Revision History
22
23 The EFI Legacy Interrupt Protocol is compliant with CSM spec 0.96.
24
25 --*/
26
27 #ifndef _EFI_LEGACY_INTERRUPT_H_
28 #define _EFI_LEGACY_INTERRUPT_H_
29
30 #define EFI_LEGACY_INTERRUPT_PROTOCOL_GUID \
31 { \
32 0x31ce593d, 0x108a, 0x485d, {0xad, 0xb2, 0x78, 0xf2, 0x1f, 0x29, 0x66, 0xbe} \
33 }
34
35 EFI_FORWARD_DECLARATION (EFI_LEGACY_INTERRUPT_PROTOCOL);
36
37 typedef
38 EFI_STATUS
39 (EFIAPI *EFI_LEGACY_INTERRUPT_GET_NUMBER_PIRQS) (
40 IN EFI_LEGACY_INTERRUPT_PROTOCOL * This,
41 OUT UINT8 *NumberPirqs
42 );
43
44 /*++
45
46 Routine Description:
47 Return the number of PIRQs this hardware supports.
48
49 Arguments:
50 This - Protocol instance pointer.
51 NumberPirsq - Number of PIRQs.
52
53 Returns:
54 EFI_SUCCESS - Number of PIRQs returned.
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
68 Routine Description:
69 Return PCI location of this device. $PIR table requires this info.
70
71 Arguments:
72 This - Protocol instance pointer.
73 Bus - PCI Bus
74 Device - PCI Device
75 Function - PCI Function
76
77 Returns:
78 EFI_SUCCESS - Bus/Device/Function returned
79
80 --*/
81 typedef
82 EFI_STATUS
83 (EFIAPI *EFI_LEGACY_INTERRUPT_READ_PIRQ) (
84 IN EFI_LEGACY_INTERRUPT_PROTOCOL * This,
85 IN UINT8 PirqNumber,
86 OUT UINT8 *PirqData
87 );
88
89 /*++
90
91 Routine Description:
92 Read the PIRQ register and return the data
93
94 Arguments:
95 This - Protocol instance pointer.
96 PirqNumber - PIRQ register to read
97 PirqData - Data read
98
99 Returns:
100 EFI_SUCCESS - Data was read
101 EFI_INVALID_PARAMETER - Invalid PIRQ number
102
103 --*/
104 typedef
105 EFI_STATUS
106 (EFIAPI *EFI_LEGACY_INTERRUPT_WRITE_PIRQ) (
107 IN EFI_LEGACY_INTERRUPT_PROTOCOL * This,
108 IN UINT8 PirqNumber,
109 IN UINT8 PirqData
110 );
111
112 /*++
113
114 Routine Description:
115 Write the specified PIRQ register with the given data.
116
117 Arguments:
118 This - Protocol instance pointer.
119 PirqNumber - PIRQ register to read.
120 PirqData - Data written.
121
122 Returns:
123 EFI_SUCCESS - Table pointer returned
124 EFI_INVALID_PARAMETER - Invalid PIRQ number
125
126 --*/
127 struct _EFI_LEGACY_INTERRUPT_PROTOCOL {
128 EFI_LEGACY_INTERRUPT_GET_NUMBER_PIRQS GetNumberPirqs;
129 EFI_LEGACY_INTERRUPT_GET_LOCATION GetLocation;
130 EFI_LEGACY_INTERRUPT_READ_PIRQ ReadPirq;
131 EFI_LEGACY_INTERRUPT_WRITE_PIRQ WritePirq;
132 };
133
134 extern EFI_GUID gEfiLegacyInterruptProtocolGuid;
135
136 #endif