summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKyösti Mälkki <kyosti.malkki@gmail.com>2023-04-09 13:47:28 +0300
committerKyösti Mälkki <kyosti.malkki@gmail.com>2023-04-14 03:03:23 +0000
commitef9c2922d24b3a031d2fcfc3b596faaec8ad7389 (patch)
tree4d6414db3f8dc39082e882490d2afac5200e28bf
parentd1534e41e4172b121122b2802d45028b61234279 (diff)
soc/amd: Clarify ACPI _PRT entry generation
The reference to a constant FCH IOAPIC interrupt count used with GNB IOAPIC was a bit obscure. Change-Id: I2d862e37424f9fea7f269cd09e9e90056531b643 Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/74314 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Arthur Heymans <arthur@aheymans.xyz> Reviewed-by: Felix Held <felix-coreboot@felixheld.de>
-rw-r--r--src/arch/x86/include/arch/ioapic.h1
-rw-r--r--src/soc/amd/common/block/pci/acpi_prt.c10
2 files changed, 6 insertions, 5 deletions
diff --git a/src/arch/x86/include/arch/ioapic.h b/src/arch/x86/include/arch/ioapic.h
index a91ac14220..6c5282b90d 100644
--- a/src/arch/x86/include/arch/ioapic.h
+++ b/src/arch/x86/include/arch/ioapic.h
@@ -5,7 +5,6 @@
#define IO_APIC_ADDR 0xfec00000
#define VIO_APIC_VADDR ((u8 *)IO_APIC_ADDR)
-#define IO_APIC_INTERRUPTS 24
#ifndef __ACPI__
diff --git a/src/soc/amd/common/block/pci/acpi_prt.c b/src/soc/amd/common/block/pci/acpi_prt.c
index c142f57567..f748024de9 100644
--- a/src/soc/amd/common/block/pci/acpi_prt.c
+++ b/src/soc/amd/common/block/pci/acpi_prt.c
@@ -7,20 +7,22 @@
#include <arch/ioapic.h>
#include <device/device.h>
+/* GNB IO-APIC is located after the FCH IO-APIC */
+#define FCH_IOAPIC_INTERRUPTS 24
+#define GNB_GSI_BASE FCH_IOAPIC_INTERRUPTS
+
static void acpigen_write_PRT_GSI(const struct pci_routing_info *routing_info)
{
unsigned int irq;
acpigen_write_package(4); /* Package - APIC Routing */
for (unsigned int i = 0; i < 4; ++i) {
- /* GNB IO-APIC is located after the FCH IO-APIC */
- irq = IO_APIC_INTERRUPTS;
- irq += pci_calculate_irq(routing_info, i);
+ irq = pci_calculate_irq(routing_info, i);
acpigen_write_PRT_GSI_entry(
0, /* There is only one device attached to the bridge */
i, /* pin */
- irq);
+ GNB_GSI_BASE + irq);
}
acpigen_pop_len(); /* Package - APIC Routing */
}