]> git.proxmox.com Git - mirror_edk2.git/blame - EmbeddedPkg/Include/Protocol/HardwareInterrupt2.h
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / EmbeddedPkg / Include / Protocol / HardwareInterrupt2.h
CommitLineData
e40c7289
AB
1/** @file\r
2\r
3 Copyright (c) 2016-2017, Linaro Ltd. All rights reserved.<BR>\r
4\r
878b807a 5 SPDX-License-Identifier: BSD-2-Clause-Patent\r
e40c7289
AB
6\r
7**/\r
8\r
9#ifndef __HARDWARE_INTERRUPT2_H__\r
10#define __HARDWARE_INTERRUPT2_H__\r
11\r
12#include <Protocol/HardwareInterrupt.h>\r
13\r
14// 22838932-1a2d-4a47-aaba-f3f7cf569470\r
15\r
16#define EFI_HARDWARE_INTERRUPT2_PROTOCOL_GUID \\r
17 { 0x32898322, 0x2d1a, 0x474a, \\r
18 { 0xba, 0xaa, 0xf3, 0xf7, 0xcf, 0x56, 0x94, 0x70 } }\r
19\r
20typedef enum {\r
21 EFI_HARDWARE_INTERRUPT2_TRIGGER_LEVEL_LOW,\r
22 EFI_HARDWARE_INTERRUPT2_TRIGGER_LEVEL_HIGH,\r
23 EFI_HARDWARE_INTERRUPT2_TRIGGER_EDGE_FALLING,\r
24 EFI_HARDWARE_INTERRUPT2_TRIGGER_EDGE_RISING,\r
25} EFI_HARDWARE_INTERRUPT2_TRIGGER_TYPE;\r
26\r
27typedef struct _EFI_HARDWARE_INTERRUPT2_PROTOCOL \\r
e7108d0e 28 EFI_HARDWARE_INTERRUPT2_PROTOCOL;\r
e40c7289
AB
29\r
30/**\r
31 Register Handler for the specified interrupt source.\r
32\r
33 @param This Instance pointer for this protocol\r
34 @param Source Hardware source of the interrupt\r
35 @param Handler Callback for interrupt. NULL to unregister\r
36\r
37 @retval EFI_SUCCESS Source was updated to support Handler.\r
38 @retval EFI_DEVICE_ERROR Hardware could not be programmed.\r
39\r
40**/\r
41typedef\r
42EFI_STATUS\r
e7108d0e 43(EFIAPI *HARDWARE_INTERRUPT2_REGISTER)(\r
e40c7289
AB
44 IN EFI_HARDWARE_INTERRUPT2_PROTOCOL *This,\r
45 IN HARDWARE_INTERRUPT_SOURCE Source,\r
46 IN HARDWARE_INTERRUPT_HANDLER Handler\r
47 );\r
48\r
e40c7289
AB
49/**\r
50 Enable interrupt source Source.\r
51\r
52 @param This Instance pointer for this protocol\r
53 @param Source Hardware source of the interrupt\r
54\r
55 @retval EFI_SUCCESS Source interrupt enabled.\r
56 @retval EFI_DEVICE_ERROR Hardware could not be programmed.\r
57\r
58**/\r
59typedef\r
60EFI_STATUS\r
e7108d0e 61(EFIAPI *HARDWARE_INTERRUPT2_ENABLE)(\r
e40c7289
AB
62 IN EFI_HARDWARE_INTERRUPT2_PROTOCOL *This,\r
63 IN HARDWARE_INTERRUPT_SOURCE Source\r
64 );\r
65\r
e40c7289
AB
66/**\r
67 Disable interrupt source Source.\r
68\r
69 @param This Instance pointer for this protocol\r
70 @param Source Hardware source of the interrupt\r
71\r
72 @retval EFI_SUCCESS Source interrupt disabled.\r
73 @retval EFI_DEVICE_ERROR Hardware could not be programmed.\r
74\r
75**/\r
76typedef\r
77EFI_STATUS\r
e7108d0e 78(EFIAPI *HARDWARE_INTERRUPT2_DISABLE)(\r
e40c7289
AB
79 IN EFI_HARDWARE_INTERRUPT2_PROTOCOL *This,\r
80 IN HARDWARE_INTERRUPT_SOURCE Source\r
81 );\r
82\r
e40c7289
AB
83/**\r
84 Return current state of interrupt source Source.\r
85\r
86 @param This Instance pointer for this protocol\r
87 @param Source Hardware source of the interrupt\r
88 @param InterruptState TRUE: source enabled, FALSE: source disabled.\r
89\r
90 @retval EFI_SUCCESS InterruptState is valid\r
91 @retval EFI_DEVICE_ERROR InterruptState is not valid\r
92\r
93**/\r
94typedef\r
95EFI_STATUS\r
e7108d0e 96(EFIAPI *HARDWARE_INTERRUPT2_INTERRUPT_STATE)(\r
e40c7289
AB
97 IN EFI_HARDWARE_INTERRUPT2_PROTOCOL *This,\r
98 IN HARDWARE_INTERRUPT_SOURCE Source,\r
99 IN BOOLEAN *InterruptState\r
100 );\r
101\r
102/**\r
103 Signal to the hardware that the End Of Interrupt state\r
104 has been reached.\r
105\r
106 @param This Instance pointer for this protocol\r
107 @param Source Hardware source of the interrupt\r
108\r
109 @retval EFI_SUCCESS Source interrupt EOI'ed.\r
110 @retval EFI_DEVICE_ERROR Hardware could not be programmed.\r
111\r
112**/\r
113typedef\r
114EFI_STATUS\r
e7108d0e 115(EFIAPI *HARDWARE_INTERRUPT2_END_OF_INTERRUPT)(\r
e40c7289
AB
116 IN EFI_HARDWARE_INTERRUPT2_PROTOCOL *This,\r
117 IN HARDWARE_INTERRUPT_SOURCE Source\r
118 );\r
119\r
120/**\r
121 Return the configured trigger type for an interrupt source\r
122\r
123 @param This Instance pointer for this protocol\r
124 @param Source Hardware source of the interrupt\r
125 @param TriggerType The configured trigger type\r
126\r
127 @retval EFI_SUCCESS Operation successful\r
128 @retval EFI_DEVICE_ERROR Information could not be returned\r
129\r
130**/\r
131typedef\r
132EFI_STATUS\r
e7108d0e 133(EFIAPI *HARDWARE_INTERRUPT2_GET_TRIGGER_TYPE)(\r
e40c7289
AB
134 IN EFI_HARDWARE_INTERRUPT2_PROTOCOL *This,\r
135 IN HARDWARE_INTERRUPT_SOURCE Source,\r
136 OUT EFI_HARDWARE_INTERRUPT2_TRIGGER_TYPE *TriggerType\r
137 );\r
138\r
e40c7289
AB
139/**\r
140 Configure the trigger type for an interrupt source\r
141\r
142 @param This Instance pointer for this protocol\r
143 @param Source Hardware source of the interrupt\r
144 @param TriggerType The trigger type to configure\r
145\r
146 @retval EFI_SUCCESS Operation successful\r
147 @retval EFI_DEVICE_ERROR Hardware could not be programmed.\r
148\r
149**/\r
150typedef\r
151EFI_STATUS\r
e7108d0e 152(EFIAPI *HARDWARE_INTERRUPT2_SET_TRIGGER_TYPE)(\r
e40c7289
AB
153 IN EFI_HARDWARE_INTERRUPT2_PROTOCOL *This,\r
154 IN HARDWARE_INTERRUPT_SOURCE Source,\r
155 IN EFI_HARDWARE_INTERRUPT2_TRIGGER_TYPE TriggerType\r
156 );\r
157\r
158struct _EFI_HARDWARE_INTERRUPT2_PROTOCOL {\r
159 HARDWARE_INTERRUPT2_REGISTER RegisterInterruptSource;\r
160 HARDWARE_INTERRUPT2_ENABLE EnableInterruptSource;\r
161 HARDWARE_INTERRUPT2_DISABLE DisableInterruptSource;\r
162 HARDWARE_INTERRUPT2_INTERRUPT_STATE GetInterruptSourceState;\r
163 HARDWARE_INTERRUPT2_END_OF_INTERRUPT EndOfInterrupt;\r
164\r
165 // v2 members\r
166 HARDWARE_INTERRUPT2_GET_TRIGGER_TYPE GetTriggerType;\r
167 HARDWARE_INTERRUPT2_SET_TRIGGER_TYPE SetTriggerType;\r
168};\r
169\r
e7108d0e 170extern EFI_GUID gHardwareInterrupt2ProtocolGuid;\r
e40c7289
AB
171\r
172#endif\r