blob: 757e2e5835d9d11605f275ccc35541ae4f0bea60 [file] [log] [blame]
Angel Pons5c596802020-04-03 01:21:01 +02001/* SPDX-License-Identifier: GPL-2.0-only */
Frank Vibrans69da1b62011-02-14 19:04:45 +00002
Furquan Shaikh76cedd22020-05-02 10:24:23 -07003#include <acpi/acpi.h>
Frank Vibrans69da1b62011-02-14 19:04:45 +00004#include <arch/ioapic.h>
Frank Vibrans69da1b62011-02-14 19:04:45 +00005
Frank Vibrans69da1b62011-02-14 19:04:45 +00006unsigned long acpi_fill_madt(unsigned long current)
7{
Marc Jones522ba282012-01-03 16:02:07 -07008 /* create all subtables for processors */
Marc Jones84e0dfc2011-12-12 21:12:43 -07009 current = acpi_create_madt_lapics(current);
Stefan Reinauer5ff7c132011-10-31 12:56:45 -070010
Marc Jones522ba282012-01-03 16:02:07 -070011 /* Write SB800 IOAPIC, only one */
Elyes Haouasf58c7872022-07-16 09:35:13 +020012 current += acpi_create_madt_ioapic((acpi_madt_ioapic_t *)current,
Kerry Shehf03360f2012-01-19 13:25:55 +080013 CONFIG_MAX_CPUS, IO_APIC_ADDR, 0);
Frank Vibrans69da1b62011-02-14 19:04:45 +000014
Marc Jones522ba282012-01-03 16:02:07 -070015 current += acpi_create_madt_irqoverride((acpi_madt_irqoverride_t *)
16 current, 0, 0, 2, 0);
Marc Jones84e0dfc2011-12-12 21:12:43 -070017 current += acpi_create_madt_irqoverride((acpi_madt_irqoverride_t *)
18 current, 0, 9, 9, 0xF);
Stefan Reinauer5ff7c132011-10-31 12:56:45 -070019
Marc Jones522ba282012-01-03 16:02:07 -070020 /* 0: mean bus 0--->ISA */
21 /* 0: PIC 0 */
22 /* 2: APIC 2 */
Kyösti Mälkkid8747572014-06-26 05:30:54 +030023 /* 5 mean: 0101 --> Edge-triggered, Active high */
Frank Vibrans69da1b62011-02-14 19:04:45 +000024
Marc Jones522ba282012-01-03 16:02:07 -070025 /* create all subtables for processors */
Marc Jones84e0dfc2011-12-12 21:12:43 -070026 /* current = acpi_create_madt_lapic_nmis(current, 5, 1); */
Marc Jones522ba282012-01-03 16:02:07 -070027 /* 1: LINT1 connect to NMI */
Frank Vibrans69da1b62011-02-14 19:04:45 +000028
Marc Jones522ba282012-01-03 16:02:07 -070029 return current;
Frank Vibrans69da1b62011-02-14 19:04:45 +000030}