* [PATCH edk2-platforms 0/3] enable Secure96 GPIO LEDs on ACPI systems
@ 2019-04-25 12:32 Ard Biesheuvel
2019-04-25 12:32 ` [PATCH edk2-platforms 1/3] Silicon/SynQuacer: describe 96boards LS connector GPIOs via ACPI Ard Biesheuvel
` (3 more replies)
0 siblings, 4 replies; 9+ messages in thread
From: Ard Biesheuvel @ 2019-04-25 12:32 UTC (permalink / raw)
To: devel; +Cc: leif.lindholm, graeme.gregory, masahisa.kojima, Ard Biesheuvel
This series plumbs in the support for describing 96boards mezzanines
via ACPI. For now, only the GPIO LEDs are described: in the future,
I intend to wire up the I2C and SPI parts as well, but these are
currently untested and so not ready for review.
Note that this applies onto
Silicon/SynQuacer: add ACPI description of GPIO controller and power button
which I sent out earlier today.
Ard Biesheuvel (3):
Silicon/SynQuacer: describe 96boards LS connector GPIOs via ACPI
Platform/96Boards: add ACPI support to mezzanine/LS connector driver
Platform/Secure96Dxe: add ACPI description of the GPIO LEDs
Platform/96Boards/Include/Protocol/Mezzanine.h | 21 ++++
Platform/96Boards/LsConnectorDxe/LsConnectorDxe.c | 35 ++++---
Platform/96Boards/LsConnectorDxe/LsConnectorDxe.inf | 1 +
Platform/96Boards/Secure96Dxe/Secure96.asl | 103 ++++++++++++++++++++
Platform/96Boards/Secure96Dxe/Secure96Dxe.c | 59 ++++++++++-
Platform/96Boards/Secure96Dxe/Secure96Dxe.inf | 1 +
Silicon/Socionext/SynQuacer/AcpiTables/AcpiTables.inf | 14 +++
Silicon/Socionext/SynQuacer/AcpiTables/Dsdt.asl | 20 ++++
8 files changed, 238 insertions(+), 16 deletions(-)
create mode 100644 Platform/96Boards/Secure96Dxe/Secure96.asl
--
2.20.1
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH edk2-platforms 1/3] Silicon/SynQuacer: describe 96boards LS connector GPIOs via ACPI
2019-04-25 12:32 [PATCH edk2-platforms 0/3] enable Secure96 GPIO LEDs on ACPI systems Ard Biesheuvel
@ 2019-04-25 12:32 ` Ard Biesheuvel
2019-04-25 12:32 ` [PATCH edk2-platforms 2/3] Platform/96Boards: add ACPI support to mezzanine/LS connector driver Ard Biesheuvel
` (2 subsequent siblings)
3 siblings, 0 replies; 9+ messages in thread
From: Ard Biesheuvel @ 2019-04-25 12:32 UTC (permalink / raw)
To: devel; +Cc: leif.lindholm, graeme.gregory, masahisa.kojima, Ard Biesheuvel
Describe the 96boards LS connector GPIO resources via a new LS96
device object.
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
---
Silicon/Socionext/SynQuacer/AcpiTables/AcpiTables.inf | 14 ++++++++++++++
Silicon/Socionext/SynQuacer/AcpiTables/Dsdt.asl | 20 ++++++++++++++++++++
2 files changed, 34 insertions(+)
diff --git a/Silicon/Socionext/SynQuacer/AcpiTables/AcpiTables.inf b/Silicon/Socionext/SynQuacer/AcpiTables/AcpiTables.inf
index 6fbdf4d67a88..0fef8b9ca05b 100644
--- a/Silicon/Socionext/SynQuacer/AcpiTables/AcpiTables.inf
+++ b/Silicon/Socionext/SynQuacer/AcpiTables/AcpiTables.inf
@@ -40,6 +40,7 @@ [Packages]
EmbeddedPkg/EmbeddedPkg.dec
MdePkg/MdePkg.dec
MdeModulePkg/MdeModulePkg.dec
+ Platform/96Boards/96Boards.dec
Silicon/Socionext/SynQuacer/Drivers/Net/NetsecDxe/NetsecDxe.dec
Silicon/Socionext/SynQuacer/SynQuacer.dec
@@ -63,3 +64,16 @@ [FixedPcd]
gSynQuacerTokenSpaceGuid.PcdNetsecEepromBase
gSynQuacerTokenSpaceGuid.PcdNetsecPhyAddress
gSynQuacerTokenSpaceGuid.PcdPcie0PresenceDetectGpioPin
+
+ g96BoardsTokenSpaceGuid.PcdGpioPinA
+ g96BoardsTokenSpaceGuid.PcdGpioPinB
+ g96BoardsTokenSpaceGuid.PcdGpioPinC
+ g96BoardsTokenSpaceGuid.PcdGpioPinD
+ g96BoardsTokenSpaceGuid.PcdGpioPinE
+ g96BoardsTokenSpaceGuid.PcdGpioPinF
+ g96BoardsTokenSpaceGuid.PcdGpioPinG
+ g96BoardsTokenSpaceGuid.PcdGpioPinH
+ g96BoardsTokenSpaceGuid.PcdGpioPinI
+ g96BoardsTokenSpaceGuid.PcdGpioPinJ
+ g96BoardsTokenSpaceGuid.PcdGpioPinK
+ g96BoardsTokenSpaceGuid.PcdGpioPinL
diff --git a/Silicon/Socionext/SynQuacer/AcpiTables/Dsdt.asl b/Silicon/Socionext/SynQuacer/AcpiTables/Dsdt.asl
index acb77739ded6..0702edc06f74 100644
--- a/Silicon/Socionext/SynQuacer/AcpiTables/Dsdt.asl
+++ b/Silicon/Socionext/SynQuacer/AcpiTables/Dsdt.asl
@@ -253,5 +253,25 @@ DefinitionBlock ("DsdtTable.aml", "DSDT", 1, "SNI", "SYNQUACR",
Return (0xF)
}
}
+
+ Device (LS96) {
+ Name (GPIO, ResourceTemplate () {
+ GpioIo (Exclusive, PullDefault, 0, 0, IoRestrictionNone, "\\_SB.GPIO")
+ {
+ FixedPcdGet32 (PcdGpioPinA),
+ FixedPcdGet32 (PcdGpioPinB),
+ FixedPcdGet32 (PcdGpioPinC),
+ FixedPcdGet32 (PcdGpioPinD),
+ FixedPcdGet32 (PcdGpioPinE),
+ FixedPcdGet32 (PcdGpioPinF),
+ FixedPcdGet32 (PcdGpioPinG),
+ FixedPcdGet32 (PcdGpioPinH),
+ FixedPcdGet32 (PcdGpioPinI),
+ FixedPcdGet32 (PcdGpioPinJ),
+ FixedPcdGet32 (PcdGpioPinK),
+ FixedPcdGet32 (PcdGpioPinL),
+ }
+ })
+ }
} // Scope (_SB)
}
--
2.20.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH edk2-platforms 2/3] Platform/96Boards: add ACPI support to mezzanine/LS connector driver
2019-04-25 12:32 [PATCH edk2-platforms 0/3] enable Secure96 GPIO LEDs on ACPI systems Ard Biesheuvel
2019-04-25 12:32 ` [PATCH edk2-platforms 1/3] Silicon/SynQuacer: describe 96boards LS connector GPIOs via ACPI Ard Biesheuvel
@ 2019-04-25 12:32 ` Ard Biesheuvel
2019-04-25 12:32 ` [PATCH edk2-platforms 3/3] Platform/Secure96Dxe: add ACPI description of the GPIO LEDs Ard Biesheuvel
2019-04-26 11:10 ` [PATCH edk2-platforms 0/3] enable Secure96 GPIO LEDs on ACPI systems Leif Lindholm
3 siblings, 0 replies; 9+ messages in thread
From: Ard Biesheuvel @ 2019-04-25 12:32 UTC (permalink / raw)
To: devel; +Cc: leif.lindholm, graeme.gregory, masahisa.kojima, Ard Biesheuvel
Make the LS connector mezzanine support code ACPI aware, and invoke
the appropriate hook in the driver code to install a SSDT instead of
a DT overlay when running on a system that is booting in ACPI mode.
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
---
Platform/96Boards/Include/Protocol/Mezzanine.h | 21 ++++++++++++
Platform/96Boards/LsConnectorDxe/LsConnectorDxe.c | 35 ++++++++++++++------
Platform/96Boards/LsConnectorDxe/LsConnectorDxe.inf | 1 +
3 files changed, 46 insertions(+), 11 deletions(-)
diff --git a/Platform/96Boards/Include/Protocol/Mezzanine.h b/Platform/96Boards/Include/Protocol/Mezzanine.h
index 9847649d2ac3..97f43e9a920f 100644
--- a/Platform/96Boards/Include/Protocol/Mezzanine.h
+++ b/Platform/96Boards/Include/Protocol/Mezzanine.h
@@ -16,6 +16,7 @@
#define _96BOARDS_MEZZANINE_H_
#include <Pi/PiI2c.h>
+#include <Protocol/AcpiTable.h>
#include <Protocol/SpiConfiguration.h>
#define MEZZANINE_PROTOCOL_GUID \
@@ -39,12 +40,32 @@ EFI_STATUS
IN OUT VOID *Dtb
);
+/**
+ Install the mezzanine's SSDT table
+
+ @param[in] This Pointer to the MEZZANINE_PROTOCOL instance.
+ @param[in] Dtb Pointer to the device tree blob
+
+ @return EFI_SUCCESS Operation succeeded.
+ @return other An error has occurred.
+**/
+typedef
+EFI_STATUS
+(EFIAPI *INSTALL_SSDT_TABLE) (
+ IN MEZZANINE_PROTOCOL *This,
+ IN EFI_ACPI_TABLE_PROTOCOL *AcpiProtocol
+ );
+
struct _MEZZANINE_PROTOCOL {
//
// Get the device tree overlay for this mezzanine board
//
APPLY_DEVICE_TREE_OVERLAY ApplyDeviceTreeOverlay;
//
+ // Install the mezzanine's SSDT table
+ //
+ INSTALL_SSDT_TABLE InstallSsdtTable;
+ //
// The number of devices on LS connector I2C bus #0
//
UINT32 I2c0NumDevices;
diff --git a/Platform/96Boards/LsConnectorDxe/LsConnectorDxe.c b/Platform/96Boards/LsConnectorDxe/LsConnectorDxe.c
index f19d95635056..27044c5da699 100644
--- a/Platform/96Boards/LsConnectorDxe/LsConnectorDxe.c
+++ b/Platform/96Boards/LsConnectorDxe/LsConnectorDxe.c
@@ -21,6 +21,7 @@
#include <Library/UefiBootServicesTableLib.h>
#include <Library/UefiLib.h>
#include <Library/UefiRuntimeServicesTableLib.h>
+#include <Protocol/AcpiTable.h>
#include <Protocol/LsConnector.h>
#include <Protocol/Mezzanine.h>
@@ -97,7 +98,7 @@ InstallHiiPages (
STATIC
VOID
EFIAPI
-ApplyDeviceTreeOverlay (
+PublishOsDescription (
EFI_EVENT Event,
VOID *Context
)
@@ -105,11 +106,30 @@ ApplyDeviceTreeOverlay (
VOID *Dtb;
MEZZANINE_PROTOCOL *Mezzanine;
EFI_STATUS Status;
+ EFI_ACPI_TABLE_PROTOCOL *AcpiProtocol;
+
+ Status = gBS->LocateProtocol (&g96BoardsMezzanineProtocolGuid, NULL,
+ (VOID **)&Mezzanine);
+ if (EFI_ERROR (Status)) {
+ DEBUG ((DEBUG_INFO, "%a: no mezzanine driver active\n", __FUNCTION__));
+ return;
+ }
+
+ Status = gBS->LocateProtocol (&gEfiAcpiTableProtocolGuid, NULL,
+ (VOID **)&AcpiProtocol);
+ if (!EFI_ERROR (Status)) {
+ Status = Mezzanine->InstallSsdtTable (Mezzanine, AcpiProtocol);
+ if (EFI_ERROR (Status)) {
+ DEBUG ((DEBUG_WARN, "%a: failed to install SSDT table - %r\n",
+ __FUNCTION__, Status));
+ }
+ return;
+ }
//
// Find the DTB in the configuration table array. If it isn't there, just
- // bail without an error: we may be running on an ACPI platform even if
- // this driver does not support it [yet].
+ // bail without an error: the system may be able to proceed even without
+ // ACPI or DT description, so it isn't up to us to complain about this.
//
Status = EfiGetSystemConfigurationTable (&gFdtTableGuid, &Dtb);
if (Status == EFI_NOT_FOUND) {
@@ -117,13 +137,6 @@ ApplyDeviceTreeOverlay (
}
ASSERT_EFI_ERROR (Status);
- Status = gBS->LocateProtocol (&g96BoardsMezzanineProtocolGuid, NULL,
- (VOID **)&Mezzanine);
- if (EFI_ERROR (Status)) {
- DEBUG ((DEBUG_INFO, "%a: no mezzanine driver active\n", __FUNCTION__));
- return;
- }
-
Status = Mezzanine->ApplyDeviceTreeOverlay (Mezzanine, Dtb);
if (EFI_ERROR (Status)) {
DEBUG ((DEBUG_WARN, "%a: failed to apply DT overlay - %r\n", __FUNCTION__,
@@ -211,7 +224,7 @@ EntryPoint (
Status = gBS->CreateEventEx (
EVT_NOTIFY_SIGNAL,
TPL_NOTIFY,
- ApplyDeviceTreeOverlay,
+ PublishOsDescription,
NULL,
&gEfiEndOfDxeEventGroupGuid,
&EndOfDxeEvent);
diff --git a/Platform/96Boards/LsConnectorDxe/LsConnectorDxe.inf b/Platform/96Boards/LsConnectorDxe/LsConnectorDxe.inf
index 1bf528ceaa84..20b9637c1923 100644
--- a/Platform/96Boards/LsConnectorDxe/LsConnectorDxe.inf
+++ b/Platform/96Boards/LsConnectorDxe/LsConnectorDxe.inf
@@ -46,6 +46,7 @@ [LibraryClasses]
[Protocols]
g96BoardsLsConnectorProtocolGuid ## PRODUCES
g96BoardsMezzanineProtocolGuid ## CONSUMES
+ gEfiAcpiTableProtocolGuid ## SOMETIMES_CONSUMES
[Guids]
gEfiEndOfDxeEventGroupGuid
--
2.20.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH edk2-platforms 3/3] Platform/Secure96Dxe: add ACPI description of the GPIO LEDs
2019-04-25 12:32 [PATCH edk2-platforms 0/3] enable Secure96 GPIO LEDs on ACPI systems Ard Biesheuvel
2019-04-25 12:32 ` [PATCH edk2-platforms 1/3] Silicon/SynQuacer: describe 96boards LS connector GPIOs via ACPI Ard Biesheuvel
2019-04-25 12:32 ` [PATCH edk2-platforms 2/3] Platform/96Boards: add ACPI support to mezzanine/LS connector driver Ard Biesheuvel
@ 2019-04-25 12:32 ` Ard Biesheuvel
2019-04-26 11:16 ` Leif Lindholm
2019-04-26 11:10 ` [PATCH edk2-platforms 0/3] enable Secure96 GPIO LEDs on ACPI systems Leif Lindholm
3 siblings, 1 reply; 9+ messages in thread
From: Ard Biesheuvel @ 2019-04-25 12:32 UTC (permalink / raw)
To: devel; +Cc: leif.lindholm, graeme.gregory, masahisa.kojima, Ard Biesheuvel
Wire up the new 96boards mezzanine SSDT loading support, and use it
to describe the four GPIO LEDs on the Secure96 mezzanine board.
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
---
Platform/96Boards/Secure96Dxe/Secure96.asl | 103 ++++++++++++++++++++
Platform/96Boards/Secure96Dxe/Secure96Dxe.c | 59 ++++++++++-
Platform/96Boards/Secure96Dxe/Secure96Dxe.inf | 1 +
3 files changed, 158 insertions(+), 5 deletions(-)
diff --git a/Platform/96Boards/Secure96Dxe/Secure96.asl b/Platform/96Boards/Secure96Dxe/Secure96.asl
new file mode 100644
index 000000000000..bb9dac462a33
--- /dev/null
+++ b/Platform/96Boards/Secure96Dxe/Secure96.asl
@@ -0,0 +1,103 @@
+/** @file
+ * Copyright (c) 2019, Linaro Limited. All rights reserved.
+ *
+ * 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.
+ */
+
+#include "Secure96.h"
+
+DefinitionBlock ("Secure96.aml", "SSDT", 2, "LINARO", "SECURE96", 1)
+{
+ External (\_SB.LS96.GPIO)
+
+ Scope (_SB)
+ {
+ Device (LD96)
+ {
+ Name (_HID, "PRP0001") // _HID: Hardware ID
+ Name (_UID, 0x00) // _UID: Unique ID
+ Name (_DSD, Package () {
+ ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
+ Package () {
+ Package () { "compatible", "gpio-leds" },
+ }
+ })
+
+ Method (_CRS)
+ {
+ Return (\_SB.LS96.GPIO)
+ }
+
+ Device (LDU1)
+ {
+ Name (_ADR, 0x1)
+ Name (_DSD, Package () {
+ ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
+ Package () {
+ Package () { "label", "secure96-u1" },
+ Package () { "gpios",
+ Package () {
+ ^^LD96, 0, 6, FixedPcdGet32 (PcdGpioPolarity)
+ },
+ },
+ }
+ })
+ }
+
+ Device (LDU2)
+ {
+ Name (_ADR, 0x2)
+ Name (_DSD, Package () {
+ ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
+ Package () {
+ Package () { "label", "secure96-u2" },
+ Package () { "gpios",
+ Package () {
+ ^^LD96, 0, 5, FixedPcdGet32 (PcdGpioPolarity)
+ },
+ },
+ }
+ })
+ }
+
+ Device (LDU3)
+ {
+ Name (_ADR, 0x3)
+ Name (_DSD, Package () {
+ ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
+ Package () {
+ Package () { "label", "secure96-u3" },
+ Package () { "gpios",
+ Package () {
+ ^^LD96, 0, 8, FixedPcdGet32 (PcdGpioPolarity)
+ },
+ },
+ }
+ })
+ }
+
+ Device (LDU4)
+ {
+ Name (_ADR, 0x4)
+ Name (_DSD, Package () {
+ ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
+ Package () {
+ Package () { "label", "secure96-u4" },
+ Package () { "gpios",
+ Package () {
+ ^^LD96, 0, 7, FixedPcdGet32 (PcdGpioPolarity)
+ },
+ },
+ }
+ })
+ }
+ }
+ }
+}
diff --git a/Platform/96Boards/Secure96Dxe/Secure96Dxe.c b/Platform/96Boards/Secure96Dxe/Secure96Dxe.c
index 6c48d7c0b024..68f8ec812b52 100644
--- a/Platform/96Boards/Secure96Dxe/Secure96Dxe.c
+++ b/Platform/96Boards/Secure96Dxe/Secure96Dxe.c
@@ -24,6 +24,8 @@
#include "Secure96.h"
+#define SECURE96_SSDT_OEM_TABLE_ID SIGNATURE_64('S','E','C','U','R','E','9','6')
+
STATIC CONST UINT32 mI2cAtmelSha204aSlaveAddress[] = {
ATSHA204A_SLAVE_ADDRESS,
@@ -148,15 +150,20 @@ ApplyDeviceTreeOverlay (
UINTN OverlaySize;
EFI_STATUS Status;
INT32 Err;
+ UINTN Index;
//
// Load the raw overlay DTB image from the raw section of this FFS file.
//
- Status = GetSectionFromFv (&gEfiCallerIdGuid,
- EFI_SECTION_RAW, 0, &Overlay, &OverlaySize);
- ASSERT_EFI_ERROR (Status);
- if (EFI_ERROR (Status)) {
- return EFI_NOT_FOUND;
+ for (Index = 0;; Index++) {
+ Status = GetSectionFromFv (&gEfiCallerIdGuid,
+ EFI_SECTION_RAW, Index, &Overlay, &OverlaySize);
+ if (EFI_ERROR (Status)) {
+ return EFI_NOT_FOUND;
+ }
+ if (!fdt_check_header (Overlay)) {
+ break;
+ }
}
//
@@ -177,8 +184,50 @@ ApplyDeviceTreeOverlay (
return EFI_SUCCESS;
}
+/**
+ Install the mezzanine's SSDT table
+
+ @param[in] This Pointer to the MEZZANINE_PROTOCOL instance.
+ @param[in] Dtb Pointer to the device tree blob
+
+ @return EFI_SUCCESS Operation succeeded.
+ @return other An error has occurred.
+**/
+STATIC
+EFI_STATUS
+EFIAPI
+InstallSsdtTable (
+ IN MEZZANINE_PROTOCOL *This,
+ IN EFI_ACPI_TABLE_PROTOCOL *AcpiProtocol
+ )
+{
+ EFI_ACPI_DESCRIPTION_HEADER *Ssdt;
+ UINTN SsdtSize;
+ EFI_STATUS Status;
+ UINTN Index;
+ UINTN TableKey;
+
+ //
+ // Load SSDT table from the raw section of this FFS file.
+ //
+ for (Index = 0;; Index++) {
+ Status = GetSectionFromFv (&gEfiCallerIdGuid, EFI_SECTION_RAW, Index,
+ (VOID **)&Ssdt, &SsdtSize);
+ if (EFI_ERROR (Status)) {
+ return EFI_NOT_FOUND;
+ }
+ if (SsdtSize >= sizeof (EFI_ACPI_DESCRIPTION_HEADER) &&
+ Ssdt->OemTableId == SECURE96_SSDT_OEM_TABLE_ID) {
+ break;
+ }
+ }
+ return AcpiProtocol->InstallAcpiTable (AcpiProtocol, Ssdt, SsdtSize,
+ &TableKey);
+}
+
STATIC MEZZANINE_PROTOCOL mMezzanine = {
ApplyDeviceTreeOverlay,
+ InstallSsdtTable,
ARRAY_SIZE (mI2c0Devices),
0,
mI2c0Devices,
diff --git a/Platform/96Boards/Secure96Dxe/Secure96Dxe.inf b/Platform/96Boards/Secure96Dxe/Secure96Dxe.inf
index 72dbf1314c15..ce4c8b5f8fa5 100644
--- a/Platform/96Boards/Secure96Dxe/Secure96Dxe.inf
+++ b/Platform/96Boards/Secure96Dxe/Secure96Dxe.inf
@@ -21,6 +21,7 @@ [Defines]
ENTRY_POINT = Secure96DxeEntryPoint
[Sources]
+ Secure96.asl
Secure96.dts
Secure96.h
Secure96Dxe.c
--
2.20.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH edk2-platforms 0/3] enable Secure96 GPIO LEDs on ACPI systems
2019-04-25 12:32 [PATCH edk2-platforms 0/3] enable Secure96 GPIO LEDs on ACPI systems Ard Biesheuvel
` (2 preceding siblings ...)
2019-04-25 12:32 ` [PATCH edk2-platforms 3/3] Platform/Secure96Dxe: add ACPI description of the GPIO LEDs Ard Biesheuvel
@ 2019-04-26 11:10 ` Leif Lindholm
3 siblings, 0 replies; 9+ messages in thread
From: Leif Lindholm @ 2019-04-26 11:10 UTC (permalink / raw)
To: Ard Biesheuvel; +Cc: devel, graeme.gregory, masahisa.kojima
On Thu, Apr 25, 2019 at 02:32:51PM +0200, Ard Biesheuvel wrote:
> This series plumbs in the support for describing 96boards mezzanines
> via ACPI. For now, only the GPIO LEDs are described: in the future,
> I intend to wire up the I2C and SPI parts as well, but these are
> currently untested and so not ready for review.
>
> Note that this applies onto
>
> Silicon/SynQuacer: add ACPI description of GPIO controller and power button
>
> which I sent out earlier today.
For the series:
Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
I do have a separate comment on 3/3, but the series is not gated on that.
> Ard Biesheuvel (3):
> Silicon/SynQuacer: describe 96boards LS connector GPIOs via ACPI
> Platform/96Boards: add ACPI support to mezzanine/LS connector driver
> Platform/Secure96Dxe: add ACPI description of the GPIO LEDs
>
> Platform/96Boards/Include/Protocol/Mezzanine.h | 21 ++++
> Platform/96Boards/LsConnectorDxe/LsConnectorDxe.c | 35 ++++---
> Platform/96Boards/LsConnectorDxe/LsConnectorDxe.inf | 1 +
> Platform/96Boards/Secure96Dxe/Secure96.asl | 103 ++++++++++++++++++++
> Platform/96Boards/Secure96Dxe/Secure96Dxe.c | 59 ++++++++++-
> Platform/96Boards/Secure96Dxe/Secure96Dxe.inf | 1 +
> Silicon/Socionext/SynQuacer/AcpiTables/AcpiTables.inf | 14 +++
> Silicon/Socionext/SynQuacer/AcpiTables/Dsdt.asl | 20 ++++
> 8 files changed, 238 insertions(+), 16 deletions(-)
> create mode 100644 Platform/96Boards/Secure96Dxe/Secure96.asl
>
> --
> 2.20.1
>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH edk2-platforms 3/3] Platform/Secure96Dxe: add ACPI description of the GPIO LEDs
2019-04-25 12:32 ` [PATCH edk2-platforms 3/3] Platform/Secure96Dxe: add ACPI description of the GPIO LEDs Ard Biesheuvel
@ 2019-04-26 11:16 ` Leif Lindholm
2019-04-26 11:56 ` Ard Biesheuvel
0 siblings, 1 reply; 9+ messages in thread
From: Leif Lindholm @ 2019-04-26 11:16 UTC (permalink / raw)
To: Ard Biesheuvel; +Cc: devel, graeme.gregory, masahisa.kojima
On Thu, Apr 25, 2019 at 02:32:54PM +0200, Ard Biesheuvel wrote:
> Wire up the new 96boards mezzanine SSDT loading support, and use it
> to describe the four GPIO LEDs on the Secure96 mezzanine board.
>
> Contributed-under: TianoCore Contribution Agreement 1.1
> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> ---
> Platform/96Boards/Secure96Dxe/Secure96.asl | 103 ++++++++++++++++++++
> Platform/96Boards/Secure96Dxe/Secure96Dxe.c | 59 ++++++++++-
> Platform/96Boards/Secure96Dxe/Secure96Dxe.inf | 1 +
> 3 files changed, 158 insertions(+), 5 deletions(-)
>
> diff --git a/Platform/96Boards/Secure96Dxe/Secure96.asl b/Platform/96Boards/Secure96Dxe/Secure96.asl
> new file mode 100644
> index 000000000000..bb9dac462a33
> --- /dev/null
> +++ b/Platform/96Boards/Secure96Dxe/Secure96.asl
> @@ -0,0 +1,103 @@
> +/** @file
> + * Copyright (c) 2019, Linaro Limited. All rights reserved.
> + *
> + * 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.
> + */
> +
> +#include "Secure96.h"
> +
> +DefinitionBlock ("Secure96.aml", "SSDT", 2, "LINARO", "SECURE96", 1)
> +{
> + External (\_SB.LS96.GPIO)
> +
> + Scope (_SB)
> + {
> + Device (LD96)
> + {
> + Name (_HID, "PRP0001") // _HID: Hardware ID
> + Name (_UID, 0x00) // _UID: Unique ID
> + Name (_DSD, Package () {
> + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
Surely the above stanza is the most repeated bit of boiler plate in
the entire tree? I count 207 instances before this goes in.
Can we stick a #define in some common header for this and reuse?
ACPI_DSD_UUID?
As I said, not required for this patch, but would be worth addressing.
/
Leif
> + Package () {
> + Package () { "compatible", "gpio-leds" },
> + }
> + })
> +
> + Method (_CRS)
> + {
> + Return (\_SB.LS96.GPIO)
> + }
> +
> + Device (LDU1)
> + {
> + Name (_ADR, 0x1)
> + Name (_DSD, Package () {
> + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
> + Package () {
> + Package () { "label", "secure96-u1" },
> + Package () { "gpios",
> + Package () {
> + ^^LD96, 0, 6, FixedPcdGet32 (PcdGpioPolarity)
> + },
> + },
> + }
> + })
> + }
> +
> + Device (LDU2)
> + {
> + Name (_ADR, 0x2)
> + Name (_DSD, Package () {
> + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
> + Package () {
> + Package () { "label", "secure96-u2" },
> + Package () { "gpios",
> + Package () {
> + ^^LD96, 0, 5, FixedPcdGet32 (PcdGpioPolarity)
> + },
> + },
> + }
> + })
> + }
> +
> + Device (LDU3)
> + {
> + Name (_ADR, 0x3)
> + Name (_DSD, Package () {
> + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
> + Package () {
> + Package () { "label", "secure96-u3" },
> + Package () { "gpios",
> + Package () {
> + ^^LD96, 0, 8, FixedPcdGet32 (PcdGpioPolarity)
> + },
> + },
> + }
> + })
> + }
> +
> + Device (LDU4)
> + {
> + Name (_ADR, 0x4)
> + Name (_DSD, Package () {
> + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
> + Package () {
> + Package () { "label", "secure96-u4" },
> + Package () { "gpios",
> + Package () {
> + ^^LD96, 0, 7, FixedPcdGet32 (PcdGpioPolarity)
> + },
> + },
> + }
> + })
> + }
> + }
> + }
> +}
> diff --git a/Platform/96Boards/Secure96Dxe/Secure96Dxe.c b/Platform/96Boards/Secure96Dxe/Secure96Dxe.c
> index 6c48d7c0b024..68f8ec812b52 100644
> --- a/Platform/96Boards/Secure96Dxe/Secure96Dxe.c
> +++ b/Platform/96Boards/Secure96Dxe/Secure96Dxe.c
> @@ -24,6 +24,8 @@
>
> #include "Secure96.h"
>
> +#define SECURE96_SSDT_OEM_TABLE_ID SIGNATURE_64('S','E','C','U','R','E','9','6')
> +
> STATIC CONST UINT32 mI2cAtmelSha204aSlaveAddress[] = {
> ATSHA204A_SLAVE_ADDRESS,
>
> @@ -148,15 +150,20 @@ ApplyDeviceTreeOverlay (
> UINTN OverlaySize;
> EFI_STATUS Status;
> INT32 Err;
> + UINTN Index;
>
> //
> // Load the raw overlay DTB image from the raw section of this FFS file.
> //
> - Status = GetSectionFromFv (&gEfiCallerIdGuid,
> - EFI_SECTION_RAW, 0, &Overlay, &OverlaySize);
> - ASSERT_EFI_ERROR (Status);
> - if (EFI_ERROR (Status)) {
> - return EFI_NOT_FOUND;
> + for (Index = 0;; Index++) {
> + Status = GetSectionFromFv (&gEfiCallerIdGuid,
> + EFI_SECTION_RAW, Index, &Overlay, &OverlaySize);
> + if (EFI_ERROR (Status)) {
> + return EFI_NOT_FOUND;
> + }
> + if (!fdt_check_header (Overlay)) {
> + break;
> + }
> }
>
> //
> @@ -177,8 +184,50 @@ ApplyDeviceTreeOverlay (
> return EFI_SUCCESS;
> }
>
> +/**
> + Install the mezzanine's SSDT table
> +
> + @param[in] This Pointer to the MEZZANINE_PROTOCOL instance.
> + @param[in] Dtb Pointer to the device tree blob
> +
> + @return EFI_SUCCESS Operation succeeded.
> + @return other An error has occurred.
> +**/
> +STATIC
> +EFI_STATUS
> +EFIAPI
> +InstallSsdtTable (
> + IN MEZZANINE_PROTOCOL *This,
> + IN EFI_ACPI_TABLE_PROTOCOL *AcpiProtocol
> + )
> +{
> + EFI_ACPI_DESCRIPTION_HEADER *Ssdt;
> + UINTN SsdtSize;
> + EFI_STATUS Status;
> + UINTN Index;
> + UINTN TableKey;
> +
> + //
> + // Load SSDT table from the raw section of this FFS file.
> + //
> + for (Index = 0;; Index++) {
> + Status = GetSectionFromFv (&gEfiCallerIdGuid, EFI_SECTION_RAW, Index,
> + (VOID **)&Ssdt, &SsdtSize);
> + if (EFI_ERROR (Status)) {
> + return EFI_NOT_FOUND;
> + }
> + if (SsdtSize >= sizeof (EFI_ACPI_DESCRIPTION_HEADER) &&
> + Ssdt->OemTableId == SECURE96_SSDT_OEM_TABLE_ID) {
> + break;
> + }
> + }
> + return AcpiProtocol->InstallAcpiTable (AcpiProtocol, Ssdt, SsdtSize,
> + &TableKey);
> +}
> +
> STATIC MEZZANINE_PROTOCOL mMezzanine = {
> ApplyDeviceTreeOverlay,
> + InstallSsdtTable,
> ARRAY_SIZE (mI2c0Devices),
> 0,
> mI2c0Devices,
> diff --git a/Platform/96Boards/Secure96Dxe/Secure96Dxe.inf b/Platform/96Boards/Secure96Dxe/Secure96Dxe.inf
> index 72dbf1314c15..ce4c8b5f8fa5 100644
> --- a/Platform/96Boards/Secure96Dxe/Secure96Dxe.inf
> +++ b/Platform/96Boards/Secure96Dxe/Secure96Dxe.inf
> @@ -21,6 +21,7 @@ [Defines]
> ENTRY_POINT = Secure96DxeEntryPoint
>
> [Sources]
> + Secure96.asl
> Secure96.dts
> Secure96.h
> Secure96Dxe.c
> --
> 2.20.1
>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH edk2-platforms 3/3] Platform/Secure96Dxe: add ACPI description of the GPIO LEDs
2019-04-26 11:16 ` Leif Lindholm
@ 2019-04-26 11:56 ` Ard Biesheuvel
2019-04-26 14:17 ` Leif Lindholm
0 siblings, 1 reply; 9+ messages in thread
From: Ard Biesheuvel @ 2019-04-26 11:56 UTC (permalink / raw)
To: Leif Lindholm; +Cc: edk2-devel-groups-io, Graeme Gregory, Masahisa Kojima
On Fri, 26 Apr 2019 at 13:16, Leif Lindholm <leif.lindholm@linaro.org> wrote:
>
> On Thu, Apr 25, 2019 at 02:32:54PM +0200, Ard Biesheuvel wrote:
> > Wire up the new 96boards mezzanine SSDT loading support, and use it
> > to describe the four GPIO LEDs on the Secure96 mezzanine board.
> >
> > Contributed-under: TianoCore Contribution Agreement 1.1
> > Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > ---
> > Platform/96Boards/Secure96Dxe/Secure96.asl | 103 ++++++++++++++++++++
> > Platform/96Boards/Secure96Dxe/Secure96Dxe.c | 59 ++++++++++-
> > Platform/96Boards/Secure96Dxe/Secure96Dxe.inf | 1 +
> > 3 files changed, 158 insertions(+), 5 deletions(-)
> >
> > diff --git a/Platform/96Boards/Secure96Dxe/Secure96.asl b/Platform/96Boards/Secure96Dxe/Secure96.asl
> > new file mode 100644
> > index 000000000000..bb9dac462a33
> > --- /dev/null
> > +++ b/Platform/96Boards/Secure96Dxe/Secure96.asl
> > @@ -0,0 +1,103 @@
> > +/** @file
> > + * Copyright (c) 2019, Linaro Limited. All rights reserved.
> > + *
> > + * 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.
> > + */
> > +
> > +#include "Secure96.h"
> > +
> > +DefinitionBlock ("Secure96.aml", "SSDT", 2, "LINARO", "SECURE96", 1)
> > +{
> > + External (\_SB.LS96.GPIO)
> > +
> > + Scope (_SB)
> > + {
> > + Device (LD96)
> > + {
> > + Name (_HID, "PRP0001") // _HID: Hardware ID
> > + Name (_UID, 0x00) // _UID: Unique ID
> > + Name (_DSD, Package () {
> > + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
>
> Surely the above stanza is the most repeated bit of boiler plate in
> the entire tree? I count 207 instances before this goes in.
> Can we stick a #define in some common header for this and reuse?
> ACPI_DSD_UUID?
>
> As I said, not required for this patch, but would be worth addressing.
>
We should add the GUID to MdePkg, given that it occurs in the ACPI spec.
> > + Package () {
> > + Package () { "compatible", "gpio-leds" },
> > + }
> > + })
> > +
> > + Method (_CRS)
> > + {
> > + Return (\_SB.LS96.GPIO)
> > + }
> > +
> > + Device (LDU1)
> > + {
> > + Name (_ADR, 0x1)
> > + Name (_DSD, Package () {
> > + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
> > + Package () {
> > + Package () { "label", "secure96-u1" },
> > + Package () { "gpios",
> > + Package () {
> > + ^^LD96, 0, 6, FixedPcdGet32 (PcdGpioPolarity)
> > + },
> > + },
> > + }
> > + })
> > + }
> > +
> > + Device (LDU2)
> > + {
> > + Name (_ADR, 0x2)
> > + Name (_DSD, Package () {
> > + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
> > + Package () {
> > + Package () { "label", "secure96-u2" },
> > + Package () { "gpios",
> > + Package () {
> > + ^^LD96, 0, 5, FixedPcdGet32 (PcdGpioPolarity)
> > + },
> > + },
> > + }
> > + })
> > + }
> > +
> > + Device (LDU3)
> > + {
> > + Name (_ADR, 0x3)
> > + Name (_DSD, Package () {
> > + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
> > + Package () {
> > + Package () { "label", "secure96-u3" },
> > + Package () { "gpios",
> > + Package () {
> > + ^^LD96, 0, 8, FixedPcdGet32 (PcdGpioPolarity)
> > + },
> > + },
> > + }
> > + })
> > + }
> > +
> > + Device (LDU4)
> > + {
> > + Name (_ADR, 0x4)
> > + Name (_DSD, Package () {
> > + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
> > + Package () {
> > + Package () { "label", "secure96-u4" },
> > + Package () { "gpios",
> > + Package () {
> > + ^^LD96, 0, 7, FixedPcdGet32 (PcdGpioPolarity)
> > + },
> > + },
> > + }
> > + })
> > + }
> > + }
> > + }
> > +}
> > diff --git a/Platform/96Boards/Secure96Dxe/Secure96Dxe.c b/Platform/96Boards/Secure96Dxe/Secure96Dxe.c
> > index 6c48d7c0b024..68f8ec812b52 100644
> > --- a/Platform/96Boards/Secure96Dxe/Secure96Dxe.c
> > +++ b/Platform/96Boards/Secure96Dxe/Secure96Dxe.c
> > @@ -24,6 +24,8 @@
> >
> > #include "Secure96.h"
> >
> > +#define SECURE96_SSDT_OEM_TABLE_ID SIGNATURE_64('S','E','C','U','R','E','9','6')
> > +
> > STATIC CONST UINT32 mI2cAtmelSha204aSlaveAddress[] = {
> > ATSHA204A_SLAVE_ADDRESS,
> >
> > @@ -148,15 +150,20 @@ ApplyDeviceTreeOverlay (
> > UINTN OverlaySize;
> > EFI_STATUS Status;
> > INT32 Err;
> > + UINTN Index;
> >
> > //
> > // Load the raw overlay DTB image from the raw section of this FFS file.
> > //
> > - Status = GetSectionFromFv (&gEfiCallerIdGuid,
> > - EFI_SECTION_RAW, 0, &Overlay, &OverlaySize);
> > - ASSERT_EFI_ERROR (Status);
> > - if (EFI_ERROR (Status)) {
> > - return EFI_NOT_FOUND;
> > + for (Index = 0;; Index++) {
> > + Status = GetSectionFromFv (&gEfiCallerIdGuid,
> > + EFI_SECTION_RAW, Index, &Overlay, &OverlaySize);
> > + if (EFI_ERROR (Status)) {
> > + return EFI_NOT_FOUND;
> > + }
> > + if (!fdt_check_header (Overlay)) {
> > + break;
> > + }
> > }
> >
> > //
> > @@ -177,8 +184,50 @@ ApplyDeviceTreeOverlay (
> > return EFI_SUCCESS;
> > }
> >
> > +/**
> > + Install the mezzanine's SSDT table
> > +
> > + @param[in] This Pointer to the MEZZANINE_PROTOCOL instance.
> > + @param[in] Dtb Pointer to the device tree blob
> > +
> > + @return EFI_SUCCESS Operation succeeded.
> > + @return other An error has occurred.
> > +**/
> > +STATIC
> > +EFI_STATUS
> > +EFIAPI
> > +InstallSsdtTable (
> > + IN MEZZANINE_PROTOCOL *This,
> > + IN EFI_ACPI_TABLE_PROTOCOL *AcpiProtocol
> > + )
> > +{
> > + EFI_ACPI_DESCRIPTION_HEADER *Ssdt;
> > + UINTN SsdtSize;
> > + EFI_STATUS Status;
> > + UINTN Index;
> > + UINTN TableKey;
> > +
> > + //
> > + // Load SSDT table from the raw section of this FFS file.
> > + //
> > + for (Index = 0;; Index++) {
> > + Status = GetSectionFromFv (&gEfiCallerIdGuid, EFI_SECTION_RAW, Index,
> > + (VOID **)&Ssdt, &SsdtSize);
> > + if (EFI_ERROR (Status)) {
> > + return EFI_NOT_FOUND;
> > + }
> > + if (SsdtSize >= sizeof (EFI_ACPI_DESCRIPTION_HEADER) &&
> > + Ssdt->OemTableId == SECURE96_SSDT_OEM_TABLE_ID) {
> > + break;
> > + }
> > + }
> > + return AcpiProtocol->InstallAcpiTable (AcpiProtocol, Ssdt, SsdtSize,
> > + &TableKey);
> > +}
> > +
> > STATIC MEZZANINE_PROTOCOL mMezzanine = {
> > ApplyDeviceTreeOverlay,
> > + InstallSsdtTable,
> > ARRAY_SIZE (mI2c0Devices),
> > 0,
> > mI2c0Devices,
> > diff --git a/Platform/96Boards/Secure96Dxe/Secure96Dxe.inf b/Platform/96Boards/Secure96Dxe/Secure96Dxe.inf
> > index 72dbf1314c15..ce4c8b5f8fa5 100644
> > --- a/Platform/96Boards/Secure96Dxe/Secure96Dxe.inf
> > +++ b/Platform/96Boards/Secure96Dxe/Secure96Dxe.inf
> > @@ -21,6 +21,7 @@ [Defines]
> > ENTRY_POINT = Secure96DxeEntryPoint
> >
> > [Sources]
> > + Secure96.asl
> > Secure96.dts
> > Secure96.h
> > Secure96Dxe.c
> > --
> > 2.20.1
> >
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH edk2-platforms 3/3] Platform/Secure96Dxe: add ACPI description of the GPIO LEDs
2019-04-26 11:56 ` Ard Biesheuvel
@ 2019-04-26 14:17 ` Leif Lindholm
2019-04-26 14:18 ` Ard Biesheuvel
0 siblings, 1 reply; 9+ messages in thread
From: Leif Lindholm @ 2019-04-26 14:17 UTC (permalink / raw)
To: Ard Biesheuvel; +Cc: edk2-devel-groups-io, Graeme Gregory, Masahisa Kojima
On Fri, Apr 26, 2019 at 01:56:54PM +0200, Ard Biesheuvel wrote:
> On Fri, 26 Apr 2019 at 13:16, Leif Lindholm <leif.lindholm@linaro.org> wrote:
> >
> > On Thu, Apr 25, 2019 at 02:32:54PM +0200, Ard Biesheuvel wrote:
> > > Wire up the new 96boards mezzanine SSDT loading support, and use it
> > > to describe the four GPIO LEDs on the Secure96 mezzanine board.
> > >
> > > Contributed-under: TianoCore Contribution Agreement 1.1
> > > Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > ---
> > > Platform/96Boards/Secure96Dxe/Secure96.asl | 103 ++++++++++++++++++++
> > > Platform/96Boards/Secure96Dxe/Secure96Dxe.c | 59 ++++++++++-
> > > Platform/96Boards/Secure96Dxe/Secure96Dxe.inf | 1 +
> > > 3 files changed, 158 insertions(+), 5 deletions(-)
> > >
> > > diff --git a/Platform/96Boards/Secure96Dxe/Secure96.asl b/Platform/96Boards/Secure96Dxe/Secure96.asl
> > > new file mode 100644
> > > index 000000000000..bb9dac462a33
> > > --- /dev/null
> > > +++ b/Platform/96Boards/Secure96Dxe/Secure96.asl
> > > @@ -0,0 +1,103 @@
> > > +/** @file
> > > + * Copyright (c) 2019, Linaro Limited. All rights reserved.
> > > + *
> > > + * 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.
> > > + */
> > > +
> > > +#include "Secure96.h"
> > > +
> > > +DefinitionBlock ("Secure96.aml", "SSDT", 2, "LINARO", "SECURE96", 1)
> > > +{
> > > + External (\_SB.LS96.GPIO)
> > > +
> > > + Scope (_SB)
> > > + {
> > > + Device (LD96)
> > > + {
> > > + Name (_HID, "PRP0001") // _HID: Hardware ID
> > > + Name (_UID, 0x00) // _UID: Unique ID
> > > + Name (_DSD, Package () {
> > > + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
> >
> > Surely the above stanza is the most repeated bit of boiler plate in
> > the entire tree? I count 207 instances before this goes in.
> > Can we stick a #define in some common header for this and reuse?
> > ACPI_DSD_UUID?
> >
> > As I said, not required for this patch, but would be worth addressing.
> >
>
> We should add the GUID to MdePkg, given that it occurs in the ACPI spec.
Yeah. What form would be practically consumable by .asl?
/
Leif
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH edk2-platforms 3/3] Platform/Secure96Dxe: add ACPI description of the GPIO LEDs
2019-04-26 14:17 ` Leif Lindholm
@ 2019-04-26 14:18 ` Ard Biesheuvel
0 siblings, 0 replies; 9+ messages in thread
From: Ard Biesheuvel @ 2019-04-26 14:18 UTC (permalink / raw)
To: Leif Lindholm; +Cc: edk2-devel-groups-io, Graeme Gregory, Masahisa Kojima
On Fri, 26 Apr 2019 at 16:17, Leif Lindholm <leif.lindholm@linaro.org> wrote:
>
> On Fri, Apr 26, 2019 at 01:56:54PM +0200, Ard Biesheuvel wrote:
> > On Fri, 26 Apr 2019 at 13:16, Leif Lindholm <leif.lindholm@linaro.org> wrote:
> > >
> > > On Thu, Apr 25, 2019 at 02:32:54PM +0200, Ard Biesheuvel wrote:
> > > > Wire up the new 96boards mezzanine SSDT loading support, and use it
> > > > to describe the four GPIO LEDs on the Secure96 mezzanine board.
> > > >
> > > > Contributed-under: TianoCore Contribution Agreement 1.1
> > > > Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > ---
> > > > Platform/96Boards/Secure96Dxe/Secure96.asl | 103 ++++++++++++++++++++
> > > > Platform/96Boards/Secure96Dxe/Secure96Dxe.c | 59 ++++++++++-
> > > > Platform/96Boards/Secure96Dxe/Secure96Dxe.inf | 1 +
> > > > 3 files changed, 158 insertions(+), 5 deletions(-)
> > > >
> > > > diff --git a/Platform/96Boards/Secure96Dxe/Secure96.asl b/Platform/96Boards/Secure96Dxe/Secure96.asl
> > > > new file mode 100644
> > > > index 000000000000..bb9dac462a33
> > > > --- /dev/null
> > > > +++ b/Platform/96Boards/Secure96Dxe/Secure96.asl
> > > > @@ -0,0 +1,103 @@
> > > > +/** @file
> > > > + * Copyright (c) 2019, Linaro Limited. All rights reserved.
> > > > + *
> > > > + * 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.
> > > > + */
> > > > +
> > > > +#include "Secure96.h"
> > > > +
> > > > +DefinitionBlock ("Secure96.aml", "SSDT", 2, "LINARO", "SECURE96", 1)
> > > > +{
> > > > + External (\_SB.LS96.GPIO)
> > > > +
> > > > + Scope (_SB)
> > > > + {
> > > > + Device (LD96)
> > > > + {
> > > > + Name (_HID, "PRP0001") // _HID: Hardware ID
> > > > + Name (_UID, 0x00) // _UID: Unique ID
> > > > + Name (_DSD, Package () {
> > > > + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
> > >
> > > Surely the above stanza is the most repeated bit of boiler plate in
> > > the entire tree? I count 207 instances before this goes in.
> > > Can we stick a #define in some common header for this and reuse?
> > > ACPI_DSD_UUID?
> > >
> > > As I said, not required for this patch, but would be worth addressing.
> > >
> >
> > We should add the GUID to MdePkg, given that it occurs in the ACPI spec.
>
> Yeah. What form would be practically consumable by .asl?
>
I think only a CPP macro including the "" is workable in practice.
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2019-04-26 14:18 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-04-25 12:32 [PATCH edk2-platforms 0/3] enable Secure96 GPIO LEDs on ACPI systems Ard Biesheuvel
2019-04-25 12:32 ` [PATCH edk2-platforms 1/3] Silicon/SynQuacer: describe 96boards LS connector GPIOs via ACPI Ard Biesheuvel
2019-04-25 12:32 ` [PATCH edk2-platforms 2/3] Platform/96Boards: add ACPI support to mezzanine/LS connector driver Ard Biesheuvel
2019-04-25 12:32 ` [PATCH edk2-platforms 3/3] Platform/Secure96Dxe: add ACPI description of the GPIO LEDs Ard Biesheuvel
2019-04-26 11:16 ` Leif Lindholm
2019-04-26 11:56 ` Ard Biesheuvel
2019-04-26 14:17 ` Leif Lindholm
2019-04-26 14:18 ` Ard Biesheuvel
2019-04-26 11:10 ` [PATCH edk2-platforms 0/3] enable Secure96 GPIO LEDs on ACPI systems Leif Lindholm
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox