x86/PCI: Add support for the Intel 82426EX PIRQ router
authorMaciej W. Rozycki <macro@orcam.me.uk>
Tue, 20 Jul 2021 03:28:04 +0000 (05:28 +0200)
committerThomas Gleixner <tglx@linutronix.de>
Tue, 10 Aug 2021 21:31:43 +0000 (23:31 +0200)
commit0e8c6f56fab3af3ef9f78f486e198792d3af0fa1
treef522a4fd6eafd813fe6da9b911fed0f127022b6a
parent6b79164f603d14a3ff9c64330c1ca6c05f0b019e
x86/PCI: Add support for the Intel 82426EX PIRQ router

The Intel 82426EX ISA Bridge (IB), a part of the Intel 82420EX PCIset,
implements PCI interrupt steering with a PIRQ router in the form of two
PIRQ Route Control registers, available in the PCI configuration space
at locations 0x66 and 0x67 for the PIRQ0# and PIRQ1# lines respectively.

The semantics is the same as with the PIIX router, however it is not
clear if BIOSes use register indices or line numbers as the cookie to
identify PCI interrupts in their routing tables and therefore support
either scheme.

The IB is directly attached to the Intel 82425EX PCI System Controller
(PSC) component of the chipset via a dedicated PSC/IB Link interface
rather than the host bus or PCI.  Therefore it does not itself appear in
the PCI configuration space even though it responds to configuration
cycles addressing registers it implements.  Use 82425EX's identification
then for determining the presence of the IB.

References:

[1] "82420EX PCIset Data Sheet, 82425EX PCI System Controller (PSC) and
    82426EX ISA Bridge (IB)", Intel Corporation, Order Number:
    290488-004, December 1995, Section 3.3.18 "PIRQ1RC/PIRQ0RC--PIRQ
    Route Control Registers", p. 61

Signed-off-by: Maciej W. Rozycki <macro@orcam.me.uk>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lore.kernel.org/r/alpine.DEB.2.21.2107200213490.9461@angie.orcam.me.uk
arch/x86/pci/irq.c
include/linux/pci_ids.h