1*83d290c5STom Rini/* SPDX-License-Identifier: GPL-2.0+ */ 23498cc97SBin Meng/* 33498cc97SBin Meng * Copyright (C) 2007-2009 coresystems GmbH 43498cc97SBin Meng * Copyright (C) 2013 Google Inc. 53498cc97SBin Meng * Copyright (C) 2016 Bin Meng <bmeng.cn@gmail.com> 63498cc97SBin Meng * 73498cc97SBin Meng * Modified from coreboot src/soc/intel/baytrail/acpi/irqroute.asl 83498cc97SBin Meng */ 93498cc97SBin Meng 103498cc97SBin MengName(\PICM, 0) 113498cc97SBin Meng 123498cc97SBin Meng/* 133498cc97SBin Meng * The _PIC method is called by the OS to choose between interrupt 143498cc97SBin Meng * routing via the i8259 interrupt controller or the APIC. 153498cc97SBin Meng * 163498cc97SBin Meng * _PIC is called with a parameter of 0 for i8259 configuration and 173498cc97SBin Meng * with a parameter of 1 for Local APIC/IOAPIC configuration. 183498cc97SBin Meng */ 193498cc97SBin MengMethod(\_PIC, 1) 203498cc97SBin Meng{ 213498cc97SBin Meng /* Remember the OS' IRQ routing choice */ 223498cc97SBin Meng Store(Arg0, PICM) 233498cc97SBin Meng} 243498cc97SBin Meng 253498cc97SBin Meng/* PCI interrupt routing */ 263498cc97SBin MengMethod(_PRT) { 273498cc97SBin Meng If (PICM) { 283498cc97SBin Meng Return (Package() { 293498cc97SBin Meng #undef PIC_MODE 303498cc97SBin Meng #include "irq_helper.h" 313498cc97SBin Meng PCI_DEV_PIRQ_ROUTES 323498cc97SBin Meng }) 333498cc97SBin Meng } Else { 343498cc97SBin Meng Return (Package() { 353498cc97SBin Meng #define PIC_MODE 363498cc97SBin Meng #include "irq_helper.h" 373498cc97SBin Meng PCI_DEV_PIRQ_ROUTES 383498cc97SBin Meng }) 393498cc97SBin Meng } 403498cc97SBin Meng 413498cc97SBin Meng} 423498cc97SBin Meng 433498cc97SBin Meng/* PCIe downstream ports interrupt routing */ 443498cc97SBin MengPCIE_BRIDGE_IRQ_ROUTES 453498cc97SBin Meng#undef PIC_MODE 463498cc97SBin Meng#include "irq_helper.h" 473498cc97SBin MengPCIE_BRIDGE_IRQ_ROUTES 48