return LinkRdNode (RdNode, NameOpNode, NewRdNode);\r
}\r
\r
+/** Code generation for the "Register ()" ASL function.\r
+\r
+ The Resource Data effectively created is a Generic Register Descriptor.\r
+ Data. Cf ACPI 6.4:\r
+ - s6.4.3.7 "Generic Register Descriptor".\r
+ - s19.6.114 "Register".\r
+\r
+ The created resource data node can be:\r
+ - appended to the list of resource data elements of the NameOpNode.\r
+ In such case NameOpNode must be defined by a the "Name ()" ASL statement\r
+ and initially contain a "ResourceTemplate ()".\r
+ - returned through the NewRdNode parameter.\r
+\r
+ @param [in] AddressSpace Address space where the register exists.\r
+ Can be one of I/O space, System Memory, etc.\r
+ @param [in] BitWidth Number of bits in the register.\r
+ @param [in] BitOffset Offset in bits from the start of the register\r
+ indicated by the Address.\r
+ @param [in] Address Register address.\r
+ @param [in] AccessSize Size of data values used when accessing the\r
+ address space. Can be one of:\r
+ 0 - Undefined, legacy (EFI_ACPI_6_4_UNDEFINED)\r
+ 1 - Byte access (EFI_ACPI_6_4_BYTE)\r
+ 2 - Word access (EFI_ACPI_6_4_WORD)\r
+ 3 - DWord access (EFI_ACPI_6_4_DWORD)\r
+ 4 - QWord access (EFI_ACPI_6_4_QWORD)\r
+ @param [in] NameOpNode NameOp object node defining a named object.\r
+ If provided, append the new resource data node\r
+ to the list of resource data elements of this\r
+ node.\r
+ @param [out] NewRdNode If provided and success,\r
+ contain the created node.\r
+\r
+ @retval EFI_SUCCESS The function completed successfully.\r
+ @retval EFI_INVALID_PARAMETER Invalid parameter.\r
+ @retval EFI_OUT_OF_RESOURCES Could not allocate memory.\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+AmlCodeGenRdRegister (\r
+ IN UINT8 AddressSpace,\r
+ IN UINT8 BitWidth,\r
+ IN UINT8 BitOffset,\r
+ IN UINT64 Address,\r
+ IN UINT8 AccessSize,\r
+ IN AML_OBJECT_NODE_HANDLE NameOpNode, OPTIONAL\r
+ OUT AML_DATA_NODE_HANDLE *NewRdNode OPTIONAL\r
+ )\r
+{\r
+ EFI_STATUS Status;\r
+ AML_DATA_NODE * RdNode;\r
+ EFI_ACPI_GENERIC_REGISTER_DESCRIPTOR RdRegister;\r
+\r
+ if ((AccessSize > EFI_ACPI_6_4_QWORD) ||\r
+ ((NameOpNode == NULL) && (NewRdNode == NULL))) {\r
+ ASSERT (0);\r
+ return EFI_INVALID_PARAMETER;\r
+ }\r
+\r
+ // Header\r
+ RdRegister.Header.Header.Bits.Name =\r
+ ACPI_LARGE_GENERIC_REGISTER_DESCRIPTOR_NAME;\r
+ RdRegister.Header.Header.Bits.Type = ACPI_LARGE_ITEM_FLAG;\r
+ RdRegister.Header.Length = sizeof (EFI_ACPI_GENERIC_REGISTER_DESCRIPTOR) -\r
+ sizeof (ACPI_LARGE_RESOURCE_HEADER);\r
+\r
+ // Body\r
+ RdRegister.AddressSpaceId = AddressSpace;\r
+ RdRegister.RegisterBitWidth = BitWidth;\r
+ RdRegister.RegisterBitOffset = BitOffset;\r
+ RdRegister.AddressSize = AccessSize;\r
+ RdRegister.RegisterAddress = Address;\r
+\r
+ Status = AmlCreateDataNode (\r
+ EAmlNodeDataTypeResourceData,\r
+ (UINT8*)&RdRegister,\r
+ sizeof (EFI_ACPI_GENERIC_REGISTER_DESCRIPTOR),\r
+ &RdNode\r
+ );\r
+ if (EFI_ERROR (Status)) {\r
+ ASSERT (0);\r
+ return Status;\r
+ }\r
+\r
+ return LinkRdNode (RdNode, NameOpNode, NewRdNode);\r
+}\r
+\r
// DEPRECATED APIS\r
#ifndef DISABLE_NEW_DEPRECATED_INTERFACES\r
\r
OUT AML_DATA_NODE_HANDLE *NewRdNode OPTIONAL\r
);\r
\r
+/** Code generation for the "Register ()" ASL function.\r
+\r
+ The Resource Data effectively created is a Generic Register Descriptor.\r
+ Data. Cf ACPI 6.4:\r
+ - s6.4.3.7 "Generic Register Descriptor".\r
+ - s19.6.114 "Register".\r
+\r
+ The created resource data node can be:\r
+ - appended to the list of resource data elements of the NameOpNode.\r
+ In such case NameOpNode must be defined by a the "Name ()" ASL statement\r
+ and initially contain a "ResourceTemplate ()".\r
+ - returned through the NewRdNode parameter.\r
+\r
+ @param [in] AddressSpace Address space where the register exists.\r
+ Can be one of I/O space, System Memory, etc.\r
+ @param [in] BitWidth Number of bits in the register.\r
+ @param [in] BitOffset Offset in bits from the start of the register\r
+ indicated by the Address.\r
+ @param [in] Address Register address.\r
+ @param [in] AccessSize Size of data values used when accessing the\r
+ address space. Can be one of:\r
+ 0 - Undefined, legacy (EFI_ACPI_6_4_UNDEFINED)\r
+ 1 - Byte access (EFI_ACPI_6_4_BYTE)\r
+ 2 - Word access (EFI_ACPI_6_4_WORD)\r
+ 3 - DWord access (EFI_ACPI_6_4_DWORD)\r
+ 4 - QWord access (EFI_ACPI_6_4_QWORD)\r
+ @param [in] NameOpNode NameOp object node defining a named object.\r
+ If provided, append the new resource data node\r
+ to the list of resource data elements of this\r
+ node.\r
+ @param [out] NewRdNode If provided and success,\r
+ contain the created node.\r
+\r
+ @retval EFI_SUCCESS The function completed successfully.\r
+ @retval EFI_INVALID_PARAMETER Invalid parameter.\r
+ @retval EFI_OUT_OF_RESOURCES Could not allocate memory.\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+AmlCodeGenRdRegister (\r
+ IN UINT8 AddressSpace,\r
+ IN UINT8 BitWidth,\r
+ IN UINT8 BitOffset,\r
+ IN UINT64 Address,\r
+ IN UINT8 AccessSize,\r
+ IN AML_OBJECT_NODE_HANDLE NameOpNode, OPTIONAL\r
+ OUT AML_DATA_NODE_HANDLE *NewRdNode OPTIONAL\r
+ );\r
+\r
#endif // AML_RESOURCE_DATA_CODE_GEN_H_\r