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>
This commit is contained in:
parent
87d4f114a2
commit
2e65e9cb69
|
@ -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,
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue