DynamicTablesPkg: AcpiSsdtPcieLibArm: Create support library
Add support library to allow for customization of _OSC and slot info. The functions in the library are unchanged, with the exception of adding PciInfo pointer to the APIs. Signed-off-by: Jeff Brasen <jbrasen@nvidia.com> Reviewed-by: Pierre Gondois <pierre.gondois@arm.com> Reviewed-by: Sami Mujawar <sami.mujawar@arm.com>
This commit is contained in:
committed by
mergify[bot]
parent
9ac155bf0b
commit
19a8768365
73
DynamicTablesPkg/Include/Library/SsdtPcieSupportLib.h
Normal file
73
DynamicTablesPkg/Include/Library/SsdtPcieSupportLib.h
Normal file
@@ -0,0 +1,73 @@
|
||||
/** @file
|
||||
Ssdt PCIe Support Library
|
||||
|
||||
Copyright (c) 2021 - 2022, Arm Limited. All rights reserved.<BR>
|
||||
|
||||
SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
**/
|
||||
|
||||
#ifndef SSDT_PCIE_SUPPORT_LIB_H_
|
||||
#define SSDT_PCIE_SUPPORT_LIB_H_
|
||||
|
||||
#pragma pack(1)
|
||||
|
||||
/** Structure used to map integer to an index.
|
||||
*/
|
||||
typedef struct MappingTable {
|
||||
/// Mapping table.
|
||||
/// Contains the Index <-> integer mapping
|
||||
UINT32 *Table;
|
||||
|
||||
/// Last used index of the Table.
|
||||
/// Bound by MaxIndex.
|
||||
UINT32 LastIndex;
|
||||
|
||||
/// Number of entries in the Table.
|
||||
UINT32 MaxIndex;
|
||||
} MAPPING_TABLE;
|
||||
|
||||
#pragma pack()
|
||||
|
||||
/** Add an _OSC template method to the PciNode.
|
||||
|
||||
The _OSC method is provided as an AML blob. The blob is
|
||||
parsed and attached at the end of the PciNode list of variable elements.
|
||||
|
||||
@param [in] PciInfo Pci device information.
|
||||
@param [in, out] PciNode Pci node to amend.
|
||||
|
||||
@retval EFI_SUCCESS The function completed successfully.
|
||||
@retval EFI_INVALID_PARAMETER Invalid parameter.
|
||||
@retval EFI_OUT_OF_RESOURCES Could not allocate memory.
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
AddOscMethod (
|
||||
IN CONST CM_ARM_PCI_CONFIG_SPACE_INFO *PciInfo,
|
||||
IN OUT AML_OBJECT_NODE_HANDLE PciNode
|
||||
);
|
||||
|
||||
/** Generate Pci slots devices.
|
||||
|
||||
PCI Firmware Specification - Revision 3.3,
|
||||
s4.8 "Generic ACPI PCI Slot Description" requests to describe the PCI slot
|
||||
used. It should be possible to enumerate them, but this is additional
|
||||
information.
|
||||
|
||||
@param [in] PciInfo Pci device information.
|
||||
@param [in] MappingTable The mapping table structure.
|
||||
@param [in, out] PciNode Pci node to amend.
|
||||
|
||||
@retval EFI_SUCCESS Success.
|
||||
@retval EFI_INVALID_PARAMETER Invalid parameter.
|
||||
@retval EFI_OUT_OF_RESOURCES Failed to allocate memory.
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
GeneratePciSlots (
|
||||
IN CONST CM_ARM_PCI_CONFIG_SPACE_INFO *PciInfo,
|
||||
IN CONST MAPPING_TABLE *MappingTable,
|
||||
IN OUT AML_OBJECT_NODE_HANDLE PciNode
|
||||
);
|
||||
|
||||
#endif // SSDT_PCIE_SUPPORT_LIB_H_
|
Reference in New Issue
Block a user