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
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#39551): https://edk2.groups.io/g/devel/message/39551
Mute This Topic: https://groups.io/mt/31341744/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-
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
>
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#39638): https://edk2.groups.io/g/devel/message/39638
Mute This Topic: https://groups.io/mt/31341744/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-
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
> >
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#39639): https://edk2.groups.io/g/devel/message/39639
Mute This Topic: https://groups.io/mt/31341744/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-
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
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#39643): https://edk2.groups.io/g/devel/message/39643
Mute This Topic: https://groups.io/mt/31341744/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-
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.
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#39644): https://edk2.groups.io/g/devel/message/39644
Mute This Topic: https://groups.io/mt/31341744/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-
© 2016 - 2026 Red Hat, Inc.