public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [edk2-platforms][PATCH v2 0/5] Platform/Sgi: Miscellaneous updates
@ 2021-06-11 10:34 Pranav Madhu
  2021-06-11 10:34 ` [edk2-platforms][PATCH v2 1/5] Platform/Sgi: Enable PrimeCell GPIO Pranav Madhu
                   ` (5 more replies)
  0 siblings, 6 replies; 12+ messages in thread
From: Pranav Madhu @ 2021-06-11 10:34 UTC (permalink / raw)
  To: devel; +Cc: Ard Biesheuvel, Sami Mujawar

Changes since V1:
- Rebase the patches on top of latest master branch

This patch series introduces few miscellaneous updates for Arm's
Reference Design platforms. The first two patches add a template
support for hardware reduced ACPI events. This allows helps the
platform get better compliance coverage with SystemReady test
suite. The third patch adds a build macro for enabling graphics
output via the HDLCD. The fourth patch allow build time control
for CPPC and LPI features on the platform. The fifth patch fixes
StandaloneMM build options for the RD platforms.

Link to github branch with the patches in this series -
https://github.com/Pranav-Madhu/edk2-platforms/tree/topic/rd_misc

Omkar Anand Kulkarni (1):
  Platform/Sgi: Cleanup build options for StandaloneMM context

Pranav Madhu (3):
  Platform/Sgi: Enable PrimeCell GPIO
  Platform/Sgi: Add GED support
  Platform/Sgi: update _OSC control method to control LPI and CPPC

Thomas Abraham (1):
  Platform/Sgi: define the macro ENABLE_GOP

 Platform/ARM/SgiPkg/SgiPlatform.dec           |  14 +++
 Platform/ARM/SgiPkg/SgiMemoryMap.dsc.inc      |  10 ++
 Platform/ARM/SgiPkg/SgiMemoryMap2.dsc.inc     |  10 ++
 Platform/ARM/SgiPkg/SgiPlatform.dsc.inc       |  19 +++
 Platform/ARM/SgiPkg/SgiPlatformMm.dsc.inc     |   6 +-
 Platform/ARM/SgiPkg/SgiPlatform.fdf           |   2 +
 .../SgiPkg/AcpiTables/RdE1EdgeAcpiTables.inf  |   7 ++
 .../SgiPkg/AcpiTables/RdN1EdgeAcpiTables.inf  |   8 ++
 .../AcpiTables/RdN1EdgeX2AcpiTables.inf       |   8 ++
 .../ARM/SgiPkg/AcpiTables/RdN2AcpiTables.inf  |   9 ++
 .../SgiPkg/AcpiTables/RdN2Cfg1AcpiTables.inf  |   9 ++
 .../ARM/SgiPkg/AcpiTables/RdV1AcpiTables.inf  |   9 ++
 .../SgiPkg/AcpiTables/RdV1McAcpiTables.inf    |   9 ++
 .../SgiPkg/AcpiTables/Sgi575AcpiTables.inf    |   9 ++
 Platform/ARM/SgiPkg/Include/SgiAcpiHeader.h   |   2 +
 .../ARM/SgiPkg/AcpiTables/RdN1Edge/Dsdt.asl   |   8 ++
 .../ARM/SgiPkg/AcpiTables/RdN1EdgeX2/Dsdt.asl |   8 ++
 Platform/ARM/SgiPkg/AcpiTables/RdN2/Dsdt.asl  |  15 +++
 .../ARM/SgiPkg/AcpiTables/RdN2Cfg1/Dsdt.asl   |  15 +++
 Platform/ARM/SgiPkg/AcpiTables/RdV1/Dsdt.asl  |  15 +++
 .../ARM/SgiPkg/AcpiTables/RdV1Mc/Dsdt.asl     |  15 +++
 .../ARM/SgiPkg/AcpiTables/Sgi575/Dsdt.asl     |   8 ++
 Platform/ARM/SgiPkg/AcpiTables/SsdtEvents.asl | 116 ++++++++++++++++++
 23 files changed, 327 insertions(+), 4 deletions(-)
 create mode 100644 Platform/ARM/SgiPkg/AcpiTables/SsdtEvents.asl

-- 
2.17.1


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [edk2-platforms][PATCH v2 1/5] Platform/Sgi: Enable PrimeCell GPIO
  2021-06-11 10:34 [edk2-platforms][PATCH v2 0/5] Platform/Sgi: Miscellaneous updates Pranav Madhu
@ 2021-06-11 10:34 ` Pranav Madhu
  2021-06-14 10:33   ` [edk2-devel] " Thomas Abraham
  2021-06-11 10:34 ` [edk2-platforms][PATCH v2 2/5] Platform/Sgi: Add GED support Pranav Madhu
                   ` (4 subsequent siblings)
  5 siblings, 1 reply; 12+ messages in thread
From: Pranav Madhu @ 2021-06-11 10:34 UTC (permalink / raw)
  To: devel; +Cc: Ard Biesheuvel, Sami Mujawar

The HW-Reduced ACPI model has specific requirements for GPIO
controllers. Arm's reference design Platforms has PrimeCell GPIO
(PL061) integrated in the RoS subsystem to provide GPIO support. Add
GPIO device entry and also add GPIO signalled ACPI event template for
reference.

Signed-off-by: Pranav Madhu <pranav.madhu@arm.com>
---
 Platform/ARM/SgiPkg/SgiPlatform.dec                     |  5 ++
 Platform/ARM/SgiPkg/SgiMemoryMap.dsc.inc                |  5 ++
 Platform/ARM/SgiPkg/SgiMemoryMap2.dsc.inc               |  5 ++
 Platform/ARM/SgiPkg/AcpiTables/RdE1EdgeAcpiTables.inf   |  4 ++
 Platform/ARM/SgiPkg/AcpiTables/RdN1EdgeAcpiTables.inf   |  4 ++
 Platform/ARM/SgiPkg/AcpiTables/RdN1EdgeX2AcpiTables.inf |  4 ++
 Platform/ARM/SgiPkg/AcpiTables/RdN2AcpiTables.inf       |  4 ++
 Platform/ARM/SgiPkg/AcpiTables/RdN2Cfg1AcpiTables.inf   |  4 ++
 Platform/ARM/SgiPkg/AcpiTables/RdV1AcpiTables.inf       |  4 ++
 Platform/ARM/SgiPkg/AcpiTables/RdV1McAcpiTables.inf     |  4 ++
 Platform/ARM/SgiPkg/AcpiTables/Sgi575AcpiTables.inf     |  5 ++
 Platform/ARM/SgiPkg/AcpiTables/SsdtEvents.asl           | 67 ++++++++++++++++++++
 12 files changed, 115 insertions(+)

diff --git a/Platform/ARM/SgiPkg/SgiPlatform.dec b/Platform/ARM/SgiPkg/SgiPlatform.dec
index af08ed153eae..e0aabc566d88 100644
--- a/Platform/ARM/SgiPkg/SgiPlatform.dec
+++ b/Platform/ARM/SgiPkg/SgiPlatform.dec
@@ -76,5 +76,10 @@
   gArmSgiTokenSpaceGuid.PcdSmmuBase|0|UINT32|0x0000001D
   gArmSgiTokenSpaceGuid.PcdSmmuSize|0|UINT32|0x0000001E
 
+  # GPIO Controller
+  gArmSgiTokenSpaceGuid.PcdGpioController0BaseAddress|0|UINT32|0x0000001F
+  gArmSgiTokenSpaceGuid.PcdGpioController0Size|0|UINT32|0x00000020
+  gArmSgiTokenSpaceGuid.PcdGpioController0Interrupt|0|UINT32|0x00000021
+
 [Ppis]
   gNtFwConfigDtInfoPpiGuid     = { 0x6f606eb3, 0x9123, 0x4e15, { 0xa8, 0x9b, 0x0f, 0xac, 0x66, 0xef, 0xd0, 0x17 } }
diff --git a/Platform/ARM/SgiPkg/SgiMemoryMap.dsc.inc b/Platform/ARM/SgiPkg/SgiMemoryMap.dsc.inc
index d3d650323891..a567af8537ec 100644
--- a/Platform/ARM/SgiPkg/SgiMemoryMap.dsc.inc
+++ b/Platform/ARM/SgiPkg/SgiMemoryMap.dsc.inc
@@ -54,3 +54,8 @@
   # SMMU
   gArmSgiTokenSpaceGuid.PcdSmmuBase|0x4F000000
   gArmSgiTokenSpaceGuid.PcdSmmuSize|0x01000000
+
+  # GPIO Controller
+  gArmSgiTokenSpaceGuid.PcdGpioController0BaseAddress|0x1C1D0000
+  gArmSgiTokenSpaceGuid.PcdGpioController0Size|0x00010000
+  gArmSgiTokenSpaceGuid.PcdGpioController0Interrupt|136
diff --git a/Platform/ARM/SgiPkg/SgiMemoryMap2.dsc.inc b/Platform/ARM/SgiPkg/SgiMemoryMap2.dsc.inc
index c593156e17be..5c137c0991e7 100644
--- a/Platform/ARM/SgiPkg/SgiMemoryMap2.dsc.inc
+++ b/Platform/ARM/SgiPkg/SgiMemoryMap2.dsc.inc
@@ -54,3 +54,8 @@
   # SMMU
   gArmSgiTokenSpaceGuid.PcdSmmuBase|0x40000000
   gArmSgiTokenSpaceGuid.PcdSmmuSize|0x10000000
+
+  # GPIO controller
+  gArmSgiTokenSpaceGuid.PcdGpioController0BaseAddress|0x0C1D0000
+  gArmSgiTokenSpaceGuid.PcdGpioController0Size|0x00010000
+  gArmSgiTokenSpaceGuid.PcdGpioController0Interrupt|392
diff --git a/Platform/ARM/SgiPkg/AcpiTables/RdE1EdgeAcpiTables.inf b/Platform/ARM/SgiPkg/AcpiTables/RdE1EdgeAcpiTables.inf
index 04ef2bfcaa26..56b80f418398 100644
--- a/Platform/ARM/SgiPkg/AcpiTables/RdE1EdgeAcpiTables.inf
+++ b/Platform/ARM/SgiPkg/AcpiTables/RdE1EdgeAcpiTables.inf
@@ -26,6 +26,7 @@
   RdE1Edge/Pptt.aslc
   Spcr.aslc
   Ssdt.asl
+  SsdtEvents.asl
 
 [Packages]
   ArmPkg/ArmPkg.dec
@@ -51,6 +52,9 @@
   gArmTokenSpaceGuid.PcdPciBusMin
   gArmTokenSpaceGuid.PcdPciBusMax
 
+  gArmSgiTokenSpaceGuid.PcdGpioController0BaseAddress
+  gArmSgiTokenSpaceGuid.PcdGpioController0Size
+  gArmSgiTokenSpaceGuid.PcdGpioController0Interrupt
   gArmSgiTokenSpaceGuid.PcdGtFrame0Gsiv
   gArmSgiTokenSpaceGuid.PcdGtFrame1Gsiv
   gArmSgiTokenSpaceGuid.PcdVirtioBlkBaseAddress
diff --git a/Platform/ARM/SgiPkg/AcpiTables/RdN1EdgeAcpiTables.inf b/Platform/ARM/SgiPkg/AcpiTables/RdN1EdgeAcpiTables.inf
index eecb64186473..fa6692bc86f6 100644
--- a/Platform/ARM/SgiPkg/AcpiTables/RdN1EdgeAcpiTables.inf
+++ b/Platform/ARM/SgiPkg/AcpiTables/RdN1EdgeAcpiTables.inf
@@ -26,6 +26,7 @@
   RdN1Edge/Pptt.aslc
   Spcr.aslc
   Ssdt.asl
+  SsdtEvents.asl
 
 [Packages]
   ArmPkg/ArmPkg.dec
@@ -51,6 +52,9 @@
   gArmTokenSpaceGuid.PcdPciBusMin
   gArmTokenSpaceGuid.PcdPciBusMax
 
+  gArmSgiTokenSpaceGuid.PcdGpioController0BaseAddress
+  gArmSgiTokenSpaceGuid.PcdGpioController0Size
+  gArmSgiTokenSpaceGuid.PcdGpioController0Interrupt
   gArmSgiTokenSpaceGuid.PcdGtFrame0Gsiv
   gArmSgiTokenSpaceGuid.PcdGtFrame1Gsiv
   gArmSgiTokenSpaceGuid.PcdVirtioBlkBaseAddress
diff --git a/Platform/ARM/SgiPkg/AcpiTables/RdN1EdgeX2AcpiTables.inf b/Platform/ARM/SgiPkg/AcpiTables/RdN1EdgeX2AcpiTables.inf
index 617519d9dd38..d0ee125fa1de 100644
--- a/Platform/ARM/SgiPkg/AcpiTables/RdN1EdgeX2AcpiTables.inf
+++ b/Platform/ARM/SgiPkg/AcpiTables/RdN1EdgeX2AcpiTables.inf
@@ -28,6 +28,7 @@
   RdN1EdgeX2/Srat.aslc
   Spcr.aslc
   Ssdt.asl
+  SsdtEvents.asl
 
 [Packages]
   ArmPkg/ArmPkg.dec
@@ -60,6 +61,9 @@
   gArmTokenSpaceGuid.PcdPciBusMin
   gArmTokenSpaceGuid.PcdPciBusMax
 
+  gArmSgiTokenSpaceGuid.PcdGpioController0BaseAddress
+  gArmSgiTokenSpaceGuid.PcdGpioController0Size
+  gArmSgiTokenSpaceGuid.PcdGpioController0Interrupt
   gArmSgiTokenSpaceGuid.PcdGtFrame0Gsiv
   gArmSgiTokenSpaceGuid.PcdGtFrame1Gsiv
   gArmSgiTokenSpaceGuid.PcdVirtioBlkBaseAddress
diff --git a/Platform/ARM/SgiPkg/AcpiTables/RdN2AcpiTables.inf b/Platform/ARM/SgiPkg/AcpiTables/RdN2AcpiTables.inf
index c1282a3422ab..232b58eb012f 100644
--- a/Platform/ARM/SgiPkg/AcpiTables/RdN2AcpiTables.inf
+++ b/Platform/ARM/SgiPkg/AcpiTables/RdN2AcpiTables.inf
@@ -26,6 +26,7 @@
   Spcr.aslc
   Ssdt.asl
   SsdtRos.asl
+  SsdtEvents.asl
 
 [Packages]
   ArmPkg/ArmPkg.dec
@@ -51,6 +52,9 @@
   gArmTokenSpaceGuid.PcdPciBusMin
   gArmTokenSpaceGuid.PcdPciBusMax
 
+  gArmSgiTokenSpaceGuid.PcdGpioController0BaseAddress
+  gArmSgiTokenSpaceGuid.PcdGpioController0Size
+  gArmSgiTokenSpaceGuid.PcdGpioController0Interrupt
   gArmSgiTokenSpaceGuid.PcdGtFrame0Gsiv
   gArmSgiTokenSpaceGuid.PcdGtFrame1Gsiv
   gArmSgiTokenSpaceGuid.PcdVirtioBlkBaseAddress
diff --git a/Platform/ARM/SgiPkg/AcpiTables/RdN2Cfg1AcpiTables.inf b/Platform/ARM/SgiPkg/AcpiTables/RdN2Cfg1AcpiTables.inf
index 58468096de4f..5713ef1ce3a9 100644
--- a/Platform/ARM/SgiPkg/AcpiTables/RdN2Cfg1AcpiTables.inf
+++ b/Platform/ARM/SgiPkg/AcpiTables/RdN2Cfg1AcpiTables.inf
@@ -26,6 +26,7 @@
   Spcr.aslc
   Ssdt.asl
   SsdtRos.asl
+  SsdtEvents.asl
 
 [Packages]
   ArmPkg/ArmPkg.dec
@@ -51,6 +52,9 @@
   gArmTokenSpaceGuid.PcdPciBusMin
   gArmTokenSpaceGuid.PcdPciBusMax
 
+  gArmSgiTokenSpaceGuid.PcdGpioController0BaseAddress
+  gArmSgiTokenSpaceGuid.PcdGpioController0Size
+  gArmSgiTokenSpaceGuid.PcdGpioController0Interrupt
   gArmSgiTokenSpaceGuid.PcdGtFrame0Gsiv
   gArmSgiTokenSpaceGuid.PcdGtFrame1Gsiv
   gArmSgiTokenSpaceGuid.PcdSmmuBase
diff --git a/Platform/ARM/SgiPkg/AcpiTables/RdV1AcpiTables.inf b/Platform/ARM/SgiPkg/AcpiTables/RdV1AcpiTables.inf
index a3e558cf1535..e7b702962abe 100644
--- a/Platform/ARM/SgiPkg/AcpiTables/RdV1AcpiTables.inf
+++ b/Platform/ARM/SgiPkg/AcpiTables/RdV1AcpiTables.inf
@@ -26,6 +26,7 @@
   RdV1/Pptt.aslc
   Spcr.aslc
   Ssdt.asl
+  SsdtEvents.asl
 
 [Packages]
   ArmPkg/ArmPkg.dec
@@ -51,6 +52,9 @@
   gArmTokenSpaceGuid.PcdPciBusMin
   gArmTokenSpaceGuid.PcdPciBusMax
 
+  gArmSgiTokenSpaceGuid.PcdGpioController0BaseAddress
+  gArmSgiTokenSpaceGuid.PcdGpioController0Size
+  gArmSgiTokenSpaceGuid.PcdGpioController0Interrupt
   gArmSgiTokenSpaceGuid.PcdGtFrame0Gsiv
   gArmSgiTokenSpaceGuid.PcdGtFrame1Gsiv
   gArmSgiTokenSpaceGuid.PcdVirtioBlkBaseAddress
diff --git a/Platform/ARM/SgiPkg/AcpiTables/RdV1McAcpiTables.inf b/Platform/ARM/SgiPkg/AcpiTables/RdV1McAcpiTables.inf
index ffda4f925b19..901391fba70e 100644
--- a/Platform/ARM/SgiPkg/AcpiTables/RdV1McAcpiTables.inf
+++ b/Platform/ARM/SgiPkg/AcpiTables/RdV1McAcpiTables.inf
@@ -28,6 +28,7 @@
   RdV1Mc/Srat.aslc
   Spcr.aslc
   Ssdt.asl
+  SsdtEvents.asl
 
 [Packages]
   ArmPkg/ArmPkg.dec
@@ -60,6 +61,9 @@
   gArmTokenSpaceGuid.PcdPciBusMin
   gArmTokenSpaceGuid.PcdPciBusMax
 
+  gArmSgiTokenSpaceGuid.PcdGpioController0BaseAddress
+  gArmSgiTokenSpaceGuid.PcdGpioController0Size
+  gArmSgiTokenSpaceGuid.PcdGpioController0Interrupt
   gArmSgiTokenSpaceGuid.PcdGtFrame0Gsiv
   gArmSgiTokenSpaceGuid.PcdGtFrame1Gsiv
   gArmSgiTokenSpaceGuid.PcdVirtioBlkBaseAddress
diff --git a/Platform/ARM/SgiPkg/AcpiTables/Sgi575AcpiTables.inf b/Platform/ARM/SgiPkg/AcpiTables/Sgi575AcpiTables.inf
index b1ee16e98ea3..d59aefde735b 100644
--- a/Platform/ARM/SgiPkg/AcpiTables/Sgi575AcpiTables.inf
+++ b/Platform/ARM/SgiPkg/AcpiTables/Sgi575AcpiTables.inf
@@ -25,6 +25,8 @@
   Sgi575/Pptt.aslc
   Spcr.aslc
   Ssdt.asl
+  SsdtRos.asl
+  SsdtEvents.asl
 
 [Packages]
   ArmPkg/ArmPkg.dec
@@ -50,6 +52,9 @@
   gArmTokenSpaceGuid.PcdPciBusMin
   gArmTokenSpaceGuid.PcdPciBusMax
 
+  gArmSgiTokenSpaceGuid.PcdGpioController0BaseAddress
+  gArmSgiTokenSpaceGuid.PcdGpioController0Size
+  gArmSgiTokenSpaceGuid.PcdGpioController0Interrupt
   gArmSgiTokenSpaceGuid.PcdGtFrame0Gsiv
   gArmSgiTokenSpaceGuid.PcdGtFrame1Gsiv
   gArmSgiTokenSpaceGuid.PcdVirtioBlkBaseAddress
diff --git a/Platform/ARM/SgiPkg/AcpiTables/SsdtEvents.asl b/Platform/ARM/SgiPkg/AcpiTables/SsdtEvents.asl
new file mode 100644
index 000000000000..28c7ce4e7f3c
--- /dev/null
+++ b/Platform/ARM/SgiPkg/AcpiTables/SsdtEvents.asl
@@ -0,0 +1,67 @@
+/** @file
+  Secondary System Description Table (SSDT) for hardware reduced events.
+
+  Arm Reference Design platforms implement the HW-Reduced ACPI model and do not
+  support legacy ACPI Fixed Hardware interfaces.
+
+  GPIO Signalled ACPI event is one of the methods for signalling events in
+  HW-Reduced ACPI model. In this method, ACPI events can be signaled when a GPIO
+  Interrupt is received by OSPM and that GPIO Interrupt Connection is listed in
+  a GPIO controller device’s _AEI object.
+
+  Copyright (c) 2021, ARM Limited. All rights reserved.
+  SPDX-License-Identifier: BSD-2-Clause-Patent
+
+  @par Specification Reference:
+    - ACPI 6.4, Chapter 5.6.5, GPIO-signaled ACPI Events
+    - Arm Base Boot Requirements 1.0, Issue F, Chapter 8.5.3, GPIO controllers
+**/
+
+#include "SgiAcpiHeader.h"
+
+DefinitionBlock("SsdtEvent.aml", "SSDT", 2, "ARMLTD", "ARMSGI", EFI_ACPI_ARM_OEM_REVISION) {
+  /* GPIO Controller 0 device. Use _AEI object to configure pin 0 for
+     signalling HW-Reduced events and the _L00 method to handle the event
+     generated by pin 0.
+  */
+  Device (\_SB.GPI0)
+  {
+    Name (_HID, "ARMH0061")     /* PrimeCell GPIO */
+    Name (_UID, 0)
+
+    /* Resource setting for GPIO controller 0 */
+    Name (_CRS, ResourceTemplate () {
+      Memory32Fixed (
+        ReadWrite,
+        FixedPcdGet32 (PcdGpioController0BaseAddress),
+        FixedPcdGet32 (PcdGpioController0Size)
+      )
+      Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive) {
+        FixedPcdGet32 (PcdGpioController0Interrupt)
+      }
+    })
+
+    /* ACPI Event information for GPIO controller 0 */
+    Name (_AEI, ResourceTemplate() {
+      GpioInt (Level, ActiveHigh, Exclusive, PullDown, , "\\_SB.GPI0") {0}
+    })
+
+    /* Event handler for pin0 */
+    Method (_L00) {
+      Printf ("GPIO0 Pin0 Toggled")
+      Store (1, INC0)
+    }
+
+    /* Mapping for interrupt clear register */
+    OperationRegion (
+      GIO0,
+      SystemMemory,
+      FixedPcdGet32 (PcdGpioController0BaseAddress),
+      FixedPcdGet32 (PcdGpioController0Size)
+    )
+    Field (GIO0, ByteAcc, NoLock, Preserve) {
+      Offset (0x41C),    /* WO Intr clear on writing 1 to resp bit */
+      INC0, 8
+    }
+  }
+}
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [edk2-platforms][PATCH v2 2/5] Platform/Sgi: Add GED support
  2021-06-11 10:34 [edk2-platforms][PATCH v2 0/5] Platform/Sgi: Miscellaneous updates Pranav Madhu
  2021-06-11 10:34 ` [edk2-platforms][PATCH v2 1/5] Platform/Sgi: Enable PrimeCell GPIO Pranav Madhu
@ 2021-06-11 10:34 ` Pranav Madhu
  2021-06-14 10:35   ` [edk2-devel] " Thomas Abraham
  2021-06-11 10:34 ` [edk2-platforms][PATCH v2 3/5] Platform/Sgi: define the macro ENABLE_GOP Pranav Madhu
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 12+ messages in thread
From: Pranav Madhu @ 2021-06-11 10:34 UTC (permalink / raw)
  To: devel; +Cc: Ard Biesheuvel, Sami Mujawar

Add ACPI Generic Event Device (GED) support for Arm's reference design
platforms. The SP804 dual-timer interrupt is used as the event source
for GED.

Signed-off-by: Pranav Madhu <pranav.madhu@arm.com>
---
 Platform/ARM/SgiPkg/SgiPlatform.dec                     |  5 ++
 Platform/ARM/SgiPkg/SgiMemoryMap.dsc.inc                |  5 ++
 Platform/ARM/SgiPkg/SgiMemoryMap2.dsc.inc               |  5 ++
 Platform/ARM/SgiPkg/AcpiTables/RdE1EdgeAcpiTables.inf   |  3 ++
 Platform/ARM/SgiPkg/AcpiTables/RdN1EdgeAcpiTables.inf   |  3 ++
 Platform/ARM/SgiPkg/AcpiTables/RdN1EdgeX2AcpiTables.inf |  3 ++
 Platform/ARM/SgiPkg/AcpiTables/RdN2AcpiTables.inf       |  3 ++
 Platform/ARM/SgiPkg/AcpiTables/RdN2Cfg1AcpiTables.inf   |  3 ++
 Platform/ARM/SgiPkg/AcpiTables/RdV1AcpiTables.inf       |  3 ++
 Platform/ARM/SgiPkg/AcpiTables/RdV1McAcpiTables.inf     |  3 ++
 Platform/ARM/SgiPkg/AcpiTables/Sgi575AcpiTables.inf     |  3 ++
 Platform/ARM/SgiPkg/AcpiTables/SsdtEvents.asl           | 49 ++++++++++++++++++++
 12 files changed, 88 insertions(+)

diff --git a/Platform/ARM/SgiPkg/SgiPlatform.dec b/Platform/ARM/SgiPkg/SgiPlatform.dec
index e0aabc566d88..ffbbb24f1c33 100644
--- a/Platform/ARM/SgiPkg/SgiPlatform.dec
+++ b/Platform/ARM/SgiPkg/SgiPlatform.dec
@@ -81,5 +81,10 @@
   gArmSgiTokenSpaceGuid.PcdGpioController0Size|0|UINT32|0x00000020
   gArmSgiTokenSpaceGuid.PcdGpioController0Interrupt|0|UINT32|0x00000021
 
+  # SP804 Dual Timer
+  gArmSgiTokenSpaceGuid.PcdSp804DualTimerBaseAddress|0|UINT32|0x00000022
+  gArmSgiTokenSpaceGuid.PcdSp804DualTimerSize|0|UINT32|0x00000023
+  gArmSgiTokenSpaceGuid.PcdSp804DualTimerInterrupt|0|UINT32|0x00000024
+
 [Ppis]
   gNtFwConfigDtInfoPpiGuid     = { 0x6f606eb3, 0x9123, 0x4e15, { 0xa8, 0x9b, 0x0f, 0xac, 0x66, 0xef, 0xd0, 0x17 } }
diff --git a/Platform/ARM/SgiPkg/SgiMemoryMap.dsc.inc b/Platform/ARM/SgiPkg/SgiMemoryMap.dsc.inc
index a567af8537ec..76707be73d7b 100644
--- a/Platform/ARM/SgiPkg/SgiMemoryMap.dsc.inc
+++ b/Platform/ARM/SgiPkg/SgiMemoryMap.dsc.inc
@@ -51,6 +51,11 @@
   gArmSgiTokenSpaceGuid.PcdWdogWS0Gsiv|93
   gArmSgiTokenSpaceGuid.PcdWdogWS1Gsiv|94
 
+  # SP804 dual timer
+  gArmSgiTokenSpaceGuid.PcdSp804DualTimerBaseAddress|0x1C110000
+  gArmSgiTokenSpaceGuid.PcdSp804DualTimerSize|0x00010000
+  gArmSgiTokenSpaceGuid.PcdSp804DualTimerInterrupt|230
+
   # SMMU
   gArmSgiTokenSpaceGuid.PcdSmmuBase|0x4F000000
   gArmSgiTokenSpaceGuid.PcdSmmuSize|0x01000000
diff --git a/Platform/ARM/SgiPkg/SgiMemoryMap2.dsc.inc b/Platform/ARM/SgiPkg/SgiMemoryMap2.dsc.inc
index 5c137c0991e7..2d612f9b9674 100644
--- a/Platform/ARM/SgiPkg/SgiMemoryMap2.dsc.inc
+++ b/Platform/ARM/SgiPkg/SgiMemoryMap2.dsc.inc
@@ -51,6 +51,11 @@
   gArmSgiTokenSpaceGuid.PcdWdogWS0Gsiv|110
   gArmSgiTokenSpaceGuid.PcdWdogWS1Gsiv|111
 
+  # SP804 dual timer
+  gArmSgiTokenSpaceGuid.PcdSp804DualTimerBaseAddress|0x0C110000
+  gArmSgiTokenSpaceGuid.PcdSp804DualTimerSize|0x00010000
+  gArmSgiTokenSpaceGuid.PcdSp804DualTimerInterrupt|486
+
   # SMMU
   gArmSgiTokenSpaceGuid.PcdSmmuBase|0x40000000
   gArmSgiTokenSpaceGuid.PcdSmmuSize|0x10000000
diff --git a/Platform/ARM/SgiPkg/AcpiTables/RdE1EdgeAcpiTables.inf b/Platform/ARM/SgiPkg/AcpiTables/RdE1EdgeAcpiTables.inf
index 56b80f418398..8c34c2fa73e4 100644
--- a/Platform/ARM/SgiPkg/AcpiTables/RdE1EdgeAcpiTables.inf
+++ b/Platform/ARM/SgiPkg/AcpiTables/RdE1EdgeAcpiTables.inf
@@ -57,6 +57,9 @@
   gArmSgiTokenSpaceGuid.PcdGpioController0Interrupt
   gArmSgiTokenSpaceGuid.PcdGtFrame0Gsiv
   gArmSgiTokenSpaceGuid.PcdGtFrame1Gsiv
+  gArmSgiTokenSpaceGuid.PcdSp804DualTimerBaseAddress
+  gArmSgiTokenSpaceGuid.PcdSp804DualTimerSize
+  gArmSgiTokenSpaceGuid.PcdSp804DualTimerInterrupt
   gArmSgiTokenSpaceGuid.PcdVirtioBlkBaseAddress
   gArmSgiTokenSpaceGuid.PcdVirtioBlkSize
   gArmSgiTokenSpaceGuid.PcdVirtioBlkInterrupt
diff --git a/Platform/ARM/SgiPkg/AcpiTables/RdN1EdgeAcpiTables.inf b/Platform/ARM/SgiPkg/AcpiTables/RdN1EdgeAcpiTables.inf
index fa6692bc86f6..8d46b001444c 100644
--- a/Platform/ARM/SgiPkg/AcpiTables/RdN1EdgeAcpiTables.inf
+++ b/Platform/ARM/SgiPkg/AcpiTables/RdN1EdgeAcpiTables.inf
@@ -57,6 +57,9 @@
   gArmSgiTokenSpaceGuid.PcdGpioController0Interrupt
   gArmSgiTokenSpaceGuid.PcdGtFrame0Gsiv
   gArmSgiTokenSpaceGuid.PcdGtFrame1Gsiv
+  gArmSgiTokenSpaceGuid.PcdSp804DualTimerBaseAddress
+  gArmSgiTokenSpaceGuid.PcdSp804DualTimerSize
+  gArmSgiTokenSpaceGuid.PcdSp804DualTimerInterrupt
   gArmSgiTokenSpaceGuid.PcdVirtioBlkBaseAddress
   gArmSgiTokenSpaceGuid.PcdVirtioBlkSize
   gArmSgiTokenSpaceGuid.PcdVirtioBlkInterrupt
diff --git a/Platform/ARM/SgiPkg/AcpiTables/RdN1EdgeX2AcpiTables.inf b/Platform/ARM/SgiPkg/AcpiTables/RdN1EdgeX2AcpiTables.inf
index d0ee125fa1de..473c9eff0f55 100644
--- a/Platform/ARM/SgiPkg/AcpiTables/RdN1EdgeX2AcpiTables.inf
+++ b/Platform/ARM/SgiPkg/AcpiTables/RdN1EdgeX2AcpiTables.inf
@@ -66,6 +66,9 @@
   gArmSgiTokenSpaceGuid.PcdGpioController0Interrupt
   gArmSgiTokenSpaceGuid.PcdGtFrame0Gsiv
   gArmSgiTokenSpaceGuid.PcdGtFrame1Gsiv
+  gArmSgiTokenSpaceGuid.PcdSp804DualTimerBaseAddress
+  gArmSgiTokenSpaceGuid.PcdSp804DualTimerSize
+  gArmSgiTokenSpaceGuid.PcdSp804DualTimerInterrupt
   gArmSgiTokenSpaceGuid.PcdVirtioBlkBaseAddress
   gArmSgiTokenSpaceGuid.PcdVirtioBlkSize
   gArmSgiTokenSpaceGuid.PcdVirtioBlkInterrupt
diff --git a/Platform/ARM/SgiPkg/AcpiTables/RdN2AcpiTables.inf b/Platform/ARM/SgiPkg/AcpiTables/RdN2AcpiTables.inf
index 232b58eb012f..c537db45e08f 100644
--- a/Platform/ARM/SgiPkg/AcpiTables/RdN2AcpiTables.inf
+++ b/Platform/ARM/SgiPkg/AcpiTables/RdN2AcpiTables.inf
@@ -57,6 +57,9 @@
   gArmSgiTokenSpaceGuid.PcdGpioController0Interrupt
   gArmSgiTokenSpaceGuid.PcdGtFrame0Gsiv
   gArmSgiTokenSpaceGuid.PcdGtFrame1Gsiv
+  gArmSgiTokenSpaceGuid.PcdSp804DualTimerBaseAddress
+  gArmSgiTokenSpaceGuid.PcdSp804DualTimerSize
+  gArmSgiTokenSpaceGuid.PcdSp804DualTimerInterrupt
   gArmSgiTokenSpaceGuid.PcdVirtioBlkBaseAddress
   gArmSgiTokenSpaceGuid.PcdVirtioBlkSize
   gArmSgiTokenSpaceGuid.PcdVirtioBlkInterrupt
diff --git a/Platform/ARM/SgiPkg/AcpiTables/RdN2Cfg1AcpiTables.inf b/Platform/ARM/SgiPkg/AcpiTables/RdN2Cfg1AcpiTables.inf
index 5713ef1ce3a9..6bbc3fc230ae 100644
--- a/Platform/ARM/SgiPkg/AcpiTables/RdN2Cfg1AcpiTables.inf
+++ b/Platform/ARM/SgiPkg/AcpiTables/RdN2Cfg1AcpiTables.inf
@@ -58,6 +58,9 @@
   gArmSgiTokenSpaceGuid.PcdGtFrame0Gsiv
   gArmSgiTokenSpaceGuid.PcdGtFrame1Gsiv
   gArmSgiTokenSpaceGuid.PcdSmmuBase
+  gArmSgiTokenSpaceGuid.PcdSp804DualTimerBaseAddress
+  gArmSgiTokenSpaceGuid.PcdSp804DualTimerSize
+  gArmSgiTokenSpaceGuid.PcdSp804DualTimerInterrupt
   gArmSgiTokenSpaceGuid.PcdVirtioBlkBaseAddress
   gArmSgiTokenSpaceGuid.PcdVirtioBlkSize
   gArmSgiTokenSpaceGuid.PcdVirtioBlkInterrupt
diff --git a/Platform/ARM/SgiPkg/AcpiTables/RdV1AcpiTables.inf b/Platform/ARM/SgiPkg/AcpiTables/RdV1AcpiTables.inf
index e7b702962abe..d461cbe54c68 100644
--- a/Platform/ARM/SgiPkg/AcpiTables/RdV1AcpiTables.inf
+++ b/Platform/ARM/SgiPkg/AcpiTables/RdV1AcpiTables.inf
@@ -57,6 +57,9 @@
   gArmSgiTokenSpaceGuid.PcdGpioController0Interrupt
   gArmSgiTokenSpaceGuid.PcdGtFrame0Gsiv
   gArmSgiTokenSpaceGuid.PcdGtFrame1Gsiv
+  gArmSgiTokenSpaceGuid.PcdSp804DualTimerBaseAddress
+  gArmSgiTokenSpaceGuid.PcdSp804DualTimerSize
+  gArmSgiTokenSpaceGuid.PcdSp804DualTimerInterrupt
   gArmSgiTokenSpaceGuid.PcdVirtioBlkBaseAddress
   gArmSgiTokenSpaceGuid.PcdVirtioBlkSize
   gArmSgiTokenSpaceGuid.PcdVirtioBlkInterrupt
diff --git a/Platform/ARM/SgiPkg/AcpiTables/RdV1McAcpiTables.inf b/Platform/ARM/SgiPkg/AcpiTables/RdV1McAcpiTables.inf
index 901391fba70e..3b699b0acbb8 100644
--- a/Platform/ARM/SgiPkg/AcpiTables/RdV1McAcpiTables.inf
+++ b/Platform/ARM/SgiPkg/AcpiTables/RdV1McAcpiTables.inf
@@ -66,6 +66,9 @@
   gArmSgiTokenSpaceGuid.PcdGpioController0Interrupt
   gArmSgiTokenSpaceGuid.PcdGtFrame0Gsiv
   gArmSgiTokenSpaceGuid.PcdGtFrame1Gsiv
+  gArmSgiTokenSpaceGuid.PcdSp804DualTimerBaseAddress
+  gArmSgiTokenSpaceGuid.PcdSp804DualTimerSize
+  gArmSgiTokenSpaceGuid.PcdSp804DualTimerInterrupt
   gArmSgiTokenSpaceGuid.PcdVirtioBlkBaseAddress
   gArmSgiTokenSpaceGuid.PcdVirtioBlkSize
   gArmSgiTokenSpaceGuid.PcdVirtioBlkInterrupt
diff --git a/Platform/ARM/SgiPkg/AcpiTables/Sgi575AcpiTables.inf b/Platform/ARM/SgiPkg/AcpiTables/Sgi575AcpiTables.inf
index d59aefde735b..3ee66b1dfd5a 100644
--- a/Platform/ARM/SgiPkg/AcpiTables/Sgi575AcpiTables.inf
+++ b/Platform/ARM/SgiPkg/AcpiTables/Sgi575AcpiTables.inf
@@ -57,6 +57,9 @@
   gArmSgiTokenSpaceGuid.PcdGpioController0Interrupt
   gArmSgiTokenSpaceGuid.PcdGtFrame0Gsiv
   gArmSgiTokenSpaceGuid.PcdGtFrame1Gsiv
+  gArmSgiTokenSpaceGuid.PcdSp804DualTimerBaseAddress
+  gArmSgiTokenSpaceGuid.PcdSp804DualTimerSize
+  gArmSgiTokenSpaceGuid.PcdSp804DualTimerInterrupt
   gArmSgiTokenSpaceGuid.PcdVirtioBlkBaseAddress
   gArmSgiTokenSpaceGuid.PcdVirtioBlkSize
   gArmSgiTokenSpaceGuid.PcdVirtioBlkInterrupt
diff --git a/Platform/ARM/SgiPkg/AcpiTables/SsdtEvents.asl b/Platform/ARM/SgiPkg/AcpiTables/SsdtEvents.asl
index 28c7ce4e7f3c..58efe62c93ea 100644
--- a/Platform/ARM/SgiPkg/AcpiTables/SsdtEvents.asl
+++ b/Platform/ARM/SgiPkg/AcpiTables/SsdtEvents.asl
@@ -9,12 +9,20 @@
   Interrupt is received by OSPM and that GPIO Interrupt Connection is listed in
   a GPIO controller device’s _AEI object.
 
+  Interrupt Signalled ACPI event is another method of signalling events in
+  HW-Reduced ACPI model. In this method, ACPI event is generated when an
+  interrupt is received by the OSPM which is listed in the Generic Event Device
+  (GED) _CRS object.
+
   Copyright (c) 2021, ARM Limited. All rights reserved.
   SPDX-License-Identifier: BSD-2-Clause-Patent
 
   @par Specification Reference:
     - ACPI 6.4, Chapter 5.6.5, GPIO-signaled ACPI Events
     - Arm Base Boot Requirements 1.0, Issue F, Chapter 8.5.3, GPIO controllers
+    - ACPI 6.4, Chapter 5.6.9, Interrupt-signaled ACPI events
+    - Arm Base Boot Requirements 1.0, Issue F, Chapter 8.5.4 Generic Event
+      Devices
 **/
 
 #include "SgiAcpiHeader.h"
@@ -64,4 +72,45 @@ DefinitionBlock("SsdtEvent.aml", "SSDT", 2, "ARMLTD", "ARMSGI", EFI_ACPI_ARM_OEM
       INC0, 8
     }
   }
+
+  /* ACPI GED object Template. Arm's reference design platforms include a SP804
+     dual timer which is implemented as part of the RoS sub-system. The SP804
+     interrupt is used in GED as interrupt source. */
+  Device (\_SB.GED0) {
+    Name (_HID, "ACPI0013")
+    Name (_UID, 0)
+
+    /* Resource setting for GED */
+    Name (_CRS, ResourceTemplate () {
+      Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive) {
+        FixedPcdGet32 (PcdSp804DualTimerInterrupt)
+      }
+    })
+
+    Method (_STA, 0x0, NotSerialized) {
+      return (0xF);
+    }
+
+    /* Register map for interrupt clear register */
+    OperationRegion (
+      DTIM,
+      SystemMemory,
+      FixedPcdGet32 (PcdSp804DualTimerBaseAddress),
+      FixedPcdGet32 (PcdSp804DualTimerSize))
+    Field (DTIM, DWordAcc, NoLock, Preserve) {
+      Offset (0x0C),
+      T1IC, 32,       /* 0x0C Timer 1 Interrupt clear */
+    }
+
+    /* GED event handler */
+    Method (_EVT, 1, Serialized) {
+      switch (ToInteger (Arg0))
+      {
+        case (FixedPcdGet32 (PcdSp804DualTimerInterrupt)) {
+          Store (0x01, T1IC)
+        }
+      }
+    }
+  } /* Device (\_SB.GED0) */
+
 }
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [edk2-platforms][PATCH v2 3/5] Platform/Sgi: define the macro ENABLE_GOP
  2021-06-11 10:34 [edk2-platforms][PATCH v2 0/5] Platform/Sgi: Miscellaneous updates Pranav Madhu
  2021-06-11 10:34 ` [edk2-platforms][PATCH v2 1/5] Platform/Sgi: Enable PrimeCell GPIO Pranav Madhu
  2021-06-11 10:34 ` [edk2-platforms][PATCH v2 2/5] Platform/Sgi: Add GED support Pranav Madhu
@ 2021-06-11 10:34 ` Pranav Madhu
  2021-06-11 10:34 ` [edk2-platforms][PATCH v2 4/5] Platform/Sgi: update _OSC control method to control LPI and CPPC Pranav Madhu
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 12+ messages in thread
From: Pranav Madhu @ 2021-06-11 10:34 UTC (permalink / raw)
  To: devel; +Cc: Ard Biesheuvel, Sami Mujawar

From: Thomas Abraham <thomas.abraham@arm.com>

Define and use the global macro ENABLE_GOP to enable the use of the
Graphics Output Protocol (GOP). Enabling this macro allows GOP protocol
to be used for display on the HDLCD controller of the platform. This
macro is set to false by default for the all supported platforms.

Signed-off-by: Thomas Abraham <thomas.abraham@arm.com>
Signed-off-by: Pranav Madhu <pranav.madhu@arm.com>
---
 Platform/ARM/SgiPkg/SgiPlatform.dsc.inc | 5 +++++
 Platform/ARM/SgiPkg/SgiPlatform.fdf     | 2 ++
 2 files changed, 7 insertions(+)

diff --git a/Platform/ARM/SgiPkg/SgiPlatform.dsc.inc b/Platform/ARM/SgiPkg/SgiPlatform.dsc.inc
index e4aee7a09acf..2851cf180c0e 100644
--- a/Platform/ARM/SgiPkg/SgiPlatform.dsc.inc
+++ b/Platform/ARM/SgiPkg/SgiPlatform.dsc.inc
@@ -14,6 +14,9 @@
   # Secure boot requires secure storage to be enabled as well.
   DEFINE SECURE_BOOT_ENABLE                 = FALSE
 
+  # To allow HDLCD display using the Graphics Output Protocol, set this to TRUE.
+  DEFINE ENABLE_GOP                         = FALSE
+
 [BuildOptions]
   *_*_*_CC_FLAGS = -D DISABLE_NEW_DEPRECATED_INTERFACES
 
@@ -234,7 +237,9 @@
   ArmPkg/Drivers/ArmGic/ArmGicDxe.inf
   ArmPkg/Drivers/TimerDxe/TimerDxe.inf
   ArmPkg/Drivers/GenericWatchdogDxe/GenericWatchdogDxe.inf
+!if $(ENABLE_GOP) == TRUE
   ArmPlatformPkg/Drivers/LcdGraphicsOutputDxe/LcdGraphicsOutputDxe.inf
+!endif
   ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashDxe.inf
   EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClockRuntimeDxe.inf
   EmbeddedPkg/MetronomeDxe/MetronomeDxe.inf
diff --git a/Platform/ARM/SgiPkg/SgiPlatform.fdf b/Platform/ARM/SgiPkg/SgiPlatform.fdf
index d94e4633e36c..8227ae03330c 100644
--- a/Platform/ARM/SgiPkg/SgiPlatform.fdf
+++ b/Platform/ARM/SgiPkg/SgiPlatform.fdf
@@ -153,7 +153,9 @@ READ_LOCK_STATUS   = TRUE
   INF OvmfPkg/VirtioBlkDxe/VirtioBlk.inf
 
   # Graphics Output Protocol
+!if $(ENABLE_GOP) == TRUE
   INF ArmPlatformPkg/Drivers/LcdGraphicsOutputDxe/LcdGraphicsOutputDxe.inf
+!endif
 
   INF Platform/ARM/Drivers/BootMonFs/BootMonFs.inf
   INF MdeModulePkg/Universal/PCD/Dxe/Pcd.inf
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [edk2-platforms][PATCH v2 4/5] Platform/Sgi: update _OSC control method to control LPI and CPPC
  2021-06-11 10:34 [edk2-platforms][PATCH v2 0/5] Platform/Sgi: Miscellaneous updates Pranav Madhu
                   ` (2 preceding siblings ...)
  2021-06-11 10:34 ` [edk2-platforms][PATCH v2 3/5] Platform/Sgi: define the macro ENABLE_GOP Pranav Madhu
@ 2021-06-11 10:34 ` Pranav Madhu
  2021-06-14 10:37   ` [edk2-devel] " Thomas Abraham
  2021-06-11 10:34 ` [edk2-platforms][PATCH v2 5/5] Platform/Sgi: Cleanup build options for StandaloneMM context Pranav Madhu
  2021-07-05 14:34 ` [edk2-devel] [edk2-platforms][PATCH v2 0/5] Platform/Sgi: Miscellaneous updates Sami Mujawar
  5 siblings, 1 reply; 12+ messages in thread
From: Pranav Madhu @ 2021-06-11 10:34 UTC (permalink / raw)
  To: devel; +Cc: Ard Biesheuvel, Sami Mujawar

Define and use the global macro LPI_EN and CPPC_EN to enable low power
idle and CPPC support for reference design platforms. Update platform
wide _OSC control method to enable/disable low power idle and CPPC
support based on pcd PcdOscLpiEnable and PcdOscCppcEnable. The pcds
are controlled by the global macros LPI_EN and CPPC_EN.

Signed-off-by: Pranav Madhu <pranav.madhu@arm.com>
---
 Platform/ARM/SgiPkg/SgiPlatform.dec                     |  4 ++++
 Platform/ARM/SgiPkg/SgiPlatform.dsc.inc                 | 14 ++++++++++++++
 Platform/ARM/SgiPkg/AcpiTables/RdN1EdgeAcpiTables.inf   |  1 +
 Platform/ARM/SgiPkg/AcpiTables/RdN1EdgeX2AcpiTables.inf |  1 +
 Platform/ARM/SgiPkg/AcpiTables/RdN2AcpiTables.inf       |  2 ++
 Platform/ARM/SgiPkg/AcpiTables/RdN2Cfg1AcpiTables.inf   |  2 ++
 Platform/ARM/SgiPkg/AcpiTables/RdV1AcpiTables.inf       |  2 ++
 Platform/ARM/SgiPkg/AcpiTables/RdV1McAcpiTables.inf     |  2 ++
 Platform/ARM/SgiPkg/AcpiTables/Sgi575AcpiTables.inf     |  1 +
 Platform/ARM/SgiPkg/Include/SgiAcpiHeader.h             |  2 ++
 Platform/ARM/SgiPkg/AcpiTables/RdN1Edge/Dsdt.asl        |  8 ++++++++
 Platform/ARM/SgiPkg/AcpiTables/RdN1EdgeX2/Dsdt.asl      |  8 ++++++++
 Platform/ARM/SgiPkg/AcpiTables/RdN2/Dsdt.asl            | 15 +++++++++++++++
 Platform/ARM/SgiPkg/AcpiTables/RdN2Cfg1/Dsdt.asl        | 15 +++++++++++++++
 Platform/ARM/SgiPkg/AcpiTables/RdV1/Dsdt.asl            | 15 +++++++++++++++
 Platform/ARM/SgiPkg/AcpiTables/RdV1Mc/Dsdt.asl          | 15 +++++++++++++++
 Platform/ARM/SgiPkg/AcpiTables/Sgi575/Dsdt.asl          |  8 ++++++++
 17 files changed, 115 insertions(+)

diff --git a/Platform/ARM/SgiPkg/SgiPlatform.dec b/Platform/ARM/SgiPkg/SgiPlatform.dec
index ffbbb24f1c33..8cd818a9bf64 100644
--- a/Platform/ARM/SgiPkg/SgiPlatform.dec
+++ b/Platform/ARM/SgiPkg/SgiPlatform.dec
@@ -86,5 +86,9 @@
   gArmSgiTokenSpaceGuid.PcdSp804DualTimerSize|0|UINT32|0x00000023
   gArmSgiTokenSpaceGuid.PcdSp804DualTimerInterrupt|0|UINT32|0x00000024
 
+  # ACPI platform wide _OSC
+  gArmSgiTokenSpaceGuid.PcdOscLpiEnable|0|UINT32|0x00000025
+  gArmSgiTokenSpaceGuid.PcdOscCppcEnable|0|UINT32|0x00000026
+
 [Ppis]
   gNtFwConfigDtInfoPpiGuid     = { 0x6f606eb3, 0x9123, 0x4e15, { 0xa8, 0x9b, 0x0f, 0xac, 0x66, 0xef, 0xd0, 0x17 } }
diff --git a/Platform/ARM/SgiPkg/SgiPlatform.dsc.inc b/Platform/ARM/SgiPkg/SgiPlatform.dsc.inc
index 2851cf180c0e..7e37732fb93c 100644
--- a/Platform/ARM/SgiPkg/SgiPlatform.dsc.inc
+++ b/Platform/ARM/SgiPkg/SgiPlatform.dsc.inc
@@ -17,6 +17,10 @@
   # To allow HDLCD display using the Graphics Output Protocol, set this to TRUE.
   DEFINE ENABLE_GOP                         = FALSE
 
+  # To enable LPI and CPPC power management functionality, set this to TRUE.
+  DEFINE LPI_EN                             = FALSE
+  DEFINE CPPC_EN                            = FALSE
+
 [BuildOptions]
   *_*_*_CC_FLAGS = -D DISABLE_NEW_DEPRECATED_INTERFACES
 
@@ -108,6 +112,16 @@
   gArmSgiTokenSpaceGuid.PcdDramBlock2Base|0x8080000000
   gArmSgiTokenSpaceGuid.PcdDramBlock2Size|0x180000000
 
+!if $(LPI_EN) == TRUE
+  # Allow use of LPI in the response to _OSC method call
+  gArmSgiTokenSpaceGuid.PcdOscLpiEnable|1
+!endif
+
+!if $(CPPC_EN) == TRUE
+  # Allow use of CPPC in the response to _OSC method call
+  gArmSgiTokenSpaceGuid.PcdOscCppcEnable|1
+!endif
+
   # NV Storage PCDs. Use base of 0x08000000 for NOR0, 0xC0000000 for NOR 1
   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize|0x01400000
   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize|0x01400000
diff --git a/Platform/ARM/SgiPkg/AcpiTables/RdN1EdgeAcpiTables.inf b/Platform/ARM/SgiPkg/AcpiTables/RdN1EdgeAcpiTables.inf
index 8d46b001444c..ce89aa93ea7b 100644
--- a/Platform/ARM/SgiPkg/AcpiTables/RdN1EdgeAcpiTables.inf
+++ b/Platform/ARM/SgiPkg/AcpiTables/RdN1EdgeAcpiTables.inf
@@ -57,6 +57,7 @@
   gArmSgiTokenSpaceGuid.PcdGpioController0Interrupt
   gArmSgiTokenSpaceGuid.PcdGtFrame0Gsiv
   gArmSgiTokenSpaceGuid.PcdGtFrame1Gsiv
+  gArmSgiTokenSpaceGuid.PcdOscLpiEnable
   gArmSgiTokenSpaceGuid.PcdSp804DualTimerBaseAddress
   gArmSgiTokenSpaceGuid.PcdSp804DualTimerSize
   gArmSgiTokenSpaceGuid.PcdSp804DualTimerInterrupt
diff --git a/Platform/ARM/SgiPkg/AcpiTables/RdN1EdgeX2AcpiTables.inf b/Platform/ARM/SgiPkg/AcpiTables/RdN1EdgeX2AcpiTables.inf
index 473c9eff0f55..1999bc1553e9 100644
--- a/Platform/ARM/SgiPkg/AcpiTables/RdN1EdgeX2AcpiTables.inf
+++ b/Platform/ARM/SgiPkg/AcpiTables/RdN1EdgeX2AcpiTables.inf
@@ -66,6 +66,7 @@
   gArmSgiTokenSpaceGuid.PcdGpioController0Interrupt
   gArmSgiTokenSpaceGuid.PcdGtFrame0Gsiv
   gArmSgiTokenSpaceGuid.PcdGtFrame1Gsiv
+  gArmSgiTokenSpaceGuid.PcdOscLpiEnable
   gArmSgiTokenSpaceGuid.PcdSp804DualTimerBaseAddress
   gArmSgiTokenSpaceGuid.PcdSp804DualTimerSize
   gArmSgiTokenSpaceGuid.PcdSp804DualTimerInterrupt
diff --git a/Platform/ARM/SgiPkg/AcpiTables/RdN2AcpiTables.inf b/Platform/ARM/SgiPkg/AcpiTables/RdN2AcpiTables.inf
index c537db45e08f..25be2e276e85 100644
--- a/Platform/ARM/SgiPkg/AcpiTables/RdN2AcpiTables.inf
+++ b/Platform/ARM/SgiPkg/AcpiTables/RdN2AcpiTables.inf
@@ -57,6 +57,8 @@
   gArmSgiTokenSpaceGuid.PcdGpioController0Interrupt
   gArmSgiTokenSpaceGuid.PcdGtFrame0Gsiv
   gArmSgiTokenSpaceGuid.PcdGtFrame1Gsiv
+  gArmSgiTokenSpaceGuid.PcdOscLpiEnable
+  gArmSgiTokenSpaceGuid.PcdOscCppcEnable
   gArmSgiTokenSpaceGuid.PcdSp804DualTimerBaseAddress
   gArmSgiTokenSpaceGuid.PcdSp804DualTimerSize
   gArmSgiTokenSpaceGuid.PcdSp804DualTimerInterrupt
diff --git a/Platform/ARM/SgiPkg/AcpiTables/RdN2Cfg1AcpiTables.inf b/Platform/ARM/SgiPkg/AcpiTables/RdN2Cfg1AcpiTables.inf
index 6bbc3fc230ae..4b36c3e5ceb2 100644
--- a/Platform/ARM/SgiPkg/AcpiTables/RdN2Cfg1AcpiTables.inf
+++ b/Platform/ARM/SgiPkg/AcpiTables/RdN2Cfg1AcpiTables.inf
@@ -57,6 +57,8 @@
   gArmSgiTokenSpaceGuid.PcdGpioController0Interrupt
   gArmSgiTokenSpaceGuid.PcdGtFrame0Gsiv
   gArmSgiTokenSpaceGuid.PcdGtFrame1Gsiv
+  gArmSgiTokenSpaceGuid.PcdOscLpiEnable
+  gArmSgiTokenSpaceGuid.PcdOscCppcEnable
   gArmSgiTokenSpaceGuid.PcdSmmuBase
   gArmSgiTokenSpaceGuid.PcdSp804DualTimerBaseAddress
   gArmSgiTokenSpaceGuid.PcdSp804DualTimerSize
diff --git a/Platform/ARM/SgiPkg/AcpiTables/RdV1AcpiTables.inf b/Platform/ARM/SgiPkg/AcpiTables/RdV1AcpiTables.inf
index d461cbe54c68..97a87462932b 100644
--- a/Platform/ARM/SgiPkg/AcpiTables/RdV1AcpiTables.inf
+++ b/Platform/ARM/SgiPkg/AcpiTables/RdV1AcpiTables.inf
@@ -57,6 +57,8 @@
   gArmSgiTokenSpaceGuid.PcdGpioController0Interrupt
   gArmSgiTokenSpaceGuid.PcdGtFrame0Gsiv
   gArmSgiTokenSpaceGuid.PcdGtFrame1Gsiv
+  gArmSgiTokenSpaceGuid.PcdOscLpiEnable
+  gArmSgiTokenSpaceGuid.PcdOscCppcEnable
   gArmSgiTokenSpaceGuid.PcdSp804DualTimerBaseAddress
   gArmSgiTokenSpaceGuid.PcdSp804DualTimerSize
   gArmSgiTokenSpaceGuid.PcdSp804DualTimerInterrupt
diff --git a/Platform/ARM/SgiPkg/AcpiTables/RdV1McAcpiTables.inf b/Platform/ARM/SgiPkg/AcpiTables/RdV1McAcpiTables.inf
index 3b699b0acbb8..deaca3719ae4 100644
--- a/Platform/ARM/SgiPkg/AcpiTables/RdV1McAcpiTables.inf
+++ b/Platform/ARM/SgiPkg/AcpiTables/RdV1McAcpiTables.inf
@@ -66,6 +66,8 @@
   gArmSgiTokenSpaceGuid.PcdGpioController0Interrupt
   gArmSgiTokenSpaceGuid.PcdGtFrame0Gsiv
   gArmSgiTokenSpaceGuid.PcdGtFrame1Gsiv
+  gArmSgiTokenSpaceGuid.PcdOscLpiEnable
+  gArmSgiTokenSpaceGuid.PcdOscCppcEnable
   gArmSgiTokenSpaceGuid.PcdSp804DualTimerBaseAddress
   gArmSgiTokenSpaceGuid.PcdSp804DualTimerSize
   gArmSgiTokenSpaceGuid.PcdSp804DualTimerInterrupt
diff --git a/Platform/ARM/SgiPkg/AcpiTables/Sgi575AcpiTables.inf b/Platform/ARM/SgiPkg/AcpiTables/Sgi575AcpiTables.inf
index 3ee66b1dfd5a..a1bd71fde761 100644
--- a/Platform/ARM/SgiPkg/AcpiTables/Sgi575AcpiTables.inf
+++ b/Platform/ARM/SgiPkg/AcpiTables/Sgi575AcpiTables.inf
@@ -57,6 +57,7 @@
   gArmSgiTokenSpaceGuid.PcdGpioController0Interrupt
   gArmSgiTokenSpaceGuid.PcdGtFrame0Gsiv
   gArmSgiTokenSpaceGuid.PcdGtFrame1Gsiv
+  gArmSgiTokenSpaceGuid.PcdOscLpiEnable
   gArmSgiTokenSpaceGuid.PcdSp804DualTimerBaseAddress
   gArmSgiTokenSpaceGuid.PcdSp804DualTimerSize
   gArmSgiTokenSpaceGuid.PcdSp804DualTimerInterrupt
diff --git a/Platform/ARM/SgiPkg/Include/SgiAcpiHeader.h b/Platform/ARM/SgiPkg/Include/SgiAcpiHeader.h
index 7b8c16b172c0..d75d54055436 100644
--- a/Platform/ARM/SgiPkg/Include/SgiAcpiHeader.h
+++ b/Platform/ARM/SgiPkg/Include/SgiAcpiHeader.h
@@ -37,6 +37,8 @@
 
 // ACPI OSC for Platform-Wide Capability
 #define OSC_CAP_CPPC_SUPPORT          (1U << 5)
+#define OSC_CAP_CPPC2_SUPPORT         (1U << 6)
+#define OSC_CAP_PLAT_COORDINATED_LPI  (1U << 7)
 #define OSC_CAP_OS_INITIATED_LPI      (1U << 8)
 
 #pragma pack(1)
diff --git a/Platform/ARM/SgiPkg/AcpiTables/RdN1Edge/Dsdt.asl b/Platform/ARM/SgiPkg/AcpiTables/RdN1Edge/Dsdt.asl
index a2258f61aeca..bd8efa544a59 100644
--- a/Platform/ARM/SgiPkg/AcpiTables/RdN1Edge/Dsdt.asl
+++ b/Platform/ARM/SgiPkg/AcpiTables/RdN1Edge/Dsdt.asl
@@ -29,6 +29,14 @@ DefinitionBlock ("DsdtTable.aml", "DSDT", 2, "ARMLTD", "ARMSGI",
             And (CAP0, Not (OSC_CAP_OS_INITIATED_LPI), CAP0)
             Or (STS0, OSC_STS_CAPABILITY_MASKED, STS0)
           }
+
+          If (And (CAP0, OSC_CAP_PLAT_COORDINATED_LPI)) {
+            if (LEqual (FixedPcdGet32 (PcdOscLpiEnable), Zero)) {
+              And (CAP0, Not (OSC_CAP_PLAT_COORDINATED_LPI), CAP0)
+              Or (STS0, OSC_STS_CAPABILITY_MASKED, STS0)
+            }
+          }
+
         } Else {
           And (STS0, Not (OSC_STS_MASK), STS0)
           Or (STS0, Or (OSC_STS_FAILURE, OSC_STS_UNRECOGNIZED_REV), STS0)
diff --git a/Platform/ARM/SgiPkg/AcpiTables/RdN1EdgeX2/Dsdt.asl b/Platform/ARM/SgiPkg/AcpiTables/RdN1EdgeX2/Dsdt.asl
index 5807658e7815..9cb2b175418c 100644
--- a/Platform/ARM/SgiPkg/AcpiTables/RdN1EdgeX2/Dsdt.asl
+++ b/Platform/ARM/SgiPkg/AcpiTables/RdN1EdgeX2/Dsdt.asl
@@ -31,6 +31,14 @@ DefinitionBlock ("DsdtTable.aml", "DSDT", 2, "ARMLTD", "ARMSGI",
             And (CAP0, Not (OSC_CAP_OS_INITIATED_LPI), CAP0)
             Or (STS0, OSC_STS_CAPABILITY_MASKED, STS0)
           }
+
+          If (And (CAP0, OSC_CAP_PLAT_COORDINATED_LPI)) {
+            if (LEqual (FixedPcdGet32 (PcdOscLpiEnable), Zero)) {
+              And (CAP0, Not (OSC_CAP_PLAT_COORDINATED_LPI), CAP0)
+              Or (STS0, OSC_STS_CAPABILITY_MASKED, STS0)
+            }
+          }
+
         } Else {
           And (STS0, Not (OSC_STS_MASK), STS0)
           Or (STS0, Or (OSC_STS_FAILURE, OSC_STS_UNRECOGNIZED_REV), STS0)
diff --git a/Platform/ARM/SgiPkg/AcpiTables/RdN2/Dsdt.asl b/Platform/ARM/SgiPkg/AcpiTables/RdN2/Dsdt.asl
index a318ef48ded9..ccd98f829652 100644
--- a/Platform/ARM/SgiPkg/AcpiTables/RdN2/Dsdt.asl
+++ b/Platform/ARM/SgiPkg/AcpiTables/RdN2/Dsdt.asl
@@ -30,11 +30,26 @@ DefinitionBlock ("DsdtTable.aml", "DSDT", 2, "ARMLTD", "ARMSGI",
             Or (STS0, OSC_STS_CAPABILITY_MASKED, STS0)
           }
 
+          If (And (CAP0, OSC_CAP_PLAT_COORDINATED_LPI)) {
+            if (LEqual (FixedPcdGet32 (PcdOscLpiEnable), Zero)) {
+              And (CAP0, Not (OSC_CAP_PLAT_COORDINATED_LPI), CAP0)
+              Or (STS0, OSC_STS_CAPABILITY_MASKED, STS0)
+            }
+          }
+
           If (And (CAP0, OSC_CAP_CPPC_SUPPORT)) {
             /* CPPC revision 1 and below not supported */
             And (CAP0, Not (OSC_CAP_CPPC_SUPPORT), CAP0)
             Or (STS0, OSC_STS_CAPABILITY_MASKED, STS0)
           }
+
+          If (And (CAP0, OSC_CAP_CPPC2_SUPPORT)) {
+            if (LEqual (FixedPcdGet32 (PcdOscCppcEnable), Zero)) {
+              And (CAP0, Not (OSC_CAP_CPPC2_SUPPORT), CAP0)
+              Or (STS0, OSC_STS_CAPABILITY_MASKED, STS0)
+            }
+          }
+
         } Else {
           And (STS0, Not (OSC_STS_MASK), STS0)
           Or (STS0, Or (OSC_STS_FAILURE, OSC_STS_UNRECOGNIZED_REV), STS0)
diff --git a/Platform/ARM/SgiPkg/AcpiTables/RdN2Cfg1/Dsdt.asl b/Platform/ARM/SgiPkg/AcpiTables/RdN2Cfg1/Dsdt.asl
index 411eff84334a..b6decc77f480 100644
--- a/Platform/ARM/SgiPkg/AcpiTables/RdN2Cfg1/Dsdt.asl
+++ b/Platform/ARM/SgiPkg/AcpiTables/RdN2Cfg1/Dsdt.asl
@@ -36,11 +36,26 @@ DefinitionBlock ("DsdtTable.aml", "DSDT", 2, "ARMLTD", "ARMSGI",
             Or (STS0, OSC_STS_CAPABILITY_MASKED, STS0)
           }
 
+          If (And (CAP0, OSC_CAP_PLAT_COORDINATED_LPI)) {
+            if (LEqual (FixedPcdGet32 (PcdOscLpiEnable), Zero)) {
+              And (CAP0, Not (OSC_CAP_PLAT_COORDINATED_LPI), CAP0)
+              Or (STS0, OSC_STS_CAPABILITY_MASKED, STS0)
+            }
+          }
+
           If (And (CAP0, OSC_CAP_CPPC_SUPPORT)) {
             /* CPPC revision 1 and below not supported */
             And (CAP0, Not (OSC_CAP_CPPC_SUPPORT), CAP0)
             Or (STS0, OSC_STS_CAPABILITY_MASKED, STS0)
           }
+
+          If (And (CAP0, OSC_CAP_CPPC2_SUPPORT)) {
+            if (LEqual (FixedPcdGet32 (PcdOscCppcEnable), Zero)) {
+              And (CAP0, Not (OSC_CAP_CPPC2_SUPPORT), CAP0)
+              Or (STS0, OSC_STS_CAPABILITY_MASKED, STS0)
+            }
+          }
+
         } Else {
           And (STS0, Not (OSC_STS_MASK), STS0)
           Or (STS0, Or (OSC_STS_FAILURE, OSC_STS_UNRECOGNIZED_REV), STS0)
diff --git a/Platform/ARM/SgiPkg/AcpiTables/RdV1/Dsdt.asl b/Platform/ARM/SgiPkg/AcpiTables/RdV1/Dsdt.asl
index 0f632673d050..db9c19780e16 100644
--- a/Platform/ARM/SgiPkg/AcpiTables/RdV1/Dsdt.asl
+++ b/Platform/ARM/SgiPkg/AcpiTables/RdV1/Dsdt.asl
@@ -30,11 +30,26 @@ DefinitionBlock ("DsdtTable.aml", "DSDT", 2, "ARMLTD", "ARMSGI",
             Or (STS0, OSC_STS_CAPABILITY_MASKED, STS0)
           }
 
+          If (And (CAP0, OSC_CAP_PLAT_COORDINATED_LPI)) {
+            if (LEqual (FixedPcdGet32 (PcdOscLpiEnable), Zero)) {
+              And (CAP0, Not (OSC_CAP_PLAT_COORDINATED_LPI), CAP0)
+              Or (STS0, OSC_STS_CAPABILITY_MASKED, STS0)
+            }
+          }
+
           If (And (CAP0, OSC_CAP_CPPC_SUPPORT)) {
             /* CPPC revision 1 and below not supported */
             And (CAP0, Not (OSC_CAP_CPPC_SUPPORT), CAP0)
             Or (STS0, OSC_STS_CAPABILITY_MASKED, STS0)
           }
+
+          If (And (CAP0, OSC_CAP_CPPC2_SUPPORT)) {
+            if (LEqual (FixedPcdGet32 (PcdOscCppcEnable), Zero)) {
+              And (CAP0, Not (OSC_CAP_CPPC2_SUPPORT), CAP0)
+              Or (STS0, OSC_STS_CAPABILITY_MASKED, STS0)
+            }
+          }
+
         } Else {
           And (STS0, Not (OSC_STS_MASK), STS0)
           Or (STS0, Or (OSC_STS_FAILURE, OSC_STS_UNRECOGNIZED_REV), STS0)
diff --git a/Platform/ARM/SgiPkg/AcpiTables/RdV1Mc/Dsdt.asl b/Platform/ARM/SgiPkg/AcpiTables/RdV1Mc/Dsdt.asl
index 622d522532a3..e084d82de7c0 100644
--- a/Platform/ARM/SgiPkg/AcpiTables/RdV1Mc/Dsdt.asl
+++ b/Platform/ARM/SgiPkg/AcpiTables/RdV1Mc/Dsdt.asl
@@ -30,11 +30,26 @@ DefinitionBlock ("DsdtTable.aml", "DSDT", 2, "ARMLTD", "ARMSGI",
             Or (STS0, OSC_STS_CAPABILITY_MASKED, STS0)
           }
 
+          If (And (CAP0, OSC_CAP_PLAT_COORDINATED_LPI)) {
+            if (LEqual (FixedPcdGet32 (PcdOscLpiEnable), Zero)) {
+              And (CAP0, Not (OSC_CAP_PLAT_COORDINATED_LPI), CAP0)
+              Or (STS0, OSC_STS_CAPABILITY_MASKED, STS0)
+            }
+          }
+
           If (And (CAP0, OSC_CAP_CPPC_SUPPORT)) {
             /* CPPC revision 1 and below not supported */
             And (CAP0, Not (OSC_CAP_CPPC_SUPPORT), CAP0)
             Or (STS0, OSC_STS_CAPABILITY_MASKED, STS0)
           }
+
+          If (And (CAP0, OSC_CAP_CPPC2_SUPPORT)) {
+            if (LEqual (FixedPcdGet32 (PcdOscCppcEnable), Zero)) {
+              And (CAP0, Not (OSC_CAP_CPPC2_SUPPORT), CAP0)
+              Or (STS0, OSC_STS_CAPABILITY_MASKED, STS0)
+            }
+          }
+
         } Else {
           And (STS0, Not (OSC_STS_MASK), STS0)
           Or (STS0, Or (OSC_STS_FAILURE, OSC_STS_UNRECOGNIZED_REV), STS0)
diff --git a/Platform/ARM/SgiPkg/AcpiTables/Sgi575/Dsdt.asl b/Platform/ARM/SgiPkg/AcpiTables/Sgi575/Dsdt.asl
index e879a681fabf..a292d20d8afb 100644
--- a/Platform/ARM/SgiPkg/AcpiTables/Sgi575/Dsdt.asl
+++ b/Platform/ARM/SgiPkg/AcpiTables/Sgi575/Dsdt.asl
@@ -28,6 +28,14 @@ DefinitionBlock("DsdtTable.aml", "DSDT", 2, "ARMLTD", "ARMSGI", EFI_ACPI_ARM_OEM
             And (CAP0, Not (OSC_CAP_OS_INITIATED_LPI), CAP0)
             Or (STS0, OSC_STS_CAPABILITY_MASKED, STS0)
           }
+
+          If (And (CAP0, OSC_CAP_PLAT_COORDINATED_LPI)) {
+            if (LEqual (FixedPcdGet32 (PcdOscLpiEnable), Zero)) {
+              And (CAP0, Not (OSC_CAP_PLAT_COORDINATED_LPI), CAP0)
+              Or (STS0, OSC_STS_CAPABILITY_MASKED, STS0)
+            }
+          }
+
         } Else {
           And (STS0, Not (OSC_STS_MASK), STS0)
           Or (STS0, Or (OSC_STS_FAILURE, OSC_STS_UNRECOGNIZED_REV), STS0)
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [edk2-platforms][PATCH v2 5/5] Platform/Sgi: Cleanup build options for StandaloneMM context
  2021-06-11 10:34 [edk2-platforms][PATCH v2 0/5] Platform/Sgi: Miscellaneous updates Pranav Madhu
                   ` (3 preceding siblings ...)
  2021-06-11 10:34 ` [edk2-platforms][PATCH v2 4/5] Platform/Sgi: update _OSC control method to control LPI and CPPC Pranav Madhu
@ 2021-06-11 10:34 ` Pranav Madhu
  2021-06-14 10:38   ` [edk2-devel] " Thomas Abraham
  2021-07-05 14:34 ` [edk2-devel] [edk2-platforms][PATCH v2 0/5] Platform/Sgi: Miscellaneous updates Sami Mujawar
  5 siblings, 1 reply; 12+ messages in thread
From: Pranav Madhu @ 2021-06-11 10:34 UTC (permalink / raw)
  To: devel; +Cc: Ard Biesheuvel, Sami Mujawar

From: Omkar Anand Kulkarni <omkar.kulkarni@arm.com>

The Arm reference design platforms support only AArch64 mode for
StandaloneMM execution context. So cleanup the existing build options
specified for StandaloneMM.

Signed-off-by: Omkar Anand Kulkarni <omkar.kulkarni@arm.com>
Signed-off-by: Pranav Madhu <pranav.madhu@arm.com>
---
 Platform/ARM/SgiPkg/SgiPlatformMm.dsc.inc | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/Platform/ARM/SgiPkg/SgiPlatformMm.dsc.inc b/Platform/ARM/SgiPkg/SgiPlatformMm.dsc.inc
index 6839ec35da8a..2b461d5afbcb 100644
--- a/Platform/ARM/SgiPkg/SgiPlatformMm.dsc.inc
+++ b/Platform/ARM/SgiPkg/SgiPlatformMm.dsc.inc
@@ -144,7 +144,5 @@
 #
 ###################################################################################################
 [BuildOptions.AARCH64]
-  GCC:*_*_*_DLINK_FLAGS = -z common-page-size=0x1000 -march=armv8-a+nofp
-
-[BuildOptions]
-  *_*_*_CC_FLAGS = -D DISABLE_NEW_DEPRECATED_INTERFACES
+  GCC:*_*_*_CC_FLAGS = -mstrict-align -march=armv8-a+nofp -D DISABLE_NEW_DEPRECATED_INTERFACES
+  GCC:*_*_*_DLINK_FLAGS = -z common-page-size=0x1000
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [edk2-devel] [edk2-platforms][PATCH v2 1/5] Platform/Sgi: Enable PrimeCell GPIO
  2021-06-11 10:34 ` [edk2-platforms][PATCH v2 1/5] Platform/Sgi: Enable PrimeCell GPIO Pranav Madhu
@ 2021-06-14 10:33   ` Thomas Abraham
  0 siblings, 0 replies; 12+ messages in thread
From: Thomas Abraham @ 2021-06-14 10:33 UTC (permalink / raw)
  To: devel@edk2.groups.io, Pranav Madhu; +Cc: Ard Biesheuvel, Sami Mujawar, nd


On 6/11/21 4:04 PM, Pranav Madhu via groups.io wrote: 
> The HW-Reduced ACPI model has specific requirements for GPIO
> controllers. Arm's reference design Platforms has PrimeCell GPIO
> (PL061) integrated in the RoS subsystem to provide GPIO support. Add
> GPIO device entry and also add GPIO signalled ACPI event template for
> reference.
> 
> Signed-off-by: Pranav Madhu <pranav.madhu@arm.com>
> ---
>  Platform/ARM/SgiPkg/SgiPlatform.dec                     |  5 ++
>  Platform/ARM/SgiPkg/SgiMemoryMap.dsc.inc                |  5 ++
>  Platform/ARM/SgiPkg/SgiMemoryMap2.dsc.inc               |  5 ++
>  Platform/ARM/SgiPkg/AcpiTables/RdE1EdgeAcpiTables.inf   |  4 ++
>  Platform/ARM/SgiPkg/AcpiTables/RdN1EdgeAcpiTables.inf   |  4 ++
>  Platform/ARM/SgiPkg/AcpiTables/RdN1EdgeX2AcpiTables.inf |  4 ++
>  Platform/ARM/SgiPkg/AcpiTables/RdN2AcpiTables.inf       |  4 ++
>  Platform/ARM/SgiPkg/AcpiTables/RdN2Cfg1AcpiTables.inf   |  4 ++
>  Platform/ARM/SgiPkg/AcpiTables/RdV1AcpiTables.inf       |  4 ++
>  Platform/ARM/SgiPkg/AcpiTables/RdV1McAcpiTables.inf     |  4 ++
>  Platform/ARM/SgiPkg/AcpiTables/Sgi575AcpiTables.inf     |  5 ++
>  Platform/ARM/SgiPkg/AcpiTables/SsdtEvents.asl           | 67
> ++++++++++++++++++++
>  12 files changed, 115 insertions(+)

Reviewed-by: Thomas Abraham <thomas.abraham@arm.com>

[...]

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [edk2-devel] [edk2-platforms][PATCH v2 2/5] Platform/Sgi: Add GED support
  2021-06-11 10:34 ` [edk2-platforms][PATCH v2 2/5] Platform/Sgi: Add GED support Pranav Madhu
@ 2021-06-14 10:35   ` Thomas Abraham
  0 siblings, 0 replies; 12+ messages in thread
From: Thomas Abraham @ 2021-06-14 10:35 UTC (permalink / raw)
  To: devel@edk2.groups.io, Pranav Madhu; +Cc: Ard Biesheuvel, Sami Mujawar, nd


On 6/11/21 4:04 PM, Pranav Madhu via groups.io wrote:
> Add ACPI Generic Event Device (GED) support for Arm's reference design
> platforms. The SP804 dual-timer interrupt is used as the event source
> for GED.
> 
> Signed-off-by: Pranav Madhu <pranav.madhu@arm.com>
> ---
>  Platform/ARM/SgiPkg/SgiPlatform.dec                     |  5 ++
>  Platform/ARM/SgiPkg/SgiMemoryMap.dsc.inc                |  5 ++
>  Platform/ARM/SgiPkg/SgiMemoryMap2.dsc.inc               |  5 ++
>  Platform/ARM/SgiPkg/AcpiTables/RdE1EdgeAcpiTables.inf   |  3 ++
>  Platform/ARM/SgiPkg/AcpiTables/RdN1EdgeAcpiTables.inf   |  3 ++
>  Platform/ARM/SgiPkg/AcpiTables/RdN1EdgeX2AcpiTables.inf |  3 ++
>  Platform/ARM/SgiPkg/AcpiTables/RdN2AcpiTables.inf       |  3 ++
>  Platform/ARM/SgiPkg/AcpiTables/RdN2Cfg1AcpiTables.inf   |  3 ++
>  Platform/ARM/SgiPkg/AcpiTables/RdV1AcpiTables.inf       |  3 ++
>  Platform/ARM/SgiPkg/AcpiTables/RdV1McAcpiTables.inf     |  3 ++
>  Platform/ARM/SgiPkg/AcpiTables/Sgi575AcpiTables.inf     |  3 ++
>  Platform/ARM/SgiPkg/AcpiTables/SsdtEvents.asl           | 49
> ++++++++++++++++++++
>  12 files changed, 88 insertions(+)

Reviewed-by: Thomas Abraham <thomas.abraham@arm.com>

[...]

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [edk2-devel] [edk2-platforms][PATCH v2 4/5] Platform/Sgi: update _OSC control method to control LPI and CPPC
  2021-06-11 10:34 ` [edk2-platforms][PATCH v2 4/5] Platform/Sgi: update _OSC control method to control LPI and CPPC Pranav Madhu
@ 2021-06-14 10:37   ` Thomas Abraham
  0 siblings, 0 replies; 12+ messages in thread
From: Thomas Abraham @ 2021-06-14 10:37 UTC (permalink / raw)
  To: devel@edk2.groups.io, Pranav Madhu; +Cc: Ard Biesheuvel, Sami Mujawar, nd


On 6/11/21 4:04 PM, Pranav Madhu via groups.io wrote: 
> Define and use the global macro LPI_EN and CPPC_EN to enable low power
> idle and CPPC support for reference design platforms. Update platform
> wide _OSC control method to enable/disable low power idle and CPPC
> support based on pcd PcdOscLpiEnable and PcdOscCppcEnable. The pcds
> are controlled by the global macros LPI_EN and CPPC_EN.
> 
> Signed-off-by: Pranav Madhu <pranav.madhu@arm.com>
> ---
>  Platform/ARM/SgiPkg/SgiPlatform.dec                     |  4 ++++
>  Platform/ARM/SgiPkg/SgiPlatform.dsc.inc                 | 14 ++++++++++++++
>  Platform/ARM/SgiPkg/AcpiTables/RdN1EdgeAcpiTables.inf   |  1 +
>  Platform/ARM/SgiPkg/AcpiTables/RdN1EdgeX2AcpiTables.inf |  1 +
>  Platform/ARM/SgiPkg/AcpiTables/RdN2AcpiTables.inf       |  2 ++
>  Platform/ARM/SgiPkg/AcpiTables/RdN2Cfg1AcpiTables.inf   |  2 ++
>  Platform/ARM/SgiPkg/AcpiTables/RdV1AcpiTables.inf       |  2 ++
>  Platform/ARM/SgiPkg/AcpiTables/RdV1McAcpiTables.inf     |  2 ++
>  Platform/ARM/SgiPkg/AcpiTables/Sgi575AcpiTables.inf     |  1 +
>  Platform/ARM/SgiPkg/Include/SgiAcpiHeader.h             |  2 ++
>  Platform/ARM/SgiPkg/AcpiTables/RdN1Edge/Dsdt.asl        |  8 ++++++++
>  Platform/ARM/SgiPkg/AcpiTables/RdN1EdgeX2/Dsdt.asl      |  8 ++++++++
>  Platform/ARM/SgiPkg/AcpiTables/RdN2/Dsdt.asl            | 15 +++++++++++++++
>  Platform/ARM/SgiPkg/AcpiTables/RdN2Cfg1/Dsdt.asl        | 15
> +++++++++++++++
>  Platform/ARM/SgiPkg/AcpiTables/RdV1/Dsdt.asl            | 15 +++++++++++++++
>  Platform/ARM/SgiPkg/AcpiTables/RdV1Mc/Dsdt.asl          | 15
> +++++++++++++++
>  Platform/ARM/SgiPkg/AcpiTables/Sgi575/Dsdt.asl          |  8 ++++++++
>  17 files changed, 115 insertions(+)


Reviewed-by: Thomas Abraham <thomas.abraham@arm.com>

[...]

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [edk2-devel] [edk2-platforms][PATCH v2 5/5] Platform/Sgi: Cleanup build options for StandaloneMM context
  2021-06-11 10:34 ` [edk2-platforms][PATCH v2 5/5] Platform/Sgi: Cleanup build options for StandaloneMM context Pranav Madhu
@ 2021-06-14 10:38   ` Thomas Abraham
  0 siblings, 0 replies; 12+ messages in thread
From: Thomas Abraham @ 2021-06-14 10:38 UTC (permalink / raw)
  To: devel@edk2.groups.io, Pranav Madhu; +Cc: Ard Biesheuvel, Sami Mujawar, nd


On 6/11/21 4:04 PM, Pranav Madhu via groups.io wrote:  
> From: Omkar Anand Kulkarni <omkar.kulkarni@arm.com>
> 
> The Arm reference design platforms support only AArch64 mode for
> StandaloneMM execution context. So cleanup the existing build options
> specified for StandaloneMM.
> 
> Signed-off-by: Omkar Anand Kulkarni <omkar.kulkarni@arm.com>
> Signed-off-by: Pranav Madhu <pranav.madhu@arm.com>
> ---
>  Platform/ARM/SgiPkg/SgiPlatformMm.dsc.inc | 6 ++----
>  1 file changed, 2 insertions(+), 4 deletions(-)


Reviewed-by: Thomas Abraham <thomas.abraham@arm.com>

[...]

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [edk2-devel] [edk2-platforms][PATCH v2 0/5] Platform/Sgi: Miscellaneous updates
  2021-06-11 10:34 [edk2-platforms][PATCH v2 0/5] Platform/Sgi: Miscellaneous updates Pranav Madhu
                   ` (4 preceding siblings ...)
  2021-06-11 10:34 ` [edk2-platforms][PATCH v2 5/5] Platform/Sgi: Cleanup build options for StandaloneMM context Pranav Madhu
@ 2021-07-05 14:34 ` Sami Mujawar
  2021-07-05 15:35   ` Sami Mujawar
  5 siblings, 1 reply; 12+ messages in thread
From: Sami Mujawar @ 2021-07-05 14:34 UTC (permalink / raw)
  To: Pranav Madhu, devel

[-- Attachment #1: Type: text/plain, Size: 131 bytes --]

Hi Pranav,

This patch series looks good to me.

Reviewed-by: Sami Mujawar <sami.mujawar@arm.com>

Regards,

Sami Mujawar

[-- Attachment #2: Type: text/html, Size: 169 bytes --]

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [edk2-devel] [edk2-platforms][PATCH v2 0/5] Platform/Sgi: Miscellaneous updates
  2021-07-05 14:34 ` [edk2-devel] [edk2-platforms][PATCH v2 0/5] Platform/Sgi: Miscellaneous updates Sami Mujawar
@ 2021-07-05 15:35   ` Sami Mujawar
  0 siblings, 0 replies; 12+ messages in thread
From: Sami Mujawar @ 2021-07-05 15:35 UTC (permalink / raw)
  To: Sami Mujawar, devel

[-- Attachment #1: Type: text/plain, Size: 77 bytes --]

Pushed as 086a3a3ce6c4..936e8dd57524

Thanks.

Regards,

Sami Mujawar

[-- Attachment #2: Type: text/html, Size: 101 bytes --]

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2021-07-05 15:35 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-06-11 10:34 [edk2-platforms][PATCH v2 0/5] Platform/Sgi: Miscellaneous updates Pranav Madhu
2021-06-11 10:34 ` [edk2-platforms][PATCH v2 1/5] Platform/Sgi: Enable PrimeCell GPIO Pranav Madhu
2021-06-14 10:33   ` [edk2-devel] " Thomas Abraham
2021-06-11 10:34 ` [edk2-platforms][PATCH v2 2/5] Platform/Sgi: Add GED support Pranav Madhu
2021-06-14 10:35   ` [edk2-devel] " Thomas Abraham
2021-06-11 10:34 ` [edk2-platforms][PATCH v2 3/5] Platform/Sgi: define the macro ENABLE_GOP Pranav Madhu
2021-06-11 10:34 ` [edk2-platforms][PATCH v2 4/5] Platform/Sgi: update _OSC control method to control LPI and CPPC Pranav Madhu
2021-06-14 10:37   ` [edk2-devel] " Thomas Abraham
2021-06-11 10:34 ` [edk2-platforms][PATCH v2 5/5] Platform/Sgi: Cleanup build options for StandaloneMM context Pranav Madhu
2021-06-14 10:38   ` [edk2-devel] " Thomas Abraham
2021-07-05 14:34 ` [edk2-devel] [edk2-platforms][PATCH v2 0/5] Platform/Sgi: Miscellaneous updates Sami Mujawar
2021-07-05 15:35   ` Sami Mujawar

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox