[edk2,edk2-platforms,08/11] Silicon/AMD/Styx/AcpiPlatformDxe: move IPMI/KCS device into separate SSDT

Message ID 20181211183514.20948-9-ard.biesheuvel@linaro.org
State New
Headers show
Series
  • final set of Styx cleanups
Related show

Commit Message

Ard Biesheuvel Dec. 11, 2018, 6:35 p.m.
Move the IPMI/KCS device node from the DSDT into its own SSDT, and only
install it if we have support for KCS enabled in the platform.

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>

---
 Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatformDxe.inf |  2 +
 Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatform.c      |  5 +++
 Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/Dsdt.asl            | 25 -----------
 Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/SsdtKcs.asl         | 47 ++++++++++++++++++++
 4 files changed, 54 insertions(+), 25 deletions(-)

-- 
2.19.2

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Patch

diff --git a/Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatformDxe.inf b/Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatformDxe.inf
index d27431343f4b..f231e0b2ee75 100644
--- a/Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatformDxe.inf
+++ b/Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatformDxe.inf
@@ -39,6 +39,7 @@ 
   Pptt.aslc
   Spcr.aslc
   SsdtB1.asl
+  SsdtKcs.asl
   SsdtXgbe.asl
 
 [Packages]
@@ -74,6 +75,7 @@ 
   gAmdStyxTokenSpaceGuid.PcdCntCTLBase
   gAmdStyxTokenSpaceGuid.PcdCntBase0
   gAmdStyxTokenSpaceGuid.PcdCntEL0Base0
+  gAmdStyxTokenSpaceGuid.PcdEnableKcs
   gAmdStyxTokenSpaceGuid.PcdGicVersion
   gAmdStyxTokenSpaceGuid.PcdGicHypervisorInterruptInterfaceBase
   gAmdStyxTokenSpaceGuid.PcdGicVirtualInterruptInterfaceBase
diff --git a/Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatform.c b/Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatform.c
index 9c8c8b09d4a4..9b1428fc00eb 100644
--- a/Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatform.c
+++ b/Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatform.c
@@ -171,6 +171,11 @@  InstallSystemDescriptionTables (
 
       break;
 
+    case SIGNATURE_64 ('S', 't', 'y', 'x', 'K', 'c', 's', ' '):
+      if (!FixedPcdGetBool (PcdEnableKcs)) {
+        continue;
+      }
+
     default:
       switch (Table->Signature) {
       case EFI_ACPI_6_0_IO_REMAPPING_TABLE_SIGNATURE:
diff --git a/Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/Dsdt.asl b/Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/Dsdt.asl
index 60288114aeab..118382371d73 100644
--- a/Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/Dsdt.asl
+++ b/Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/Dsdt.asl
@@ -295,31 +295,6 @@  DefinitionBlock ("DSDT.aml", "DSDT", 2, "AMDINC", "SEATTLE ", 3)
             })
         }
 
-#if DO_KCS
-        //
-        // IPMI/KCS
-        //
-        Device (KCS0)
-        {
-            Name (_HID, "AMDI0300")
-            Name (_CID, "IPI0001")
-            Name (_STR, Unicode("IPMI_KCS"))
-            Name (_UID, 0)
-            Name (_CRS, ResourceTemplate() {
-                Memory32Fixed(ReadWrite, 0xE0010000, 0x1) // KCS Data In/Out
-                Memory32Fixed(ReadWrite, 0xE0010004, 0x1) // KCS Control/Status
-                Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive,,,) { 421 } // GSIV
-            })
-            Method (_IFT) {     // Interface Type
-                Return ( 0x01)   // IPMI KCS
-            }
-
-            Method (_SRV) {     // Spec Revision
-                Return (0x200)  // IPMI Spec v2.0
-            }
-        }
-#endif // DO_KCS
-
         //
         // PCIe Root Bus
         //
diff --git a/Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/SsdtKcs.asl b/Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/SsdtKcs.asl
new file mode 100644
index 000000000000..3cac427df2d6
--- /dev/null
+++ b/Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/SsdtKcs.asl
@@ -0,0 +1,47 @@ 
+/** @file
+
+  SSDT for IPMI controller
+
+  Copyright (c) 2014, ARM Ltd. All rights reserved.<BR>
+  Copyright (c) 2014 - 2016, AMD Inc. All rights reserved.<BR>
+
+  This program and the accompanying materials
+  are licensed and made available under the terms and conditions of the BSD License
+  which accompanies this distribution.  The full text of the license may be found at
+  http://opensource.org/licenses/bsd-license.php
+
+  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+**/
+
+
+DefinitionBlock ("SsdtKcs.aml", "SSDT", 2, "AMDINC", "StyxKcs ", 3)
+{
+    Scope (_SB)
+    {
+        //
+        // IPMI/KCS
+        //
+        Device (KCS0)
+        {
+            Name (_HID, "AMDI0300")
+            Name (_CID, "IPI0001")
+            Name (_STR, Unicode("IPMI_KCS"))
+            Name (_UID, 0)
+            Name (_CRS, ResourceTemplate() {
+                Memory32Fixed(ReadWrite, 0xE0010000, 0x1) // KCS Data In/Out
+                Memory32Fixed(ReadWrite, 0xE0010004, 0x1) // KCS Control/Status
+                Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive,,,) { 421 } // GSIV
+            })
+            Method (_IFT) {     // Interface Type
+                Return ( 0x01)   // IPMI KCS
+            }
+
+            Method (_SRV) {     // Spec Revision
+                Return (0x200)  // IPMI Spec v2.0
+            }
+        }
+    }
+}
+