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