DynamicTablesPkg/SsdtSerialPortFixupLib: Add Interrupt node for SPIs only

Add interrupt node to the AML description of the serial-port only if the
IRQ ID from the Configuration Manager is a valid SPI (shared processor
interrupt) or an extended SPI. So, for DBG2 UART ports where interrupt
is not mandatory, adding of an interrupt node in the AML description
using Serial Port Fixup Library can be ignored if the UART is not
defined with a valid SPI, like in N1SDP.

This update generates the interrupt node for the valid SPI range using
the AML Codegen API instead of updating it using the AML Fixup API.

Cc: Sami Mujawar <Sami.Mujawar@arm.com>
Cc: Pierre Gondois <pierre.gondois@arm.com>
Signed-off-by: Himanshu Sharma <Himanshu.Sharma@arm.com>
Reviewed-by: Sami Mujawar <sami.mujawar@arm.com>
Reviewed-by: Pierre Gondois <pierre.gondois@arm.com>
This commit is contained in:
Himanshu Sharma
2024-01-04 13:32:57 +05:30
committed by mergify[bot]
parent 855f528199
commit 1ae5bee967
4 changed files with 69 additions and 30 deletions

View File

@@ -1,7 +1,7 @@
/** @file
SSDT Serial Template
Copyright (c) 2019 - 2020, Arm Limited. All rights reserved.<BR>
Copyright (c) 2019 - 2024, Arm Limited. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
@@ -10,6 +10,7 @@
@par Glossary:
- {template} - Data fixed up using AML Fixup APIs.
- {codegen} - Data generated using AML Codegen APIs.
**/
DefinitionBlock ("SsdtSerialPortTemplate.aml", "SSDT", 2, "ARMLTD", "SERIAL", 1) {
@@ -43,17 +44,21 @@ DefinitionBlock ("SsdtSerialPortTemplate.aml", "SSDT", 2, "ARMLTD", "SERIAL", 1)
, // MemoryRangeType
// TranslationType
) // QWordMemory
Interrupt (
ResourceConsumer, // ResourceUsage
Level, // EdgeLevel
ActiveHigh, // ActiveLevel
Exclusive, // Shared
, // ResourceSourceIndex
, // ResourceSource
// DescriptorName
) {
0xA5 // {template}
} // Interrupt
// The Interrupt information is generated using AmlCodegen.
//
// Interrupt ( // {codegen}
// ResourceConsumer, // ResourceUsage
// Level, // EdgeLevel
// ActiveHigh, // ActiveLevel
// Exclusive, // Shared
// , // ResourceSourceIndex
// , // ResourceSource
// // DescriptorName
// ) {
// <IRQ> // <spi>
// } // Interrupt
}) // Name
} // Device
} // Scope (_SB)