Add support for selecting to use index or segment number as UID and name.

This allows the path of the nodes to be well known.



Signed-off-by: Jeff Brasen <jbra...@nvidia.com>

---

 DynamicTablesPkg/DynamicTablesPkg.dec         |  3 +++

 .../AcpiSsdtPcieLibArm/SsdtPcieGenerator.c    | 19 ++++++++++++++++++-

 .../Arm/AcpiSsdtPcieLibArm/SsdtPcieLibArm.inf |  3 +++

 3 files changed, 24 insertions(+), 1 deletion(-)



diff --git a/DynamicTablesPkg/DynamicTablesPkg.dec 
b/DynamicTablesPkg/DynamicTablesPkg.dec

index 9b74c5a671..a890a048be 100644

--- a/DynamicTablesPkg/DynamicTablesPkg.dec

+++ b/DynamicTablesPkg/DynamicTablesPkg.dec

@@ -57,5 +57,8 @@

   # Non BSA Compliant 16550 Serial HID

   
gEdkiiDynamicTablesPkgTokenSpaceGuid.PcdNonBsaCompliant16550SerialHid|""|VOID*|0x40000008

 

+  # Use PCI segment numbers as UID

+  
gEdkiiDynamicTablesPkgTokenSpaceGuid.PcdPciUseSegmentAsUid|FALSE|BOOLEAN|0x40000009

+

 [Guids]

   gEdkiiDynamicTablesPkgTokenSpaceGuid = { 0xab226e66, 0x31d8, 0x4613, { 0x87, 
0x9d, 0xd2, 0xfa, 0xb6, 0x10, 0x26, 0x3c } }

diff --git 
a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieGenerator.c 
b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieGenerator.c

index f0d15f69a4..85782af380 100644

--- a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieGenerator.c

+++ b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieGenerator.c

@@ -996,6 +996,7 @@ BuildSsdtPciTableEx (

   UINTN                         Index;

   EFI_ACPI_DESCRIPTION_HEADER   **TableList;

   ACPI_PCI_GENERATOR            *Generator;

+  UINT32                        Uid;

 

   ASSERT (This != NULL);

   ASSERT (AcpiTableInfo != NULL);

@@ -1051,13 +1052,29 @@ BuildSsdtPciTableEx (

   *Table = TableList;

 

   for (Index = 0; Index < PciCount; Index++) {

+    if (PcdGetBool (PcdPciUseSegmentAsUid)) {

+      Uid = PciInfo[Index].PciSegmentGroupNumber;

+      if (Uid > MAX_PCI_ROOT_COMPLEXES_SUPPORTED) {

+        DEBUG ((

+          DEBUG_ERROR,

+          "ERROR: SSDT-PCI: Pci root complexes segment number: %d."

+          " Greater than maximum number of Pci root complexes supported = 
%d.\n",

+          Uid,

+          MAX_PCI_ROOT_COMPLEXES_SUPPORTED

+          ));

+        return EFI_INVALID_PARAMETER;

+      }

+    } else {

+      Uid = Index;

+    }

+

     // Build a SSDT table describing the Pci devices.

     Status = BuildSsdtPciTable (

                Generator,

                CfgMgrProtocol,

                AcpiTableInfo,

                &PciInfo[Index],

-               Index,

+               Uid,

                &TableList[Index]

                );

     if (EFI_ERROR (Status)) {

diff --git 
a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieLibArm.inf 
b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieLibArm.inf

index 283b564801..431e32a777 100644

--- a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieLibArm.inf

+++ b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieLibArm.inf

@@ -30,3 +30,6 @@

   AcpiHelperLib

   AmlLib

   BaseLib

+

+[Pcd]

+  gEdkiiDynamicTablesPkgTokenSpaceGuid.PcdPciUseSegmentAsUid

-- 

2.25.1





-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#90932): https://edk2.groups.io/g/devel/message/90932
Mute This Topic: https://groups.io/mt/92089320/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to