]> git.proxmox.com Git - mirror_edk2.git/blame - IntelFrameworkModulePkg/Include/Protocol/IsaAcpi.h
Committing changes to the comments, after review with engineers.
[mirror_edk2.git] / IntelFrameworkModulePkg / Include / Protocol / IsaAcpi.h
CommitLineData
8ca67c46 1/** @file\r
099fae5d 2 EFI ISA ACPI Protocol is used to enumerate and manage all the ISA controllers on\r
3 the platform's ISA Bus.\r
a9102619 4\r
099fae5d 5 Copyright (c) 2006 - 2009, Intel Corporation\r
6 All rights reserved. This program and the accompanying materials\r
7 are licensed and made available under the terms and conditions of the BSD License\r
8 which accompanies this distribution. The full text of the license may be found at\r
9 http://opensource.org/licenses/bsd-license.php\r
10\r
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
a9102619 13\r
3db51098 14**/\r
a9102619 15\r
16#ifndef __ISA_ACPI_H_\r
17#define __ISA_ACPI_H_\r
18\r
099fae5d 19///\r
20/// Global ID for the EFI ISA ACPI Protocol\r
21///\r
a9102619 22#define EFI_ISA_ACPI_PROTOCOL_GUID \\r
099fae5d 23 { \\r
24 0x64a892dc, 0x5561, 0x4536, { 0x92, 0xc7, 0x79, 0x9b, 0xfc, 0x18, 0x33, 0x55 } \\r
25 }\r
a9102619 26\r
099fae5d 27///\r
28/// Forward declaration fo the EFI ISA ACPI Protocol\r
29///\r
a9102619 30typedef struct _EFI_ISA_ACPI_PROTOCOL EFI_ISA_ACPI_PROTOCOL;\r
31\r
099fae5d 32///\r
33/// ISA ACPI Protocol interrupt resource attributes\r
34///\r
35#define EFI_ISA_ACPI_IRQ_TYPE_HIGH_TRUE_EDGE_SENSITIVE 0x01 ///< Edge triggered interrupt on a rising edge\r
36#define EFI_ISA_ACPI_IRQ_TYPE_LOW_TRUE_EDGE_SENSITIVE 0x02 ///< Edge triggered interrupt on a falling edge\r
37#define EFI_ISA_ACPI_IRQ_TYPE_HIGH_TRUE_LEVEL_SENSITIVE 0x04 ///< Level sensitive interrupt active high\r
38#define EFI_ISA_ACPI_IRQ_TYPE_LOW_TRUE_LEVEL_SENSITIVE 0x08 ///< Level sensitive interrupt active low\r
39\r
40///\r
41/// ISA ACPI Protocol DMA resource attributes\r
42///\r
43#define EFI_ISA_ACPI_DMA_SPEED_TYPE_MASK 0x03 ///< Bit mask of supported DMA speed attributes\r
44#define EFI_ISA_ACPI_DMA_SPEED_TYPE_COMPATIBILITY 0x00 ///< ISA controller supports compatibility mode DMA transfers\r
45#define EFI_ISA_ACPI_DMA_SPEED_TYPE_A 0x01 ///< ISA controller supports type A DMA transfers \r
46#define EFI_ISA_ACPI_DMA_SPEED_TYPE_B 0x02 ///< ISA controller supports type B DMA transfers\r
47#define EFI_ISA_ACPI_DMA_SPEED_TYPE_F 0x03 ///< ISA controller supports type F DMA transfers\r
48#define EFI_ISA_ACPI_DMA_COUNT_BY_BYTE 0x04 ///< ISA controller increments DMA address by bytes (8-bit)\r
49#define EFI_ISA_ACPI_DMA_COUNT_BY_WORD 0x08 ///< ISA controller increments DMA address by words (16-bit)\r
50#define EFI_ISA_ACPI_DMA_BUS_MASTER 0x10 ///< ISA controller is a DMA bus master\r
51#define EFI_ISA_ACPI_DMA_TRANSFER_TYPE_8_BIT 0x20 ///< ISA controller only supports 8-bit DMA transfers\r
52#define EFI_ISA_ACPI_DMA_TRANSFER_TYPE_8_BIT_AND_16_BIT 0x40 ///< ISA controller both 8-bit and 16-bit DMA transfers\r
53#define EFI_ISA_ACPI_DMA_TRANSFER_TYPE_16_BIT 0x80 ///< ISA controller only supports 16-bit DMA transfers\r
54\r
55///\r
56/// ISA ACPI Protocol MMIO resource attributes\r
57///\r
58#define EFI_ISA_ACPI_MEMORY_WIDTH_MASK 0x03 ///< Bit mask of supported ISA memory width attributes\r
59#define EFI_ISA_ACPI_MEMORY_WIDTH_8_BIT 0x00 ///< ISA MMIO region only supports 8-bit access\r
60#define EFI_ISA_ACPI_MEMORY_WIDTH_16_BIT 0x01 ///< ISA MMIO region only supports 16-bit access\r
61#define EFI_ISA_ACPI_MEMORY_WIDTH_8_BIT_AND_16_BIT 0x02 ///< ISA MMIO region supports both 8-bit and 16-bit access \r
62#define EFI_ISA_ACPI_MEMORY_WRITEABLE 0x04 ///< ISA MMIO region supports write transactions\r
63#define EFI_ISA_ACPI_MEMORY_CACHEABLE 0x08 ///< ISA MMIO region supports being cached\r
64#define EFI_ISA_ACPI_MEMORY_SHADOWABLE 0x10 ///< ISA MMIO region may be shadowed\r
65#define EFI_ISA_ACPI_MEMORY_EXPANSION_ROM 0x20 ///< ISA MMIO region is an expansion ROM\r
66\r
67///\r
68/// ISA ACPI Protocol I/O resource attributes\r
69///\r
70#define EFI_ISA_ACPI_IO_DECODE_10_BITS 0x01 ///< ISA controllers uses a 10-bit address decoder for I/O cycles\r
71#define EFI_ISA_ACPI_IO_DECODE_16_BITS 0x02 ///< ISA controllers uses a 16-bit address decoder for I/O cycles\r
72\r
73///\r
74/// EFI ISA ACPI resource type \r
75///\r
a9102619 76typedef enum {\r
099fae5d 77 EfiIsaAcpiResourceEndOfList, ///< Marks the end if a resource list\r
78 EfiIsaAcpiResourceIo, ///< ISA I/O port resource range\r
79 EfiIsaAcpiResourceMemory, ///< ISA MMIO resource range \r
80 EfiIsaAcpiResourceDma, ///< ISA DMA resource \r
81 EfiIsaAcpiResourceInterrupt ///< ISA interrupt resource\r
a9102619 82} EFI_ISA_ACPI_RESOURCE_TYPE;\r
83\r
099fae5d 84///\r
85/// EFI ISA ACPI generic resource structure\r
86///\r
a9102619 87typedef struct {\r
099fae5d 88 EFI_ISA_ACPI_RESOURCE_TYPE Type; ///< The type of resource (I/O, MMIO, DMA, Interrupt)\r
89 UINT32 Attribute; ///< Bit mask of attributes associated with this resource. See EFI_ISA_ACPI_xxx macros for valid combinations.\r
90 UINT32 StartRange; ///< The start of the resource range\r
91 UINT32 EndRange; ///< The end of the resource range\r
a9102619 92} EFI_ISA_ACPI_RESOURCE;\r
93\r
099fae5d 94///\r
95/// EFI ISA ACPI resource device identifier\r
96///\r
a9102619 97typedef struct {\r
099fae5d 98 UINT32 HID; ///< The ACPI Hardware Identifier value associated with an ISA controller. Matchs ACPI DSDT contents.\r
99 UINT32 UID; ///< The ACPI Unique Identifier value associated with an ISA controller. Matches ACPI DSDT contents.\r
a9102619 100} EFI_ISA_ACPI_DEVICE_ID;\r
101\r
099fae5d 102///\r
103/// EFI ISA ACPI resource list\r
104///\r
a9102619 105typedef struct {\r
099fae5d 106 EFI_ISA_ACPI_DEVICE_ID Device; ///< The ACPI HID/UID associated with an ISA controller\r
107 EFI_ISA_ACPI_RESOURCE *ResourceItem; ///< Pointer to the list of resources associated with an ISA controller\r
a9102619 108} EFI_ISA_ACPI_RESOURCE_LIST;\r
109\r
f4671790 110/**\r
099fae5d 111 Enumerates the ISA controllers on an ISA bus.\r
112\r
113 This service allows all the ISA controllers on an ISA bus to be enumerated. If\r
114 Device is a pointer to a NULL value, then the first ISA controller on the ISA\r
7b6b7746 115 bus is returned in Device and EFI_SUCCESS is returned. If Device is a pointer \r
116 to a value that was returned on a prior call to DeviceEnumerate(), then the next \r
099fae5d 117 ISA controller on the ISA bus is returned in Device and EFI_SUCCESS is returned.\r
118 If Device is a pointer to the last ISA controller on the ISA bus, then \r
119 EFI_NOT_FOUND is returned.\r
f4671790 120\r
099fae5d 121 @param[in] This Pointer to the EFI_ISA_ACPI_PROTOCOL instance.\r
122 @param[out] Device Pointer to an ISA controller named by ACPI HID/UID.\r
f4671790 123\r
099fae5d 124 @retval EFI_SUCCESS The next ISA controller on the ISA bus was returned.\r
125 @retval EFI_NOT_FOUND No device found.\r
f4671790
LG
126\r
127**/\r
a9102619 128typedef\r
129EFI_STATUS\r
099fae5d 130(EFIAPI *EFI_ISA_ACPI_DEVICE_ENUMERATE)(\r
131 IN EFI_ISA_ACPI_PROTOCOL *This,\r
132 OUT EFI_ISA_ACPI_DEVICE_ID **Device\r
a9102619 133 );\r
f4671790
LG
134\r
135/**\r
099fae5d 136 Sets the power state of an ISA controller.\r
f4671790 137\r
099fae5d 138 This services sets the power state of the ISA controller specified by Device to \r
7b6b7746 139 the power state specified by OnOff. TRUE denotes on, FALSE denotes off. \r
140 If the power state is sucessfully set on the ISA Controller, then\r
099fae5d 141 EFI_SUCCESS is returned.\r
f4671790 142\r
099fae5d 143 @param[in] This Pointer to the EFI_ISA_ACPI_PROTOCOL instance.\r
144 @param[in] Device Pointer to an ISA controller named by ACPI HID/UID.\r
7b6b7746 145 @param[in] OnOff TRUE denotes on, FALSE denotes off.\r
099fae5d 146\r
147 @retval EFI_SUCCESS Successfully set the power state of the ISA controller.\r
148 @retval Other The ISA controller cound not be placed in the requested power state.\r
f4671790
LG
149\r
150**/\r
a9102619 151typedef\r
152EFI_STATUS\r
099fae5d 153(EFIAPI *EFI_ISA_ACPI_SET_DEVICE_POWER)(\r
154 IN EFI_ISA_ACPI_PROTOCOL *This,\r
155 IN EFI_ISA_ACPI_DEVICE_ID *Device,\r
156 IN BOOLEAN OnOff\r
a9102619 157 );\r
158 \r
f4671790 159/**\r
7b6b7746 160 Retrieves the current set of resources associated with an ISA controller.\r
099fae5d 161\r
162 Retrieves the set of I/O, MMIO, DMA, and interrupt resources currently \r
163 assigned to the ISA controller specified by Device. These resources\r
164 are returned in ResourceList.\r
f4671790 165\r
099fae5d 166 @param[in] This Pointer to the EFI_ISA_ACPI_PROTOCOL instance.\r
167 @param[in] Device Pointer to an ISA controller named by ACPI HID/UID.\r
168 @param[out] ResourceList Pointer to the current resource list for Device.\r
f4671790 169\r
099fae5d 170 @retval EFI_SUCCESS Successfully retrieved the current resource list.\r
171 @retval EFI_NOT_FOUND The resource list could not be retrieved.\r
f4671790
LG
172\r
173**/\r
a9102619 174typedef\r
175EFI_STATUS\r
099fae5d 176(EFIAPI *EFI_ISA_ACPI_GET_CUR_RESOURCE)(\r
177 IN EFI_ISA_ACPI_PROTOCOL *This,\r
178 IN EFI_ISA_ACPI_DEVICE_ID *Device,\r
179 OUT EFI_ISA_ACPI_RESOURCE_LIST **ResourceList\r
a9102619 180 );\r
181\r
f4671790 182/**\r
099fae5d 183 Retrieves the set of possible resources that may be assigned to an ISA controller\r
184 with SetResource().\r
f4671790 185\r
099fae5d 186 Retrieves the possible sets of I/O, MMIO, DMA, and interrupt resources for the\r
187 ISA controller specified by Device. The sets are returned in ResourceList.\r
188\r
189 @param[in] This Pointer to the EFI_ISA_ACPI_PROTOCOL instance.\r
190 @param[in] Device Pointer to an ISA controller named by ACPI HID/UID.\r
191 @param[out] ResourceList Pointer to the returned list of resource lists.\r
192\r
7b6b7746 193 @retval EFI_UNSUPPORTED This service is not supported.\r
f4671790 194\r
f4671790 195**/\r
a9102619 196typedef\r
197EFI_STATUS\r
099fae5d 198(EFIAPI *EFI_ISA_ACPI_GET_POS_RESOURCE)(\r
199 IN EFI_ISA_ACPI_PROTOCOL *This,\r
200 IN EFI_ISA_ACPI_DEVICE_ID *Device,\r
201 OUT EFI_ISA_ACPI_RESOURCE_LIST **ResourceList\r
a9102619 202 );\r
f4671790
LG
203\r
204/**\r
099fae5d 205 Assigns resources to an ISA controller.\r
f4671790 206\r
099fae5d 207 Assigns the I/O, MMIO, DMA, and interrupt resources specified by ResourceList\r
7b6b7746 208 to the ISA controller specified by Device. ResourceList must match a resource list returned by GetPosResource() for the same ISA controller.\r
f4671790 209\r
099fae5d 210 @param[in] This Pointer to the EFI_ISA_ACPI_PROTOCOL instance.\r
211 @param[in] Device Pointer to an ISA controller named by ACPI HID/UID.\r
212 @param[in] ResourceList Pointer to a resources list that must be one of the \r
213 resource lists returned by GetPosResource() for the\r
214 ISA controller specified by Device.\r
215\r
216 @retval EFI_SUCCESS Successfully set resources on the ISA controller.\r
217 @retval Other The resources could not be set for the ISA controller.\r
f4671790
LG
218\r
219**/\r
a9102619 220typedef\r
221EFI_STATUS\r
099fae5d 222(EFIAPI *EFI_ISA_ACPI_SET_RESOURCE)(\r
223 IN EFI_ISA_ACPI_PROTOCOL *This,\r
224 IN EFI_ISA_ACPI_DEVICE_ID *Device,\r
225 IN EFI_ISA_ACPI_RESOURCE_LIST *ResourceList\r
a9102619 226 ); \r
227\r
f4671790 228/**\r
099fae5d 229 Enables or disables an ISA controller.\r
f4671790 230\r
099fae5d 231 @param[in] This Pointer to the EFI_ISA_ACPI_PROTOCOL instance.\r
232 @param[in] Device Pointer to the ISA controller to enable/disable.\r
233 @param[in] Enable TRUE to enable the ISA controller. FALSE to disable the\r
234 ISA controller.\r
f4671790 235\r
099fae5d 236 @retval EFI_SUCCESS Successfully enabled/disabled the ISA controller.\r
237 @retval Other The ISA controller cound not be placed in the requested state.\r
f4671790
LG
238\r
239**/\r
a9102619 240typedef\r
241EFI_STATUS\r
099fae5d 242(EFIAPI *EFI_ISA_ACPI_ENABLE_DEVICE)(\r
243 IN EFI_ISA_ACPI_PROTOCOL *This,\r
244 IN EFI_ISA_ACPI_DEVICE_ID *Device,\r
245 IN BOOLEAN Enable\r
a9102619 246 ); \r
247\r
f4671790 248/**\r
7b6b7746 249 Initializes an ISA controller, so that it can be used. This service must be called\r
099fae5d 250 before SetResource(), EnableDevice(), or SetPower() will behave as expected.\r
f4671790 251\r
099fae5d 252 @param[in] This Pointer to the EFI_ISA_ACPI_PROTOCOL instance.\r
253 @param[in] Device Pointer to an ISA controller named by ACPI HID/UID.\r
f4671790 254\r
099fae5d 255 @retval EFI_SUCCESS Successfully initialized an ISA controller.\r
256 @retval Other The ISA controller could not be initialized.\r
f4671790
LG
257\r
258**/\r
a9102619 259typedef\r
260EFI_STATUS\r
099fae5d 261(EFIAPI *EFI_ISA_ACPI_INIT_DEVICE)(\r
262 IN EFI_ISA_ACPI_PROTOCOL *This,\r
263 IN EFI_ISA_ACPI_DEVICE_ID *Device\r
a9102619 264 ); \r
265\r
f4671790 266/**\r
7b6b7746 267 Initializes all the HW states required for the ISA controllers on the ISA bus \r
268 to be enumerated and managed by the rest of the services in this prorotol.\r
099fae5d 269 This service must be called before any of the other services in this\r
270 protocol will function as expected.\r
271 \r
272 @param[in] This Pointer to the EFI_ISA_ACPI_PROTOCOL instance.\r
f4671790 273\r
d0bd68b2 274 @retval EFI_SUCCESS Successfully initialized all required hardware states.\r
099fae5d 275 @retval Other The ISA interface could not be initialized.\r
f4671790
LG
276\r
277**/\r
a9102619 278typedef\r
279EFI_STATUS\r
099fae5d 280(EFIAPI *EFI_ISA_ACPI_INTERFACE_INIT)(\r
281 IN EFI_ISA_ACPI_PROTOCOL *This\r
a9102619 282 );\r
283\r
099fae5d 284///\r
7b6b7746 285/// The EFI_ISA_ACPI_PROTOCOL provides the services to enumerate and manage\r
286/// ISA controllers on an ISA bus. These services include the ability to initialize, \r
287/// enable, disable, and manage the power state of ISA controllers. It also \r
288/// includes services to query current resources, query possible resources, \r
099fae5d 289/// and assign resources to an ISA controller.\r
290///\r
a9102619 291struct _EFI_ISA_ACPI_PROTOCOL {\r
099fae5d 292 EFI_ISA_ACPI_DEVICE_ENUMERATE DeviceEnumerate;\r
293 EFI_ISA_ACPI_SET_DEVICE_POWER SetPower;\r
294 EFI_ISA_ACPI_GET_CUR_RESOURCE GetCurResource;\r
295 EFI_ISA_ACPI_GET_POS_RESOURCE GetPosResource;\r
296 EFI_ISA_ACPI_SET_RESOURCE SetResource;\r
297 EFI_ISA_ACPI_ENABLE_DEVICE EnableDevice;\r
298 EFI_ISA_ACPI_INIT_DEVICE InitDevice;\r
299 EFI_ISA_ACPI_INTERFACE_INIT InterfaceInit;\r
a9102619 300};\r
301\r
302extern EFI_GUID gEfiIsaAcpiProtocolGuid;\r
303 \r
304#endif\r