2 SSDT Pcie Table Generator.
4 Copyright (c) 2021, Arm Limited. All rights reserved.<BR>
5 SPDX-License-Identifier: BSD-2-Clause-Patent
8 - PCI Firmware Specification - Revision 3.0
9 - ACPI 6.4 specification:
10 - s6.2.13 "_PRT (PCI Routing Table)"
11 - s6.1.1 "_ADR (Address)"
13 - Arm Base Boot Requirements v1.0
16 #ifndef SSDT_PCIE_GENERATOR_H_
17 #define SSDT_PCIE_GENERATOR_H_
19 /** Pci address attributes.
21 This can also be denoted as space code, address space or ss.
23 #define PCI_SS_CONFIG 0
28 /** Maximum Pci root complexes supported by this generator.
30 Note: This is not a hard limitation and can be extended if needed.
31 Corresponding changes would be needed to support the Name and
32 UID fields describing the Pci root complexes.
34 #define MAX_PCI_ROOT_COMPLEXES_SUPPORTED 256
36 // _SB scope of the AML namespace.
37 #define SB_SCOPE "\\_SB_"
39 /** C array containing the compiled AML template.
40 This symbol is defined in the auto generated C file
41 containing the AML bytecode array.
43 extern CHAR8 ssdtpcieosctemplate_aml_code
[];
47 /** Structure used to map integer to an index.
49 typedef struct MappingTable
{
51 /// Contains the Index <-> integer mapping
54 /// Last used index of the Table.
55 /// Bound by MaxIndex.
58 /// Number of entries in the Table.
62 /** A structure holding the Pcie generator and additional private data.
64 typedef struct AcpiPcieGenerator
{
65 /// ACPI Table generator header
66 ACPI_TABLE_GENERATOR Header
;
68 // Private fields are defined from here.
70 /// Table to map: Index <-> Pci device
71 MAPPING_TABLE DeviceTable
;
76 #endif // SSDT_PCIE_GENERATOR_H_