1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
|
/*++
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
|