[edk2-devel] [edk2-platforms:PATCH v4 4/7] MinPlatformPkg/DxeAslUpdateLib: Cleans up APIs

Miki Shindo posted 7 patches 5 years, 9 months ago
There is a newer version of this series
[edk2-devel] [edk2-platforms:PATCH v4 4/7] MinPlatformPkg/DxeAslUpdateLib: Cleans up APIs
Posted by Miki Shindo 5 years, 9 months ago
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2536

Callers of DxeAslUpdateLib don't have to call InitializeAslUpdateLib()
but the library itself runs it internally. This commit makes it
an internal call. LocateAcpiTableByOemTableId() is unreferenced externally
so this commit makes it an internal call.
PSS_PACKAGE_LAYOUT and AML_RESRC_TEMP_END_TAG are both unreferenced
so they are removed.
AslUpdateLib.h is cleaned up accordingly.

Signed-off-by: Miki Shindo <miki.shindo@intel.com>
Cc: Sai Chaganty <rangasai.v.chaganty@intel.com>
Cc: Chasel Chiu <chasel.chiu@intel.com>
Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
Cc: Prince Agyeman <prince.agyeman@intel.com>
Cc: Ray Ni <ray.ni@intel.com>
---
 Platform/Intel/MinPlatformPkg/Acpi/Library/DxeAslUpdateLib/DxeAslUpdateLib.c | 209 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------------------------------------------
 Platform/Intel/MinPlatformPkg/Include/Library/AslUpdateLib.h                 | 131 ++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------------------------------------------------------
 2 files changed, 159 insertions(+), 181 deletions(-)

diff --git a/Platform/Intel/MinPlatformPkg/Acpi/Library/DxeAslUpdateLib/DxeAslUpdateLib.c b/Platform/Intel/MinPlatformPkg/Acpi/Library/DxeAslUpdateLib/DxeAslUpdateLib.c
index e6ab43db6d..1ba51a7c55 100644
--- a/Platform/Intel/MinPlatformPkg/Acpi/Library/DxeAslUpdateLib/DxeAslUpdateLib.c
+++ b/Platform/Intel/MinPlatformPkg/Acpi/Library/DxeAslUpdateLib/DxeAslUpdateLib.c
@@ -6,7 +6,7 @@
 
   This library uses the ACPI Support protocol.
 
-Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2017 - 2020, Intel Corporation. All rights reserved.<BR>
 SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
@@ -50,6 +50,62 @@ InitializeAslUpdateLib (
   return Status;
 }
 
+/**
+  This function uses the ACPI SDT protocol to locate an ACPI SSDT table.
+
+  @param[in] TableId           - Pointer to an ASCII string containing the OEM Table ID from the ACPI table header
+  @param[in] TableIdSize       - Length of the TableId to match.  Table ID are 8 bytes long, this function
+                                 will consider it a match if the first TableIdSize bytes match
+  @param[in, out] Table        - Updated with a pointer to the table
+  @param[in, out] Handle       - AcpiSupport protocol table handle for the table found
+
+  @retval EFI_SUCCESS          - The function completed successfully.
+  @retval EFI_NOT_FOUND        - Failed to locate AcpiTable.
+  @retval EFI_NOT_READY        - Not ready to locate AcpiTable.
+**/
+EFI_STATUS
+LocateAcpiTableByOemTableId (
+  IN      UINT8                         *TableId,
+  IN      UINT8                         TableIdSize,
+  IN OUT  EFI_ACPI_DESCRIPTION_HEADER   **Table,
+  IN OUT  UINTN                         *Handle
+  )
+{
+  EFI_STATUS                  Status;
+  INTN                        Index;
+  EFI_ACPI_TABLE_VERSION      Version;
+  EFI_ACPI_DESCRIPTION_HEADER *OrgTable;
+
+  if (mAcpiSdt == NULL) {
+    InitializeAslUpdateLib ();
+    if (mAcpiSdt == NULL) {
+      return EFI_NOT_READY;
+    }
+  }
+  ///
+  /// Locate table with matching ID
+  ///
+  Version = 0;
+  Index = 0;
+  do {
+    Status = mAcpiSdt->GetAcpiTable (Index, (EFI_ACPI_SDT_HEADER **)&OrgTable, &Version, Handle);
+    if (Status == EFI_NOT_FOUND) {
+      break;
+    }
+    ASSERT_EFI_ERROR (Status);
+    Index++;
+  } while (CompareMem (&(OrgTable->OemTableId), TableId, TableIdSize));
+
+  if (Status != EFI_NOT_FOUND) {
+    *Table = AllocateCopyPool (OrgTable->Length, OrgTable);
+    ASSERT (*Table);
+  }
+
+  ///
+  /// If we found the table, there will be no error.
+  ///
+  return Status;
+}
 
 /**
   This procedure will update immediate value assigned to a Name
@@ -59,8 +115,11 @@ InitializeAslUpdateLib (
   @param[in] Length            - length of data to be overwritten
 
   @retval EFI_SUCCESS          - The function completed successfully.
+  @retval EFI_NOT_FOUND        - Failed to locate AcpiTable.
+  @retval EFI_NOT_READY        - Not ready to locate AcpiTable.
 **/
 EFI_STATUS
+EFIAPI
 UpdateNameAslCode (
   IN     UINT32                        AslSignature,
   IN     VOID                          *Buffer,
@@ -149,6 +208,50 @@ UpdateNameAslCode (
   return EFI_NOT_FOUND;
 }
 
+/**
+  This procedure will update the name of ASL Method
+
+  @param[in] TableId           - Pointer to an ASCII string containing the OEM Table ID from the ACPI table header
+  @param[in] TableIdSize       - Length of the TableId to match.  Table ID are 8 bytes long, this function
+                                 will consider it a match if the first TableIdSize bytes match
+  @param[in] AslSignature      - The signature of Operation Region that we want to update.
+  @param[in] Buffer            - source of data to be written over original aml
+  @param[in] Length            - length of data to be overwritten
+
+  @retval EFI_UNSUPPORTED      - The function is not supported in this library.
+**/
+EFI_STATUS
+EFIAPI
+UpdateSsdtNameAslCode (
+  IN     UINT8                         *TableId,
+  IN     UINT8                         TableIdSize,
+  IN     UINT32                        AslSignature,
+  IN     VOID                          *Buffer,
+  IN     UINTN                         Length
+  )
+{
+  return EFI_UNSUPPORTED;
+}
+
+/**
+  This procedure will update the name of ASL Method
+
+  @param[in] AslSignature      - The signature of Operation Region that we want to update.
+  @param[in] Buffer            - source of data to be written over original aml
+  @param[in] Length            - length of data to be overwritten
+
+  @retval EFI_UNSUPPORTED      - The function is not supported in this library.
+**/
+EFI_STATUS
+EFIAPI
+UpdateMethodAslCode (
+  IN     UINT32                        AslSignature,
+  IN     VOID                          *Buffer,
+  IN     UINTN                         Length
+  )
+{
+  return EFI_UNSUPPORTED;
+}
 
 /**
   This function uses the ACPI SDT protocol to locate an ACPI table.
@@ -161,8 +264,11 @@ UpdateNameAslCode (
   @param[in, out] Version        - The version of the table desired
 
   @retval EFI_SUCCESS            - The function completed successfully.
+  @retval EFI_NOT_FOUND          - Failed to locate AcpiTable.
+  @retval EFI_NOT_READY          - Not ready to locate AcpiTable.
 **/
 EFI_STATUS
+EFIAPI
 LocateAcpiTableBySignature (
   IN      UINT32                        Signature,
   IN OUT  EFI_ACPI_DESCRIPTION_HEADER   **Table,
@@ -205,104 +311,3 @@ LocateAcpiTableBySignature (
   ///
   return Status;
 }
-
-/**
-  This function uses the ACPI SDT protocol to locate an ACPI SSDT table.
-
-  @param[in] TableId           - Pointer to an ASCII string containing the OEM Table ID from the ACPI table header
-  @param[in] TableIdSize       - Length of the TableId to match.  Table ID are 8 bytes long, this function
-                                 will consider it a match if the first TableIdSize bytes match
-  @param[in, out] Table        - Updated with a pointer to the table
-  @param[in, out] Handle       - AcpiSupport protocol table handle for the table found
-  @param[in, out] Version      - See AcpiSupport protocol, GetAcpiTable function for use
-
-  @retval EFI_SUCCESS          - The function completed successfully.
-**/
-EFI_STATUS
-LocateAcpiTableByOemTableId (
-  IN      UINT8                         *TableId,
-  IN      UINT8                         TableIdSize,
-  IN OUT  EFI_ACPI_DESCRIPTION_HEADER   **Table,
-  IN OUT  UINTN                         *Handle
-  )
-{
-  EFI_STATUS                  Status;
-  INTN                        Index;
-  EFI_ACPI_TABLE_VERSION      Version;
-  EFI_ACPI_DESCRIPTION_HEADER *OrgTable;
-
-  if (mAcpiSdt == NULL) {
-    InitializeAslUpdateLib ();
-    if (mAcpiSdt == NULL) {
-      return EFI_NOT_READY;
-    }
-  }
-  ///
-  /// Locate table with matching ID
-  ///
-  Version = 0;
-  Index = 0;
-  do {
-    Status = mAcpiSdt->GetAcpiTable (Index, (EFI_ACPI_SDT_HEADER **)&OrgTable, &Version, Handle);
-    if (Status == EFI_NOT_FOUND) {
-      break;
-    }
-    ASSERT_EFI_ERROR (Status);
-    Index++;
-  } while (CompareMem (&(OrgTable->OemTableId), TableId, TableIdSize));
-
-  if (Status != EFI_NOT_FOUND) {
-    *Table = AllocateCopyPool (OrgTable->Length, OrgTable);
-    ASSERT (*Table);
-  }
-
-  ///
-  /// If we found the table, there will be no error.
-  ///
-  return Status;
-}
-
-/**
-  This function calculates and updates an UINT8 checksum.
-
-  @param[in] Buffer          Pointer to buffer to checksum
-  @param[in] Size            Number of bytes to checksum
-  @param[in] ChecksumOffset  Offset to place the checksum result in
-
-  @retval EFI_SUCCESS        The function completed successfully.
-**/
-EFI_STATUS
-AcpiChecksum (
-  IN VOID       *Buffer,
-  IN UINTN      Size,
-  IN UINTN      ChecksumOffset
-  )
-{
-  UINT8 Sum;
-  UINT8 *Ptr;
-
-  Sum = 0;
-  ///
-  /// Initialize pointer
-  ///
-  Ptr = Buffer;
-
-  ///
-  /// set checksum to 0 first
-  ///
-  Ptr[ChecksumOffset] = 0;
-
-  ///
-  /// add all content of buffer
-  ///
-  while (Size--) {
-    Sum = (UINT8) (Sum + (*Ptr++));
-  }
-  ///
-  /// set checksum
-  ///
-  Ptr                 = Buffer;
-  Ptr[ChecksumOffset] = (UINT8) (0xff - Sum + 1);
-
-  return EFI_SUCCESS;
-}
diff --git a/Platform/Intel/MinPlatformPkg/Include/Library/AslUpdateLib.h b/Platform/Intel/MinPlatformPkg/Include/Library/AslUpdateLib.h
index d58b6d6458..0be8df6469 100644
--- a/Platform/Intel/MinPlatformPkg/Include/Library/AslUpdateLib.h
+++ b/Platform/Intel/MinPlatformPkg/Include/Library/AslUpdateLib.h
@@ -5,7 +5,7 @@
   Make sure you meet the requirements for the library (protocol dependencies, use
   restrictions, etc).
 
-Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2017 - 2020, Intel Corporation. All rights reserved.<BR>
 SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
@@ -16,61 +16,70 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
 //
 // Include files
 //
+#include <Uefi/UefiBaseType.h>
 #include <IndustryStandard/Acpi.h>
 #include <Protocol/AcpiTable.h>
 #include <Protocol/AcpiSystemDescriptionTable.h>
 
-//
-// AML parsing definitions
-//
-#define AML_RESRC_TEMP_END_TAG  0x0079
-
-//
-// ASL PSS package structure layout
-//
-#pragma pack (1)
-typedef struct {
-  UINT8     NameOp;           // 12h ;First opcode is a NameOp.
-  UINT8     PackageLead;      // 20h ;First opcode is a NameOp.
-  UINT8     NumEntries;       // 06h ;First opcode is a NameOp.
-  UINT8     DwordPrefix1;     // 0Ch
-  UINT32    CoreFrequency;    // 00h
-  UINT8     DwordPrefix2;     // 0Ch
-  UINT32    Power;            // 00h
-  UINT8     DwordPrefix3;     // 0Ch
-  UINT32    TransLatency;     // 00h
-  UINT8     DwordPrefix4;     // 0Ch
-  UINT32    BmLatency;        // 00h
-  UINT8     DwordPrefix5;     // 0Ch
-  UINT32    Control;          // 00h
-  UINT8     DwordPrefix6;     // 0Ch
-  UINT32    Status;           // 00h
-} PSS_PACKAGE_LAYOUT;
-#pragma pack()
-
 /**
-  Initialize the ASL update library state.
-  This must be called prior to invoking other library functions.
+  This procedure will update immediate value assigned to a Name
 
+  @param[in] AslSignature               The signature of Operation Region that we want to update.
+  @param[in] Buffer                     source of data to be written over original aml
+  @param[in] Length                     length of data to be overwritten
 
   @retval EFI_SUCCESS                   The function completed successfully.
+  @retval EFI_NOT_FOUND                 Failed to locate AcpiTable.
+  @retval EFI_NOT_READY                 Not ready to locate AcpiTable.
+  @retval EFI_UNSUPPORTED               The function is not supported in this library
 **/
 EFI_STATUS
-InitializeAslUpdateLib (
-  VOID
+EFIAPI
+UpdateNameAslCode(
+  IN     UINT32                        AslSignature,
+  IN     VOID                          *Buffer,
+  IN     UINTN                         Length
   );
 
 /**
-  This procedure will update immediate value assigned to a Name
+  This procedure will update the name of ASL Method
+
+  @param[in] TableId           - Pointer to an ASCII string containing the OEM Table ID from the ACPI table header
+  @param[in] TableIdSize       - Length of the TableId to match.  Table ID are 8 bytes long, this function
+  @param[in] AslSignature      - The signature of Operation Region that we want to update.
+  @param[in] Buffer            - source of data to be written over original aml
+  @param[in] Length            - length of data to be overwritten
+
+  @retval EFI_SUCCESS          - The function completed successfully.
+  @retval EFI_NOT_FOUND        - Failed to locate AcpiTable.
+  @retval EFI_NOT_READY        - Not ready to locate AcpiTable.
+  @retval EFI_UNSUPPORTED      - The function is not supported in this library
+**/
+EFI_STATUS
+EFIAPI
+UpdateSsdtNameAslCode (
+  IN     UINT8                         *TableId,
+  IN     UINT8                         TableIdSize,
+  IN     UINT32                        AslSignature,
+  IN     VOID                          *Buffer,
+  IN     UINTN                         Length
+  );
 
-  @param[in] AslSignature               The signature of Operation Region that we want to update.
-  @param[in] Buffer                     source of data to be written over original aml
-  @param[in] Length                     length of data to be overwritten
+/**
+  This procedure will update the name of ASL Method
 
-  @retval EFI_SUCCESS                   The function completed successfully.
+  @param[in] AslSignature      - The signature of Operation Region that we want to update.
+  @param[in] Buffer            - source of data to be written over original aml
+  @param[in] Length            - length of data to be overwritten
+
+  @retval EFI_SUCCESS          - The function completed successfully.
+  @retval EFI_NOT_FOUND        - Failed to locate AcpiTable.
+  @retval EFI_NOT_READY        - Not ready to locate AcpiTable.
+  @retval EFI_UNSUPPORTED      - The function is not supported in this library
 **/
 EFI_STATUS
-UpdateNameAslCode(
+EFIAPI
+UpdateMethodAslCode (
   IN     UINT32                        AslSignature,
   IN     VOID                          *Buffer,
   IN     UINTN                         Length
@@ -86,55 +95,19 @@ UpdateNameAslCode(
   @param[in] Signature                  Pointer to an ASCII string containing the Signature to match
   @param[in, out] Table                 Updated with a pointer to the table
   @param[in, out] Handle                AcpiSupport protocol table handle for the table found
-  @param[in, out] Version               On input, the version of the table desired,
-                                        on output, the versions the table belongs to
                                         @see AcpiSupport protocol for details
 
   @retval EFI_SUCCESS                   The function completed successfully.
+  @retval EFI_NOT_FOUND                 Failed to locate AcpiTable.
+  @retval EFI_NOT_READY                 Not ready to locate AcpiTable.
+  @retval EFI_UNSUPPORTED               The function is not supported in this library
 **/
 EFI_STATUS
+EFIAPI
 LocateAcpiTableBySignature (
   IN      UINT32                        Signature,
   IN OUT  EFI_ACPI_DESCRIPTION_HEADER   **Table,
   IN OUT  UINTN                         *Handle
   );
 
-/**
-  This function uses the ACPI support protocol to locate an ACPI SSDT table.
-  The table is located by searching for a matching OEM Table ID field.
-  Partial match searches are supported via the TableIdSize parameter.
-
-  @param[in] TableId                    Pointer to an ASCII string containing the OEM Table ID from the ACPI table header
-  @param[in] TableIdSize                Length of the TableId to match.  Table ID are 8 bytes long, this function
-                                        will consider it a match if the first TableIdSize bytes match
-  @param[in, out] Table                 Updated with a pointer to the table
-  @param[in, out] Handle                AcpiSupport protocol table handle for the table found
-  @param[in, out] Version               See AcpiSupport protocol, GetAcpiTable function for use
-
-  @retval EFI_SUCCESS                   The function completed successfully.
-**/
-EFI_STATUS
-LocateAcpiTableByOemTableId (
-  IN      UINT8                         *TableId,
-  IN      UINT8                         TableIdSize,
-  IN OUT  EFI_ACPI_DESCRIPTION_HEADER   **Table,
-  IN OUT  UINTN                         *Handle
-  );
-
-/**
-  This function calculates and updates an UINT8 checksum.
-
-  @param[in] Buffer                     Pointer to buffer to checksum
-  @param[in] Size                       Number of bytes to checksum
-  @param[in] ChecksumOffset             Offset to place the checksum result in
-
-  @retval EFI_SUCCESS                   The function completed successfully.
-**/
-EFI_STATUS
-AcpiChecksum (
-  IN VOID       *Buffer,
-  IN UINTN      Size,
-  IN UINTN      ChecksumOffset
-  );
-
 #endif
-- 
2.16.2.windows.1


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#58290): https://edk2.groups.io/g/devel/message/58290
Mute This Topic: https://groups.io/mt/73345587/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-

Re: [edk2-devel] [edk2-platforms:PATCH v4 4/7] MinPlatformPkg/DxeAslUpdateLib: Cleans up APIs
Posted by Chiu, Chasel 5 years, 9 months ago
Reviewed-by: Chasel Chiu <chasel.chiu@intel.com>

> -----Original Message-----
> From: Shindo, Miki <miki.shindo@intel.com>
> Sent: Wednesday, April 29, 2020 10:32 AM
> To: devel@edk2.groups.io
> Cc: Chaganty, Rangasai V <rangasai.v.chaganty@intel.com>; Chiu, Chasel
> <chasel.chiu@intel.com>; Desimone, Nathaniel L
> <nathaniel.l.desimone@intel.com>; Agyeman, Prince
> <prince.agyeman@intel.com>; Ni, Ray <ray.ni@intel.com>
> Subject: [edk2-platforms:PATCH v4 4/7] MinPlatformPkg/DxeAslUpdateLib:
> Cleans up APIs
> 
> REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2536
> 
> Callers of DxeAslUpdateLib don't have to call InitializeAslUpdateLib() but the
> library itself runs it internally. This commit makes it an internal call.
> LocateAcpiTableByOemTableId() is unreferenced externally so this commit
> makes it an internal call.
> PSS_PACKAGE_LAYOUT and AML_RESRC_TEMP_END_TAG are both
> unreferenced so they are removed.
> AslUpdateLib.h is cleaned up accordingly.
> 
> Signed-off-by: Miki Shindo <miki.shindo@intel.com>
> Cc: Sai Chaganty <rangasai.v.chaganty@intel.com>
> Cc: Chasel Chiu <chasel.chiu@intel.com>
> Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
> Cc: Prince Agyeman <prince.agyeman@intel.com>
> Cc: Ray Ni <ray.ni@intel.com>
> ---
> 
> Platform/Intel/MinPlatformPkg/Acpi/Library/DxeAslUpdateLib/DxeAslUpdate
> Lib.c | 209
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> +++++++++++++++++++++++++++++++++++++++++++-----------------------------------
> -------------------------------------------------------------------
>  Platform/Intel/MinPlatformPkg/Include/Library/AslUpdateLib.h
> | 131
> ++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------
> -----------------------------------------------------------
>  2 files changed, 159 insertions(+), 181 deletions(-)
> 
> diff --git
> a/Platform/Intel/MinPlatformPkg/Acpi/Library/DxeAslUpdateLib/DxeAslUpda
> teLib.c
> b/Platform/Intel/MinPlatformPkg/Acpi/Library/DxeAslUpdateLib/DxeAslUpda
> teLib.c
> index e6ab43db6d..1ba51a7c55 100644
> ---
> a/Platform/Intel/MinPlatformPkg/Acpi/Library/DxeAslUpdateLib/DxeAslUpda
> teLib.c
> +++ b/Platform/Intel/MinPlatformPkg/Acpi/Library/DxeAslUpdateLib/DxeAslU
> +++ pdateLib.c
> @@ -6,7 +6,7 @@
> 
>    This library uses the ACPI Support protocol.
> 
> -Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
> +Copyright (c) 2017 - 2020, Intel Corporation. All rights reserved.<BR>
>  SPDX-License-Identifier: BSD-2-Clause-Patent
> 
>  **/
> @@ -50,6 +50,62 @@ InitializeAslUpdateLib (
>    return Status;
>  }
> 
> +/**
> +  This function uses the ACPI SDT protocol to locate an ACPI SSDT table.
> +
> +  @param[in] TableId           - Pointer to an ASCII string containing
> the OEM Table ID from the ACPI table header
> +  @param[in] TableIdSize       - Length of the TableId to match.  Table
> ID are 8 bytes long, this function
> +                                 will consider it a match if the first
> TableIdSize bytes match
> +  @param[in, out] Table        - Updated with a pointer to the table
> +  @param[in, out] Handle       - AcpiSupport protocol table handle for
> the table found
> +
> +  @retval EFI_SUCCESS          - The function completed successfully.
> +  @retval EFI_NOT_FOUND        - Failed to locate AcpiTable.
> +  @retval EFI_NOT_READY        - Not ready to locate AcpiTable.
> +**/
> +EFI_STATUS
> +LocateAcpiTableByOemTableId (
> +  IN      UINT8                         *TableId,
> +  IN      UINT8                         TableIdSize,
> +  IN OUT  EFI_ACPI_DESCRIPTION_HEADER   **Table,
> +  IN OUT  UINTN                         *Handle
> +  )
> +{
> +  EFI_STATUS                  Status;
> +  INTN                        Index;
> +  EFI_ACPI_TABLE_VERSION      Version;
> +  EFI_ACPI_DESCRIPTION_HEADER *OrgTable;
> +
> +  if (mAcpiSdt == NULL) {
> +    InitializeAslUpdateLib ();
> +    if (mAcpiSdt == NULL) {
> +      return EFI_NOT_READY;
> +    }
> +  }
> +  ///
> +  /// Locate table with matching ID
> +  ///
> +  Version = 0;
> +  Index = 0;
> +  do {
> +    Status = mAcpiSdt->GetAcpiTable (Index, (EFI_ACPI_SDT_HEADER
> **)&OrgTable, &Version, Handle);
> +    if (Status == EFI_NOT_FOUND) {
> +      break;
> +    }
> +    ASSERT_EFI_ERROR (Status);
> +    Index++;
> +  } while (CompareMem (&(OrgTable->OemTableId), TableId, TableIdSize));
> +
> +  if (Status != EFI_NOT_FOUND) {
> +    *Table = AllocateCopyPool (OrgTable->Length, OrgTable);
> +    ASSERT (*Table);
> +  }
> +
> +  ///
> +  /// If we found the table, there will be no error.
> +  ///
> +  return Status;
> +}
> 
>  /**
>    This procedure will update immediate value assigned to a Name @@
> -59,8 +115,11 @@ InitializeAslUpdateLib (
>    @param[in] Length            - length of data to be overwritten
> 
>    @retval EFI_SUCCESS          - The function completed successfully.
> +  @retval EFI_NOT_FOUND        - Failed to locate AcpiTable.
> +  @retval EFI_NOT_READY        - Not ready to locate AcpiTable.
>  **/
>  EFI_STATUS
> +EFIAPI
>  UpdateNameAslCode (
>    IN     UINT32                        AslSignature,
>    IN     VOID                          *Buffer,
> @@ -149,6 +208,50 @@ UpdateNameAslCode (
>    return EFI_NOT_FOUND;
>  }
> 
> +/**
> +  This procedure will update the name of ASL Method
> +
> +  @param[in] TableId           - Pointer to an ASCII string containing
> the OEM Table ID from the ACPI table header
> +  @param[in] TableIdSize       - Length of the TableId to match.  Table
> ID are 8 bytes long, this function
> +                                 will consider it a match if the first
> TableIdSize bytes match
> +  @param[in] AslSignature      - The signature of Operation Region that
> we want to update.
> +  @param[in] Buffer            - source of data to be written over
> original aml
> +  @param[in] Length            - length of data to be overwritten
> +
> +  @retval EFI_UNSUPPORTED      - The function is not supported in this
> library.
> +**/
> +EFI_STATUS
> +EFIAPI
> +UpdateSsdtNameAslCode (
> +  IN     UINT8                         *TableId,
> +  IN     UINT8                         TableIdSize,
> +  IN     UINT32                        AslSignature,
> +  IN     VOID                          *Buffer,
> +  IN     UINTN                         Length
> +  )
> +{
> +  return EFI_UNSUPPORTED;
> +}
> +
> +/**
> +  This procedure will update the name of ASL Method
> +
> +  @param[in] AslSignature      - The signature of Operation Region that
> we want to update.
> +  @param[in] Buffer            - source of data to be written over
> original aml
> +  @param[in] Length            - length of data to be overwritten
> +
> +  @retval EFI_UNSUPPORTED      - The function is not supported in this
> library.
> +**/
> +EFI_STATUS
> +EFIAPI
> +UpdateMethodAslCode (
> +  IN     UINT32                        AslSignature,
> +  IN     VOID                          *Buffer,
> +  IN     UINTN                         Length
> +  )
> +{
> +  return EFI_UNSUPPORTED;
> +}
> 
>  /**
>    This function uses the ACPI SDT protocol to locate an ACPI table.
> @@ -161,8 +264,11 @@ UpdateNameAslCode (
>    @param[in, out] Version        - The version of the table desired
> 
>    @retval EFI_SUCCESS            - The function completed
> successfully.
> +  @retval EFI_NOT_FOUND          - Failed to locate AcpiTable.
> +  @retval EFI_NOT_READY          - Not ready to locate AcpiTable.
>  **/
>  EFI_STATUS
> +EFIAPI
>  LocateAcpiTableBySignature (
>    IN      UINT32                        Signature,
>    IN OUT  EFI_ACPI_DESCRIPTION_HEADER   **Table,
> @@ -205,104 +311,3 @@ LocateAcpiTableBySignature (
>    ///
>    return Status;
>  }
> -
> -/**
> -  This function uses the ACPI SDT protocol to locate an ACPI SSDT table.
> -
> -  @param[in] TableId           - Pointer to an ASCII string containing
> the OEM Table ID from the ACPI table header
> -  @param[in] TableIdSize       - Length of the TableId to match.  Table
> ID are 8 bytes long, this function
> -                                 will consider it a match if the first
> TableIdSize bytes match
> -  @param[in, out] Table        - Updated with a pointer to the table
> -  @param[in, out] Handle       - AcpiSupport protocol table handle for
> the table found
> -  @param[in, out] Version      - See AcpiSupport protocol, GetAcpiTable
> function for use
> -
> -  @retval EFI_SUCCESS          - The function completed successfully.
> -**/
> -EFI_STATUS
> -LocateAcpiTableByOemTableId (
> -  IN      UINT8                         *TableId,
> -  IN      UINT8                         TableIdSize,
> -  IN OUT  EFI_ACPI_DESCRIPTION_HEADER   **Table,
> -  IN OUT  UINTN                         *Handle
> -  )
> -{
> -  EFI_STATUS                  Status;
> -  INTN                        Index;
> -  EFI_ACPI_TABLE_VERSION      Version;
> -  EFI_ACPI_DESCRIPTION_HEADER *OrgTable;
> -
> -  if (mAcpiSdt == NULL) {
> -    InitializeAslUpdateLib ();
> -    if (mAcpiSdt == NULL) {
> -      return EFI_NOT_READY;
> -    }
> -  }
> -  ///
> -  /// Locate table with matching ID
> -  ///
> -  Version = 0;
> -  Index = 0;
> -  do {
> -    Status = mAcpiSdt->GetAcpiTable (Index, (EFI_ACPI_SDT_HEADER
> **)&OrgTable, &Version, Handle);
> -    if (Status == EFI_NOT_FOUND) {
> -      break;
> -    }
> -    ASSERT_EFI_ERROR (Status);
> -    Index++;
> -  } while (CompareMem (&(OrgTable->OemTableId), TableId, TableIdSize));
> -
> -  if (Status != EFI_NOT_FOUND) {
> -    *Table = AllocateCopyPool (OrgTable->Length, OrgTable);
> -    ASSERT (*Table);
> -  }
> -
> -  ///
> -  /// If we found the table, there will be no error.
> -  ///
> -  return Status;
> -}
> -
> -/**
> -  This function calculates and updates an UINT8 checksum.
> -
> -  @param[in] Buffer          Pointer to buffer to checksum
> -  @param[in] Size            Number of bytes to checksum
> -  @param[in] ChecksumOffset  Offset to place the checksum result in
> -
> -  @retval EFI_SUCCESS        The function completed successfully.
> -**/
> -EFI_STATUS
> -AcpiChecksum (
> -  IN VOID       *Buffer,
> -  IN UINTN      Size,
> -  IN UINTN      ChecksumOffset
> -  )
> -{
> -  UINT8 Sum;
> -  UINT8 *Ptr;
> -
> -  Sum = 0;
> -  ///
> -  /// Initialize pointer
> -  ///
> -  Ptr = Buffer;
> -
> -  ///
> -  /// set checksum to 0 first
> -  ///
> -  Ptr[ChecksumOffset] = 0;
> -
> -  ///
> -  /// add all content of buffer
> -  ///
> -  while (Size--) {
> -    Sum = (UINT8) (Sum + (*Ptr++));
> -  }
> -  ///
> -  /// set checksum
> -  ///
> -  Ptr                 = Buffer;
> -  Ptr[ChecksumOffset] = (UINT8) (0xff - Sum + 1);
> -
> -  return EFI_SUCCESS;
> -}
> diff --git a/Platform/Intel/MinPlatformPkg/Include/Library/AslUpdateLib.h
> b/Platform/Intel/MinPlatformPkg/Include/Library/AslUpdateLib.h
> index d58b6d6458..0be8df6469 100644
> --- a/Platform/Intel/MinPlatformPkg/Include/Library/AslUpdateLib.h
> +++ b/Platform/Intel/MinPlatformPkg/Include/Library/AslUpdateLib.h
> @@ -5,7 +5,7 @@
>    Make sure you meet the requirements for the library (protocol
> dependencies, use
>    restrictions, etc).
> 
> -Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
> +Copyright (c) 2017 - 2020, Intel Corporation. All rights reserved.<BR>
>  SPDX-License-Identifier: BSD-2-Clause-Patent
> 
>  **/
> @@ -16,61 +16,70 @@ SPDX-License-Identifier: BSD-2-Clause-Patent  //  //
> Include files  //
> +#include <Uefi/UefiBaseType.h>
>  #include <IndustryStandard/Acpi.h>
>  #include <Protocol/AcpiTable.h>
>  #include <Protocol/AcpiSystemDescriptionTable.h>
> 
> -//
> -// AML parsing definitions
> -//
> -#define AML_RESRC_TEMP_END_TAG  0x0079
> -
> -//
> -// ASL PSS package structure layout
> -//
> -#pragma pack (1)
> -typedef struct {
> -  UINT8     NameOp;           // 12h ;First opcode is a NameOp.
> -  UINT8     PackageLead;      // 20h ;First opcode is a NameOp.
> -  UINT8     NumEntries;       // 06h ;First opcode is a NameOp.
> -  UINT8     DwordPrefix1;     // 0Ch
> -  UINT32    CoreFrequency;    // 00h
> -  UINT8     DwordPrefix2;     // 0Ch
> -  UINT32    Power;            // 00h
> -  UINT8     DwordPrefix3;     // 0Ch
> -  UINT32    TransLatency;     // 00h
> -  UINT8     DwordPrefix4;     // 0Ch
> -  UINT32    BmLatency;        // 00h
> -  UINT8     DwordPrefix5;     // 0Ch
> -  UINT32    Control;          // 00h
> -  UINT8     DwordPrefix6;     // 0Ch
> -  UINT32    Status;           // 00h
> -} PSS_PACKAGE_LAYOUT;
> -#pragma pack()
> -
>  /**
> -  Initialize the ASL update library state.
> -  This must be called prior to invoking other library functions.
> +  This procedure will update immediate value assigned to a Name
> 
> +  @param[in] AslSignature               The signature of Operation
> Region that we want to update.
> +  @param[in] Buffer                     source of data to be written
> over original aml
> +  @param[in] Length                     length of data to be
> overwritten
> 
>    @retval EFI_SUCCESS                   The function completed
> successfully.
> +  @retval EFI_NOT_FOUND                 Failed to locate AcpiTable.
> +  @retval EFI_NOT_READY                 Not ready to locate
> AcpiTable.
> +  @retval EFI_UNSUPPORTED               The function is not
> supported in this library
>  **/
>  EFI_STATUS
> -InitializeAslUpdateLib (
> -  VOID
> +EFIAPI
> +UpdateNameAslCode(
> +  IN     UINT32                        AslSignature,
> +  IN     VOID                          *Buffer,
> +  IN     UINTN                         Length
>    );
> 
>  /**
> -  This procedure will update immediate value assigned to a Name
> +  This procedure will update the name of ASL Method
> +
> +  @param[in] TableId           - Pointer to an ASCII string containing
> the OEM Table ID from the ACPI table header
> +  @param[in] TableIdSize       - Length of the TableId to match.  Table
> ID are 8 bytes long, this function
> +  @param[in] AslSignature      - The signature of Operation Region that
> we want to update.
> +  @param[in] Buffer            - source of data to be written over
> original aml
> +  @param[in] Length            - length of data to be overwritten
> +
> +  @retval EFI_SUCCESS          - The function completed successfully.
> +  @retval EFI_NOT_FOUND        - Failed to locate AcpiTable.
> +  @retval EFI_NOT_READY        - Not ready to locate AcpiTable.
> +  @retval EFI_UNSUPPORTED      - The function is not supported in this
> library
> +**/
> +EFI_STATUS
> +EFIAPI
> +UpdateSsdtNameAslCode (
> +  IN     UINT8                         *TableId,
> +  IN     UINT8                         TableIdSize,
> +  IN     UINT32                        AslSignature,
> +  IN     VOID                          *Buffer,
> +  IN     UINTN                         Length
> +  );
> 
> -  @param[in] AslSignature               The signature of Operation
> Region that we want to update.
> -  @param[in] Buffer                     source of data to be written
> over original aml
> -  @param[in] Length                     length of data to be
> overwritten
> +/**
> +  This procedure will update the name of ASL Method
> 
> -  @retval EFI_SUCCESS                   The function completed
> successfully.
> +  @param[in] AslSignature      - The signature of Operation Region that
> we want to update.
> +  @param[in] Buffer            - source of data to be written over
> original aml
> +  @param[in] Length            - length of data to be overwritten
> +
> +  @retval EFI_SUCCESS          - The function completed successfully.
> +  @retval EFI_NOT_FOUND        - Failed to locate AcpiTable.
> +  @retval EFI_NOT_READY        - Not ready to locate AcpiTable.
> +  @retval EFI_UNSUPPORTED      - The function is not supported in this
> library
>  **/
>  EFI_STATUS
> -UpdateNameAslCode(
> +EFIAPI
> +UpdateMethodAslCode (
>    IN     UINT32                        AslSignature,
>    IN     VOID                          *Buffer,
>    IN     UINTN                         Length
> @@ -86,55 +95,19 @@ UpdateNameAslCode(
>    @param[in] Signature                  Pointer to an ASCII string
> containing the Signature to match
>    @param[in, out] Table                 Updated with a pointer to the
> table
>    @param[in, out] Handle                AcpiSupport protocol table
> handle for the table found
> -  @param[in, out] Version               On input, the version of the
> table desired,
> -                                        on output, the versions the
> table belongs to
>                                          @see AcpiSupport protocol
> for details
> 
>    @retval EFI_SUCCESS                   The function completed
> successfully.
> +  @retval EFI_NOT_FOUND                 Failed to locate AcpiTable.
> +  @retval EFI_NOT_READY                 Not ready to locate
> AcpiTable.
> +  @retval EFI_UNSUPPORTED               The function is not
> supported in this library
>  **/
>  EFI_STATUS
> +EFIAPI
>  LocateAcpiTableBySignature (
>    IN      UINT32                        Signature,
>    IN OUT  EFI_ACPI_DESCRIPTION_HEADER   **Table,
>    IN OUT  UINTN                         *Handle
>    );
> 
> -/**
> -  This function uses the ACPI support protocol to locate an ACPI SSDT table.
> -  The table is located by searching for a matching OEM Table ID field.
> -  Partial match searches are supported via the TableIdSize parameter.
> -
> -  @param[in] TableId                    Pointer to an ASCII string
> containing the OEM Table ID from the ACPI table header
> -  @param[in] TableIdSize                Length of the TableId to match.
> Table ID are 8 bytes long, this function
> -                                        will consider it a match if
> the first TableIdSize bytes match
> -  @param[in, out] Table                 Updated with a pointer to the
> table
> -  @param[in, out] Handle                AcpiSupport protocol table
> handle for the table found
> -  @param[in, out] Version               See AcpiSupport protocol,
> GetAcpiTable function for use
> -
> -  @retval EFI_SUCCESS                   The function completed
> successfully.
> -**/
> -EFI_STATUS
> -LocateAcpiTableByOemTableId (
> -  IN      UINT8                         *TableId,
> -  IN      UINT8                         TableIdSize,
> -  IN OUT  EFI_ACPI_DESCRIPTION_HEADER   **Table,
> -  IN OUT  UINTN                         *Handle
> -  );
> -
> -/**
> -  This function calculates and updates an UINT8 checksum.
> -
> -  @param[in] Buffer                     Pointer to buffer to checksum
> -  @param[in] Size                       Number of bytes to checksum
> -  @param[in] ChecksumOffset             Offset to place the checksum
> result in
> -
> -  @retval EFI_SUCCESS                   The function completed
> successfully.
> -**/
> -EFI_STATUS
> -AcpiChecksum (
> -  IN VOID       *Buffer,
> -  IN UINTN      Size,
> -  IN UINTN      ChecksumOffset
> -  );
> -
>  #endif
> --
> 2.16.2.windows.1


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#58360): https://edk2.groups.io/g/devel/message/58360
Mute This Topic: https://groups.io/mt/73345587/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-

Re: [edk2-devel] [edk2-platforms:PATCH v4 4/7] MinPlatformPkg/DxeAslUpdateLib: Cleans up APIs
Posted by Chaganty, Rangasai V 5 years, 9 months ago
Noticed that some APIs have incorrect descriptions (e.g. UpdateMethodAslCode) that needs to be addressed.

With that:
Reviewed-by: Sai Chaganty <rangasai.v.chaganty@intel.com>
 
-----Original Message-----
From: Shindo, Miki <miki.shindo@intel.com> 
Sent: Tuesday, April 28, 2020 7:32 PM
To: devel@edk2.groups.io
Cc: Chaganty, Rangasai V <rangasai.v.chaganty@intel.com>; Chiu, Chasel <chasel.chiu@intel.com>; Desimone, Nathaniel L <nathaniel.l.desimone@intel.com>; Agyeman, Prince <prince.agyeman@intel.com>; Ni, Ray <ray.ni@intel.com>
Subject: [edk2-platforms:PATCH v4 4/7] MinPlatformPkg/DxeAslUpdateLib: Cleans up APIs

REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2536

Callers of DxeAslUpdateLib don't have to call InitializeAslUpdateLib() but the library itself runs it internally. This commit makes it an internal call. LocateAcpiTableByOemTableId() is unreferenced externally so this commit makes it an internal call.
PSS_PACKAGE_LAYOUT and AML_RESRC_TEMP_END_TAG are both unreferenced so they are removed.
AslUpdateLib.h is cleaned up accordingly.

Signed-off-by: Miki Shindo <miki.shindo@intel.com>
Cc: Sai Chaganty <rangasai.v.chaganty@intel.com>
Cc: Chasel Chiu <chasel.chiu@intel.com>
Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
Cc: Prince Agyeman <prince.agyeman@intel.com>
Cc: Ray Ni <ray.ni@intel.com>
---
 Platform/Intel/MinPlatformPkg/Acpi/Library/DxeAslUpdateLib/DxeAslUpdateLib.c | 209 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------------------------------------------
 Platform/Intel/MinPlatformPkg/Include/Library/AslUpdateLib.h                 | 131 ++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------------------------------------------------------
 2 files changed, 159 insertions(+), 181 deletions(-)

diff --git a/Platform/Intel/MinPlatformPkg/Acpi/Library/DxeAslUpdateLib/DxeAslUpdateLib.c b/Platform/Intel/MinPlatformPkg/Acpi/Library/DxeAslUpdateLib/DxeAslUpdateLib.c
index e6ab43db6d..1ba51a7c55 100644
--- a/Platform/Intel/MinPlatformPkg/Acpi/Library/DxeAslUpdateLib/DxeAslUpdateLib.c
+++ b/Platform/Intel/MinPlatformPkg/Acpi/Library/DxeAslUpdateLib/DxeAslU
+++ pdateLib.c
@@ -6,7 +6,7 @@
 
   This library uses the ACPI Support protocol.
 
-Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2017 - 2020, Intel Corporation. All rights reserved.<BR>
 SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
@@ -50,6 +50,62 @@ InitializeAslUpdateLib (
   return Status;
 }
 
+/**
+  This function uses the ACPI SDT protocol to locate an ACPI SSDT table.
+
+  @param[in] TableId           - Pointer to an ASCII string containing the OEM Table ID from the ACPI table header
+  @param[in] TableIdSize       - Length of the TableId to match.  Table ID are 8 bytes long, this function
+                                 will consider it a match if the first TableIdSize bytes match
+  @param[in, out] Table        - Updated with a pointer to the table
+  @param[in, out] Handle       - AcpiSupport protocol table handle for the table found
+
+  @retval EFI_SUCCESS          - The function completed successfully.
+  @retval EFI_NOT_FOUND        - Failed to locate AcpiTable.
+  @retval EFI_NOT_READY        - Not ready to locate AcpiTable.
+**/
+EFI_STATUS
+LocateAcpiTableByOemTableId (
+  IN      UINT8                         *TableId,
+  IN      UINT8                         TableIdSize,
+  IN OUT  EFI_ACPI_DESCRIPTION_HEADER   **Table,
+  IN OUT  UINTN                         *Handle
+  )
+{
+  EFI_STATUS                  Status;
+  INTN                        Index;
+  EFI_ACPI_TABLE_VERSION      Version;
+  EFI_ACPI_DESCRIPTION_HEADER *OrgTable;
+
+  if (mAcpiSdt == NULL) {
+    InitializeAslUpdateLib ();
+    if (mAcpiSdt == NULL) {
+      return EFI_NOT_READY;
+    }
+  }
+  ///
+  /// Locate table with matching ID
+  ///
+  Version = 0;
+  Index = 0;
+  do {
+    Status = mAcpiSdt->GetAcpiTable (Index, (EFI_ACPI_SDT_HEADER **)&OrgTable, &Version, Handle);
+    if (Status == EFI_NOT_FOUND) {
+      break;
+    }
+    ASSERT_EFI_ERROR (Status);
+    Index++;
+  } while (CompareMem (&(OrgTable->OemTableId), TableId, TableIdSize));
+
+  if (Status != EFI_NOT_FOUND) {
+    *Table = AllocateCopyPool (OrgTable->Length, OrgTable);
+    ASSERT (*Table);
+  }
+
+  ///
+  /// If we found the table, there will be no error.
+  ///
+  return Status;
+}
 
 /**
   This procedure will update immediate value assigned to a Name @@ -59,8 +115,11 @@ InitializeAslUpdateLib (
   @param[in] Length            - length of data to be overwritten
 
   @retval EFI_SUCCESS          - The function completed successfully.
+  @retval EFI_NOT_FOUND        - Failed to locate AcpiTable.
+  @retval EFI_NOT_READY        - Not ready to locate AcpiTable.
 **/
 EFI_STATUS
+EFIAPI
 UpdateNameAslCode (
   IN     UINT32                        AslSignature,
   IN     VOID                          *Buffer,
@@ -149,6 +208,50 @@ UpdateNameAslCode (
   return EFI_NOT_FOUND;
 }
 
+/**
+  This procedure will update the name of ASL Method
+
+  @param[in] TableId           - Pointer to an ASCII string containing the OEM Table ID from the ACPI table header
+  @param[in] TableIdSize       - Length of the TableId to match.  Table ID are 8 bytes long, this function
+                                 will consider it a match if the first TableIdSize bytes match
+  @param[in] AslSignature      - The signature of Operation Region that we want to update.
+  @param[in] Buffer            - source of data to be written over original aml
+  @param[in] Length            - length of data to be overwritten
+
+  @retval EFI_UNSUPPORTED      - The function is not supported in this library.
+**/
+EFI_STATUS
+EFIAPI
+UpdateSsdtNameAslCode (
+  IN     UINT8                         *TableId,
+  IN     UINT8                         TableIdSize,
+  IN     UINT32                        AslSignature,
+  IN     VOID                          *Buffer,
+  IN     UINTN                         Length
+  )
+{
+  return EFI_UNSUPPORTED;
+}
+
+/**
+  This procedure will update the name of ASL Method
+
+  @param[in] AslSignature      - The signature of Operation Region that we want to update.
+  @param[in] Buffer            - source of data to be written over original aml
+  @param[in] Length            - length of data to be overwritten
+
+  @retval EFI_UNSUPPORTED      - The function is not supported in this library.
+**/
+EFI_STATUS
+EFIAPI
+UpdateMethodAslCode (
+  IN     UINT32                        AslSignature,
+  IN     VOID                          *Buffer,
+  IN     UINTN                         Length
+  )
+{
+  return EFI_UNSUPPORTED;
+}
 
 /**
   This function uses the ACPI SDT protocol to locate an ACPI table.
@@ -161,8 +264,11 @@ UpdateNameAslCode (
   @param[in, out] Version        - The version of the table desired
 
   @retval EFI_SUCCESS            - The function completed successfully.
+  @retval EFI_NOT_FOUND          - Failed to locate AcpiTable.
+  @retval EFI_NOT_READY          - Not ready to locate AcpiTable.
 **/
 EFI_STATUS
+EFIAPI
 LocateAcpiTableBySignature (
   IN      UINT32                        Signature,
   IN OUT  EFI_ACPI_DESCRIPTION_HEADER   **Table,
@@ -205,104 +311,3 @@ LocateAcpiTableBySignature (
   ///
   return Status;
 }
-
-/**
-  This function uses the ACPI SDT protocol to locate an ACPI SSDT table.
-
-  @param[in] TableId           - Pointer to an ASCII string containing the OEM Table ID from the ACPI table header
-  @param[in] TableIdSize       - Length of the TableId to match.  Table ID are 8 bytes long, this function
-                                 will consider it a match if the first TableIdSize bytes match
-  @param[in, out] Table        - Updated with a pointer to the table
-  @param[in, out] Handle       - AcpiSupport protocol table handle for the table found
-  @param[in, out] Version      - See AcpiSupport protocol, GetAcpiTable function for use
-
-  @retval EFI_SUCCESS          - The function completed successfully.
-**/
-EFI_STATUS
-LocateAcpiTableByOemTableId (
-  IN      UINT8                         *TableId,
-  IN      UINT8                         TableIdSize,
-  IN OUT  EFI_ACPI_DESCRIPTION_HEADER   **Table,
-  IN OUT  UINTN                         *Handle
-  )
-{
-  EFI_STATUS                  Status;
-  INTN                        Index;
-  EFI_ACPI_TABLE_VERSION      Version;
-  EFI_ACPI_DESCRIPTION_HEADER *OrgTable;
-
-  if (mAcpiSdt == NULL) {
-    InitializeAslUpdateLib ();
-    if (mAcpiSdt == NULL) {
-      return EFI_NOT_READY;
-    }
-  }
-  ///
-  /// Locate table with matching ID
-  ///
-  Version = 0;
-  Index = 0;
-  do {
-    Status = mAcpiSdt->GetAcpiTable (Index, (EFI_ACPI_SDT_HEADER **)&OrgTable, &Version, Handle);
-    if (Status == EFI_NOT_FOUND) {
-      break;
-    }
-    ASSERT_EFI_ERROR (Status);
-    Index++;
-  } while (CompareMem (&(OrgTable->OemTableId), TableId, TableIdSize));
-
-  if (Status != EFI_NOT_FOUND) {
-    *Table = AllocateCopyPool (OrgTable->Length, OrgTable);
-    ASSERT (*Table);
-  }
-
-  ///
-  /// If we found the table, there will be no error.
-  ///
-  return Status;
-}
-
-/**
-  This function calculates and updates an UINT8 checksum.
-
-  @param[in] Buffer          Pointer to buffer to checksum
-  @param[in] Size            Number of bytes to checksum
-  @param[in] ChecksumOffset  Offset to place the checksum result in
-
-  @retval EFI_SUCCESS        The function completed successfully.
-**/
-EFI_STATUS
-AcpiChecksum (
-  IN VOID       *Buffer,
-  IN UINTN      Size,
-  IN UINTN      ChecksumOffset
-  )
-{
-  UINT8 Sum;
-  UINT8 *Ptr;
-
-  Sum = 0;
-  ///
-  /// Initialize pointer
-  ///
-  Ptr = Buffer;
-
-  ///
-  /// set checksum to 0 first
-  ///
-  Ptr[ChecksumOffset] = 0;
-
-  ///
-  /// add all content of buffer
-  ///
-  while (Size--) {
-    Sum = (UINT8) (Sum + (*Ptr++));
-  }
-  ///
-  /// set checksum
-  ///
-  Ptr                 = Buffer;
-  Ptr[ChecksumOffset] = (UINT8) (0xff - Sum + 1);
-
-  return EFI_SUCCESS;
-}
diff --git a/Platform/Intel/MinPlatformPkg/Include/Library/AslUpdateLib.h b/Platform/Intel/MinPlatformPkg/Include/Library/AslUpdateLib.h
index d58b6d6458..0be8df6469 100644
--- a/Platform/Intel/MinPlatformPkg/Include/Library/AslUpdateLib.h
+++ b/Platform/Intel/MinPlatformPkg/Include/Library/AslUpdateLib.h
@@ -5,7 +5,7 @@
   Make sure you meet the requirements for the library (protocol dependencies, use
   restrictions, etc).
 
-Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2017 - 2020, Intel Corporation. All rights reserved.<BR>
 SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
@@ -16,61 +16,70 @@ SPDX-License-Identifier: BSD-2-Clause-Patent  //  // Include files  //
+#include <Uefi/UefiBaseType.h>
 #include <IndustryStandard/Acpi.h>
 #include <Protocol/AcpiTable.h>
 #include <Protocol/AcpiSystemDescriptionTable.h>
 
-//
-// AML parsing definitions
-//
-#define AML_RESRC_TEMP_END_TAG  0x0079
-
-//
-// ASL PSS package structure layout
-//
-#pragma pack (1)
-typedef struct {
-  UINT8     NameOp;           // 12h ;First opcode is a NameOp.
-  UINT8     PackageLead;      // 20h ;First opcode is a NameOp.
-  UINT8     NumEntries;       // 06h ;First opcode is a NameOp.
-  UINT8     DwordPrefix1;     // 0Ch
-  UINT32    CoreFrequency;    // 00h
-  UINT8     DwordPrefix2;     // 0Ch
-  UINT32    Power;            // 00h
-  UINT8     DwordPrefix3;     // 0Ch
-  UINT32    TransLatency;     // 00h
-  UINT8     DwordPrefix4;     // 0Ch
-  UINT32    BmLatency;        // 00h
-  UINT8     DwordPrefix5;     // 0Ch
-  UINT32    Control;          // 00h
-  UINT8     DwordPrefix6;     // 0Ch
-  UINT32    Status;           // 00h
-} PSS_PACKAGE_LAYOUT;
-#pragma pack()
-
 /**
-  Initialize the ASL update library state.
-  This must be called prior to invoking other library functions.
+  This procedure will update immediate value assigned to a Name
 
+  @param[in] AslSignature               The signature of Operation Region that we want to update.
+  @param[in] Buffer                     source of data to be written over original aml
+  @param[in] Length                     length of data to be overwritten
 
   @retval EFI_SUCCESS                   The function completed successfully.
+  @retval EFI_NOT_FOUND                 Failed to locate AcpiTable.
+  @retval EFI_NOT_READY                 Not ready to locate AcpiTable.
+  @retval EFI_UNSUPPORTED               The function is not supported in this library
 **/
 EFI_STATUS
-InitializeAslUpdateLib (
-  VOID
+EFIAPI
+UpdateNameAslCode(
+  IN     UINT32                        AslSignature,
+  IN     VOID                          *Buffer,
+  IN     UINTN                         Length
   );
 
 /**
-  This procedure will update immediate value assigned to a Name
+  This procedure will update the name of ASL Method
+
+  @param[in] TableId           - Pointer to an ASCII string containing the OEM Table ID from the ACPI table header
+  @param[in] TableIdSize       - Length of the TableId to match.  Table ID are 8 bytes long, this function
+  @param[in] AslSignature      - The signature of Operation Region that we want to update.
+  @param[in] Buffer            - source of data to be written over original aml
+  @param[in] Length            - length of data to be overwritten
+
+  @retval EFI_SUCCESS          - The function completed successfully.
+  @retval EFI_NOT_FOUND        - Failed to locate AcpiTable.
+  @retval EFI_NOT_READY        - Not ready to locate AcpiTable.
+  @retval EFI_UNSUPPORTED      - The function is not supported in this library
+**/
+EFI_STATUS
+EFIAPI
+UpdateSsdtNameAslCode (
+  IN     UINT8                         *TableId,
+  IN     UINT8                         TableIdSize,
+  IN     UINT32                        AslSignature,
+  IN     VOID                          *Buffer,
+  IN     UINTN                         Length
+  );
 
-  @param[in] AslSignature               The signature of Operation Region that we want to update.
-  @param[in] Buffer                     source of data to be written over original aml
-  @param[in] Length                     length of data to be overwritten
+/**
+  This procedure will update the name of ASL Method
 
-  @retval EFI_SUCCESS                   The function completed successfully.
+  @param[in] AslSignature      - The signature of Operation Region that we want to update.
+  @param[in] Buffer            - source of data to be written over original aml
+  @param[in] Length            - length of data to be overwritten
+
+  @retval EFI_SUCCESS          - The function completed successfully.
+  @retval EFI_NOT_FOUND        - Failed to locate AcpiTable.
+  @retval EFI_NOT_READY        - Not ready to locate AcpiTable.
+  @retval EFI_UNSUPPORTED      - The function is not supported in this library
 **/
 EFI_STATUS
-UpdateNameAslCode(
+EFIAPI
+UpdateMethodAslCode (
   IN     UINT32                        AslSignature,
   IN     VOID                          *Buffer,
   IN     UINTN                         Length
@@ -86,55 +95,19 @@ UpdateNameAslCode(
   @param[in] Signature                  Pointer to an ASCII string containing the Signature to match
   @param[in, out] Table                 Updated with a pointer to the table
   @param[in, out] Handle                AcpiSupport protocol table handle for the table found
-  @param[in, out] Version               On input, the version of the table desired,
-                                        on output, the versions the table belongs to
                                         @see AcpiSupport protocol for details
 
   @retval EFI_SUCCESS                   The function completed successfully.
+  @retval EFI_NOT_FOUND                 Failed to locate AcpiTable.
+  @retval EFI_NOT_READY                 Not ready to locate AcpiTable.
+  @retval EFI_UNSUPPORTED               The function is not supported in this library
 **/
 EFI_STATUS
+EFIAPI
 LocateAcpiTableBySignature (
   IN      UINT32                        Signature,
   IN OUT  EFI_ACPI_DESCRIPTION_HEADER   **Table,
   IN OUT  UINTN                         *Handle
   );
 
-/**
-  This function uses the ACPI support protocol to locate an ACPI SSDT table.
-  The table is located by searching for a matching OEM Table ID field.
-  Partial match searches are supported via the TableIdSize parameter.
-
-  @param[in] TableId                    Pointer to an ASCII string containing the OEM Table ID from the ACPI table header
-  @param[in] TableIdSize                Length of the TableId to match.  Table ID are 8 bytes long, this function
-                                        will consider it a match if the first TableIdSize bytes match
-  @param[in, out] Table                 Updated with a pointer to the table
-  @param[in, out] Handle                AcpiSupport protocol table handle for the table found
-  @param[in, out] Version               See AcpiSupport protocol, GetAcpiTable function for use
-
-  @retval EFI_SUCCESS                   The function completed successfully.
-**/
-EFI_STATUS
-LocateAcpiTableByOemTableId (
-  IN      UINT8                         *TableId,
-  IN      UINT8                         TableIdSize,
-  IN OUT  EFI_ACPI_DESCRIPTION_HEADER   **Table,
-  IN OUT  UINTN                         *Handle
-  );
-
-/**
-  This function calculates and updates an UINT8 checksum.
-
-  @param[in] Buffer                     Pointer to buffer to checksum
-  @param[in] Size                       Number of bytes to checksum
-  @param[in] ChecksumOffset             Offset to place the checksum result in
-
-  @retval EFI_SUCCESS                   The function completed successfully.
-**/
-EFI_STATUS
-AcpiChecksum (
-  IN VOID       *Buffer,
-  IN UINTN      Size,
-  IN UINTN      ChecksumOffset
-  );
-
 #endif
--
2.16.2.windows.1


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#58363): https://edk2.groups.io/g/devel/message/58363
Mute This Topic: https://groups.io/mt/73345587/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-