1*3498cc97SBin Meng/* 2*3498cc97SBin Meng * Copyright (C) 2007-2009 coresystems GmbH 3*3498cc97SBin Meng * Copyright (C) 2013 Google Inc. 4*3498cc97SBin Meng * Copyright (C) 2016 Bin Meng <bmeng.cn@gmail.com> 5*3498cc97SBin Meng * 6*3498cc97SBin Meng * Modified from coreboot src/soc/intel/baytrail/acpi/irqroute.asl 7*3498cc97SBin Meng * 8*3498cc97SBin Meng * SPDX-License-Identifier: GPL-2.0+ 9*3498cc97SBin Meng */ 10*3498cc97SBin Meng 11*3498cc97SBin MengName(\PICM, 0) 12*3498cc97SBin Meng 13*3498cc97SBin Meng/* 14*3498cc97SBin Meng * The _PIC method is called by the OS to choose between interrupt 15*3498cc97SBin Meng * routing via the i8259 interrupt controller or the APIC. 16*3498cc97SBin Meng * 17*3498cc97SBin Meng * _PIC is called with a parameter of 0 for i8259 configuration and 18*3498cc97SBin Meng * with a parameter of 1 for Local APIC/IOAPIC configuration. 19*3498cc97SBin Meng */ 20*3498cc97SBin MengMethod(\_PIC, 1) 21*3498cc97SBin Meng{ 22*3498cc97SBin Meng /* Remember the OS' IRQ routing choice */ 23*3498cc97SBin Meng Store(Arg0, PICM) 24*3498cc97SBin Meng} 25*3498cc97SBin Meng 26*3498cc97SBin Meng/* PCI interrupt routing */ 27*3498cc97SBin MengMethod(_PRT) { 28*3498cc97SBin Meng If (PICM) { 29*3498cc97SBin Meng Return (Package() { 30*3498cc97SBin Meng #undef PIC_MODE 31*3498cc97SBin Meng #include "irq_helper.h" 32*3498cc97SBin Meng PCI_DEV_PIRQ_ROUTES 33*3498cc97SBin Meng }) 34*3498cc97SBin Meng } Else { 35*3498cc97SBin Meng Return (Package() { 36*3498cc97SBin Meng #define PIC_MODE 37*3498cc97SBin Meng #include "irq_helper.h" 38*3498cc97SBin Meng PCI_DEV_PIRQ_ROUTES 39*3498cc97SBin Meng }) 40*3498cc97SBin Meng } 41*3498cc97SBin Meng 42*3498cc97SBin Meng} 43*3498cc97SBin Meng 44*3498cc97SBin Meng/* PCIe downstream ports interrupt routing */ 45*3498cc97SBin MengPCIE_BRIDGE_IRQ_ROUTES 46*3498cc97SBin Meng#undef PIC_MODE 47*3498cc97SBin Meng#include "irq_helper.h" 48*3498cc97SBin MengPCIE_BRIDGE_IRQ_ROUTES 49