blob: 7410f9ffd4a46735d9b5c62d46206a65fe70d54b [file] [log] [blame]
/** @file
SSDT Pcie Table Generator.
Copyright (c) 2021, Arm Limited. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
@par Reference(s):
- PCI Firmware Specification - Revision 3.0
- ACPI 6.4 specification:
- s6.2.13 "_PRT (PCI Routing Table)"
- s6.1.1 "_ADR (Address)"
- linux kernel code
- Arm Base Boot Requirements v1.0
**/
#ifndef SSDT_PCIE_GENERATOR_H_
#define SSDT_PCIE_GENERATOR_H_
/** Pci address attributes.
This can also be denoted as space code, address space or ss.
*/
#define PCI_SS_CONFIG 0
#define PCI_SS_IO 1
#define PCI_SS_M32 2
#define PCI_SS_M64 3
/** Maximum Pci root complexes supported by this generator.
Note: This is not a hard limitation and can be extended if needed.
Corresponding changes would be needed to support the Name and
UID fields describing the Pci root complexes.
*/
#define MAX_PCI_ROOT_COMPLEXES_SUPPORTED 256
// _SB scope of the AML namespace.
#define SB_SCOPE "\\_SB_"
#pragma pack(1)
/** A structure holding the Pcie generator and additional private data.
*/
typedef struct AcpiPcieGenerator {
/// ACPI Table generator header
ACPI_TABLE_GENERATOR Header;
// Private fields are defined from here.
/// Table to map: Index <-> Pci device
MAPPING_TABLE DeviceTable;
} ACPI_PCI_GENERATOR;
#pragma pack()
#endif // SSDT_PCIE_GENERATOR_H_