mirror of https://github.com/acidanthera/audk.git
72 lines
2.3 KiB
C
72 lines
2.3 KiB
C
/** @file
|
|
Instance of Base PCI Segment Library that support multi-segment PCI configuration access.
|
|
|
|
PCI Segment Library that consumes segment information provided by PciSegmentInfoLib to
|
|
support multi-segment PCI configuration access through enhanced configuration access mechanism.
|
|
|
|
Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
|
|
This program and the accompanying materials are
|
|
licensed and made available under the terms and conditions of
|
|
the BSD License which accompanies this distribution. The full
|
|
text of the license may be found at
|
|
http://opensource.org/licenses/bsd-license.php.
|
|
|
|
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
|
|
**/
|
|
|
|
#include "PciSegmentLibCommon.h"
|
|
|
|
/**
|
|
Return the virtual address for the physical address.
|
|
|
|
@param Address The physical address.
|
|
|
|
@retval The virtual address.
|
|
**/
|
|
UINTN
|
|
PciSegmentLibVirtualAddress (
|
|
IN UINTN Address
|
|
)
|
|
{
|
|
return Address;
|
|
}
|
|
|
|
/**
|
|
Register a PCI device so PCI configuration registers may be accessed after
|
|
SetVirtualAddressMap().
|
|
|
|
If any reserved bits in Address are set, then ASSERT().
|
|
|
|
@param Address The address that encodes the PCI Bus, Device, Function and
|
|
Register.
|
|
|
|
@retval RETURN_SUCCESS The PCI device was registered for runtime access.
|
|
@retval RETURN_UNSUPPORTED An attempt was made to call this function
|
|
after ExitBootServices().
|
|
@retval RETURN_UNSUPPORTED The resources required to access the PCI device
|
|
at runtime could not be mapped.
|
|
@retval RETURN_OUT_OF_RESOURCES There are not enough resources available to
|
|
complete the registration.
|
|
|
|
**/
|
|
RETURN_STATUS
|
|
EFIAPI
|
|
PciSegmentRegisterForRuntimeAccess (
|
|
IN UINTN Address
|
|
)
|
|
{
|
|
//
|
|
// Use PciSegmentLibGetEcamAddress() to validate the Address.
|
|
//
|
|
DEBUG_CODE (
|
|
UINTN Count;
|
|
PCI_SEGMENT_INFO *SegmentInfo;
|
|
|
|
SegmentInfo = GetPciSegmentInfo (&Count);
|
|
PciSegmentLibGetEcamAddress (Address, SegmentInfo, Count);
|
|
);
|
|
return RETURN_SUCCESS;
|
|
}
|