REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 Apply uncrustify changes to .c/.h files in the DynamicTablesPkg package Cc: Andrew Fish <afish@apple.com> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com> Reviewed-by: Sami Mujawar <sami.mujawar@arm.com>
		
			
				
	
	
		
			139 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			139 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | |
|   AML Resource Data.
 | |
| 
 | |
|   Copyright (c) 2019 - 2020, Arm Limited. All rights reserved.<BR>
 | |
| 
 | |
|   SPDX-License-Identifier: BSD-2-Clause-Patent
 | |
| 
 | |
|   @par Glossary:
 | |
|   - Rd or RD   - Resource Data
 | |
|   - Rds or RDS - Resource Data Small
 | |
|   - Rdl or RDL - Resource Data Large
 | |
| **/
 | |
| 
 | |
| #include <ResourceData/AmlResourceData.h>
 | |
| 
 | |
| /** Check whether the resource data has the input descriptor Id.
 | |
| 
 | |
|   The small/large bit is included in the descriptor Id,
 | |
|   but the size bits are not included for small resource data elements.
 | |
| 
 | |
|   @param  [in]  Header        Pointer to the first byte of a resource data
 | |
|                               element.
 | |
|   @param  [in]  DescriptorId  The descriptor to check against.
 | |
| 
 | |
|   @retval TRUE    The resource data has the descriptor Id.
 | |
|   @retval FALSE   Otherwise.
 | |
| **/
 | |
| BOOLEAN
 | |
| EFIAPI
 | |
| AmlRdCompareDescId (
 | |
|   IN  CONST AML_RD_HEADER  *Header,
 | |
|   IN        AML_RD_HEADER  DescriptorId
 | |
|   )
 | |
| {
 | |
|   if (Header == NULL) {
 | |
|     ASSERT (0);
 | |
|     return FALSE;
 | |
|   }
 | |
| 
 | |
|   if (AML_RD_IS_LARGE (Header)) {
 | |
|     return ((*Header ^ DescriptorId) == 0);
 | |
|   } else {
 | |
|     return (((*Header & AML_RD_SMALL_ID_MASK) ^ DescriptorId) == 0);
 | |
|   }
 | |
| }
 | |
| 
 | |
| /** Get the descriptor Id of the resource data.
 | |
| 
 | |
|   The small/large bit is included in the descriptor Id,
 | |
|   but the size bits are not included for small resource data elements.
 | |
| 
 | |
|   @param  [in]  Header  Pointer to the first byte of a resource data.
 | |
| 
 | |
|   @return A descriptor Id.
 | |
| **/
 | |
| AML_RD_HEADER
 | |
| EFIAPI
 | |
| AmlRdGetDescId (
 | |
|   IN  CONST AML_RD_HEADER  *Header
 | |
|   )
 | |
| {
 | |
|   if (Header == NULL) {
 | |
|     ASSERT (0);
 | |
|     return FALSE;
 | |
|   }
 | |
| 
 | |
|   if (AML_RD_IS_LARGE (Header)) {
 | |
|     return *Header;
 | |
|   }
 | |
| 
 | |
|   // Header is a small resource data element.
 | |
|   return *Header & AML_RD_SMALL_ID_MASK;
 | |
| }
 | |
| 
 | |
| /** Get the size of a resource data element.
 | |
| 
 | |
|   If the resource data element is of the large type, the Header
 | |
|   is expected to be at least 3 bytes long.
 | |
| 
 | |
|   @param  [in]  Header  Pointer to the first byte of a resource data.
 | |
| 
 | |
|   @return The size of the resource data element.
 | |
| **/
 | |
| UINT32
 | |
| EFIAPI
 | |
| AmlRdGetSize (
 | |
|   IN  CONST AML_RD_HEADER  *Header
 | |
|   )
 | |
| {
 | |
|   if (Header == NULL) {
 | |
|     ASSERT (0);
 | |
|     return FALSE;
 | |
|   }
 | |
| 
 | |
|   if (AML_RD_IS_LARGE (Header)) {
 | |
|     return ((ACPI_LARGE_RESOURCE_HEADER *)Header)->Length +
 | |
|            sizeof (ACPI_LARGE_RESOURCE_HEADER);
 | |
|   }
 | |
| 
 | |
|   // Header is a small resource data element.
 | |
|   return ((ACPI_SMALL_RESOURCE_HEADER *)Header)->Bits.Length +
 | |
|          sizeof (ACPI_SMALL_RESOURCE_HEADER);
 | |
| }
 | |
| 
 | |
| /** Set the Checksum of an EndTag resource data.
 | |
| 
 | |
|   ACPI 6.4, s6.4.2.9 "End Tag":
 | |
|   "This checksum is generated such that adding it to the sum of all the data
 | |
|   bytes will produce a zero sum."
 | |
|   "If the checksum field is zero, the resource data is treated as if the
 | |
|   checksum operation succeeded. Configuration proceeds normally."
 | |
| 
 | |
|   @param  [in]  Header     Pointer to the first byte of a resource data.
 | |
|   @param  [in]  CheckSum   Checksum value to set.
 | |
| 
 | |
|   @retval EFI_SUCCESS             The function completed successfully.
 | |
|   @retval EFI_INVALID_PARAMETER   Invalid parameter.
 | |
| **/
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| AmlRdSetEndTagChecksum (
 | |
|   IN  CONST AML_RD_HEADER  *Header,
 | |
|   IN        UINT8          CheckSum
 | |
|   )
 | |
| {
 | |
|   if ((Header == NULL)  ||
 | |
|       !AmlRdCompareDescId (
 | |
|          Header,
 | |
|          AML_RD_BUILD_SMALL_DESC_ID (ACPI_SMALL_END_TAG_DESCRIPTOR_NAME)
 | |
|          ))
 | |
|   {
 | |
|     ASSERT (0);
 | |
|     return EFI_INVALID_PARAMETER;
 | |
|   }
 | |
| 
 | |
|   ((EFI_ACPI_END_TAG_DESCRIPTOR *)Header)->Checksum = CheckSum;
 | |
|   return EFI_SUCCESS;
 | |
| }
 |