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>
diff --git a/src/soc/amd/cezanne/acpi.c b/src/soc/amd/cezanne/acpi.c
index 934547d..189e84e 100644
--- a/src/soc/amd/cezanne/acpi.c
+++ b/src/soc/amd/cezanne/acpi.c
@@ -26,11 +26,10 @@
 	/* 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 31c2e1a..81b2b96 100644
--- a/src/soc/amd/cezanne/root_complex.c
+++ b/src/soc/amd/cezanne/root_complex.c
@@ -172,7 +172,7 @@
 
 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 26e0c26..5633d8f 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 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 5a219cb..85430b9 100644
--- a/src/soc/amd/glinda/acpi.c
+++ b/src/soc/amd/glinda/acpi.c
@@ -29,11 +29,10 @@
 	/* 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 04d0599..5cc88f1 100644
--- a/src/soc/amd/glinda/root_complex.c
+++ b/src/soc/amd/glinda/root_complex.c
@@ -187,7 +187,7 @@
 
 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 779ea4e..b867930 100644
--- a/src/soc/amd/mendocino/acpi.c
+++ b/src/soc/amd/mendocino/acpi.c
@@ -28,11 +28,10 @@
 	/* 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 abc49cf..0d24a25 100644
--- a/src/soc/amd/mendocino/root_complex.c
+++ b/src/soc/amd/mendocino/root_complex.c
@@ -187,7 +187,7 @@
 
 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 945dc54..5eb21ff 100644
--- a/src/soc/amd/morgana/acpi.c
+++ b/src/soc/amd/morgana/acpi.c
@@ -29,11 +29,10 @@
 	/* 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 10e5415..5a1a4ad 100644
--- a/src/soc/amd/morgana/root_complex.c
+++ b/src/soc/amd/morgana/root_complex.c
@@ -187,7 +187,7 @@
 
 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 a8639eb..2af6459 100644
--- a/src/soc/amd/picasso/acpi.c
+++ b/src/soc/amd/picasso/acpi.c
@@ -33,11 +33,10 @@
 	/* 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 c662320..9af9c0a 100644
--- a/src/soc/amd/picasso/root_complex.c
+++ b/src/soc/amd/picasso/root_complex.c
@@ -169,7 +169,7 @@
 
 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 d6f7048..20221d2 100644
--- a/src/soc/amd/stoneyridge/acpi.c
+++ b/src/soc/amd/stoneyridge/acpi.c
@@ -29,11 +29,9 @@
 	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 7e93896..3960a39 100644
--- a/src/soc/amd/stoneyridge/northbridge.c
+++ b/src/soc/amd/stoneyridge/northbridge.c
@@ -164,7 +164,7 @@
 
 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)