blob: f3a7da5d1e5b8181c8a73a5e7f7fada3edee4ad0 [file] [log] [blame]
Angel Pons3b7983a2021-01-28 12:14:12 +01001/* SPDX-License-Identifier: GPL-2.0-only */
2
3#include <acpi/acpi.h>
4#include <arch/ioapic.h>
5#include <arch/smp/mpspec.h>
6
7unsigned long acpi_fill_madt(unsigned long current)
8{
9 /* Local APICs */
10 current = acpi_create_madt_lapics(current);
11
12 /* IOAPIC */
13 current += acpi_create_madt_ioapic((acpi_madt_ioapic_t *) current,
14 2, IO_APIC_ADDR, 0);
15
16 /* LAPIC_NMI */
17 current += acpi_create_madt_lapic_nmi((acpi_madt_lapic_nmi_t *)
18 current, 0,
19 MP_IRQ_POLARITY_HIGH |
20 MP_IRQ_TRIGGER_EDGE, 0x01);
21 current += acpi_create_madt_lapic_nmi((acpi_madt_lapic_nmi_t *)
22 current, 1, MP_IRQ_POLARITY_HIGH |
23 MP_IRQ_TRIGGER_EDGE, 0x01);
24
25 /* INT_SRC_OVR */
26 current += acpi_create_madt_irqoverride((acpi_madt_irqoverride_t *)
27 current, 0, 0, 2, MP_IRQ_POLARITY_HIGH | MP_IRQ_TRIGGER_EDGE);
28 current += acpi_create_madt_irqoverride((acpi_madt_irqoverride_t *)
29 current, 0, 9, 9, MP_IRQ_POLARITY_HIGH | MP_IRQ_TRIGGER_LEVEL);
30
31 return current;
32}