summaryrefslogtreecommitdiffstats
path: root/DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlResourceDataCodeGen.h
diff options
context:
space:
mode:
Diffstat (limited to 'DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlResourceDataCodeGen.h')
-rw-r--r--DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlResourceDataCodeGen.h49
1 files changed, 49 insertions, 0 deletions
diff --git a/DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlResourceDataCodeGen.h b/DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlResourceDataCodeGen.h
index 764051e3d7..831d6a7462 100644
--- a/DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlResourceDataCodeGen.h
+++ b/DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlResourceDataCodeGen.h
@@ -55,4 +55,53 @@ AmlCodeGenRdInterrupt (
OUT AML_DATA_NODE_HANDLE *NewRdNode OPTIONAL
);
+/** Code generation for the "Register ()" ASL function.
+
+ The Resource Data effectively created is a Generic Register Descriptor.
+ Data. Cf ACPI 6.4:
+ - s6.4.3.7 "Generic Register Descriptor".
+ - s19.6.114 "Register".
+
+ 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] AddressSpace Address space where the register exists.
+ Can be one of I/O space, System Memory, etc.
+ @param [in] BitWidth Number of bits in the register.
+ @param [in] BitOffset Offset in bits from the start of the register
+ indicated by the Address.
+ @param [in] Address Register address.
+ @param [in] AccessSize Size of data values used when accessing the
+ address space. Can be one of:
+ 0 - Undefined, legacy (EFI_ACPI_6_4_UNDEFINED)
+ 1 - Byte access (EFI_ACPI_6_4_BYTE)
+ 2 - Word access (EFI_ACPI_6_4_WORD)
+ 3 - DWord access (EFI_ACPI_6_4_DWORD)
+ 4 - QWord access (EFI_ACPI_6_4_QWORD)
+ @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
+AmlCodeGenRdRegister (
+ IN UINT8 AddressSpace,
+ IN UINT8 BitWidth,
+ IN UINT8 BitOffset,
+ IN UINT64 Address,
+ IN UINT8 AccessSize,
+ IN AML_OBJECT_NODE_HANDLE NameOpNode, OPTIONAL
+ OUT AML_DATA_NODE_HANDLE *NewRdNode OPTIONAL
+ );
+
#endif // AML_RESOURCE_DATA_CODE_GEN_H_