blob: 02afbdbc5adbe89ccaac7a4b56004773294fdd92 [file] [log] [blame]
Angel Pons5c596802020-04-03 01:21:01 +02001/* SPDX-License-Identifier: GPL-2.0-only */
2/* This file is part of the coreboot project. */
Frank Vibrans69da1b62011-02-14 19:04:45 +00003
Frank Vibrans69da1b62011-02-14 19:04:45 +00004#include <arch/acpi.h>
5#include <arch/ioapic.h>
Frank Vibrans69da1b62011-02-14 19:04:45 +00006
Frank Vibrans69da1b62011-02-14 19:04:45 +00007unsigned long acpi_fill_madt(unsigned long current)
8{
Marc Jones522ba282012-01-03 16:02:07 -07009 /* create all subtables for processors */
Marc Jones84e0dfc2011-12-12 21:12:43 -070010 current = acpi_create_madt_lapics(current);
Stefan Reinauer5ff7c132011-10-31 12:56:45 -070011
Marc Jones522ba282012-01-03 16:02:07 -070012 /* Write SB800 IOAPIC, only one */
Marc Jones84e0dfc2011-12-12 21:12:43 -070013 current += acpi_create_madt_ioapic((acpi_madt_ioapic_t *) current,
Kerry Shehf03360f2012-01-19 13:25:55 +080014 CONFIG_MAX_CPUS, IO_APIC_ADDR, 0);
Frank Vibrans69da1b62011-02-14 19:04:45 +000015
Marc Jones522ba282012-01-03 16:02:07 -070016 current += acpi_create_madt_irqoverride((acpi_madt_irqoverride_t *)
17 current, 0, 0, 2, 0);
Marc Jones84e0dfc2011-12-12 21:12:43 -070018 current += acpi_create_madt_irqoverride((acpi_madt_irqoverride_t *)
19 current, 0, 9, 9, 0xF);
Stefan Reinauer5ff7c132011-10-31 12:56:45 -070020
Marc Jones522ba282012-01-03 16:02:07 -070021 /* 0: mean bus 0--->ISA */
22 /* 0: PIC 0 */
23 /* 2: APIC 2 */
Kyösti Mälkkid8747572014-06-26 05:30:54 +030024 /* 5 mean: 0101 --> Edge-triggered, Active high */
Frank Vibrans69da1b62011-02-14 19:04:45 +000025
Marc Jones522ba282012-01-03 16:02:07 -070026 /* create all subtables for processors */
Marc Jones84e0dfc2011-12-12 21:12:43 -070027 /* current = acpi_create_madt_lapic_nmis(current, 5, 1); */
Marc Jones522ba282012-01-03 16:02:07 -070028 /* 1: LINT1 connect to NMI */
Frank Vibrans69da1b62011-02-14 19:04:45 +000029
Marc Jones522ba282012-01-03 16:02:07 -070030 return current;
Frank Vibrans69da1b62011-02-14 19:04:45 +000031}