This patch adds platform specific DSDT generator
and Clk dsdt properties for LS1046AFRWY platform.
Signed-off-by: Vikas Singh <vikas.singh@puresoftware.com>
---
Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/Dsdt/Clk.asl | 60 +++++++++
Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/Dsdt/Dsdt.asl | 15 +++
Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/PlatformAcpiDsdtLib.inf | 39 ++++++
Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/PlatformAcpiDsdtLib/RawDsdtGenerator.c | 138 ++++++++++++++++++++
Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/PlatformAcpiLib.h | 23 ++++
Platform/NXP/LS1046aFrwyPkg/Include/Platform.h | 6 +-
Platform/NXP/LS1046aFrwyPkg/LS1046aFrwyPkg.dsc | 1 +
7 files changed, 281 insertions(+), 1 deletion(-)
diff --git a/Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/Dsdt/Clk.asl b/Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/Dsdt/Clk.asl
new file mode 100644
index 0000000000..58541c3019
--- /dev/null
+++ b/Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/Dsdt/Clk.asl
@@ -0,0 +1,60 @@
+/** @file
+* DSDT : Dynamic Clock ACPI Information
+*
+* Copyright 2021 NXP
+* Copyright 2021 Puresoftware Ltd.
+*
+* SPDX-License-Identifier: BSD-2-Clause-Patent
+*
+**/
+
+Scope(_SB)
+{
+ Device(PCLK) {
+ Name(_HID, "NXP0017")
+ Name(CLK, 0) // Maximum Platform Clock (Hz)
+ Name(CCLK, 0) // Maximum CPU Core Clock (MHz)
+ Name(AVBL, 0)
+ OperationRegion(RCWS, SystemMemory, DCFG_BASE, DCFG_LEN)
+ Method(_REG,2) {
+ if (Arg0 == "RCWS") {
+ Store(Arg1, AVBL)
+ }
+ }
+ Field (RCWS, ByteAcc, NoLock, Preserve) {
+ /* The below table provides the func of diff bits in 512 bits RCW data:
+ SYS_PLL_CFG : 0-1 bits
+ SYS_PLL_RAT : 2-6 bits
+ SYSCLK_FREQ : 472-481 bits etc.
+ Refer LS1046ARM for more info.
+ For LS1046 RCWSRs are read as RCW[0:31] .
+ */
+ offset(0x100),
+ RESV, 1,
+ PRAT, 5,
+ PCFG, 2,
+ offset(0x103),
+ CPRT, 6, // Cluster Group PLL Multiplier ratio
+ offset(0x13B),
+ HFRQ, 8, // Higher 8 bits of SYSCLK_FREQ
+ RESX, 6,
+ LFRQ, 2 // Lower bits of SYSCLK_FREQ
+ }
+
+ Method(_INI, 0, NotSerialized) {
+ /* Calculating Platform Clock */
+ Local0 = (HFRQ<<2 | LFRQ) // Concatinating LFRQ at end of HFRQ
+ Multiply(Local0, 500000, Local0)
+ Multiply(Local0, PRAT, Local0)
+ Divide(Local0, 3, , Local0)
+ Store(Local0, CLK)
+
+ /* Calculating Maximum Core Clock */
+ Local0 = (HFRQ<<2 | LFRQ) // Concatinating LFRQ at end of HFRQ
+ Multiply(Local0, 500000, Local0)
+ Divide(Local0, 3, , Local0)
+ Divide(Local0, 1000000, , Local0) //Just the MHz part of SYSCLK.
+ Multiply(Local0, CPRT, CCLK) // PLL_Ratio * SYSCLK, Max freq of cluster
+ }
+ } // end of device PCLK
+}
diff --git a/Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/Dsdt/Dsdt.asl b/Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/Dsdt/Dsdt.asl
new file mode 100644
index 0000000000..19f3f1c0e8
--- /dev/null
+++ b/Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/Dsdt/Dsdt.asl
@@ -0,0 +1,15 @@
+/** @file
+ Differentiated System Description Table Fields (DSDT)
+
+ Copyright 2021 NXP
+ Copyright 2021 Puresoftware Ltd.
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#include "Platform.h"
+
+DefinitionBlock("DsdtTable.aml", "DSDT", 2, "NXP ", "LS1046 ", EFI_ACPI_ARM_OEM_REVISION) {
+ include ("Clk.asl")
+}
diff --git a/Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/PlatformAcpiDsdtLib.inf b/Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/PlatformAcpiDsdtLib.inf
new file mode 100644
index 0000000000..ed5f9dd442
--- /dev/null
+++ b/Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/PlatformAcpiDsdtLib.inf
@@ -0,0 +1,39 @@
+## @file
+# Raw Table Generator
+#
+# Copyright 2021 NXP
+# Copyright 2021 Puresoftware Ltd
+#
+# SPDX-License-Identifier: BSD-2-Clause-Patent
+##
+
+[Defines]
+ INF_VERSION = 0x00010019
+ BASE_NAME = PlatformAcpiDsdtLib
+ FILE_GUID = A97F70AC-3BB4-4596-B4D2-9F948EC12D17
+ VERSION_STRING = 1.0
+ MODULE_TYPE = DXE_DRIVER
+ LIBRARY_CLASS = NULL|DXE_DRIVER
+ CONSTRUCTOR = AcpiDsdtLibConstructor
+ DESTRUCTOR = AcpiDsdtLibDestructor
+
+[Sources]
+ PlatformAcpiDsdtLib/RawDsdtGenerator.c
+ Dsdt/Dsdt.asl
+
+[Packages]
+ DynamicTablesPkg/DynamicTablesPkg.dec
+ EmbeddedPkg/EmbeddedPkg.dec
+ MdePkg/MdePkg.dec
+ MdeModulePkg/MdeModulePkg.dec
+ Platform/NXP/LS1046aFrwyPkg/LS1046aFrwyPkg.dec
+ Platform/NXP/ConfigurationManagerPkg/ConfigurationManagerPkg.dec
+
+[LibraryClasses]
+ BaseLib
+
+[Pcd]
+
+[Protocols]
+
+[Guids]
diff --git a/Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/PlatformAcpiDsdtLib/RawDsdtGenerator.c b/Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/PlatformAcpiDsdtLib/RawDsdtGenerator.c
new file mode 100644
index 0000000000..7d886396ca
--- /dev/null
+++ b/Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/PlatformAcpiDsdtLib/RawDsdtGenerator.c
@@ -0,0 +1,138 @@
+/** @file
+ Raw DSDT Table Generator
+
+ Copyright 2021 NXP
+ Copyright 2021 Puresoftware Ltd.
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#include <Library/AcpiLib.h>
+#include <Library/DebugLib.h>
+#include <Protocol/AcpiTable.h>
+
+// Module specific include files.
+#include <AcpiTableGenerator.h>
+#include <ConfigurationManagerObject.h>
+#include <ConfigurationManagerHelper.h>
+#include <Library/TableHelperLib.h>
+#include <Protocol/ConfigurationManagerProtocol.h>
+
+#include "PlatformAcpiLib.h"
+
+/** Construct the ACPI table using the ACPI table data provided.
+ This function invokes the Configuration Manager protocol interface
+ to get the required hardware information for generating the ACPI
+ table.
+ If this function allocates any resources then they must be freed
+ in the FreeXXXXTableResources function.
+ @param [in] This Pointer to the table generator.
+ @param [in] AcpiTableInfo Pointer to the ACPI Table Info.
+ @param [in] CfgMgrProtocol Pointer to the Configuration Manager
+ Protocol Interface.
+ @param [out] Table Pointer to the constructed ACPI Table.
+ @retval EFI_SUCCESS Table generated successfully.
+ @retval EFI_INVALID_PARAMETER A parameter is invalid.
+**/
+STATIC
+EFI_STATUS
+EFIAPI
+BuildRawDsdtTable (
+ IN CONST ACPI_TABLE_GENERATOR * CONST This,
+ IN CONST CM_STD_OBJ_ACPI_TABLE_INFO * CONST AcpiTableInfo,
+ IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL * CONST CfgMgrProtocol,
+ OUT EFI_ACPI_DESCRIPTION_HEADER ** CONST Table
+ )
+{
+ ASSERT (This != NULL);
+ ASSERT (AcpiTableInfo != NULL);
+ ASSERT (CfgMgrProtocol != NULL);
+ ASSERT (Table != NULL);
+ ASSERT (AcpiTableInfo->TableGeneratorId == This->GeneratorID);
+
+ if (AcpiTableInfo->AcpiTableData == NULL) {
+ // Add the dsdt aml code here.
+ *Table = (EFI_ACPI_DESCRIPTION_HEADER *)&dsdt_aml_code;
+ }
+
+ return EFI_SUCCESS;
+}
+
+/** This macro defines the Raw Generator revision.
+*/
+#define DSDT_GENERATOR_REVISION CREATE_REVISION (1, 0)
+
+/** The interface for the Raw Table Generator.
+*/
+STATIC
+CONST
+ACPI_TABLE_GENERATOR RawDsdtGenerator = {
+ // Generator ID
+ CREATE_OEM_ACPI_TABLE_GEN_ID (PlatAcpiTableIdDsdt),
+ // Generator Description
+ L"ACPI.OEM.RAW.DSDT.GENERATOR",
+ // ACPI Table Signature - Unused
+ 0,
+ // ACPI Table Revision - Unused
+ 0,
+ // Minimum ACPI Table Revision - Unused
+ 0,
+ // Creator ID
+ TABLE_GENERATOR_CREATOR_ID_ARM,
+ // Creator Revision
+ DSDT_GENERATOR_REVISION,
+ // Build Table function
+ BuildRawDsdtTable,
+ // No additional resources are allocated by the generator.
+ // Hence the Free Resource function is not required.
+ NULL,
+ // Extended build function not needed
+ NULL,
+ // Extended build function not implemented by the generator.
+ // Hence extended free resource function is not required.
+ NULL
+};
+
+/** Register the Generator with the ACPI Table Factory.
+ @param [in] ImageHandle The handle to the image.
+ @param [in] SystemTable Pointer to the System Table.
+ @retval EFI_SUCCESS The Generator is registered.
+ @retval EFI_INVALID_PARAMETER A parameter is invalid.
+ @retval EFI_ALREADY_STARTED The Generator for the Table ID
+ is already registered.
+**/
+EFI_STATUS
+EFIAPI
+AcpiDsdtLibConstructor (
+ IN CONST EFI_HANDLE ImageHandle,
+ IN EFI_SYSTEM_TABLE * CONST SystemTable
+ )
+{
+ EFI_STATUS Status;
+ Status = RegisterAcpiTableGenerator (&RawDsdtGenerator);
+ DEBUG ((DEBUG_INFO, "OEM: Register DSDT Generator. Status = %r\n", Status));
+ ASSERT_EFI_ERROR (Status);
+ return Status;
+}
+
+/** Deregister the Generator from the ACPI Table Factory.
+ @param [in] ImageHandle The handle to the image.
+ @param [in] SystemTable Pointer to the System Table.
+ @retval EFI_SUCCESS The Generator is deregistered.
+ @retval EFI_INVALID_PARAMETER A parameter is invalid.
+ @retval EFI_NOT_FOUND The Generator is not registered.
+**/
+EFI_STATUS
+EFIAPI
+AcpiDsdtLibDestructor (
+ IN CONST EFI_HANDLE ImageHandle,
+ IN EFI_SYSTEM_TABLE * CONST SystemTable
+ )
+{
+ EFI_STATUS Status;
+ Status = DeregisterAcpiTableGenerator (&RawDsdtGenerator);
+ DEBUG ((DEBUG_INFO, "OEM: Deregister DSDT Generator. Status = %r\n", Status));
+ ASSERT_EFI_ERROR (Status);
+ return Status;
+}
diff --git a/Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/PlatformAcpiLib.h b/Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/PlatformAcpiLib.h
new file mode 100644
index 0000000000..e5f907a7d4
--- /dev/null
+++ b/Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/PlatformAcpiLib.h
@@ -0,0 +1,23 @@
+/** @file
+ * Acpi lib headers
+ *
+ * Copyright 2021 NXP
+ * Copyright 2021 Puresoftware Ltd
+ *
+ * SPDX-License-Identifier: BSD-2-Clause-Patent
+ *
+**/
+
+
+#ifndef LS1046AFRWY_PLATFORM_ACPI_LIB_H
+#define LS1046AFRWY_PLATFORM_ACPI_LIB_H
+
+#include <PlatformAcpiTableGenerator.h>
+
+/** C array containing the compiled AML template.
+ These symbols are defined in the auto generated C file
+ containing the AML bytecode array.
+*/
+extern CHAR8 dsdt_aml_code[];
+
+#endif
diff --git a/Platform/NXP/LS1046aFrwyPkg/Include/Platform.h b/Platform/NXP/LS1046aFrwyPkg/Include/Platform.h
index 19e879ec6d..b21e875f20 100644
--- a/Platform/NXP/LS1046aFrwyPkg/Include/Platform.h
+++ b/Platform/NXP/LS1046aFrwyPkg/Include/Platform.h
@@ -20,6 +20,10 @@
#define SVR_MAJOR(svr) (((svr) >> 4) & 0xf)
#define SVR_MINOR(svr) (((svr) >> 0) & 0xf)
+// PCLK : Dynamic Clock
+#define DCFG_BASE 0x1EE0000 /* Device configuration data Base Address */
+#define DCFG_LEN 0xFFF /* Device configuration data length */
+
// Gic
#define GIC_VERSION 2
#define GICD_BASE 0x1410000
@@ -62,7 +66,7 @@
#define CFG_MGR_TABLE_ID SIGNATURE_64 ('L','S','1','0','4','6',' ',' ')
// Specify the OEM defined tables
-#define OEM_ACPI_TABLES 0
+#define OEM_ACPI_TABLES 1 // Added DSDT
#define PLAT_PCI_SEG0 LS1046A_PCI_SEG0
#define PLAT_PCI_SEG1_CONFIG_BASE LS1046A_PCI_SEG1_CONFIG_BASE
diff --git a/Platform/NXP/LS1046aFrwyPkg/LS1046aFrwyPkg.dsc b/Platform/NXP/LS1046aFrwyPkg/LS1046aFrwyPkg.dsc
index 20111e6037..7041d15da5 100755
--- a/Platform/NXP/LS1046aFrwyPkg/LS1046aFrwyPkg.dsc
+++ b/Platform/NXP/LS1046aFrwyPkg/LS1046aFrwyPkg.dsc
@@ -65,6 +65,7 @@
NULL|DynamicTablesPkg/Library/Acpi/Arm/AcpiMadtLibArm/AcpiMadtLibArm.inf
NULL|DynamicTablesPkg/Library/Acpi/Arm/AcpiMcfgLibArm/AcpiMcfgLibArm.inf
NULL|DynamicTablesPkg/Library/Acpi/Arm/AcpiSpcrLibArm/AcpiSpcrLibArm.inf
+ NULL|Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/PlatformAcpiDsdtLib.inf
}
!endif
--
2.25.1
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#76399): https://edk2.groups.io/g/devel/message/76399
Mute This Topic: https://groups.io/mt/83471710/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-
On Fri, Jun 11, 2021 at 21:22:00 +0530, Vikas Singh wrote:
> This patch adds platform specific DSDT generator
> and Clk dsdt properties for LS1046AFRWY platform.
>
> Signed-off-by: Vikas Singh <vikas.singh@puresoftware.com>
> ---
> Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/Dsdt/Clk.asl | 60 +++++++++
> Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/Dsdt/Dsdt.asl | 15 +++
> Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/PlatformAcpiDsdtLib.inf | 39 ++++++
> Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/PlatformAcpiDsdtLib/RawDsdtGenerator.c | 138 ++++++++++++++++++++
> Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/PlatformAcpiLib.h | 23 ++++
> Platform/NXP/LS1046aFrwyPkg/Include/Platform.h | 6 +-
> Platform/NXP/LS1046aFrwyPkg/LS1046aFrwyPkg.dsc | 1 +
> 7 files changed, 281 insertions(+), 1 deletion(-)
>
> diff --git a/Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/Dsdt/Clk.asl b/Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/Dsdt/Clk.asl
> new file mode 100644
> index 0000000000..58541c3019
> --- /dev/null
> +++ b/Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/Dsdt/Clk.asl
> @@ -0,0 +1,60 @@
> +/** @file
> +* DSDT : Dynamic Clock ACPI Information
> +*
> +* Copyright 2021 NXP
> +* Copyright 2021 Puresoftware Ltd.
> +*
> +* SPDX-License-Identifier: BSD-2-Clause-Patent
> +*
> +**/
> +
> +Scope(_SB)
> +{
> + Device(PCLK) {
> + Name(_HID, "NXP0017")
> + Name(CLK, 0) // Maximum Platform Clock (Hz)
> + Name(CCLK, 0) // Maximum CPU Core Clock (MHz)
> + Name(AVBL, 0)
> + OperationRegion(RCWS, SystemMemory, DCFG_BASE, DCFG_LEN)
> + Method(_REG,2) {
> + if (Arg0 == "RCWS") {
> + Store(Arg1, AVBL)
> + }
> + }
> + Field (RCWS, ByteAcc, NoLock, Preserve) {
> + /* The below table provides the func of diff bits in 512 bits RCW data:
> + SYS_PLL_CFG : 0-1 bits
> + SYS_PLL_RAT : 2-6 bits
> + SYSCLK_FREQ : 472-481 bits etc.
> + Refer LS1046ARM for more info.
> + For LS1046 RCWSRs are read as RCW[0:31] .
> + */
> + offset(0x100),
> + RESV, 1,
> + PRAT, 5,
> + PCFG, 2,
> + offset(0x103),
> + CPRT, 6, // Cluster Group PLL Multiplier ratio
> + offset(0x13B),
> + HFRQ, 8, // Higher 8 bits of SYSCLK_FREQ
> + RESX, 6,
> + LFRQ, 2 // Lower bits of SYSCLK_FREQ
> + }
> +
> + Method(_INI, 0, NotSerialized) {
> + /* Calculating Platform Clock */
> + Local0 = (HFRQ<<2 | LFRQ) // Concatinating LFRQ at end of HFRQ
> + Multiply(Local0, 500000, Local0)
> + Multiply(Local0, PRAT, Local0)
> + Divide(Local0, 3, , Local0)
> + Store(Local0, CLK)
> +
> + /* Calculating Maximum Core Clock */
> + Local0 = (HFRQ<<2 | LFRQ) // Concatinating LFRQ at end of HFRQ
> + Multiply(Local0, 500000, Local0)
> + Divide(Local0, 3, , Local0)
> + Divide(Local0, 1000000, , Local0) //Just the MHz part of SYSCLK.
> + Multiply(Local0, CPRT, CCLK) // PLL_Ratio * SYSCLK, Max freq of cluster
> + }
> + } // end of device PCLK
> +}
> diff --git a/Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/Dsdt/Dsdt.asl b/Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/Dsdt/Dsdt.asl
> new file mode 100644
> index 0000000000..19f3f1c0e8
> --- /dev/null
> +++ b/Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/Dsdt/Dsdt.asl
> @@ -0,0 +1,15 @@
> +/** @file
> + Differentiated System Description Table Fields (DSDT)
> +
> + Copyright 2021 NXP
> + Copyright 2021 Puresoftware Ltd.
> +
> + SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> +**/
> +
> +#include "Platform.h"
> +
> +DefinitionBlock("DsdtTable.aml", "DSDT", 2, "NXP ", "LS1046 ", EFI_ACPI_ARM_OEM_REVISION) {
> + include ("Clk.asl")
> +}
> diff --git a/Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/PlatformAcpiDsdtLib.inf b/Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/PlatformAcpiDsdtLib.inf
> new file mode 100644
> index 0000000000..ed5f9dd442
> --- /dev/null
> +++ b/Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/PlatformAcpiDsdtLib.inf
> @@ -0,0 +1,39 @@
> +## @file
> +# Raw Table Generator
> +#
> +# Copyright 2021 NXP
> +# Copyright 2021 Puresoftware Ltd
> +#
> +# SPDX-License-Identifier: BSD-2-Clause-Patent
> +##
> +
> +[Defines]
> + INF_VERSION = 0x00010019
> + BASE_NAME = PlatformAcpiDsdtLib
> + FILE_GUID = A97F70AC-3BB4-4596-B4D2-9F948EC12D17
> + VERSION_STRING = 1.0
> + MODULE_TYPE = DXE_DRIVER
> + LIBRARY_CLASS = NULL|DXE_DRIVER
> + CONSTRUCTOR = AcpiDsdtLibConstructor
> + DESTRUCTOR = AcpiDsdtLibDestructor
> +
> +[Sources]
> + PlatformAcpiDsdtLib/RawDsdtGenerator.c
> + Dsdt/Dsdt.asl
> +
> +[Packages]
> + DynamicTablesPkg/DynamicTablesPkg.dec
> + EmbeddedPkg/EmbeddedPkg.dec
> + MdePkg/MdePkg.dec
> + MdeModulePkg/MdeModulePkg.dec
> + Platform/NXP/LS1046aFrwyPkg/LS1046aFrwyPkg.dec
> + Platform/NXP/ConfigurationManagerPkg/ConfigurationManagerPkg.dec
> +
> +[LibraryClasses]
> + BaseLib
> +
> +[Pcd]
> +
> +[Protocols]
> +
> +[Guids]
> diff --git a/Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/PlatformAcpiDsdtLib/RawDsdtGenerator.c b/Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/PlatformAcpiDsdtLib/RawDsdtGenerator.c
> new file mode 100644
> index 0000000000..7d886396ca
> --- /dev/null
> +++ b/Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/PlatformAcpiDsdtLib/RawDsdtGenerator.c
> @@ -0,0 +1,138 @@
> +/** @file
> + Raw DSDT Table Generator
> +
> + Copyright 2021 NXP
> + Copyright 2021 Puresoftware Ltd.
> +
> + SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> +**/
> +
> +#include <Library/AcpiLib.h>
> +#include <Library/DebugLib.h>
> +#include <Protocol/AcpiTable.h>
> +
> +// Module specific include files.
> +#include <AcpiTableGenerator.h>
> +#include <ConfigurationManagerObject.h>
> +#include <ConfigurationManagerHelper.h>
> +#include <Library/TableHelperLib.h>
> +#include <Protocol/ConfigurationManagerProtocol.h>
> +
> +#include "PlatformAcpiLib.h"
> +
> +/** Construct the ACPI table using the ACPI table data provided.
> + This function invokes the Configuration Manager protocol interface
> + to get the required hardware information for generating the ACPI
> + table.
> + If this function allocates any resources then they must be freed
> + in the FreeXXXXTableResources function.
> + @param [in] This Pointer to the table generator.
> + @param [in] AcpiTableInfo Pointer to the ACPI Table Info.
> + @param [in] CfgMgrProtocol Pointer to the Configuration Manager
> + Protocol Interface.
> + @param [out] Table Pointer to the constructed ACPI Table.
> + @retval EFI_SUCCESS Table generated successfully.
> + @retval EFI_INVALID_PARAMETER A parameter is invalid.
> +**/
> +STATIC
> +EFI_STATUS
> +EFIAPI
> +BuildRawDsdtTable (
> + IN CONST ACPI_TABLE_GENERATOR * CONST This,
> + IN CONST CM_STD_OBJ_ACPI_TABLE_INFO * CONST AcpiTableInfo,
> + IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL * CONST CfgMgrProtocol,
> + OUT EFI_ACPI_DESCRIPTION_HEADER ** CONST Table
> + )
> +{
> + ASSERT (This != NULL);
> + ASSERT (AcpiTableInfo != NULL);
> + ASSERT (CfgMgrProtocol != NULL);
> + ASSERT (Table != NULL);
> + ASSERT (AcpiTableInfo->TableGeneratorId == This->GeneratorID);
> +
> + if (AcpiTableInfo->AcpiTableData == NULL) {
> + // Add the dsdt aml code here.
> + *Table = (EFI_ACPI_DESCRIPTION_HEADER *)&dsdt_aml_code;
> + }
> +
> + return EFI_SUCCESS;
> +}
> +
> +/** This macro defines the Raw Generator revision.
> +*/
> +#define DSDT_GENERATOR_REVISION CREATE_REVISION (1, 0)
> +
> +/** The interface for the Raw Table Generator.
> +*/
> +STATIC
> +CONST
> +ACPI_TABLE_GENERATOR RawDsdtGenerator = {
> + // Generator ID
> + CREATE_OEM_ACPI_TABLE_GEN_ID (PlatAcpiTableIdDsdt),
> + // Generator Description
> + L"ACPI.OEM.RAW.DSDT.GENERATOR",
> + // ACPI Table Signature - Unused
> + 0,
> + // ACPI Table Revision - Unused
> + 0,
> + // Minimum ACPI Table Revision - Unused
> + 0,
> + // Creator ID
> + TABLE_GENERATOR_CREATOR_ID_ARM,
> + // Creator Revision
> + DSDT_GENERATOR_REVISION,
> + // Build Table function
> + BuildRawDsdtTable,
> + // No additional resources are allocated by the generator.
> + // Hence the Free Resource function is not required.
> + NULL,
> + // Extended build function not needed
> + NULL,
> + // Extended build function not implemented by the generator.
> + // Hence extended free resource function is not required.
> + NULL
> +};
> +
> +/** Register the Generator with the ACPI Table Factory.
> + @param [in] ImageHandle The handle to the image.
> + @param [in] SystemTable Pointer to the System Table.
> + @retval EFI_SUCCESS The Generator is registered.
> + @retval EFI_INVALID_PARAMETER A parameter is invalid.
> + @retval EFI_ALREADY_STARTED The Generator for the Table ID
> + is already registered.
> +**/
> +EFI_STATUS
> +EFIAPI
> +AcpiDsdtLibConstructor (
> + IN CONST EFI_HANDLE ImageHandle,
> + IN EFI_SYSTEM_TABLE * CONST SystemTable
> + )
> +{
> + EFI_STATUS Status;
> + Status = RegisterAcpiTableGenerator (&RawDsdtGenerator);
> + DEBUG ((DEBUG_INFO, "OEM: Register DSDT Generator. Status = %r\n", Status));
> + ASSERT_EFI_ERROR (Status);
> + return Status;
> +}
> +
> +/** Deregister the Generator from the ACPI Table Factory.
> + @param [in] ImageHandle The handle to the image.
> + @param [in] SystemTable Pointer to the System Table.
> + @retval EFI_SUCCESS The Generator is deregistered.
> + @retval EFI_INVALID_PARAMETER A parameter is invalid.
> + @retval EFI_NOT_FOUND The Generator is not registered.
> +**/
> +EFI_STATUS
> +EFIAPI
> +AcpiDsdtLibDestructor (
> + IN CONST EFI_HANDLE ImageHandle,
> + IN EFI_SYSTEM_TABLE * CONST SystemTable
> + )
> +{
> + EFI_STATUS Status;
> + Status = DeregisterAcpiTableGenerator (&RawDsdtGenerator);
> + DEBUG ((DEBUG_INFO, "OEM: Deregister DSDT Generator. Status = %r\n", Status));
> + ASSERT_EFI_ERROR (Status);
> + return Status;
> +}
> diff --git a/Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/PlatformAcpiLib.h b/Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/PlatformAcpiLib.h
> new file mode 100644
> index 0000000000..e5f907a7d4
> --- /dev/null
> +++ b/Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/PlatformAcpiLib.h
> @@ -0,0 +1,23 @@
> +/** @file
> + * Acpi lib headers
> + *
> + * Copyright 2021 NXP
> + * Copyright 2021 Puresoftware Ltd
> + *
> + * SPDX-License-Identifier: BSD-2-Clause-Patent
> + *
> +**/
> +
> +
> +#ifndef LS1046AFRWY_PLATFORM_ACPI_LIB_H
> +#define LS1046AFRWY_PLATFORM_ACPI_LIB_H
> +
> +#include <PlatformAcpiTableGenerator.h>
> +
> +/** C array containing the compiled AML template.
> + These symbols are defined in the auto generated C file
> + containing the AML bytecode array.
> +*/
> +extern CHAR8 dsdt_aml_code[];
> +
> +#endif
> diff --git a/Platform/NXP/LS1046aFrwyPkg/Include/Platform.h b/Platform/NXP/LS1046aFrwyPkg/Include/Platform.h
> index 19e879ec6d..b21e875f20 100644
> --- a/Platform/NXP/LS1046aFrwyPkg/Include/Platform.h
> +++ b/Platform/NXP/LS1046aFrwyPkg/Include/Platform.h
> @@ -20,6 +20,10 @@
> #define SVR_MAJOR(svr) (((svr) >> 4) & 0xf)
> #define SVR_MINOR(svr) (((svr) >> 0) & 0xf)
>
> +// PCLK : Dynamic Clock
> +#define DCFG_BASE 0x1EE0000 /* Device configuration data Base Address */
> +#define DCFG_LEN 0xFFF /* Device configuration data length */
> +
>
> // Gic
> #define GIC_VERSION 2
> #define GICD_BASE 0x1410000
> @@ -62,7 +66,7 @@
> #define CFG_MGR_TABLE_ID SIGNATURE_64 ('L','S','1','0','4','6',' ',' ')
>
> // Specify the OEM defined tables
> -#define OEM_ACPI_TABLES 0
> +#define OEM_ACPI_TABLES 1 // Added DSDT
Drop the comment.
With that:
Reviewed-by: Leif Lindholm <leif@nuviainc.com>
>
> #define PLAT_PCI_SEG0 LS1046A_PCI_SEG0
> #define PLAT_PCI_SEG1_CONFIG_BASE LS1046A_PCI_SEG1_CONFIG_BASE
> diff --git a/Platform/NXP/LS1046aFrwyPkg/LS1046aFrwyPkg.dsc b/Platform/NXP/LS1046aFrwyPkg/LS1046aFrwyPkg.dsc
> index 20111e6037..7041d15da5 100755
> --- a/Platform/NXP/LS1046aFrwyPkg/LS1046aFrwyPkg.dsc
> +++ b/Platform/NXP/LS1046aFrwyPkg/LS1046aFrwyPkg.dsc
> @@ -65,6 +65,7 @@
> NULL|DynamicTablesPkg/Library/Acpi/Arm/AcpiMadtLibArm/AcpiMadtLibArm.inf
> NULL|DynamicTablesPkg/Library/Acpi/Arm/AcpiMcfgLibArm/AcpiMcfgLibArm.inf
> NULL|DynamicTablesPkg/Library/Acpi/Arm/AcpiSpcrLibArm/AcpiSpcrLibArm.inf
> + NULL|Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/PlatformAcpiDsdtLib.inf
> }
> !endif
>
> --
> 2.25.1
>
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#76489): https://edk2.groups.io/g/devel/message/76489
Mute This Topic: https://groups.io/mt/83471710/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-
On Tue, Jun 15, 2021 at 3:07 AM Leif Lindholm <leif@nuviainc.com> wrote:
>
> On Fri, Jun 11, 2021 at 21:22:00 +0530, Vikas Singh wrote:
> > This patch adds platform specific DSDT generator
> > and Clk dsdt properties for LS1046AFRWY platform.
> >
> > Signed-off-by: Vikas Singh <vikas.singh@puresoftware.com>
> > ---
> > Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/Dsdt/Clk.asl | 60 +++++++++
> > Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/Dsdt/Dsdt.asl | 15 +++
> > Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/PlatformAcpiDsdtLib.inf | 39 ++++++
> > Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/PlatformAcpiDsdtLib/RawDsdtGenerator.c | 138 ++++++++++++++++++++
> > Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/PlatformAcpiLib.h | 23 ++++
> > Platform/NXP/LS1046aFrwyPkg/Include/Platform.h | 6 +-
> > Platform/NXP/LS1046aFrwyPkg/LS1046aFrwyPkg.dsc | 1 +
> > 7 files changed, 281 insertions(+), 1 deletion(-)
> >
> > diff --git a/Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/Dsdt/Clk.asl b/Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/Dsdt/Clk.asl
> > new file mode 100644
> > index 0000000000..58541c3019
> > --- /dev/null
> > +++ b/Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/Dsdt/Clk.asl
> > @@ -0,0 +1,60 @@
> > +/** @file
> > +* DSDT : Dynamic Clock ACPI Information
> > +*
> > +* Copyright 2021 NXP
> > +* Copyright 2021 Puresoftware Ltd.
> > +*
> > +* SPDX-License-Identifier: BSD-2-Clause-Patent
> > +*
> > +**/
> > +
> > +Scope(_SB)
> > +{
> > + Device(PCLK) {
> > + Name(_HID, "NXP0017")
> > + Name(CLK, 0) // Maximum Platform Clock (Hz)
> > + Name(CCLK, 0) // Maximum CPU Core Clock (MHz)
> > + Name(AVBL, 0)
> > + OperationRegion(RCWS, SystemMemory, DCFG_BASE, DCFG_LEN)
> > + Method(_REG,2) {
> > + if (Arg0 == "RCWS") {
> > + Store(Arg1, AVBL)
> > + }
> > + }
> > + Field (RCWS, ByteAcc, NoLock, Preserve) {
> > + /* The below table provides the func of diff bits in 512 bits RCW data:
> > + SYS_PLL_CFG : 0-1 bits
> > + SYS_PLL_RAT : 2-6 bits
> > + SYSCLK_FREQ : 472-481 bits etc.
> > + Refer LS1046ARM for more info.
> > + For LS1046 RCWSRs are read as RCW[0:31] .
> > + */
> > + offset(0x100),
> > + RESV, 1,
> > + PRAT, 5,
> > + PCFG, 2,
> > + offset(0x103),
> > + CPRT, 6, // Cluster Group PLL Multiplier ratio
> > + offset(0x13B),
> > + HFRQ, 8, // Higher 8 bits of SYSCLK_FREQ
> > + RESX, 6,
> > + LFRQ, 2 // Lower bits of SYSCLK_FREQ
> > + }
> > +
> > + Method(_INI, 0, NotSerialized) {
> > + /* Calculating Platform Clock */
> > + Local0 = (HFRQ<<2 | LFRQ) // Concatinating LFRQ at end of HFRQ
> > + Multiply(Local0, 500000, Local0)
> > + Multiply(Local0, PRAT, Local0)
> > + Divide(Local0, 3, , Local0)
> > + Store(Local0, CLK)
> > +
> > + /* Calculating Maximum Core Clock */
> > + Local0 = (HFRQ<<2 | LFRQ) // Concatinating LFRQ at end of HFRQ
> > + Multiply(Local0, 500000, Local0)
> > + Divide(Local0, 3, , Local0)
> > + Divide(Local0, 1000000, , Local0) //Just the MHz part of SYSCLK.
> > + Multiply(Local0, CPRT, CCLK) // PLL_Ratio * SYSCLK, Max freq of cluster
> > + }
> > + } // end of device PCLK
> > +}
> > diff --git a/Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/Dsdt/Dsdt.asl b/Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/Dsdt/Dsdt.asl
> > new file mode 100644
> > index 0000000000..19f3f1c0e8
> > --- /dev/null
> > +++ b/Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/Dsdt/Dsdt.asl
> > @@ -0,0 +1,15 @@
> > +/** @file
> > + Differentiated System Description Table Fields (DSDT)
> > +
> > + Copyright 2021 NXP
> > + Copyright 2021 Puresoftware Ltd.
> > +
> > + SPDX-License-Identifier: BSD-2-Clause-Patent
> > +
> > +**/
> > +
> > +#include "Platform.h"
> > +
> > +DefinitionBlock("DsdtTable.aml", "DSDT", 2, "NXP ", "LS1046 ", EFI_ACPI_ARM_OEM_REVISION) {
> > + include ("Clk.asl")
> > +}
> > diff --git a/Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/PlatformAcpiDsdtLib.inf b/Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/PlatformAcpiDsdtLib.inf
> > new file mode 100644
> > index 0000000000..ed5f9dd442
> > --- /dev/null
> > +++ b/Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/PlatformAcpiDsdtLib.inf
> > @@ -0,0 +1,39 @@
> > +## @file
> > +# Raw Table Generator
> > +#
> > +# Copyright 2021 NXP
> > +# Copyright 2021 Puresoftware Ltd
> > +#
> > +# SPDX-License-Identifier: BSD-2-Clause-Patent
> > +##
> > +
> > +[Defines]
> > + INF_VERSION = 0x00010019
> > + BASE_NAME = PlatformAcpiDsdtLib
> > + FILE_GUID = A97F70AC-3BB4-4596-B4D2-9F948EC12D17
> > + VERSION_STRING = 1.0
> > + MODULE_TYPE = DXE_DRIVER
> > + LIBRARY_CLASS = NULL|DXE_DRIVER
> > + CONSTRUCTOR = AcpiDsdtLibConstructor
> > + DESTRUCTOR = AcpiDsdtLibDestructor
> > +
> > +[Sources]
> > + PlatformAcpiDsdtLib/RawDsdtGenerator.c
> > + Dsdt/Dsdt.asl
> > +
> > +[Packages]
> > + DynamicTablesPkg/DynamicTablesPkg.dec
> > + EmbeddedPkg/EmbeddedPkg.dec
> > + MdePkg/MdePkg.dec
> > + MdeModulePkg/MdeModulePkg.dec
> > + Platform/NXP/LS1046aFrwyPkg/LS1046aFrwyPkg.dec
> > + Platform/NXP/ConfigurationManagerPkg/ConfigurationManagerPkg.dec
> > +
> > +[LibraryClasses]
> > + BaseLib
> > +
> > +[Pcd]
> > +
> > +[Protocols]
> > +
> > +[Guids]
> > diff --git a/Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/PlatformAcpiDsdtLib/RawDsdtGenerator.c b/Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/PlatformAcpiDsdtLib/RawDsdtGenerator.c
> > new file mode 100644
> > index 0000000000..7d886396ca
> > --- /dev/null
> > +++ b/Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/PlatformAcpiDsdtLib/RawDsdtGenerator.c
> > @@ -0,0 +1,138 @@
> > +/** @file
> > + Raw DSDT Table Generator
> > +
> > + Copyright 2021 NXP
> > + Copyright 2021 Puresoftware Ltd.
> > +
> > + SPDX-License-Identifier: BSD-2-Clause-Patent
> > +
> > +**/
> > +
> > +#include <Library/AcpiLib.h>
> > +#include <Library/DebugLib.h>
> > +#include <Protocol/AcpiTable.h>
> > +
> > +// Module specific include files.
> > +#include <AcpiTableGenerator.h>
> > +#include <ConfigurationManagerObject.h>
> > +#include <ConfigurationManagerHelper.h>
> > +#include <Library/TableHelperLib.h>
> > +#include <Protocol/ConfigurationManagerProtocol.h>
> > +
> > +#include "PlatformAcpiLib.h"
> > +
> > +/** Construct the ACPI table using the ACPI table data provided.
> > + This function invokes the Configuration Manager protocol interface
> > + to get the required hardware information for generating the ACPI
> > + table.
> > + If this function allocates any resources then they must be freed
> > + in the FreeXXXXTableResources function.
> > + @param [in] This Pointer to the table generator.
> > + @param [in] AcpiTableInfo Pointer to the ACPI Table Info.
> > + @param [in] CfgMgrProtocol Pointer to the Configuration Manager
> > + Protocol Interface.
> > + @param [out] Table Pointer to the constructed ACPI Table.
> > + @retval EFI_SUCCESS Table generated successfully.
> > + @retval EFI_INVALID_PARAMETER A parameter is invalid.
> > +**/
> > +STATIC
> > +EFI_STATUS
> > +EFIAPI
> > +BuildRawDsdtTable (
> > + IN CONST ACPI_TABLE_GENERATOR * CONST This,
> > + IN CONST CM_STD_OBJ_ACPI_TABLE_INFO * CONST AcpiTableInfo,
> > + IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL * CONST CfgMgrProtocol,
> > + OUT EFI_ACPI_DESCRIPTION_HEADER ** CONST Table
> > + )
> > +{
> > + ASSERT (This != NULL);
> > + ASSERT (AcpiTableInfo != NULL);
> > + ASSERT (CfgMgrProtocol != NULL);
> > + ASSERT (Table != NULL);
> > + ASSERT (AcpiTableInfo->TableGeneratorId == This->GeneratorID);
> > +
> > + if (AcpiTableInfo->AcpiTableData == NULL) {
> > + // Add the dsdt aml code here.
> > + *Table = (EFI_ACPI_DESCRIPTION_HEADER *)&dsdt_aml_code;
> > + }
> > +
> > + return EFI_SUCCESS;
> > +}
> > +
> > +/** This macro defines the Raw Generator revision.
> > +*/
> > +#define DSDT_GENERATOR_REVISION CREATE_REVISION (1, 0)
> > +
> > +/** The interface for the Raw Table Generator.
> > +*/
> > +STATIC
> > +CONST
> > +ACPI_TABLE_GENERATOR RawDsdtGenerator = {
> > + // Generator ID
> > + CREATE_OEM_ACPI_TABLE_GEN_ID (PlatAcpiTableIdDsdt),
> > + // Generator Description
> > + L"ACPI.OEM.RAW.DSDT.GENERATOR",
> > + // ACPI Table Signature - Unused
> > + 0,
> > + // ACPI Table Revision - Unused
> > + 0,
> > + // Minimum ACPI Table Revision - Unused
> > + 0,
> > + // Creator ID
> > + TABLE_GENERATOR_CREATOR_ID_ARM,
> > + // Creator Revision
> > + DSDT_GENERATOR_REVISION,
> > + // Build Table function
> > + BuildRawDsdtTable,
> > + // No additional resources are allocated by the generator.
> > + // Hence the Free Resource function is not required.
> > + NULL,
> > + // Extended build function not needed
> > + NULL,
> > + // Extended build function not implemented by the generator.
> > + // Hence extended free resource function is not required.
> > + NULL
> > +};
> > +
> > +/** Register the Generator with the ACPI Table Factory.
> > + @param [in] ImageHandle The handle to the image.
> > + @param [in] SystemTable Pointer to the System Table.
> > + @retval EFI_SUCCESS The Generator is registered.
> > + @retval EFI_INVALID_PARAMETER A parameter is invalid.
> > + @retval EFI_ALREADY_STARTED The Generator for the Table ID
> > + is already registered.
> > +**/
> > +EFI_STATUS
> > +EFIAPI
> > +AcpiDsdtLibConstructor (
> > + IN CONST EFI_HANDLE ImageHandle,
> > + IN EFI_SYSTEM_TABLE * CONST SystemTable
> > + )
> > +{
> > + EFI_STATUS Status;
> > + Status = RegisterAcpiTableGenerator (&RawDsdtGenerator);
> > + DEBUG ((DEBUG_INFO, "OEM: Register DSDT Generator. Status = %r\n", Status));
> > + ASSERT_EFI_ERROR (Status);
> > + return Status;
> > +}
> > +
> > +/** Deregister the Generator from the ACPI Table Factory.
> > + @param [in] ImageHandle The handle to the image.
> > + @param [in] SystemTable Pointer to the System Table.
> > + @retval EFI_SUCCESS The Generator is deregistered.
> > + @retval EFI_INVALID_PARAMETER A parameter is invalid.
> > + @retval EFI_NOT_FOUND The Generator is not registered.
> > +**/
> > +EFI_STATUS
> > +EFIAPI
> > +AcpiDsdtLibDestructor (
> > + IN CONST EFI_HANDLE ImageHandle,
> > + IN EFI_SYSTEM_TABLE * CONST SystemTable
> > + )
> > +{
> > + EFI_STATUS Status;
> > + Status = DeregisterAcpiTableGenerator (&RawDsdtGenerator);
> > + DEBUG ((DEBUG_INFO, "OEM: Deregister DSDT Generator. Status = %r\n", Status));
> > + ASSERT_EFI_ERROR (Status);
> > + return Status;
> > +}
> > diff --git a/Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/PlatformAcpiLib.h b/Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/PlatformAcpiLib.h
> > new file mode 100644
> > index 0000000000..e5f907a7d4
> > --- /dev/null
> > +++ b/Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/PlatformAcpiLib.h
> > @@ -0,0 +1,23 @@
> > +/** @file
> > + * Acpi lib headers
> > + *
> > + * Copyright 2021 NXP
> > + * Copyright 2021 Puresoftware Ltd
> > + *
> > + * SPDX-License-Identifier: BSD-2-Clause-Patent
> > + *
> > +**/
> > +
> > +
> > +#ifndef LS1046AFRWY_PLATFORM_ACPI_LIB_H
> > +#define LS1046AFRWY_PLATFORM_ACPI_LIB_H
> > +
> > +#include <PlatformAcpiTableGenerator.h>
> > +
> > +/** C array containing the compiled AML template.
> > + These symbols are defined in the auto generated C file
> > + containing the AML bytecode array.
> > +*/
> > +extern CHAR8 dsdt_aml_code[];
> > +
> > +#endif
> > diff --git a/Platform/NXP/LS1046aFrwyPkg/Include/Platform.h b/Platform/NXP/LS1046aFrwyPkg/Include/Platform.h
> > index 19e879ec6d..b21e875f20 100644
> > --- a/Platform/NXP/LS1046aFrwyPkg/Include/Platform.h
> > +++ b/Platform/NXP/LS1046aFrwyPkg/Include/Platform.h
> > @@ -20,6 +20,10 @@
> > #define SVR_MAJOR(svr) (((svr) >> 4) & 0xf)
> > #define SVR_MINOR(svr) (((svr) >> 0) & 0xf)
> >
> > +// PCLK : Dynamic Clock
> > +#define DCFG_BASE 0x1EE0000 /* Device configuration data Base Address */
> > +#define DCFG_LEN 0xFFF /* Device configuration data length */
> > +
> >
> > // Gic
> > #define GIC_VERSION 2
> > #define GICD_BASE 0x1410000
> > @@ -62,7 +66,7 @@
> > #define CFG_MGR_TABLE_ID SIGNATURE_64 ('L','S','1','0','4','6',' ',' ')
> >
> > // Specify the OEM defined tables
> > -#define OEM_ACPI_TABLES 0
> > +#define OEM_ACPI_TABLES 1 // Added DSDT
>
> Drop the comment.
> With that:
> Reviewed-by: Leif Lindholm <leif@nuviainc.com>
>
Ok, I will add "Reviewed-by: Leif Lindholm <leif@nuviainc.com>" as
part of the commit body.
>
> >
> > #define PLAT_PCI_SEG0 LS1046A_PCI_SEG0
> > #define PLAT_PCI_SEG1_CONFIG_BASE LS1046A_PCI_SEG1_CONFIG_BASE
> > diff --git a/Platform/NXP/LS1046aFrwyPkg/LS1046aFrwyPkg.dsc b/Platform/NXP/LS1046aFrwyPkg/LS1046aFrwyPkg.dsc
> > index 20111e6037..7041d15da5 100755
> > --- a/Platform/NXP/LS1046aFrwyPkg/LS1046aFrwyPkg.dsc
> > +++ b/Platform/NXP/LS1046aFrwyPkg/LS1046aFrwyPkg.dsc
> > @@ -65,6 +65,7 @@
> > NULL|DynamicTablesPkg/Library/Acpi/Arm/AcpiMadtLibArm/AcpiMadtLibArm.inf
> > NULL|DynamicTablesPkg/Library/Acpi/Arm/AcpiMcfgLibArm/AcpiMcfgLibArm.inf
> > NULL|DynamicTablesPkg/Library/Acpi/Arm/AcpiSpcrLibArm/AcpiSpcrLibArm.inf
> > + NULL|Platform/NXP/LS1046aFrwyPkg/AcpiTablesInclude/PlatformAcpiDsdtLib.inf
> > }
> > !endif
> >
> > --
> > 2.25.1
> >
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#76759): https://edk2.groups.io/g/devel/message/76759
Mute This Topic: https://groups.io/mt/83471710/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-
© 2016 - 2026 Red Hat, Inc.