summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNaresh Solanki <naresh.solanki@9elements.com>2023-11-16 18:25:38 +0530
committerFelix Held <felix-coreboot@felixheld.de>2023-11-27 21:10:41 +0000
commit1d6eeff17137d86a09673b589ea5c1fba174a02b (patch)
tree6bd48d0b5902342601cf9049bfcf2c5e37bf720c
parent16875ec8e304e87922af2f26a3fbd825bccb312e (diff)
acpi: Enable 64bit ECAM resource
Adjust ACPI DSDT to support ECAM resource above 4GB by modifying the PCI ECAM Resource Consumption settings. The changes include specifying a QWordMemory resource template, accommodating non-cacheable, read-write attributes, and adjusting the address range. Change-Id: Idb049d848f2311e27df5279a10c33f9fab259c08 Signed-off-by: Naresh Solanki <naresh.solanki@9elements.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/79096 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Lean Sheng Tan <sheng.tan@9elements.com> Reviewed-by: Maximilian Brune <maximilian.brune@9elements.com> Reviewed-by: Felix Held <felix-coreboot@felixheld.de> Reviewed-by: Nico Huber <nico.h@gmx.de>
-rw-r--r--src/acpi/dsdt_top.asl24
1 files changed, 20 insertions, 4 deletions
diff --git a/src/acpi/dsdt_top.asl b/src/acpi/dsdt_top.asl
index 6a0129fd7b..7539f00e57 100644
--- a/src/acpi/dsdt_top.asl
+++ b/src/acpi/dsdt_top.asl
@@ -57,11 +57,27 @@ Scope(\_SB) {
Device (PERC) // PCI ECAM Resource Consumption
{
Name (_HID, EisaId("PNP0C02"))
- Name (_CRS, ResourceTemplate()
+ Method (_CRS, 0, Serialized)
{
- Memory32Fixed (ReadWrite, CONFIG_ECAM_MMCONF_BASE_ADDRESS,
- CONFIG_ECAM_MMCONF_LENGTH)
- })
+ Name (RBUF, ResourceTemplate ()
+ {
+ QWordMemory (ResourceConsumer, PosDecode, MinFixed, MaxFixed,
+ NonCacheable, ReadWrite,
+ 0x0000000000000000, // Granularity
+ 0x0000000000000000, // _MIN
+ 0x0000000000000001, // _MAX
+ 0x0000000000000000, // Translation
+ 0x0000000000000002, // _Len
+ ,, _Y00, AddressRangeMemory, TypeStatic)
+ })
+ CreateQWordField (RBUF, \_SB.PERC._CRS._Y00._MIN, MIN1)
+ CreateQWordField (RBUF, \_SB.PERC._CRS._Y00._MAX, MAX1)
+ CreateQWordField (RBUF, \_SB.PERC._CRS._Y00._LEN, LEN1)
+ MIN1 = CONFIG_ECAM_MMCONF_BASE_ADDRESS
+ MAX1 = (MIN1 + CONFIG_ECAM_MMCONF_LENGTH -1)
+ LEN1 = CONFIG_ECAM_MMCONF_LENGTH
+ Return (RBUF)
+ }
}
}
#endif