DynamicTablesPkg: Add AmlAttachNode()

This function allows to add a node as the last node of a parent node
in an AML tree. For instance,
ASL code corresponding to NewNode:
  Name (_UID, 0)

ASL code corresponding to ParentNode:
  Device (PCI0) {
    Name(_HID, EISAID("PNP0A08"))
  }

"AmlAttachNode (ParentNode, NewNode)" will result in:
ASL code:
  Device (PCI0) {
    Name(_HID, EISAID("PNP0A08"))
    Name (_UID, 0)
  }

To: Sami Mujawar <sami.mujawar@arm.com>
To: Alexei Fedorov <Alexei.Fedorov@arm.com>
Signed-off-by: Pierre Gondois <Pierre.Gondois@arm.com>
Reviewed-by: Sami Mujawar <sami.mujawar@arm.com>
This commit is contained in:
Pierre Gondois 2021-12-09 10:25:02 +01:00 committed by mergify[bot]
parent b2b8def4e3
commit 69ddfee1c3
2 changed files with 69 additions and 0 deletions

View File

@ -166,6 +166,39 @@ AmlDetachNode (
IN AML_NODE_HANDLE Node
);
/** Attach a node in an AML tree.
The node will be added as the last statement of the ParentNode.
E.g.:
ASL code corresponding to NewNode:
Name (_UID, 0)
ASL code corresponding to ParentNode:
Device (PCI0) {
Name(_HID, EISAID("PNP0A08"))
}
"AmlAttachNode (ParentNode, NewNode)" will result in:
ASL code:
Device (PCI0) {
Name(_HID, EISAID("PNP0A08"))
Name (_UID, 0)
}
@param [in] ParentNode Pointer to the parent node.
Must be a root or an object node.
@param [in] NewNode Pointer to the node to add.
@retval EFI_SUCCESS The function completed successfully.
@retval EFI_INVALID_PARAMETER Invalid parameter.
**/
EFI_STATUS
EFIAPI
AmlAttachNode (
IN AML_NODE_HANDLE ParentNode,
IN AML_NODE_HANDLE NewNode
);
/** Find a node in the AML namespace, given an ASL path and a reference Node.
- The AslPath can be an absolute path, or a relative path from the

View File

@ -394,6 +394,42 @@ AmlNameOpGetNextRdNode (
return EFI_SUCCESS;
}
/** Attach a node in an AML tree.
The node will be added as the last statement of the ParentNode.
E.g.:
ASL code corresponding to NewNode:
Name (_UID, 0)
ASL code corresponding to ParentNode:
Device (PCI0) {
Name(_HID, EISAID("PNP0A08"))
}
"AmlAttachNode (ParentNode, NewNode)" will result in:
ASL code:
Device (PCI0) {
Name(_HID, EISAID("PNP0A08"))
Name (_UID, 0)
}
@param [in] ParentNode Pointer to the parent node.
Must be a root or an object node.
@param [in] NewNode Pointer to the node to add.
@retval EFI_SUCCESS The function completed successfully.
@retval EFI_INVALID_PARAMETER Invalid parameter.
**/
EFI_STATUS
EFIAPI
AmlAttachNode (
IN AML_NODE_HANDLE ParentNode,
IN AML_NODE_HANDLE NewNode
)
{
return AmlVarListAddTail (ParentNode, NewNode);
}
// DEPRECATED APIS
#ifndef DISABLE_NEW_DEPRECATED_INTERFACES