TianoCore EDK2 master
Loading...
Searching...
No Matches
PciHostBridge.h
Go to the documentation of this file.
1
10#ifndef _PCI_HOST_BRIDGE_H_
11#define _PCI_HOST_BRIDGE_H_
12
13#include <PiDxe.h>
19#include <Protocol/IoMmu.h>
20
21#include "PciRootBridge.h"
22
23#define PCI_HOST_BRIDGE_SIGNATURE SIGNATURE_32 ('p', 'h', 'b', 'g')
24typedef struct {
25 UINTN Signature;
26 EFI_HANDLE Handle;
27 LIST_ENTRY RootBridges;
28 BOOLEAN CanRestarted;
31
32#define PCI_HOST_BRIDGE_FROM_THIS(a) CR (a, PCI_HOST_BRIDGE_INSTANCE, ResAlloc, PCI_HOST_BRIDGE_SIGNATURE)
33
34//
35// Macros to translate device address to host address and vice versa. According
36// to UEFI 2.7, device address = host address + translation offset.
37//
38#define TO_HOST_ADDRESS(DeviceAddress, TranslationOffset) ((DeviceAddress) - (TranslationOffset))
39#define TO_DEVICE_ADDRESS(HostAddress, TranslationOffset) ((HostAddress) + (TranslationOffset))
40
41//
42// Driver Entry Point
43//
44
57EFIAPI
59 IN EFI_HANDLE ImageHandle,
60 IN EFI_SYSTEM_TABLE *SystemTable
61 );
62
63//
64// HostBridge Resource Allocation interface
65//
66
80EFIAPI
84 );
85
103EFIAPI
106 IN OUT EFI_HANDLE *RootBridgeHandle
107 );
108
126EFIAPI
129 IN EFI_HANDLE RootBridgeHandle,
130 OUT UINT64 *Attributes
131 );
132
148EFIAPI
151 IN EFI_HANDLE RootBridgeHandle,
152 OUT VOID **Configuration
153 );
154
169EFIAPI
172 IN EFI_HANDLE RootBridgeHandle,
173 IN VOID *Configuration
174 );
175
190EFIAPI
193 IN EFI_HANDLE RootBridgeHandle,
194 IN VOID *Configuration
195 );
196
213EFIAPI
216 IN EFI_HANDLE RootBridgeHandle,
217 OUT VOID **Configuration
218 );
219
235EFIAPI
238 IN EFI_HANDLE RootBridgeHandle,
241 );
242
248VOID
250 IN PCI_HOST_BRIDGE_INSTANCE *HostBridge
251 );
252
261UINT64
263 IN PCI_ROOT_BRIDGE_INSTANCE *RootBridge,
264 IN PCI_RESOURCE_TYPE ResourceType
265 );
266
267extern EFI_CPU_IO2_PROTOCOL *mCpuIo;
268extern EDKII_IOMMU_PROTOCOL *mIoMmu;
269
270#endif
UINT64 UINTN
EFI_STATUS EFIAPI GetNextRootBridge(IN EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL *This, IN OUT EFI_HANDLE *RootBridgeHandle)
EFI_STATUS EFIAPI NotifyPhase(IN EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL *This, IN EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PHASE Phase)
EFI_STATUS EFIAPI PreprocessController(IN EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL *This, IN EFI_HANDLE RootBridgeHandle, IN EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_PCI_ADDRESS PciAddress, IN EFI_PCI_CONTROLLER_RESOURCE_ALLOCATION_PHASE Phase)
EFI_STATUS EFIAPI StartBusEnumeration(IN EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL *This, IN EFI_HANDLE RootBridgeHandle, OUT VOID **Configuration)
EFI_STATUS EFIAPI InitializePciHostBridge(IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable)
EFI_STATUS EFIAPI GetAttributes(IN EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL *This, IN EFI_HANDLE RootBridgeHandle, OUT UINT64 *Attributes)
EFI_STATUS EFIAPI SetBusNumbers(IN EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL *This, IN EFI_HANDLE RootBridgeHandle, IN VOID *Configuration)
VOID ResourceConflict(IN PCI_HOST_BRIDGE_INSTANCE *HostBridge)
UINT64 GetTranslationByResourceType(IN PCI_ROOT_BRIDGE_INSTANCE *RootBridge, IN PCI_RESOURCE_TYPE ResourceType)
Definition: PciHostBridge.c:36
EFI_STATUS EFIAPI GetProposedResources(IN EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL *This, IN EFI_HANDLE RootBridgeHandle, OUT VOID **Configuration)
EFI_STATUS EFIAPI SubmitResources(IN EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL *This, IN EFI_HANDLE RootBridgeHandle, IN VOID *Configuration)
#define VOID
Definition: Base.h:269
#define IN
Definition: Base.h:279
#define OUT
Definition: Base.h:284
EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PHASE
EFI_PCI_CONTROLLER_RESOURCE_ALLOCATION_PHASE
RETURN_STATUS EFI_STATUS
Definition: UefiBaseType.h:29
VOID * EFI_HANDLE
Definition: UefiBaseType.h:33