## @file
|
# Instance of PCI Express Library using the 256 MB PCI Express MMIO window.
|
#
|
# PCI Express Library that uses the 256 MB PCI Express MMIO window to perform
|
# PCI Configuration cycles. Layers on top of an I/O Library instance.
|
#
|
# Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.
|
#
|
# This library is inherited from MdePkg/Library/BasePciExpressLib. On
|
# NeoverseN1 SoC, with the unmodified version of this library, a slave error is
|
# generated when host accesses the config space of a non-available device or
|
# unimplemented function on a given bus. In order to resolve this for
|
# NeoverseN1 SoC, a modified version of the MdePkg/Library/BasePciExpressLib
|
# library is used. The modification includes a check to determine whether the
|
# incoming PCI address can be safely accessed.
|
#
|
# In addition to this, the NeoverseN1 SoC has two other limitations which
|
# affect the access to the PCIe root port:
|
# 1. ECAM space is not contiguous, root port ECAM (BDF = 0:0:0) is isolated
|
# from rest of the downstream hierarchy ECAM space.
|
# 2. Root port ECAM space is not capable of 8bit/16bit writes.
|
# This library includes workaround for these limitations as well.
|
#
|
# Copyright (c) 2020, ARM Limited. All rights reserved.
|
#
|
# SPDX-License-Identifier: BSD-2-Clause-Patent
|
#
|
##
|
|
[Defines]
|
INF_VERSION = 0x0001001A
|
BASE_NAME = BasePciExpressLib
|
FILE_GUID = b378dd06-de7f-4e8c-8fb0-5126adfb34bf
|
MODULE_TYPE = BASE
|
VERSION_STRING = 1.0
|
LIBRARY_CLASS = PciExpressLib
|
|
[Sources]
|
PciExpressLib.c
|
|
[Packages]
|
MdePkg/MdePkg.dec
|
Silicon/ARM/NeoverseN1Soc/NeoverseN1Soc.dec
|
|
[FixedPcd]
|
gArmNeoverseN1SocTokenSpaceGuid.PcdPcieRootPortConfigBaseAddress
|
gArmNeoverseN1SocTokenSpaceGuid.PcdPcieRootPortConfigBaseSize
|
|
[LibraryClasses]
|
BaseLib
|
DebugLib
|
IoLib
|
PcdLib
|
|
[Pcd]
|
gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseAddress ## CONSUMES
|