TianoCore EDK2 master
|
Go to the source code of this file.
Functions | |
EFI_STATUS EFIAPI | AmlCodeGenRdInterrupt (IN BOOLEAN ResourceConsumer, IN BOOLEAN EdgeTriggered, IN BOOLEAN ActiveLow, IN BOOLEAN Shared, IN UINT32 *IrqList, IN UINT8 IrqCount, IN AML_OBJECT_NODE_HANDLE NameOpNode OPTIONAL, OUT AML_DATA_NODE_HANDLE *NewRdNode OPTIONAL) |
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) |
EFI_STATUS EFIAPI | AmlCodeGenEndTag (IN UINT8 CheckSum OPTIONAL, IN AML_OBJECT_NODE *ParentNode OPTIONAL, OUT AML_DATA_NODE **NewRdNode OPTIONAL) |
AML Resource Data Code Generation.
Copyright (c) 2019 - 2021, Arm Limited. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
Definition in file AmlResourceDataCodeGen.h.
EFI_STATUS EFIAPI AmlCodeGenEndTag | ( | IN UINT8 CheckSum | OPTIONAL, |
IN AML_OBJECT_NODE *ParentNode | OPTIONAL, | ||
OUT AML_DATA_NODE **NewRdNode | OPTIONAL | ||
) |
Code generation for the EndTag resource data.
The EndTag resource data is automatically generated by the ASL compiler at the end of a list of resource data elements. Thus, it doesn't have a corresponding ASL function.
This function allocates memory to create a data node. It is the caller's responsibility to either:
ACPI 6.4, s6.4.2.9 "End Tag": "This checksum is generated such that adding it to the sum of all the data bytes will produce a zero sum." "If the checksum field is zero, the resource data is treated as if the checksum operation succeeded. Configuration proceeds normally."
To avoid re-computing checksums, if a new resource data elements is added/removed/modified in a list of resource data elements, the AmlLib resets the checksum to 0.
[in] | CheckSum | CheckSum to store in the EndTag. To ignore/avoid computing the checksum, give 0. |
[in] | ParentNode | If not NULL, add the generated node to the end of the variable list of argument of the ParentNode. The ParentNode must not initially contain an EndTag resource data element. |
[out] | NewRdNode | If success, contains the generated node. |
EFI_SUCCESS | The function completed successfully. |
EFI_INVALID_PARAMETER | Invalid parameter. |
EFI_OUT_OF_RESOURCES | Could not allocate memory. |
Definition at line 1596 of file AmlResourceDataCodeGen.c.
EFI_STATUS EFIAPI AmlCodeGenRdInterrupt | ( | IN BOOLEAN | ResourceConsumer, |
IN BOOLEAN | EdgeTriggered, | ||
IN BOOLEAN | ActiveLow, | ||
IN BOOLEAN | Shared, | ||
IN UINT32 * | IrqList, | ||
IN UINT8 | IrqCount, | ||
IN AML_OBJECT_NODE_HANDLE NameOpNode | OPTIONAL, | ||
OUT AML_DATA_NODE_HANDLE *NewRdNode | OPTIONAL | ||
) |
Code generation for the "Interrupt ()" ASL function.
The Resource Data effectively created is an Extended Interrupt Resource Data. Cf ACPI 6.4:
The created resource data node can be:
[in] | ResourceConsumer | The device consumes the specified interrupt or produces it for use by a child device. |
[in] | EdgeTriggered | The interrupt is edge triggered or level triggered. |
[in] | ActiveLow | The interrupt is active-high or active-low. |
[in] | Shared | The interrupt can be shared with other devices or not (Exclusive). |
[in] | IrqList | Interrupt list. Must be non-NULL. |
[in] | IrqCount | Interrupt count. Must be non-zero. |
[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. |
[out] | NewRdNode | If provided and success, contain the created node. |
EFI_SUCCESS | The function completed successfully. |
EFI_INVALID_PARAMETER | Invalid parameter. |
EFI_OUT_OF_RESOURCES | Could not allocate memory. |
Definition at line 1326 of file AmlResourceDataCodeGen.c.
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 | ||
) |
Code generation for the "Register ()" ASL function.
The Resource Data effectively created is a Generic Register Descriptor. Data. Cf ACPI 6.4:
The created resource data node can be:
[in] | AddressSpace | Address space where the register exists. Can be one of I/O space, System Memory, etc. |
[in] | BitWidth | Number of bits in the register. |
[in] | BitOffset | Offset in bits from the start of the register indicated by the Address. |
[in] | Address | Register address. |
[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) |
[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. |
[out] | NewRdNode | If provided and success, contain the created node. |
EFI_SUCCESS | The function completed successfully. |
EFI_INVALID_PARAMETER | Invalid parameter. |
EFI_OUT_OF_RESOURCES | Could not allocate memory. |
Definition at line 1424 of file AmlResourceDataCodeGen.c.