xref: /openbmc/u-boot/arch/x86/include/asm/acpi/irqroute.asl (revision 83d290c56fab2d38cd1ab4c4cc7099559c1d5046)
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