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