1 | /** @file
|
---|
2 | This file declares PCI Host Bridge Resource Allocation Protocol which
|
---|
3 | provides the basic interfaces to abstract a PCI host bridge resource allocation.
|
---|
4 | This protocol is mandatory if the system includes PCI devices.
|
---|
5 |
|
---|
6 | Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>
|
---|
7 | This program and the accompanying materials are licensed and made available under
|
---|
8 | the terms and conditions of the BSD License that accompanies this distribution.
|
---|
9 | The full text of the license may be found at
|
---|
10 | http://opensource.org/licenses/bsd-license.php.
|
---|
11 |
|
---|
12 | THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
---|
13 | WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
---|
14 |
|
---|
15 | @par Revision Reference:
|
---|
16 | This Protocol is defined in UEFI Platform Initialization Specification 1.2
|
---|
17 | Volume 5: Standards.
|
---|
18 |
|
---|
19 | **/
|
---|
20 |
|
---|
21 | #ifndef _PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_H_
|
---|
22 | #define _PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_H_
|
---|
23 |
|
---|
24 | //
|
---|
25 | // This file must be included because EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL
|
---|
26 | // uses EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_PCI_ADDRESS
|
---|
27 | //
|
---|
28 | #include <Protocol/PciRootBridgeIo.h>
|
---|
29 |
|
---|
30 | ///
|
---|
31 | /// Global ID for the EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL.
|
---|
32 | ///
|
---|
33 | #define EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_GUID \
|
---|
34 | { \
|
---|
35 | 0xCF8034BE, 0x6768, 0x4d8b, {0xB7,0x39,0x7C,0xCE,0x68,0x3A,0x9F,0xBE } \
|
---|
36 | }
|
---|
37 |
|
---|
38 | ///
|
---|
39 | /// Forward declaration for EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL.
|
---|
40 | ///
|
---|
41 | typedef struct _EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL;
|
---|
42 |
|
---|
43 | /// If this bit is set, then the PCI Root Bridge does not
|
---|
44 | /// support separate windows for Non-prefetchable and Prefetchable
|
---|
45 | /// memory. A PCI bus driver needs to include requests for Prefetchable
|
---|
46 | /// memory in the Non-prefetchable memory pool.
|
---|
47 | ///
|
---|
48 | #define EFI_PCI_HOST_BRIDGE_COMBINE_MEM_PMEM 1
|
---|
49 |
|
---|
50 | ///
|
---|
51 | /// If this bit is set, then the PCI Root Bridge supports
|
---|
52 | /// 64 bit memory windows. If this bit is not set,
|
---|
53 | /// the PCI bus driver needs to include requests for 64 bit
|
---|
54 | /// memory address in the corresponding 32 bit memory pool.
|
---|
55 | ///
|
---|
56 | #define EFI_PCI_HOST_BRIDGE_MEM64_DECODE 2
|
---|
57 |
|
---|
58 | ///
|
---|
59 | /// A UINT64 value that contains the status of a PCI resource requested
|
---|
60 | /// in the Configuration parameter returned by GetProposedResources()
|
---|
61 | /// The legal values are EFI_RESOURCE_SATISFIED and EFI_RESOURCE_NOT_SATISFIED
|
---|
62 | ///
|
---|
63 | typedef UINT64 EFI_RESOURCE_ALLOCATION_STATUS;
|
---|
64 |
|
---|
65 | ///
|
---|
66 | /// The request of this resource type could be fulfilled. Used in the
|
---|
67 | /// Configuration parameter returned by GetProposedResources() to identify
|
---|
68 | /// a PCI resources request that can be satisfied.
|
---|
69 | ///
|
---|
70 | #define EFI_RESOURCE_SATISFIED 0x0000000000000000ULL
|
---|
71 |
|
---|
72 | ///
|
---|
73 | /// The request of this resource type could not be fulfilled for its
|
---|
74 | /// absence in the host bridge resource pool. Used in the Configuration parameter
|
---|
75 | /// returned by GetProposedResources() to identify a PCI resources request that
|
---|
76 | /// can not be satisfied.
|
---|
77 | ///
|
---|
78 | #define EFI_RESOURCE_NOT_SATISFIED 0xFFFFFFFFFFFFFFFFULL
|
---|
79 |
|
---|
80 | ///
|
---|
81 | /// This enum is used to specify the phase of the PCI enumaeration process.
|
---|
82 | ///
|
---|
83 | typedef enum {
|
---|
84 | ///
|
---|
85 | /// Reset the host bridge PCI apertures and internal data structures.
|
---|
86 | /// PCI enumerator should issue this notification before starting fresh
|
---|
87 | /// enumeration process. Enumeration cannot be restarted after sending
|
---|
88 | /// any other notification such as EfiPciHostBridgeBeginBusAllocation.
|
---|
89 | ///
|
---|
90 | EfiPciHostBridgeBeginEnumeration,
|
---|
91 |
|
---|
92 | ///
|
---|
93 | /// The bus allocation phase is about to begin. No specific action
|
---|
94 | /// is required here. This notification can be used to perform any
|
---|
95 | /// chipset specific programming.
|
---|
96 | ///
|
---|
97 | EfiPciHostBridgeBeginBusAllocation,
|
---|
98 |
|
---|
99 | ///
|
---|
100 | /// The bus allocation and bus programming phase is complete. No specific
|
---|
101 | /// action is required here. This notification can be used to perform any
|
---|
102 | /// chipset specific programming.
|
---|
103 | ///
|
---|
104 | EfiPciHostBridgeEndBusAllocation,
|
---|
105 |
|
---|
106 | ///
|
---|
107 | /// The resource allocation phase is about to begin.No specific action is
|
---|
108 | /// required here. This notification can be used to perform any chipset specific programming.
|
---|
109 | ///
|
---|
110 | EfiPciHostBridgeBeginResourceAllocation,
|
---|
111 |
|
---|
112 | ///
|
---|
113 | /// Allocate resources per previously submitted requests for all the PCI Root
|
---|
114 | /// Bridges. These resource settings are returned on the next call to
|
---|
115 | /// GetProposedResources().
|
---|
116 | ///
|
---|
117 | EfiPciHostBridgeAllocateResources,
|
---|
118 |
|
---|
119 | ///
|
---|
120 | /// Program the Host Bridge hardware to decode previously allocated resources
|
---|
121 | /// (proposed resources) for all the PCI Root Bridges.
|
---|
122 | ///
|
---|
123 | EfiPciHostBridgeSetResources,
|
---|
124 |
|
---|
125 | ///
|
---|
126 | /// De-allocate previously allocated resources previously for all the PCI
|
---|
127 | /// Root Bridges and reset the I/O and memory apertures to initial state.
|
---|
128 | ///
|
---|
129 | EfiPciHostBridgeFreeResources,
|
---|
130 |
|
---|
131 | ///
|
---|
132 | /// The resource allocation phase is completed. No specific action is required
|
---|
133 | /// here. This notification can be used to perform any chipset specific programming.
|
---|
134 | ///
|
---|
135 | EfiPciHostBridgeEndResourceAllocation,
|
---|
136 |
|
---|
137 | ///
|
---|
138 | /// The Host Bridge Enumeration is completed. No specific action is required here.
|
---|
139 | /// This notification can be used to perform any chipset specific programming.
|
---|
140 | ///
|
---|
141 | EfiPciHostBridgeEndEnumeration,
|
---|
142 | EfiMaxPciHostBridgeEnumerationPhase
|
---|
143 | } EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PHASE;
|
---|
144 |
|
---|
145 | ///
|
---|
146 | /// Definitions of 2 notification points.
|
---|
147 | ///
|
---|
148 | typedef enum {
|
---|
149 | ///
|
---|
150 | /// This notification is only applicable to PCI-PCI bridges and
|
---|
151 | /// indicates that the PCI enumerator is about to begin enumerating
|
---|
152 | /// the bus behind the PCI-PCI Bridge. This notification is sent after
|
---|
153 | /// the primary bus number, the secondary bus number and the subordinate
|
---|
154 | /// bus number registers in the PCI-PCI Bridge are programmed to valid
|
---|
155 | /// (not necessary final) values
|
---|
156 | ///
|
---|
157 | EfiPciBeforeChildBusEnumeration,
|
---|
158 |
|
---|
159 | ///
|
---|
160 | /// This notification is sent before the PCI enumerator probes BAR registers
|
---|
161 | /// for every valid PCI function.
|
---|
162 | ///
|
---|
163 | EfiPciBeforeResourceCollection
|
---|
164 | } EFI_PCI_CONTROLLER_RESOURCE_ALLOCATION_PHASE;
|
---|
165 |
|
---|
166 | /**
|
---|
167 | These are the notifications from the PCI bus driver that it is about to enter a certain phase of the PCI
|
---|
168 | enumeration process.
|
---|
169 |
|
---|
170 | @param[in] This The pointer to the EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL
|
---|
171 | instance.
|
---|
172 | @param[in] Phase The phase during enumeration.
|
---|
173 |
|
---|
174 | @retval EFI_SUCCESS The notification was accepted without any errors.
|
---|
175 | @retval EFI_INVALID_PARAMETER The Phase is invalid.
|
---|
176 | @retval EFI_NOT_READY This phase cannot be entered at this time. For example, this error
|
---|
177 | is valid for a Phase of EfiPciHostBridgeAllocateResources if
|
---|
178 | SubmitResources() has not been called for one or more
|
---|
179 | PCI root bridges before this call.
|
---|
180 | @retval EFI_DEVICE_ERROR Programming failed due to a hardware error. This error is valid for
|
---|
181 | a Phase of EfiPciHostBridgeSetResources.
|
---|
182 | @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources.
|
---|
183 | This error is valid for a Phase of EfiPciHostBridgeAllocateResources
|
---|
184 | if the previously submitted resource requests cannot be fulfilled or were only
|
---|
185 | partially fulfilled
|
---|
186 |
|
---|
187 | **/
|
---|
188 | typedef
|
---|
189 | EFI_STATUS
|
---|
190 | (EFIAPI *EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_NOTIFY_PHASE)(
|
---|
191 | IN EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL *This,
|
---|
192 | IN EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PHASE Phase
|
---|
193 | );
|
---|
194 |
|
---|
195 | /**
|
---|
196 | Returns the device handle of the next PCI root bridge that is associated with this host bridge.
|
---|
197 |
|
---|
198 | @param[in] This The pointer to the EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL
|
---|
199 | instance.
|
---|
200 | @param[in,out] RootBridgeHandle Returns the device handle of the next PCI root bridge. On input, it holds the
|
---|
201 | RootBridgeHandle that was returned by the most recent call to
|
---|
202 | GetNextRootBridge(). If RootBridgeHandle is NULL on input, the handle
|
---|
203 | for the first PCI root bridge is returned.
|
---|
204 |
|
---|
205 | @retval EFI_SUCCESS The requested attribute information was returned.
|
---|
206 | @retval EFI_INVALID_PARAMETER RootBridgeHandle is not an EFI_HANDLE that was returned
|
---|
207 | on a previous call to GetNextRootBridge().
|
---|
208 | @retval EFI_NOT_FOUND There are no more PCI root bridge device handles.
|
---|
209 |
|
---|
210 | **/
|
---|
211 | typedef
|
---|
212 | EFI_STATUS
|
---|
213 | (EFIAPI *EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_GET_NEXT_ROOT_BRIDGE)(
|
---|
214 | IN EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL *This,
|
---|
215 | IN OUT EFI_HANDLE *RootBridgeHandle
|
---|
216 | );
|
---|
217 |
|
---|
218 | /**
|
---|
219 | Returns the allocation attributes of a PCI root bridge.
|
---|
220 |
|
---|
221 | @param[in] This The pointer to the EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL
|
---|
222 | instance.
|
---|
223 | @param[in] RootBridgeHandle The device handle of the PCI root bridge in which the caller is interested.
|
---|
224 | @param[out] Attribute The pointer to attributes of the PCI root bridge.
|
---|
225 |
|
---|
226 | @retval EFI_SUCCESS The requested attribute information was returned.
|
---|
227 | @retval EFI_INVALID_PARAMETER RootBridgeHandle is not a valid root bridge handle.
|
---|
228 | @retval EFI_INVALID_PARAMETER Attributes is NULL.
|
---|
229 |
|
---|
230 | **/
|
---|
231 | typedef
|
---|
232 | EFI_STATUS
|
---|
233 | (EFIAPI *EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_GET_ATTRIBUTES)(
|
---|
234 | IN EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL *This,
|
---|
235 | IN EFI_HANDLE RootBridgeHandle,
|
---|
236 | OUT UINT64 *Attributes
|
---|
237 | );
|
---|
238 |
|
---|
239 | /**
|
---|
240 | Sets up the specified PCI root bridge for the bus enumeration process.
|
---|
241 |
|
---|
242 | @param[in] This The pointer to the EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL
|
---|
243 | instance.
|
---|
244 | @param[in] RootBridgeHandle The PCI root bridge to be set up.
|
---|
245 | @param[out] Configuration The pointer to the pointer to the PCI bus resource descriptor.
|
---|
246 |
|
---|
247 | @retval EFI_SUCCESS The PCI root bridge was set up and the bus range was returned in
|
---|
248 | Configuration.
|
---|
249 | @retval EFI_INVALID_PARAMETER RootBridgeHandle is not a valid root bridge handle.
|
---|
250 | @retval EFI_DEVICE_ERROR Programming failed due to a hardware error.
|
---|
251 | @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources.
|
---|
252 |
|
---|
253 | **/
|
---|
254 | typedef
|
---|
255 | EFI_STATUS
|
---|
256 | (EFIAPI *EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_START_BUS_ENUMERATION)(
|
---|
257 | IN EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL *This,
|
---|
258 | IN EFI_HANDLE RootBridgeHandle,
|
---|
259 | OUT VOID **Configuration
|
---|
260 | );
|
---|
261 |
|
---|
262 | /**
|
---|
263 | Programs the PCI root bridge hardware so that it decodes the specified PCI bus range.
|
---|
264 |
|
---|
265 | @param[in] This The pointer to the EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL
|
---|
266 | instance.
|
---|
267 | @param[in] RootBridgeHandle The PCI root bridge whose bus range is to be programmed.
|
---|
268 | @param[in] Configuration The pointer to the PCI bus resource descriptor.
|
---|
269 |
|
---|
270 | @retval EFI_SUCCESS The bus range for the PCI root bridge was programmed.
|
---|
271 | @retval EFI_INVALID_PARAMETER RootBridgeHandle is not a valid root bridge handle.
|
---|
272 | @retval EFI_INVALID_PARAMETER Configuration is NULL
|
---|
273 | @retval EFI_INVALID_PARAMETER Configuration does not point to a valid ACPI (2.0 & 3.0)
|
---|
274 | resource descriptor.
|
---|
275 | @retval EFI_INVALID_PARAMETER Configuration does not include a valid ACPI 2.0 bus resource
|
---|
276 | descriptor.
|
---|
277 | @retval EFI_INVALID_PARAMETER Configuration includes valid ACPI (2.0 & 3.0) resource
|
---|
278 | descriptors other than bus descriptors.
|
---|
279 | @retval EFI_INVALID_PARAMETER Configuration contains one or more invalid ACPI resource
|
---|
280 | descriptors.
|
---|
281 | @retval EFI_INVALID_PARAMETER "Address Range Minimum" is invalid for this root bridge.
|
---|
282 | @retval EFI_INVALID_PARAMETER "Address Range Length" is invalid for this root bridge.
|
---|
283 | @retval EFI_DEVICE_ERROR Programming failed due to a hardware error.
|
---|
284 |
|
---|
285 | **/
|
---|
286 | typedef
|
---|
287 | EFI_STATUS
|
---|
288 | (EFIAPI *EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_SET_BUS_NUMBERS)(
|
---|
289 | IN EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL *This,
|
---|
290 | IN EFI_HANDLE RootBridgeHandle,
|
---|
291 | IN VOID *Configuration
|
---|
292 | );
|
---|
293 |
|
---|
294 | /**
|
---|
295 | Submits the I/O and memory resource requirements for the specified PCI root bridge.
|
---|
296 |
|
---|
297 | @param[in] This The pointer to the EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL
|
---|
298 | instance.
|
---|
299 | @param[in] RootBridgeHandle The PCI root bridge whose I/O and memory resource requirements are being
|
---|
300 | submitted.
|
---|
301 | @param[in] Configuration The pointer to the PCI I/O and PCI memory resource descriptor.
|
---|
302 |
|
---|
303 | @retval EFI_SUCCESS The I/O and memory resource requests for a PCI root bridge were
|
---|
304 | accepted.
|
---|
305 | @retval EFI_INVALID_PARAMETER RootBridgeHandle is not a valid root bridge handle.
|
---|
306 | @retval EFI_INVALID_PARAMETER Configuration is NULL.
|
---|
307 | @retval EFI_INVALID_PARAMETER Configuration does not point to a valid ACPI (2.0 & 3.0)
|
---|
308 | resource descriptor.
|
---|
309 | @retval EFI_INVALID_PARAMETER Configuration includes requests for one or more resource
|
---|
310 | types that are not supported by this PCI root bridge. This error will
|
---|
311 | happen if the caller did not combine resources according to
|
---|
312 | Attributes that were returned by GetAllocAttributes().
|
---|
313 | @retval EFI_INVALID_PARAMETER "Address Range Maximum" is invalid.
|
---|
314 | @retval EFI_INVALID_PARAMETER "Address Range Length" is invalid for this PCI root bridge.
|
---|
315 | @retval EFI_INVALID_PARAMETER "Address Space Granularity" is invalid for this PCI root bridge.
|
---|
316 |
|
---|
317 | **/
|
---|
318 | typedef
|
---|
319 | EFI_STATUS
|
---|
320 | (EFIAPI *EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_SUBMIT_RESOURCES)(
|
---|
321 | IN EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL *This,
|
---|
322 | IN EFI_HANDLE RootBridgeHandle,
|
---|
323 | IN VOID *Configuration
|
---|
324 | );
|
---|
325 |
|
---|
326 | /**
|
---|
327 | Returns the proposed resource settings for the specified PCI root bridge.
|
---|
328 |
|
---|
329 | @param[in] This The pointer to the EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL
|
---|
330 | instance.
|
---|
331 | @param[in] RootBridgeHandle The PCI root bridge handle.
|
---|
332 | @param[out] Configuration The pointer to the pointer to the PCI I/O and memory resource descriptor.
|
---|
333 |
|
---|
334 | @retval EFI_SUCCESS The requested parameters were returned.
|
---|
335 | @retval EFI_INVALID_PARAMETER RootBridgeHandle is not a valid root bridge handle.
|
---|
336 | @retval EFI_DEVICE_ERROR Programming failed due to a hardware error.
|
---|
337 | @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources.
|
---|
338 |
|
---|
339 | **/
|
---|
340 | typedef
|
---|
341 | EFI_STATUS
|
---|
342 | (EFIAPI *EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_GET_PROPOSED_RESOURCES)(
|
---|
343 | IN EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL *This,
|
---|
344 | IN EFI_HANDLE RootBridgeHandle,
|
---|
345 | OUT VOID **Configuration
|
---|
346 | );
|
---|
347 |
|
---|
348 | /**
|
---|
349 | Provides the hooks from the PCI bus driver to every PCI controller (device/function) at various
|
---|
350 | stages of the PCI enumeration process that allow the host bridge driver to preinitialize individual
|
---|
351 | PCI controllers before enumeration.
|
---|
352 |
|
---|
353 | @param[in] This The pointer to the EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL instance.
|
---|
354 | @param[in] RootBridgeHandle The associated PCI root bridge handle.
|
---|
355 | @param[in] PciAddress The address of the PCI device on the PCI bus.
|
---|
356 | @param[in] Phase The phase of the PCI device enumeration.
|
---|
357 |
|
---|
358 | @retval EFI_SUCCESS The requested parameters were returned.
|
---|
359 | @retval EFI_INVALID_PARAMETER RootBridgeHandle is not a valid root bridge handle.
|
---|
360 | @retval EFI_INVALID_PARAMETER Phase is not a valid phase that is defined in
|
---|
361 | EFI_PCI_CONTROLLER_RESOURCE_ALLOCATION_PHASE.
|
---|
362 | @retval EFI_DEVICE_ERROR Programming failed due to a hardware error. The PCI enumerator
|
---|
363 | should not enumerate this device, including its child devices if it is
|
---|
364 | a PCI-to-PCI bridge.
|
---|
365 |
|
---|
366 | **/
|
---|
367 | typedef
|
---|
368 | EFI_STATUS
|
---|
369 | (EFIAPI *EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_PREPROCESS_CONTROLLER)(
|
---|
370 | IN EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL *This,
|
---|
371 | IN EFI_HANDLE RootBridgeHandle,
|
---|
372 | IN EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_PCI_ADDRESS PciAddress,
|
---|
373 | IN EFI_PCI_CONTROLLER_RESOURCE_ALLOCATION_PHASE Phase
|
---|
374 | );
|
---|
375 |
|
---|
376 | ///
|
---|
377 | /// Provides the basic interfaces to abstract a PCI host bridge resource allocation.
|
---|
378 | ///
|
---|
379 | struct _EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL {
|
---|
380 | ///
|
---|
381 | /// The notification from the PCI bus enumerator that it is about to enter
|
---|
382 | /// a certain phase during the enumeration process.
|
---|
383 | ///
|
---|
384 | EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_NOTIFY_PHASE NotifyPhase;
|
---|
385 |
|
---|
386 | ///
|
---|
387 | /// Retrieves the device handle for the next PCI root bridge that is produced by the
|
---|
388 | /// host bridge to which this instance of the EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL is attached.
|
---|
389 | ///
|
---|
390 | EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_GET_NEXT_ROOT_BRIDGE GetNextRootBridge;
|
---|
391 |
|
---|
392 | ///
|
---|
393 | /// Retrieves the allocation-related attributes of a PCI root bridge.
|
---|
394 | ///
|
---|
395 | EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_GET_ATTRIBUTES GetAllocAttributes;
|
---|
396 |
|
---|
397 | ///
|
---|
398 | /// Sets up a PCI root bridge for bus enumeration.
|
---|
399 | ///
|
---|
400 | EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_START_BUS_ENUMERATION StartBusEnumeration;
|
---|
401 |
|
---|
402 | ///
|
---|
403 | /// Sets up the PCI root bridge so that it decodes a specific range of bus numbers.
|
---|
404 | ///
|
---|
405 | EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_SET_BUS_NUMBERS SetBusNumbers;
|
---|
406 |
|
---|
407 | ///
|
---|
408 | /// Submits the resource requirements for the specified PCI root bridge.
|
---|
409 | ///
|
---|
410 | EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_SUBMIT_RESOURCES SubmitResources;
|
---|
411 |
|
---|
412 | ///
|
---|
413 | /// Returns the proposed resource assignment for the specified PCI root bridges.
|
---|
414 | ///
|
---|
415 | EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_GET_PROPOSED_RESOURCES GetProposedResources;
|
---|
416 |
|
---|
417 | ///
|
---|
418 | /// Provides hooks from the PCI bus driver to every PCI controller
|
---|
419 | /// (device/function) at various stages of the PCI enumeration process that
|
---|
420 | /// allow the host bridge driver to preinitialize individual PCI controllers
|
---|
421 | /// before enumeration.
|
---|
422 | ///
|
---|
423 | EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_PREPROCESS_CONTROLLER PreprocessController;
|
---|
424 | };
|
---|
425 |
|
---|
426 | extern EFI_GUID gEfiPciHostBridgeResourceAllocationProtocolGuid;
|
---|
427 |
|
---|
428 | #endif
|
---|