SsdtPcieGenerator.h 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. /** @file
  2. SSDT Pcie Table Generator.
  3. Copyright (c) 2021, Arm Limited. All rights reserved.<BR>
  4. SPDX-License-Identifier: BSD-2-Clause-Patent
  5. @par Reference(s):
  6. - PCI Firmware Specification - Revision 3.0
  7. - ACPI 6.4 specification:
  8. - s6.2.13 "_PRT (PCI Routing Table)"
  9. - s6.1.1 "_ADR (Address)"
  10. - linux kernel code
  11. - Arm Base Boot Requirements v1.0
  12. **/
  13. #ifndef SSDT_PCIE_GENERATOR_H_
  14. #define SSDT_PCIE_GENERATOR_H_
  15. /** Pci address attributes.
  16. This can also be denoted as space code, address space or ss.
  17. */
  18. #define PCI_SS_CONFIG 0
  19. #define PCI_SS_IO 1
  20. #define PCI_SS_M32 2
  21. #define PCI_SS_M64 3
  22. /** Maximum Pci root complexes supported by this generator.
  23. Note: This is not a hard limitation and can be extended if needed.
  24. Corresponding changes would be needed to support the Name and
  25. UID fields describing the Pci root complexes.
  26. */
  27. #define MAX_PCI_ROOT_COMPLEXES_SUPPORTED 256
  28. // _SB scope of the AML namespace.
  29. #define SB_SCOPE "\\_SB_"
  30. #pragma pack(1)
  31. /** A structure holding the Pcie generator and additional private data.
  32. */
  33. typedef struct AcpiPcieGenerator {
  34. /// ACPI Table generator header
  35. ACPI_TABLE_GENERATOR Header;
  36. // Private fields are defined from here.
  37. /// Table to map: Index <-> Pci device
  38. MAPPING_TABLE DeviceTable;
  39. } ACPI_PCI_GENERATOR;
  40. #pragma pack()
  41. #endif // SSDT_PCIE_GENERATOR_H_