49 UINT32 *FirstInterrupt;
51 UINT32 QueryBufferSize;
53 if ((InterruptRdNode ==
NULL) ||
62 ACPI_LARGE_EXTENDED_IRQ_DESCRIPTOR_NAME
67 return EFI_INVALID_PARAMETER;
78 if (EFI_ERROR (Status)) {
86 return EFI_INVALID_PARAMETER;
91 if (QueryBuffer ==
NULL) {
93 return EFI_OUT_OF_RESOURCES;
102 if (EFI_ERROR (Status)) {
111 *FirstInterrupt = Irq;
120 if (EFI_ERROR (Status)) {
125 if (QueryBuffer !=
NULL) {
160 IN BOOLEAN ResourceConsumer,
161 IN BOOLEAN EdgeTriggered,
162 IN BOOLEAN ActiveLow,
171 UINT32 *FirstInterrupt;
173 UINT16 UpdateBufferSize;
175 if ((InterruptRdNode ==
NULL) ||
184 ACPI_LARGE_EXTENDED_IRQ_DESCRIPTOR_NAME
191 return EFI_INVALID_PARAMETER;
196 ((IrqCount - 1) *
sizeof (UINT32));
200 if (UpdateBuffer ==
NULL) {
202 return EFI_OUT_OF_RESOURCES;
207 RdInterrupt->Header.Header.Byte =
209 RdInterrupt->Header.Length =
210 UpdateBufferSize -
sizeof (ACPI_LARGE_RESOURCE_HEADER);
211 RdInterrupt->InterruptTableLength = IrqCount;
212 RdInterrupt->InterruptVectorFlags = (ResourceConsumer ? BIT0 : 0) |
213 (EdgeTriggered ? BIT1 : 0) |
214 (ActiveLow ? BIT2 : 0) |
222 CopyMem (FirstInterrupt, IrqList, (
sizeof (UINT32) * IrqCount));
231 if (EFI_ERROR (Status)) {
256 IN UINT64 BaseAddress,
257 IN UINT64 BaseAddressLength
264 UINT32 QueryBufferSize;
266 if ((QWordRdNode ==
NULL) ||
272 ACPI_LARGE_QWORD_ADDRESS_SPACE_DESCRIPTOR_NAME
277 return EFI_INVALID_PARAMETER;
286 if (EFI_ERROR (Status)) {
293 if (QueryBuffer ==
NULL) {
295 return EFI_OUT_OF_RESOURCES;
304 if (EFI_ERROR (Status)) {
312 RdQWord->AddrRangeMin = BaseAddress;
313 RdQWord->AddrRangeMax = BaseAddress + BaseAddressLength - 1;
314 RdQWord->AddrLen = BaseAddressLength;
323 if (EFI_ERROR (Status)) {
328 if (QueryBuffer !=
NULL) {
PACKED struct @103 EFI_ACPI_EXTENDED_INTERRUPT_DESCRIPTOR
PACKED struct @100 EFI_ACPI_QWORD_ADDRESS_SPACE_DESCRIPTOR
BOOLEAN EFIAPI AmlNodeHasDataType(IN AML_DATA_NODE_HANDLE DataNode, IN EAML_NODE_DATA_TYPE DataType)
BOOLEAN EFIAPI AmlNodeHasRdDataType(IN AML_DATA_NODE_HANDLE RdNode, IN AML_RD_HEADER RdDataType)
void * AML_DATA_NODE_HANDLE
EFI_STATUS EFIAPI AmlUpdateRdInterruptEx(IN AML_DATA_NODE_HANDLE InterruptRdNode, IN BOOLEAN ResourceConsumer, IN BOOLEAN EdgeTriggered, IN BOOLEAN ActiveLow, IN BOOLEAN Shared, IN UINT32 *IrqList, IN UINT8 IrqCount)
VOID *EFIAPI CopyMem(OUT VOID *DestinationBuffer, IN CONST VOID *SourceBuffer, IN UINTN Length)
VOID EFIAPI FreePool(IN VOID *Buffer)
VOID *EFIAPI AllocatePool(IN UINTN AllocationSize)
EFI_STATUS EFIAPI AmlGetDataNodeBuffer(IN AML_DATA_NODE_HANDLE DataNode, OUT UINT8 *Buffer OPTIONAL, IN OUT UINT32 *BufferSize)
EFI_STATUS EFIAPI AmlUpdateDataNode(IN AML_DATA_NODE_HANDLE DataNode, IN EAML_NODE_DATA_TYPE DataType, IN UINT8 *Buffer, IN UINT32 Size)
EAML_NODE_TYPE EFIAPI AmlGetNodeType(IN AML_NODE_HANDLE Node)
#define AML_RD_BUILD_LARGE_DESC_ID(Id)
@ EAmlNodeDataTypeResourceData
Resource data element.
EFI_STATUS EFIAPI AmlUpdateRdQWord(IN AML_DATA_NODE_HANDLE QWordRdNode, IN UINT64 BaseAddress, IN UINT64 BaseAddressLength)
EFI_STATUS EFIAPI AmlUpdateRdInterrupt(IN AML_DATA_NODE_HANDLE InterruptRdNode, IN UINT32 Irq)