| /** @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] Uid Unique Id of the Pci device. | |
| @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 UINT32 Uid, | |
| IN OUT AML_OBJECT_NODE_HANDLE PciNode | |
| ); | |
| #endif // SSDT_PCIE_SUPPORT_LIB_H_ |