/** @file AML Resource Data Code Generation. Copyright (c) 2019 - 2020, Arm Limited. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef AML_RESOURCE_DATA_CODE_GEN_H_ #define AML_RESOURCE_DATA_CODE_GEN_H_ /** Code generation for the "Interrupt ()" ASL function. This function creates a Resource Data element corresponding to the "Interrupt ()" ASL function and stores it in an AML Data Node. The Resource Data effectively created is an Extended Interrupt Resource Data. See ACPI 6.3 specification, s6.4.3.6 "Extended Interrupt Descriptor" for more information about Extended Interrupt Resource Data. This function allocates memory to create a data node. It is the caller's responsibility to either: - attach this node to an AML tree; - delete this node. @param [in] ResourceConsumer The device consumes the specified interrupt or produces it for use by a child device. @param [in] EdgeTriggered The interrupt is edge triggered or level triggered. @param [in] ActiveLow The interrupt is active-high or active-low. @param [in] Shared The interrupt can be shared with other devices or not (Exclusive). @param [in] IrqList Interrupt list. Must be non-NULL. @param [in] IrqCount Interrupt count. Must be non-zero. @param [in] ParentNode If not NULL, add the generated node to the end of the variable list of argument of the ParentNode, but before the "End Tag" Resource Data. Must be a BufferOpNode. @param [out] NewRdNode If success, contains the generated 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 AmlCodeGenInterrupt ( IN BOOLEAN ResourceConsumer, IN BOOLEAN EdgeTriggered, IN BOOLEAN ActiveLow, IN BOOLEAN Shared, IN UINT32 * IrqList, IN UINT8 IrqCount, IN AML_OBJECT_NODE * ParentNode, OPTIONAL OUT AML_DATA_NODE ** NewRdNode OPTIONAL ); #endif // AML_RESOURCE_DATA_CODE_GEN_H_