blob: bb510cd72ca925ae93338a0245f895e436d9dbe9 [file] [log] [blame]
Angel Pons5c596802020-04-03 01:21:01 +02001/* SPDX-License-Identifier: GPL-2.0-only */
Siyuan Wang80cf7d52013-07-09 17:42:43 +08002
Furquan Shaikh76cedd22020-05-02 10:24:23 -07003#include <acpi/acpi.h>
Siyuan Wang80cf7d52013-07-09 17:42:43 +08004#include <arch/ioapic.h>
Felix Held6b2b8352023-02-21 21:03:39 +01005#include <northbridge/amd/nb_common.h>
Kyösti Mälkki8f86fa02022-12-05 19:31:01 +02006#include <southbridge/amd/pi/hudson/ioapic.h>
Siyuan Wang80cf7d52013-07-09 17:42:43 +08007
Siyuan Wang80cf7d52013-07-09 17:42:43 +08008unsigned long acpi_fill_madt(unsigned long current)
9{
10 /* create all subtables for processors */
Kyösti Mälkki899c7132021-06-16 11:06:26 +030011 current = acpi_create_madt_lapics_with_nmis(current);
Siyuan Wang80cf7d52013-07-09 17:42:43 +080012
13 /* Write SB800 IOAPIC, only one */
Kyösti Mälkki8f86fa02022-12-05 19:31:01 +020014 current += acpi_create_madt_ioapic((acpi_madt_ioapic_t *)current, FCH_IOAPIC_ID,
Siyuan Wang80cf7d52013-07-09 17:42:43 +080015 IO_APIC_ADDR, 0);
16
17 /* TODO: Remove the hardcode */
Kyösti Mälkki8f86fa02022-12-05 19:31:01 +020018 current += acpi_create_madt_ioapic((acpi_madt_ioapic_t *)current, GNB_IOAPIC_ID,
Felix Held6b2b8352023-02-21 21:03:39 +010019 IO_APIC2_ADDR, 24);
Siyuan Wang80cf7d52013-07-09 17:42:43 +080020
21 current += acpi_create_madt_irqoverride((acpi_madt_irqoverride_t *)
22 current, 0, 0, 2, 0);
23 current += acpi_create_madt_irqoverride((acpi_madt_irqoverride_t *)
24 current, 0, 9, 9, 0xF);
25 /* 0: mean bus 0--->ISA */
26 /* 0: PIC 0 */
27 /* 2: APIC 2 */
Kyösti Mälkkid8747572014-06-26 05:30:54 +030028 /* 5 mean: 0101 --> Edge-triggered, Active high */
Siyuan Wang80cf7d52013-07-09 17:42:43 +080029
Siyuan Wang80cf7d52013-07-09 17:42:43 +080030 return current;
31}