2009-10-20 05:43:40 +02:00
|
|
|
/** @file
|
|
|
|
Internal library declaration for PCI Bus module.
|
|
|
|
|
2011-10-28 11:59:40 +02:00
|
|
|
Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
|
2019-04-04 01:05:13 +02:00
|
|
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
2009-10-20 05:43:40 +02:00
|
|
|
|
|
|
|
**/
|
|
|
|
|
|
|
|
#ifndef _EFI_PCI_LIB_H_
|
|
|
|
#define _EFI_PCI_LIB_H_
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
EFI_HANDLE Handle;
|
|
|
|
} EFI_DEVICE_HANDLE_EXTENDED_DATA_PAYLOAD;
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
UINT32 Bar;
|
|
|
|
UINT16 DevicePathSize;
|
|
|
|
UINT16 ReqResSize;
|
|
|
|
UINT16 AllocResSize;
|
|
|
|
UINT8 *DevicePath;
|
|
|
|
UINT8 *ReqRes;
|
|
|
|
UINT8 *AllocRes;
|
|
|
|
} EFI_RESOURCE_ALLOC_FAILURE_ERROR_DATA_PAYLOAD;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
Retrieve the PCI Card device BAR information via PciIo interface.
|
|
|
|
|
|
|
|
@param PciIoDevice PCI Card device instance.
|
|
|
|
|
|
|
|
**/
|
|
|
|
VOID
|
|
|
|
GetBackPcCardBar (
|
|
|
|
IN PCI_IO_DEVICE *PciIoDevice
|
|
|
|
);
|
|
|
|
|
|
|
|
/**
|
|
|
|
Remove rejected pci device from specific root bridge
|
|
|
|
handle.
|
|
|
|
|
|
|
|
@param RootBridgeHandle Specific parent root bridge handle.
|
|
|
|
@param Bridge Bridge device instance.
|
|
|
|
|
|
|
|
**/
|
|
|
|
VOID
|
|
|
|
RemoveRejectedPciDevices (
|
|
|
|
IN EFI_HANDLE RootBridgeHandle,
|
|
|
|
IN PCI_IO_DEVICE *Bridge
|
|
|
|
);
|
|
|
|
|
|
|
|
/**
|
|
|
|
Submits the I/O and memory resource requirements for the specified PCI Host Bridge.
|
|
|
|
|
|
|
|
@param PciResAlloc Point to protocol instance of EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL.
|
|
|
|
|
|
|
|
@retval EFI_SUCCESS Successfully finished resource allocation.
|
|
|
|
@retval EFI_NOT_FOUND Cannot get root bridge instance.
|
|
|
|
@retval EFI_OUT_OF_RESOURCES Platform failed to program the resources if no hot plug supported.
|
|
|
|
@retval other Some error occurred when allocating resources for the PCI Host Bridge.
|
|
|
|
|
|
|
|
@note Feature flag PcdPciBusHotplugDeviceSupport determine whether need support hotplug.
|
|
|
|
|
|
|
|
**/
|
|
|
|
EFI_STATUS
|
|
|
|
PciHostBridgeResourceAllocator (
|
|
|
|
IN EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL *PciResAlloc
|
|
|
|
);
|
|
|
|
|
2011-10-28 11:59:40 +02:00
|
|
|
/**
|
|
|
|
Allocate NumberOfBuses buses and return the next available PCI bus number.
|
|
|
|
|
|
|
|
@param Bridge Bridge device instance.
|
|
|
|
@param StartBusNumber Current available PCI bus number.
|
|
|
|
@param NumberOfBuses Number of buses enumerated below the StartBusNumber.
|
|
|
|
@param NextBusNumber Next available PCI bus number.
|
|
|
|
|
|
|
|
@retval EFI_SUCCESS Available bus number resource is enough. Next available PCI bus number
|
|
|
|
is returned in NextBusNumber.
|
|
|
|
@retval EFI_OUT_OF_RESOURCES Available bus number resource is not enough for allocation.
|
|
|
|
|
|
|
|
**/
|
|
|
|
EFI_STATUS
|
|
|
|
PciAllocateBusNumber (
|
|
|
|
IN PCI_IO_DEVICE *Bridge,
|
|
|
|
IN UINT8 StartBusNumber,
|
|
|
|
IN UINT8 NumberOfBuses,
|
|
|
|
OUT UINT8 *NextBusNumber
|
|
|
|
);
|
|
|
|
|
2009-10-20 05:43:40 +02:00
|
|
|
/**
|
|
|
|
Scan pci bus and assign bus number to the given PCI bus system.
|
|
|
|
|
|
|
|
@param Bridge Bridge device instance.
|
|
|
|
@param StartBusNumber start point.
|
|
|
|
@param SubBusNumber Point to sub bus number.
|
|
|
|
@param PaddedBusRange Customized bus number.
|
|
|
|
|
|
|
|
@retval EFI_SUCCESS Successfully scanned and assigned bus number.
|
|
|
|
@retval other Some error occurred when scanning pci bus.
|
|
|
|
|
|
|
|
@note Feature flag PcdPciBusHotplugDeviceSupport determine whether need support hotplug.
|
|
|
|
|
|
|
|
**/
|
|
|
|
EFI_STATUS
|
|
|
|
PciScanBus (
|
|
|
|
IN PCI_IO_DEVICE *Bridge,
|
|
|
|
IN UINT8 StartBusNumber,
|
|
|
|
OUT UINT8 *SubBusNumber,
|
|
|
|
OUT UINT8 *PaddedBusRange
|
|
|
|
);
|
|
|
|
|
|
|
|
/**
|
|
|
|
Process Option Rom on the specified root bridge.
|
|
|
|
|
|
|
|
@param Bridge Pci root bridge device instance.
|
|
|
|
|
|
|
|
@retval EFI_SUCCESS Success process.
|
|
|
|
@retval other Some error occurred when processing Option Rom on the root bridge.
|
|
|
|
|
|
|
|
**/
|
|
|
|
EFI_STATUS
|
|
|
|
PciRootBridgeP2CProcess (
|
|
|
|
IN PCI_IO_DEVICE *Bridge
|
|
|
|
);
|
|
|
|
|
|
|
|
/**
|
|
|
|
Process Option Rom on the specified host bridge.
|
|
|
|
|
|
|
|
@param PciResAlloc Pointer to instance of EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL.
|
|
|
|
|
|
|
|
@retval EFI_SUCCESS Success process.
|
|
|
|
@retval EFI_NOT_FOUND Can not find the root bridge instance.
|
|
|
|
@retval other Some error occurred when processing Option Rom on the host bridge.
|
|
|
|
|
|
|
|
**/
|
|
|
|
EFI_STATUS
|
|
|
|
PciHostBridgeP2CProcess (
|
|
|
|
IN EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL *PciResAlloc
|
|
|
|
);
|
|
|
|
|
|
|
|
/**
|
|
|
|
This function is used to enumerate the entire host bridge
|
|
|
|
in a given platform.
|
|
|
|
|
|
|
|
@param PciResAlloc A pointer to the PCI Host Resource Allocation protocol.
|
|
|
|
|
|
|
|
@retval EFI_SUCCESS Successfully enumerated the host bridge.
|
|
|
|
@retval EFI_OUT_OF_RESOURCES No enough memory available.
|
|
|
|
@retval other Some error occurred when enumerating the host bridge.
|
|
|
|
|
|
|
|
**/
|
|
|
|
EFI_STATUS
|
|
|
|
PciHostBridgeEnumerator (
|
|
|
|
IN EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL *PciResAlloc
|
|
|
|
);
|
|
|
|
|
|
|
|
#endif
|