mirror of https://github.com/acidanthera/audk.git
DynamicTablesPkg: Add Memory32Fixed function
Add a Memory32Fixed function to generate code for the corresponding Memory32Fixed macro in AML. Signed-off-by: Rebecca Cran <quic_rcran@quicinc.com> Reviewed-by: Pierre Gondois <pierre.gondois@arm.com> Reviewed-by: Sami Mujawar <sami.mujawar@arm.com>
This commit is contained in:
parent
017564d637
commit
45b1612659
|
@ -592,6 +592,39 @@ AmlCodeGenRdDWordMemory (
|
||||||
OUT AML_DATA_NODE_HANDLE *NewRdNode OPTIONAL
|
OUT AML_DATA_NODE_HANDLE *NewRdNode OPTIONAL
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/** Code generation for the "Memory32Fixed ()" ASL macro.
|
||||||
|
|
||||||
|
The Resource Data effectively created is a 32-bit Memory Resource
|
||||||
|
Data. Cf ACPI 6.4:
|
||||||
|
- s19.6.83 "Memory Resource Descriptor Macro".
|
||||||
|
- s19.2.8 "Memory32FixedTerm".
|
||||||
|
|
||||||
|
See ACPI 6.4 spec, s19.2.8 for more.
|
||||||
|
|
||||||
|
@param [in] IsReadWrite ReadAndWrite parameter.
|
||||||
|
@param [in] Address AddressBase parameter.
|
||||||
|
@param [in] RangeLength Range length.
|
||||||
|
@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] NewMemNode 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
|
||||||
|
AmlCodeGenRdMemory32Fixed (
|
||||||
|
BOOLEAN IsReadWrite,
|
||||||
|
UINT32 Address,
|
||||||
|
UINT32 RangeLength,
|
||||||
|
AML_OBJECT_NODE_HANDLE NameOpNode,
|
||||||
|
AML_DATA_NODE_HANDLE *NewMemNode
|
||||||
|
);
|
||||||
|
|
||||||
/** Code generation for the "WordBusNumber ()" ASL function.
|
/** Code generation for the "WordBusNumber ()" ASL function.
|
||||||
|
|
||||||
The Resource Data effectively created is a Word Address Space Resource
|
The Resource Data effectively created is a Word Address Space Resource
|
||||||
|
|
|
@ -609,6 +609,64 @@ AmlCodeGenRdDWordMemory (
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Code generation for the "Memory32Fixed ()" ASL macro.
|
||||||
|
|
||||||
|
The Resource Data effectively created is a 32-bit Memory Resource
|
||||||
|
Data. Cf ACPI 6.4:
|
||||||
|
- s19.6.83 "Memory Resource Descriptor Macro".
|
||||||
|
- s19.2.8 "Memory32FixedTerm".
|
||||||
|
|
||||||
|
See ACPI 6.4 spec, s19.2.8 for more.
|
||||||
|
|
||||||
|
@param [in] IsReadWrite ReadAndWrite parameter.
|
||||||
|
@param [in] Addres AddressBase parameter.
|
||||||
|
@param [in] RangeLength Range length.
|
||||||
|
@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] NewMemNode 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
|
||||||
|
AmlCodeGenRdMemory32Fixed (
|
||||||
|
BOOLEAN IsReadWrite,
|
||||||
|
UINT32 Address,
|
||||||
|
UINT32 RangeLength,
|
||||||
|
AML_OBJECT_NODE_HANDLE NameOpNode,
|
||||||
|
AML_DATA_NODE_HANDLE *NewMemNode
|
||||||
|
)
|
||||||
|
{
|
||||||
|
EFI_STATUS Status;
|
||||||
|
AML_DATA_NODE *MemNode;
|
||||||
|
EFI_ACPI_32_BIT_FIXED_MEMORY_RANGE_DESCRIPTOR RangeDesc;
|
||||||
|
|
||||||
|
RangeDesc.Header.Header.Byte = ACPI_32_BIT_FIXED_MEMORY_RANGE_DESCRIPTOR;
|
||||||
|
RangeDesc.Header.Length = sizeof (EFI_ACPI_32_BIT_FIXED_MEMORY_RANGE_DESCRIPTOR) -
|
||||||
|
sizeof (ACPI_LARGE_RESOURCE_HEADER);
|
||||||
|
RangeDesc.Information = IsReadWrite ? BIT0 : 0;
|
||||||
|
RangeDesc.BaseAddress = Address;
|
||||||
|
RangeDesc.Length = RangeLength;
|
||||||
|
|
||||||
|
Status = AmlCreateDataNode (
|
||||||
|
EAmlNodeDataTypeResourceData,
|
||||||
|
(UINT8 *)&RangeDesc,
|
||||||
|
sizeof (RangeDesc),
|
||||||
|
&MemNode
|
||||||
|
);
|
||||||
|
if (EFI_ERROR (Status)) {
|
||||||
|
ASSERT (0);
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
|
||||||
|
return LinkRdNode (MemNode, NameOpNode, NewMemNode);
|
||||||
|
}
|
||||||
|
|
||||||
/** Code generation for the "WordSpace ()" ASL function.
|
/** Code generation for the "WordSpace ()" ASL function.
|
||||||
|
|
||||||
The Resource Data effectively created is a Word Address Space Resource
|
The Resource Data effectively created is a Word Address Space Resource
|
||||||
|
|
Loading…
Reference in New Issue