From 9ac155bf0b875f5df29ff4389107e2ec2ee3807e Mon Sep 17 00:00:00 2001 From: Jeff Brasen Date: Fri, 8 Jul 2022 14:59:02 -0600 Subject: [PATCH] DynamicTablesPkg: AcpiSsdtPcieLibArm: Support UID > 0xF Add support for PCIe devices with UID > 0xF. This is done by using the next value in the name so PCI5, PC26, etc Signed-off-by: Jeff Brasen Reviewed-by: Pierre Gondois Reviewed-by: Sami Mujawar --- .../Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieGenerator.c | 5 ++++- .../Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieGenerator.h | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieGenerator.c b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieGenerator.c index 3c20d928ce..3b3d904dbe 100644 --- a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieGenerator.c +++ b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieGenerator.c @@ -824,7 +824,10 @@ GeneratePciDevice ( // Write the name of the PCI device. CopyMem (AslName, "PCIx", AML_NAME_SEG_SIZE + 1); - AslName[AML_NAME_SEG_SIZE - 1] = AsciiFromHex (Uid); + AslName[AML_NAME_SEG_SIZE - 1] = AsciiFromHex (Uid & 0xF); + if (Uid > 0xF) { + AslName[AML_NAME_SEG_SIZE - 2] = AsciiFromHex ((Uid >> 4) & 0xF); + } // ASL: Device (PCIx) {} Status = AmlCodeGenDevice (AslName, ScopeNode, &PciNode); diff --git a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieGenerator.h b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieGenerator.h index 59a0d601a3..515a3e1785 100644 --- a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieGenerator.h +++ b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieGenerator.h @@ -31,7 +31,7 @@ Corresponding changes would be needed to support the Name and UID fields describing the Pci root complexes. */ -#define MAX_PCI_ROOT_COMPLEXES_SUPPORTED 16 +#define MAX_PCI_ROOT_COMPLEXES_SUPPORTED 256 // _SB scope of the AML namespace. #define SB_SCOPE "\\_SB_"