DynamicTablesPkg: AML Code generation for word I/O ranges

Add helper functions to generate AML resource data
for word I/O.

Cc: Pierre Gondois <pierre.gondois@arm.com>
Cc: Sami Mujawar <sami.mujawar@arm.com>
Signed-off-by: Abdul Lateef Attar <AbdulLateef.Attar@amd.com>
Reviewed-by: Pierre Gondois <pierre.gondois@arm.com>
Reviewed-by: Sami Mujawar <sami.mujawar@arm.com>
This commit is contained in:
Abdul Lateef Attar 2023-11-29 15:16:46 +05:30 committed by mergify[bot]
parent 5d533bbc27
commit ea65643547
2 changed files with 153 additions and 0 deletions

View File

@ -2,6 +2,7 @@
AML Lib. AML Lib.
Copyright (c) 2019 - 2021, Arm Limited. All rights reserved.<BR> Copyright (c) 2019 - 2021, Arm Limited. All rights reserved.<BR>
Copyright (C) 2023 Advanced Micro Devices, Inc. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent SPDX-License-Identifier: BSD-2-Clause-Patent
**/ **/
@ -724,6 +725,70 @@ AmlCodeGenRdWordBusNumber (
OUT AML_DATA_NODE_HANDLE *NewRdNode OPTIONAL OUT AML_DATA_NODE_HANDLE *NewRdNode OPTIONAL
); );
/** Code generation for the "WordIO ()" ASL function.
The Resource Data effectively created is a Word Address Space Resource
Data. Cf ACPI 6.5:
- s6.4.3.5.3 "Word Address Space Descriptor".
The created resource data node can be:
- appended to the list of resource data elements of the NameOpNode.
In such case NameOpNode must be defined by a the "Name ()" ASL statement
and initially contain a "ResourceTemplate ()".
- returned through the NewRdNode parameter.
@param [in] IsResourceConsumer ResourceUsage parameter.
@param [in] IsMinFixed Minimum address is fixed.
@param [in] IsMaxFixed Maximum address is fixed.
@param [in] IsPosDecode Decode parameter
@param [in] IsaRanges Possible values are:
0-Reserved
1-NonISAOnly
2-ISAOnly
3-EntireRange
@param [in] AddressGranularity Address granularity.
@param [in] AddressMinimum Minimum address.
@param [in] AddressMaximum Maximum address.
@param [in] AddressTranslation Address translation.
@param [in] RangeLength Range length.
@param [in] ResourceSourceIndex Resource Source index.
Not supported. Must be 0.
@param [in] ResourceSource Resource Source.
Not supported. Must be NULL.
@param [in] IsDenseTranslation TranslationDensity parameter.
@param [in] IsTypeStatic TranslationType parameter.
@param [in] NameOpNode NameOp object node defining a named object.
If provided, append the new resource data
node to the list of resource data elements
of this node.
@param [out] NewRdNode If provided and success,
contain the created node.
@retval EFI_SUCCESS The function completed successfully.
@retval EFI_INVALID_PARAMETER Invalid parameter.
@retval EFI_OUT_OF_RESOURCES Could not allocate memory.
**/
EFI_STATUS
EFIAPI
AmlCodeGenRdWordIo (
IN BOOLEAN IsResourceConsumer,
IN BOOLEAN IsMinFixed,
IN BOOLEAN IsMaxFixed,
IN BOOLEAN IsPosDecode,
IN UINT8 IsaRanges,
IN UINT16 AddressGranularity,
IN UINT16 AddressMinimum,
IN UINT16 AddressMaximum,
IN UINT16 AddressTranslation,
IN UINT16 RangeLength,
IN UINT8 ResourceSourceIndex,
IN CONST CHAR8 *ResourceSource,
IN BOOLEAN IsDenseTranslation,
IN BOOLEAN IsTypeStatic,
IN AML_OBJECT_NODE_HANDLE NameOpNode, OPTIONAL
OUT AML_DATA_NODE_HANDLE *NewRdNode OPTIONAL
);
/** Code generation for the "QWordIO ()" ASL function. /** Code generation for the "QWordIO ()" ASL function.
The Resource Data effectively created is a QWord Address Space Resource The Resource Data effectively created is a QWord Address Space Resource

View File

@ -2,6 +2,7 @@
AML Resource Data Code Generation. AML Resource Data Code Generation.
Copyright (c) 2020 - 2021, Arm Limited. All rights reserved.<BR> Copyright (c) 2020 - 2021, Arm Limited. All rights reserved.<BR>
Copyright (C) 2023 Advanced Micro Devices, Inc. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent SPDX-License-Identifier: BSD-2-Clause-Patent
@ -878,6 +879,93 @@ AmlCodeGenRdWordBusNumber (
); );
} }
/** Code generation for the "WordIO ()" ASL function.
The Resource Data effectively created is a Word Address Space Resource
Data. Cf ACPI 6.5:
- s6.4.3.5.3 "Word Address Space Descriptor".
The created resource data node can be:
- appended to the list of resource data elements of the NameOpNode.
In such case NameOpNode must be defined by a the "Name ()" ASL statement
and initially contain a "ResourceTemplate ()".
- returned through the NewRdNode parameter.
@param [in] IsResourceConsumer ResourceUsage parameter.
@param [in] IsMinFixed Minimum address is fixed.
@param [in] IsMaxFixed Maximum address is fixed.
@param [in] IsPosDecode Decode parameter
@param [in] IsaRanges Possible values are:
0-Reserved
1-NonISAOnly
2-ISAOnly
3-EntireRange
@param [in] AddressGranularity Address granularity.
@param [in] AddressMinimum Minimum address.
@param [in] AddressMaximum Maximum address.
@param [in] AddressTranslation Address translation.
@param [in] RangeLength Range length.
@param [in] ResourceSourceIndex Resource Source index.
Not supported. Must be 0.
@param [in] ResourceSource Resource Source.
Not supported. Must be NULL.
@param [in] IsDenseTranslation TranslationDensity parameter.
@param [in] IsTypeStatic TranslationType parameter.
@param [in] NameOpNode NameOp object node defining a named object.
If provided, append the new resource data
node to the list of resource data elements
of this node.
@param [out] NewRdNode If provided and success,
contain the created node.
@retval EFI_SUCCESS The function completed successfully.
@retval EFI_INVALID_PARAMETER Invalid parameter.
@retval EFI_OUT_OF_RESOURCES Could not allocate memory.
**/
EFI_STATUS
EFIAPI
AmlCodeGenRdWordIo (
IN BOOLEAN IsResourceConsumer,
IN BOOLEAN IsMinFixed,
IN BOOLEAN IsMaxFixed,
IN BOOLEAN IsPosDecode,
IN UINT8 IsaRanges,
IN UINT16 AddressGranularity,
IN UINT16 AddressMinimum,
IN UINT16 AddressMaximum,
IN UINT16 AddressTranslation,
IN UINT16 RangeLength,
IN UINT8 ResourceSourceIndex,
IN CONST CHAR8 *ResourceSource,
IN BOOLEAN IsDenseTranslation,
IN BOOLEAN IsTypeStatic,
IN AML_OBJECT_NODE_HANDLE NameOpNode, OPTIONAL
OUT AML_DATA_NODE_HANDLE *NewRdNode OPTIONAL
)
{
return AmlCodeGenRdWordSpace (
ACPI_ADDRESS_SPACE_TYPE_IO,
IsResourceConsumer,
IsPosDecode,
IsMinFixed,
IsMaxFixed,
RdIoRangeSpecificFlags (
IsaRanges,
IsDenseTranslation,
IsTypeStatic
),
AddressGranularity,
AddressMinimum,
AddressMaximum,
AddressTranslation,
RangeLength,
ResourceSourceIndex,
ResourceSource,
NameOpNode,
NewRdNode
);
}
/** Code generation for the "QWordSpace ()" ASL function. /** Code generation for the "QWordSpace ()" ASL function.
The Resource Data effectively created is a QWord Address Space Resource The Resource Data effectively created is a QWord Address Space Resource