/** @file | |
Provide common routines used by BasePciSegmentLibSegmentInfo and | |
DxeRuntimePciSegmentLibSegmentInfo libraries. | |
Copyright (c) 2017, Intel Corporation. All rights reserved.<BR> | |
SPDX-License-Identifier: BSD-2-Clause-Patent | |
**/ | |
#ifndef _PCI_SEGMENT_LIB_COMMON_H_ | |
#define _PCI_SEGMENT_LIB_COMMON_H_ | |
#include <Base.h> | |
#include <IndustryStandard/PciExpress21.h> | |
#include <Library/BaseLib.h> | |
#include <Library/DebugLib.h> | |
#include <Library/IoLib.h> | |
#include <Library/PciSegmentLib.h> | |
#include <Library/PciSegmentInfoLib.h> | |
/** | |
Return the linear address for the physical address. | |
@param Address The physical address. | |
@retval The linear address. | |
**/ | |
UINTN | |
PciSegmentLibVirtualAddress ( | |
IN UINTN Address | |
); | |
/** | |
Internal function that converts PciSegmentLib format address that encodes the PCI Bus, Device, | |
Function and Register to ECAM (Enhanced Configuration Access Mechanism) address. | |
@param Address The address that encodes the PCI Bus, Device, Function and | |
Register. | |
@param SegmentInfo An array of PCI_SEGMENT_INFO holding the segment information. | |
@param Count Number of segments. | |
@retval ECAM address. | |
**/ | |
UINTN | |
PciSegmentLibGetEcamAddress ( | |
IN UINT64 Address, | |
IN CONST PCI_SEGMENT_INFO *SegmentInfo, | |
IN UINTN Count | |
); | |
#endif |