summaryrefslogtreecommitdiff
path: root/src/soc/amd
diff options
context:
space:
mode:
authorKyösti Mälkki <kyosti.malkki@gmail.com>2021-06-16 11:00:40 +0300
committerFelix Held <felix-coreboot@felixheld.de>2022-11-17 23:31:59 +0000
commit2e65e9cb69de5a0e8bfae1ab79016af8c5c5316f (patch)
treecf52847a6328e7eb3a72f04926dbb793d2ab8b81 /src/soc/amd
parent87d4f114a24d713c7ce965a52b83974f7b089557 (diff)
soc/amd: Use ioapic helper functions
Calling setup_ioapic() was only correct for the IOAPIC routing GSI 0..15 that mimic legacy PIC IRQs. Change-Id: Ifdacc61b72f461ec6bea334fa06651c09a9695d6 Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/55571 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Angel Pons <th3fanbus@gmail.com> Reviewed-by: Felix Held <felix-coreboot@felixheld.de>
Diffstat (limited to 'src/soc/amd')
-rw-r--r--src/soc/amd/cezanne/acpi.c7
-rw-r--r--src/soc/amd/cezanne/root_complex.c2
-rw-r--r--src/soc/amd/common/block/lpc/lpc.c2
-rw-r--r--src/soc/amd/glinda/acpi.c7
-rw-r--r--src/soc/amd/glinda/root_complex.c2
-rw-r--r--src/soc/amd/mendocino/acpi.c7
-rw-r--r--src/soc/amd/mendocino/root_complex.c2
-rw-r--r--src/soc/amd/morgana/acpi.c7
-rw-r--r--src/soc/amd/morgana/root_complex.c2
-rw-r--r--src/soc/amd/picasso/acpi.c7
-rw-r--r--src/soc/amd/picasso/root_complex.c2
-rw-r--r--src/soc/amd/stoneyridge/acpi.c6
-rw-r--r--src/soc/amd/stoneyridge/northbridge.c2
13 files changed, 24 insertions, 31 deletions
diff --git a/src/soc/amd/cezanne/acpi.c b/src/soc/amd/cezanne/acpi.c
index 934547d01c..189e84e86e 100644
--- a/src/soc/amd/cezanne/acpi.c
+++ b/src/soc/amd/cezanne/acpi.c
@@ -26,11 +26,10 @@ unsigned long acpi_fill_madt(unsigned long current)
/* create all subtables for processors */
current = acpi_create_madt_lapics(current);
- current += acpi_create_madt_ioapic((acpi_madt_ioapic_t *)current,
- FCH_IOAPIC_ID, IO_APIC_ADDR, 0);
+ current += acpi_create_madt_ioapic_from_hw((acpi_madt_ioapic_t *)current, IO_APIC_ADDR);
- current += acpi_create_madt_ioapic((acpi_madt_ioapic_t *)current,
- GNB_IOAPIC_ID, GNB_IO_APIC_ADDR, IO_APIC_INTERRUPTS);
+ current += acpi_create_madt_ioapic_from_hw((acpi_madt_ioapic_t *)current,
+ GNB_IO_APIC_ADDR);
/* PIT is connected to legacy IRQ 0, but IOAPIC GSI 2 */
current += acpi_create_madt_irqoverride((acpi_madt_irqoverride_t *)current,
diff --git a/src/soc/amd/cezanne/root_complex.c b/src/soc/amd/cezanne/root_complex.c
index 31c2e1a3d6..81b2b96c6c 100644
--- a/src/soc/amd/cezanne/root_complex.c
+++ b/src/soc/amd/cezanne/root_complex.c
@@ -172,7 +172,7 @@ static void read_resources(struct device *dev)
static void root_complex_init(struct device *dev)
{
- setup_ioapic((u8 *)GNB_IO_APIC_ADDR, GNB_IOAPIC_ID);
+ register_new_ioapic((u8 *)GNB_IO_APIC_ADDR);
}
static void acipgen_dptci(void)
diff --git a/src/soc/amd/common/block/lpc/lpc.c b/src/soc/amd/common/block/lpc/lpc.c
index 26e0c26ed9..5633d8f9de 100644
--- a/src/soc/amd/common/block/lpc/lpc.c
+++ b/src/soc/amd/common/block/lpc/lpc.c
@@ -38,7 +38,7 @@ static void setup_serirq(void)
static void fch_ioapic_init(void)
{
fch_enable_ioapic_decode();
- setup_ioapic(VIO_APIC_VADDR, FCH_IOAPIC_ID);
+ register_new_ioapic_gsi0(VIO_APIC_VADDR);
}
static void lpc_init(struct device *dev)
diff --git a/src/soc/amd/glinda/acpi.c b/src/soc/amd/glinda/acpi.c
index 5a219cbc66..85430b9f17 100644
--- a/src/soc/amd/glinda/acpi.c
+++ b/src/soc/amd/glinda/acpi.c
@@ -29,11 +29,10 @@ unsigned long acpi_fill_madt(unsigned long current)
/* create all subtables for processors */
current = acpi_create_madt_lapics(current);
- current += acpi_create_madt_ioapic((acpi_madt_ioapic_t *)current,
- FCH_IOAPIC_ID, IO_APIC_ADDR, 0);
+ current += acpi_create_madt_ioapic_from_hw((acpi_madt_ioapic_t *)current, IO_APIC_ADDR);
- current += acpi_create_madt_ioapic((acpi_madt_ioapic_t *)current,
- GNB_IOAPIC_ID, GNB_IO_APIC_ADDR, IO_APIC_INTERRUPTS);
+ current += acpi_create_madt_ioapic_from_hw((acpi_madt_ioapic_t *)current,
+ GNB_IO_APIC_ADDR);
/* PIT is connected to legacy IRQ 0, but IOAPIC GSI 2 */
current += acpi_create_madt_irqoverride((acpi_madt_irqoverride_t *)current,
diff --git a/src/soc/amd/glinda/root_complex.c b/src/soc/amd/glinda/root_complex.c
index 04d05994b6..5cc88f1f4e 100644
--- a/src/soc/amd/glinda/root_complex.c
+++ b/src/soc/amd/glinda/root_complex.c
@@ -187,7 +187,7 @@ static void read_resources(struct device *dev)
static void root_complex_init(struct device *dev)
{
- setup_ioapic((u8 *)GNB_IO_APIC_ADDR, GNB_IOAPIC_ID);
+ register_new_ioapic((u8 *)GNB_IO_APIC_ADDR);
}
static void acipgen_dptci(void)
diff --git a/src/soc/amd/mendocino/acpi.c b/src/soc/amd/mendocino/acpi.c
index 779ea4ebb0..b867930c34 100644
--- a/src/soc/amd/mendocino/acpi.c
+++ b/src/soc/amd/mendocino/acpi.c
@@ -28,11 +28,10 @@ unsigned long acpi_fill_madt(unsigned long current)
/* create all subtables for processors */
current = acpi_create_madt_lapics(current);
- current += acpi_create_madt_ioapic((acpi_madt_ioapic_t *)current,
- FCH_IOAPIC_ID, IO_APIC_ADDR, 0);
+ current += acpi_create_madt_ioapic_from_hw((acpi_madt_ioapic_t *)current, IO_APIC_ADDR);
- current += acpi_create_madt_ioapic((acpi_madt_ioapic_t *)current,
- GNB_IOAPIC_ID, GNB_IO_APIC_ADDR, IO_APIC_INTERRUPTS);
+ current += acpi_create_madt_ioapic_from_hw((acpi_madt_ioapic_t *)current,
+ GNB_IO_APIC_ADDR);
/* PIT is connected to legacy IRQ 0, but IOAPIC GSI 2 */
current += acpi_create_madt_irqoverride((acpi_madt_irqoverride_t *)current,
diff --git a/src/soc/amd/mendocino/root_complex.c b/src/soc/amd/mendocino/root_complex.c
index abc49cfe05..0d24a25700 100644
--- a/src/soc/amd/mendocino/root_complex.c
+++ b/src/soc/amd/mendocino/root_complex.c
@@ -187,7 +187,7 @@ static void read_resources(struct device *dev)
static void root_complex_init(struct device *dev)
{
- setup_ioapic((u8 *)GNB_IO_APIC_ADDR, GNB_IOAPIC_ID);
+ register_new_ioapic((u8 *)GNB_IO_APIC_ADDR);
}
static void acipgen_dptci(void)
diff --git a/src/soc/amd/morgana/acpi.c b/src/soc/amd/morgana/acpi.c
index 945dc5419d..5eb21ffd56 100644
--- a/src/soc/amd/morgana/acpi.c
+++ b/src/soc/amd/morgana/acpi.c
@@ -29,11 +29,10 @@ unsigned long acpi_fill_madt(unsigned long current)
/* create all subtables for processors */
current = acpi_create_madt_lapics(current);
- current += acpi_create_madt_ioapic((acpi_madt_ioapic_t *)current,
- FCH_IOAPIC_ID, IO_APIC_ADDR, 0);
+ current += acpi_create_madt_ioapic_from_hw((acpi_madt_ioapic_t *)current, IO_APIC_ADDR);
- current += acpi_create_madt_ioapic((acpi_madt_ioapic_t *)current,
- GNB_IOAPIC_ID, GNB_IO_APIC_ADDR, IO_APIC_INTERRUPTS);
+ current += acpi_create_madt_ioapic_from_hw((acpi_madt_ioapic_t *)current,
+ GNB_IO_APIC_ADDR);
/* PIT is connected to legacy IRQ 0, but IOAPIC GSI 2 */
current += acpi_create_madt_irqoverride((acpi_madt_irqoverride_t *)current,
diff --git a/src/soc/amd/morgana/root_complex.c b/src/soc/amd/morgana/root_complex.c
index 10e541521d..5a1a4ad1fe 100644
--- a/src/soc/amd/morgana/root_complex.c
+++ b/src/soc/amd/morgana/root_complex.c
@@ -187,7 +187,7 @@ static void read_resources(struct device *dev)
static void root_complex_init(struct device *dev)
{
- setup_ioapic((u8 *)GNB_IO_APIC_ADDR, GNB_IOAPIC_ID);
+ register_new_ioapic((u8 *)GNB_IO_APIC_ADDR);
}
static void acipgen_dptci(void)
diff --git a/src/soc/amd/picasso/acpi.c b/src/soc/amd/picasso/acpi.c
index a8639ebb44..2af645978a 100644
--- a/src/soc/amd/picasso/acpi.c
+++ b/src/soc/amd/picasso/acpi.c
@@ -33,11 +33,10 @@ unsigned long acpi_fill_madt(unsigned long current)
/* create all subtables for processors */
current = acpi_create_madt_lapics(current);
- current += acpi_create_madt_ioapic((acpi_madt_ioapic_t *)current,
- FCH_IOAPIC_ID, IO_APIC_ADDR, 0);
+ current += acpi_create_madt_ioapic_from_hw((acpi_madt_ioapic_t *)current, IO_APIC_ADDR);
- current += acpi_create_madt_ioapic((acpi_madt_ioapic_t *)current,
- GNB_IOAPIC_ID, GNB_IO_APIC_ADDR, IO_APIC_INTERRUPTS);
+ current += acpi_create_madt_ioapic_from_hw((acpi_madt_ioapic_t *)current,
+ GNB_IO_APIC_ADDR);
/* PIT is connected to legacy IRQ 0, but IOAPIC GSI 2 */
current += acpi_create_madt_irqoverride((acpi_madt_irqoverride_t *)current,
diff --git a/src/soc/amd/picasso/root_complex.c b/src/soc/amd/picasso/root_complex.c
index c6623209af..9af9c0a78d 100644
--- a/src/soc/amd/picasso/root_complex.c
+++ b/src/soc/amd/picasso/root_complex.c
@@ -169,7 +169,7 @@ static void read_resources(struct device *dev)
static void root_complex_init(struct device *dev)
{
- setup_ioapic((u8 *)GNB_IO_APIC_ADDR, GNB_IOAPIC_ID);
+ register_new_ioapic((u8 *)GNB_IO_APIC_ADDR);
}
static void acipgen_dptci(void)
diff --git a/src/soc/amd/stoneyridge/acpi.c b/src/soc/amd/stoneyridge/acpi.c
index d6f7048c9f..20221d20ac 100644
--- a/src/soc/amd/stoneyridge/acpi.c
+++ b/src/soc/amd/stoneyridge/acpi.c
@@ -29,11 +29,9 @@ unsigned long acpi_fill_madt(unsigned long current)
current = acpi_create_madt_lapics(current);
/* Write Kern IOAPIC, only one */
- current += acpi_create_madt_ioapic((acpi_madt_ioapic_t *)current,
- FCH_IOAPIC_ID, IO_APIC_ADDR, 0);
+ current += acpi_create_madt_ioapic_from_hw((acpi_madt_ioapic_t *)current, IO_APIC_ADDR);
- current += acpi_create_madt_ioapic((acpi_madt_ioapic_t *)current,
- GNB_IOAPIC_ID, IO_APIC2_ADDR, 24);
+ current += acpi_create_madt_ioapic_from_hw((acpi_madt_ioapic_t *)current, IO_APIC2_ADDR);
/* PIT is connected to legacy IRQ 0, but IOAPIC GSI 2 */
current += acpi_create_madt_irqoverride((acpi_madt_irqoverride_t *)current,
diff --git a/src/soc/amd/stoneyridge/northbridge.c b/src/soc/amd/stoneyridge/northbridge.c
index 7e938964be..3960a391b7 100644
--- a/src/soc/amd/stoneyridge/northbridge.c
+++ b/src/soc/amd/stoneyridge/northbridge.c
@@ -164,7 +164,7 @@ static void set_resources(struct device *dev)
static void northbridge_init(struct device *dev)
{
- setup_ioapic((u8 *)IO_APIC2_ADDR, GNB_IOAPIC_ID);
+ register_new_ioapic((u8 *)IO_APIC2_ADDR);
}
static unsigned long acpi_fill_hest(acpi_hest_t *hest)