Re: [edk2-devel] [PATCH 1/1] DynamicTablesPkg/AmlLib: Define an enum for IsaRanges

2023-09-22 Thread Leif Lindholm
On Fri, Sep 22, 2023 at 16:18:17 +0200, PierreGondois wrote:
> From: Pierre Gondois 
> 
> The IsaRange parameter in:
> - AmlCodeGenRdDWordIo()
> - AmlCodeGenRdQWordIo()
> is an hard-coded value. Define an enum for IsarRanges
> and use it.
> 
> Suggested-by: Leif Lindholm 
> Signed-off-by: Pierre Gondois 

Thanks for this!
Reviewed-by: Leif Lindholm 


> ---
>  .../Include/Library/AmlLib/AmlLib.h   | 28 +++
>  .../AcpiSsdtPcieLibArm/SsdtPcieGenerator.c|  2 +-
>  .../AmlLib/CodeGen/AmlResourceDataCodeGen.c   | 28 +++
>  3 files changed, 27 insertions(+), 31 deletions(-)
> 
> diff --git a/DynamicTablesPkg/Include/Library/AmlLib/AmlLib.h 
> b/DynamicTablesPkg/Include/Library/AmlLib/AmlLib.h
> index 8e24cecdd77b..ce81f5876681 100644
> --- a/DynamicTablesPkg/Include/Library/AmlLib/AmlLib.h
> +++ b/DynamicTablesPkg/Include/Library/AmlLib/AmlLib.h
> @@ -59,6 +59,18 @@ typedef void *AML_DATA_NODE_HANDLE;
>  
>  #endif // AML_HANDLE
>  
> +/** Enum for ISA Ranges.
> +
> +  See ACPI 6.4 spec, s19.6.34 for more.
> +*/
> +typedef enum {
> +  EAmlIsaRangeReserved = 0,   ///< Reserved.
> +  EAmlIsaRangeNonIsaOnly, ///< NonIsaOnly.
> +  EAmlIsaRangeIsaOnly,///< IsaOnly.
> +  EAmlIsaRangeEntireRange,///< EntireRange.
> +  EAmlIsaRangeMax,///< Max.
> +} EAML_ISA_RANGE;
> +
>  /** Parse the definition block.
>  
>The function parses the whole AML blob. It starts with the ACPI DSDT/SSDT
> @@ -471,11 +483,7 @@ AmlUpdateRdQWord (
>@param [in]  IsMinFixed   Minimum address is fixed.
>@param [in]  IsMaxFixed   Maximum address is fixed.
>@param [in]  IsPosDecode  Decode parameter
> -  @param [in]  IsaRangesPossible values are:
> - 0-Reserved
> - 1-NonISAOnly
> - 2-ISAOnly
> - 3-EntireRange
> +  @param [in]  IsaRangesIsa Range.
>@param [in]  AddressGranularity   Address granularity.
>@param [in]  AddressMinimum   Minimum address.
>@param [in]  AddressMaximum   Maximum address.
> @@ -505,7 +513,7 @@ AmlCodeGenRdDWordIo (
>INBOOLEAN IsMinFixed,
>INBOOLEAN IsMaxFixed,
>INBOOLEAN IsPosDecode,
> -  INUINT8 IsaRanges,
> +  INEAML_ISA_RANGE IsaRanges,
>INUINT32 AddressGranularity,
>INUINT32 AddressMinimum,
>INUINT32 AddressMaximum,
> @@ -702,11 +710,7 @@ AmlCodeGenRdWordBusNumber (
>@param [in]  IsMinFixed   Minimum address is fixed.
>@param [in]  IsMaxFixed   Maximum address is fixed.
>@param [in]  IsPosDecode  Decode parameter
> -  @param [in]  IsaRangesPossible values are:
> - 0-Reserved
> - 1-NonISAOnly
> - 2-ISAOnly
> - 3-EntireRange
> +  @param [in]  IsaRangesIsa Range.
>@param [in]  AddressGranularity   Address granularity.
>@param [in]  AddressMinimum   Minimum address.
>@param [in]  AddressMaximum   Maximum address.
> @@ -736,7 +740,7 @@ AmlCodeGenRdQWordIo (
>INBOOLEAN IsMinFixed,
>INBOOLEAN IsMaxFixed,
>INBOOLEAN IsPosDecode,
> -  INUINT8 IsaRanges,
> +  INEAML_ISA_RANGE IsaRanges,
>INUINT64 AddressGranularity,
>INUINT64 AddressMinimum,
>INUINT64 AddressMaximum,
> diff --git 
> a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieGenerator.c 
> b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieGenerator.c
> index 9ddaddc198fa..87b426ccfe07 100644
> --- a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieGenerator.c
> +++ b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieGenerator.c
> @@ -545,7 +545,7 @@ GeneratePciCrs (
> TRUE,
> TRUE,
> IsPosDecode,
> -   3,
> +   EAmlIsaRangeEntireRange,
> 0,
> AddrMapInfo->PciAddress,
> AddrMapInfo->PciAddress + AddrMapInfo->AddressSize - 1,
> diff --git 
> a/DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlResourceDataCodeGen.c 
> b/DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlResourceDataCodeGen.c
> index 9c6700b9e08c..707e8182b4c0 100644
> --- a/DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlResourceDataCodeGen.c
> +++ b/DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlResourceDataCodeGen.c
> @@ -121,13 +121,13 @@ STATIC
>  UINT8
>  EFIAPI
>  RdIoRangeSpecificFlags (
> -  IN  UINT8IsaRanges,
> -  IN  BOOLEAN  IsDenseTranslation,
> -  IN  BOOLEAN  IsTypeStatic
> +  IN  EAML_ISA_RANGE  IsaRanges,
> +  IN  BOOLEAN IsDenseTranslation,
> +  IN  BOOLEAN IsTypeStatic
>)
>  {
>

Re: [edk2-devel] [PATCH 1/1] DynamicTablesPkg/AmlLib: Define an enum for IsaRanges

2023-09-22 Thread Jeff Brasen via groups.io
Reviewed-by: Jeff Brasen 

> -Original Message-
> From: pierre.gond...@arm.com 
> Sent: Friday, September 22, 2023 8:18 AM
> To: devel@edk2.groups.io
> Cc: Sami Mujawar ; Leif Lindholm
> ; Jeff Brasen 
> Subject: [PATCH 1/1] DynamicTablesPkg/AmlLib: Define an enum for
> IsaRanges
> 
> External email: Use caution opening links or attachments
> 
> 
> From: Pierre Gondois 
> 
> The IsaRange parameter in:
> - AmlCodeGenRdDWordIo()
> - AmlCodeGenRdQWordIo()
> is an hard-coded value. Define an enum for IsarRanges and use it.
> 
> Suggested-by: Leif Lindholm 
> Signed-off-by: Pierre Gondois 
> ---
>  .../Include/Library/AmlLib/AmlLib.h   | 28 +++
>  .../AcpiSsdtPcieLibArm/SsdtPcieGenerator.c|  2 +-
>  .../AmlLib/CodeGen/AmlResourceDataCodeGen.c   | 28 +++
>  3 files changed, 27 insertions(+), 31 deletions(-)
> 
> diff --git a/DynamicTablesPkg/Include/Library/AmlLib/AmlLib.h
> b/DynamicTablesPkg/Include/Library/AmlLib/AmlLib.h
> index 8e24cecdd77b..ce81f5876681 100644
> --- a/DynamicTablesPkg/Include/Library/AmlLib/AmlLib.h
> +++ b/DynamicTablesPkg/Include/Library/AmlLib/AmlLib.h
> @@ -59,6 +59,18 @@ typedef void *AML_DATA_NODE_HANDLE;
> 
>  #endif // AML_HANDLE
> 
> +/** Enum for ISA Ranges.
> +
> +  See ACPI 6.4 spec, s19.6.34 for more.
> +*/
> +typedef enum {
> +  EAmlIsaRangeReserved = 0,   ///< Reserved.
> +  EAmlIsaRangeNonIsaOnly, ///< NonIsaOnly.
> +  EAmlIsaRangeIsaOnly,///< IsaOnly.
> +  EAmlIsaRangeEntireRange,///< EntireRange.
> +  EAmlIsaRangeMax,///< Max.
> +} EAML_ISA_RANGE;
> +
>  /** Parse the definition block.
> 
>The function parses the whole AML blob. It starts with the ACPI DSDT/SSDT
> @@ -471,11 +483,7 @@ AmlUpdateRdQWord (
>@param [in]  IsMinFixed   Minimum address is fixed.
>@param [in]  IsMaxFixed   Maximum address is fixed.
>@param [in]  IsPosDecode  Decode parameter
> -  @param [in]  IsaRangesPossible values are:
> - 0-Reserved
> - 1-NonISAOnly
> - 2-ISAOnly
> - 3-EntireRange
> +  @param [in]  IsaRangesIsa Range.
>@param [in]  AddressGranularity   Address granularity.
>@param [in]  AddressMinimum   Minimum address.
>@param [in]  AddressMaximum   Maximum address.
> @@ -505,7 +513,7 @@ AmlCodeGenRdDWordIo (
>INBOOLEAN IsMinFixed,
>INBOOLEAN IsMaxFixed,
>INBOOLEAN IsPosDecode,
> -  INUINT8 IsaRanges,
> +  INEAML_ISA_RANGE IsaRanges,
>INUINT32 AddressGranularity,
>INUINT32 AddressMinimum,
>INUINT32 AddressMaximum,
> @@ -702,11 +710,7 @@ AmlCodeGenRdWordBusNumber (
>@param [in]  IsMinFixed   Minimum address is fixed.
>@param [in]  IsMaxFixed   Maximum address is fixed.
>@param [in]  IsPosDecode  Decode parameter
> -  @param [in]  IsaRangesPossible values are:
> - 0-Reserved
> - 1-NonISAOnly
> - 2-ISAOnly
> - 3-EntireRange
> +  @param [in]  IsaRangesIsa Range.
>@param [in]  AddressGranularity   Address granularity.
>@param [in]  AddressMinimum   Minimum address.
>@param [in]  AddressMaximum   Maximum address.
> @@ -736,7 +740,7 @@ AmlCodeGenRdQWordIo (
>INBOOLEAN IsMinFixed,
>INBOOLEAN IsMaxFixed,
>INBOOLEAN IsPosDecode,
> -  INUINT8 IsaRanges,
> +  INEAML_ISA_RANGE IsaRanges,
>INUINT64 AddressGranularity,
>INUINT64 AddressMinimum,
>INUINT64 AddressMaximum,
> diff --git
> a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieGenera
> tor.c
> b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieGenera
> tor.c
> index 9ddaddc198fa..87b426ccfe07 100644
> ---
> a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieGenera
> tor.c
> +++
> b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieGener
> +++ ator.c
> @@ -545,7 +545,7 @@ GeneratePciCrs (
> TRUE,
> TRUE,
> IsPosDecode,
> -   3,
> +   EAmlIsaRangeEntireRange,
> 0,
> AddrMapInfo->PciAddress,
> AddrMapInfo->PciAddress + AddrMapInfo->AddressSize - 1, 
> diff --
> git
> a/DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlResourceDataC
> odeGen.c
> b/DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlResourceDataC
> odeGen.c
> index 9c6700b9e08c..707e8182b4c0 100644
> ---
> a/DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlResourceDataC
> odeGen.c
> +++
> b/DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlResourceDataC
> ode
> +++ Gen.c
> @@ -121,13 +121,13 @@ STA

[edk2-devel] [PATCH 1/1] DynamicTablesPkg/AmlLib: Define an enum for IsaRanges

2023-09-22 Thread PierreGondois
From: Pierre Gondois 

The IsaRange parameter in:
- AmlCodeGenRdDWordIo()
- AmlCodeGenRdQWordIo()
is an hard-coded value. Define an enum for IsarRanges
and use it.

Suggested-by: Leif Lindholm 
Signed-off-by: Pierre Gondois 
---
 .../Include/Library/AmlLib/AmlLib.h   | 28 +++
 .../AcpiSsdtPcieLibArm/SsdtPcieGenerator.c|  2 +-
 .../AmlLib/CodeGen/AmlResourceDataCodeGen.c   | 28 +++
 3 files changed, 27 insertions(+), 31 deletions(-)

diff --git a/DynamicTablesPkg/Include/Library/AmlLib/AmlLib.h 
b/DynamicTablesPkg/Include/Library/AmlLib/AmlLib.h
index 8e24cecdd77b..ce81f5876681 100644
--- a/DynamicTablesPkg/Include/Library/AmlLib/AmlLib.h
+++ b/DynamicTablesPkg/Include/Library/AmlLib/AmlLib.h
@@ -59,6 +59,18 @@ typedef void *AML_DATA_NODE_HANDLE;
 
 #endif // AML_HANDLE
 
+/** Enum for ISA Ranges.
+
+  See ACPI 6.4 spec, s19.6.34 for more.
+*/
+typedef enum {
+  EAmlIsaRangeReserved = 0,   ///< Reserved.
+  EAmlIsaRangeNonIsaOnly, ///< NonIsaOnly.
+  EAmlIsaRangeIsaOnly,///< IsaOnly.
+  EAmlIsaRangeEntireRange,///< EntireRange.
+  EAmlIsaRangeMax,///< Max.
+} EAML_ISA_RANGE;
+
 /** Parse the definition block.
 
   The function parses the whole AML blob. It starts with the ACPI DSDT/SSDT
@@ -471,11 +483,7 @@ AmlUpdateRdQWord (
   @param [in]  IsMinFixed   Minimum address is fixed.
   @param [in]  IsMaxFixed   Maximum address is fixed.
   @param [in]  IsPosDecode  Decode parameter
-  @param [in]  IsaRangesPossible values are:
- 0-Reserved
- 1-NonISAOnly
- 2-ISAOnly
- 3-EntireRange
+  @param [in]  IsaRangesIsa Range.
   @param [in]  AddressGranularity   Address granularity.
   @param [in]  AddressMinimum   Minimum address.
   @param [in]  AddressMaximum   Maximum address.
@@ -505,7 +513,7 @@ AmlCodeGenRdDWordIo (
   INBOOLEAN IsMinFixed,
   INBOOLEAN IsMaxFixed,
   INBOOLEAN IsPosDecode,
-  INUINT8 IsaRanges,
+  INEAML_ISA_RANGE IsaRanges,
   INUINT32 AddressGranularity,
   INUINT32 AddressMinimum,
   INUINT32 AddressMaximum,
@@ -702,11 +710,7 @@ AmlCodeGenRdWordBusNumber (
   @param [in]  IsMinFixed   Minimum address is fixed.
   @param [in]  IsMaxFixed   Maximum address is fixed.
   @param [in]  IsPosDecode  Decode parameter
-  @param [in]  IsaRangesPossible values are:
- 0-Reserved
- 1-NonISAOnly
- 2-ISAOnly
- 3-EntireRange
+  @param [in]  IsaRangesIsa Range.
   @param [in]  AddressGranularity   Address granularity.
   @param [in]  AddressMinimum   Minimum address.
   @param [in]  AddressMaximum   Maximum address.
@@ -736,7 +740,7 @@ AmlCodeGenRdQWordIo (
   INBOOLEAN IsMinFixed,
   INBOOLEAN IsMaxFixed,
   INBOOLEAN IsPosDecode,
-  INUINT8 IsaRanges,
+  INEAML_ISA_RANGE IsaRanges,
   INUINT64 AddressGranularity,
   INUINT64 AddressMinimum,
   INUINT64 AddressMaximum,
diff --git 
a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieGenerator.c 
b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieGenerator.c
index 9ddaddc198fa..87b426ccfe07 100644
--- a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieGenerator.c
+++ b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieGenerator.c
@@ -545,7 +545,7 @@ GeneratePciCrs (
TRUE,
TRUE,
IsPosDecode,
-   3,
+   EAmlIsaRangeEntireRange,
0,
AddrMapInfo->PciAddress,
AddrMapInfo->PciAddress + AddrMapInfo->AddressSize - 1,
diff --git 
a/DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlResourceDataCodeGen.c 
b/DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlResourceDataCodeGen.c
index 9c6700b9e08c..707e8182b4c0 100644
--- a/DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlResourceDataCodeGen.c
+++ b/DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlResourceDataCodeGen.c
@@ -121,13 +121,13 @@ STATIC
 UINT8
 EFIAPI
 RdIoRangeSpecificFlags (
-  IN  UINT8IsaRanges,
-  IN  BOOLEAN  IsDenseTranslation,
-  IN  BOOLEAN  IsTypeStatic
+  IN  EAML_ISA_RANGE  IsaRanges,
+  IN  BOOLEAN IsDenseTranslation,
+  IN  BOOLEAN IsTypeStatic
   )
 {
   // Only check type specific parameters.
-  if (IsaRanges > 3) {
+  if (IsaRanges >= EAmlIsaRangeMax) {
 ASSERT (0);
 return MAX_UINT8;
   }
@@ -440,20 +440,16 @@ AmlCodeGenRdDWordSpace (
   @param [in]  IsMinFixed   Minimum address is fixed.
   @param [in]  IsMaxFixed   Maximum address is fixed.
   @param [in]  IsPosDec