]> git.proxmox.com Git - mirror_edk2.git/blob - MdeModulePkg/Bus/Pci/PciBusDxe/PciLib.h
10b435d146117894abaf4d8130484d520ec49b8c
[mirror_edk2.git] / MdeModulePkg / Bus / Pci / PciBusDxe / PciLib.h
1 /** @file
2 Internal library declaration for PCI Bus module.
3
4 Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
5 SPDX-License-Identifier: BSD-2-Clause-Patent
6
7 **/
8
9 #ifndef _EFI_PCI_LIB_H_
10 #define _EFI_PCI_LIB_H_
11
12
13 typedef struct {
14 EFI_HANDLE Handle;
15 } EFI_DEVICE_HANDLE_EXTENDED_DATA_PAYLOAD;
16
17 typedef struct {
18 UINT32 Bar;
19 UINT16 DevicePathSize;
20 UINT16 ReqResSize;
21 UINT16 AllocResSize;
22 UINT8 *DevicePath;
23 UINT8 *ReqRes;
24 UINT8 *AllocRes;
25 } EFI_RESOURCE_ALLOC_FAILURE_ERROR_DATA_PAYLOAD;
26
27
28 /**
29 Retrieve the PCI Card device BAR information via PciIo interface.
30
31 @param PciIoDevice PCI Card device instance.
32
33 **/
34 VOID
35 GetBackPcCardBar (
36 IN PCI_IO_DEVICE *PciIoDevice
37 );
38
39 /**
40 Remove rejected pci device from specific root bridge
41 handle.
42
43 @param RootBridgeHandle Specific parent root bridge handle.
44 @param Bridge Bridge device instance.
45
46 **/
47 VOID
48 RemoveRejectedPciDevices (
49 IN EFI_HANDLE RootBridgeHandle,
50 IN PCI_IO_DEVICE *Bridge
51 );
52
53 /**
54 Submits the I/O and memory resource requirements for the specified PCI Host Bridge.
55
56 @param PciResAlloc Point to protocol instance of EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL.
57
58 @retval EFI_SUCCESS Successfully finished resource allocation.
59 @retval EFI_NOT_FOUND Cannot get root bridge instance.
60 @retval EFI_OUT_OF_RESOURCES Platform failed to program the resources if no hot plug supported.
61 @retval other Some error occurred when allocating resources for the PCI Host Bridge.
62
63 @note Feature flag PcdPciBusHotplugDeviceSupport determine whether need support hotplug.
64
65 **/
66 EFI_STATUS
67 PciHostBridgeResourceAllocator (
68 IN EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL *PciResAlloc
69 );
70
71 /**
72 Allocate NumberOfBuses buses and return the next available PCI bus number.
73
74 @param Bridge Bridge device instance.
75 @param StartBusNumber Current available PCI bus number.
76 @param NumberOfBuses Number of buses enumerated below the StartBusNumber.
77 @param NextBusNumber Next available PCI bus number.
78
79 @retval EFI_SUCCESS Available bus number resource is enough. Next available PCI bus number
80 is returned in NextBusNumber.
81 @retval EFI_OUT_OF_RESOURCES Available bus number resource is not enough for allocation.
82
83 **/
84 EFI_STATUS
85 PciAllocateBusNumber (
86 IN PCI_IO_DEVICE *Bridge,
87 IN UINT8 StartBusNumber,
88 IN UINT8 NumberOfBuses,
89 OUT UINT8 *NextBusNumber
90 );
91
92 /**
93 Scan pci bus and assign bus number to the given PCI bus system.
94
95 @param Bridge Bridge device instance.
96 @param StartBusNumber start point.
97 @param SubBusNumber Point to sub bus number.
98 @param PaddedBusRange Customized bus number.
99
100 @retval EFI_SUCCESS Successfully scanned and assigned bus number.
101 @retval other Some error occurred when scanning pci bus.
102
103 @note Feature flag PcdPciBusHotplugDeviceSupport determine whether need support hotplug.
104
105 **/
106 EFI_STATUS
107 PciScanBus (
108 IN PCI_IO_DEVICE *Bridge,
109 IN UINT8 StartBusNumber,
110 OUT UINT8 *SubBusNumber,
111 OUT UINT8 *PaddedBusRange
112 );
113
114 /**
115 Process Option Rom on the specified root bridge.
116
117 @param Bridge Pci root bridge device instance.
118
119 @retval EFI_SUCCESS Success process.
120 @retval other Some error occurred when processing Option Rom on the root bridge.
121
122 **/
123 EFI_STATUS
124 PciRootBridgeP2CProcess (
125 IN PCI_IO_DEVICE *Bridge
126 );
127
128 /**
129 Process Option Rom on the specified host bridge.
130
131 @param PciResAlloc Pointer to instance of EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL.
132
133 @retval EFI_SUCCESS Success process.
134 @retval EFI_NOT_FOUND Can not find the root bridge instance.
135 @retval other Some error occurred when processing Option Rom on the host bridge.
136
137 **/
138 EFI_STATUS
139 PciHostBridgeP2CProcess (
140 IN EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL *PciResAlloc
141 );
142
143 /**
144 This function is used to enumerate the entire host bridge
145 in a given platform.
146
147 @param PciResAlloc A pointer to the PCI Host Resource Allocation protocol.
148
149 @retval EFI_SUCCESS Successfully enumerated the host bridge.
150 @retval EFI_OUT_OF_RESOURCES No enough memory available.
151 @retval other Some error occurred when enumerating the host bridge.
152
153 **/
154 EFI_STATUS
155 PciHostBridgeEnumerator (
156 IN EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL *PciResAlloc
157 );
158
159 #endif