1 # SPDX-License-Identifier: GPL-2.0-only
2 menu "IRQ chip support"
6 depends on (OF_IRQ || ACPI_GENERIC_GSI)
11 select IRQ_DOMAIN_HIERARCHY
12 select GENERIC_IRQ_EFFECTIVE_AFF_MASK if SMP
22 default 2 if ARCH_REALVIEW
37 select IRQ_DOMAIN_HIERARCHY
38 select PARTITION_PERCPU
39 select GENERIC_IRQ_EFFECTIVE_AFF_MASK if SMP
40 select HAVE_ARM_SMCCC_DISCOVERY
44 select GENERIC_MSI_IRQ
48 config ARM_GIC_V3_ITS_FSL_MC
50 depends on ARM_GIC_V3_ITS
52 default ARM_GIC_V3_ITS
56 select IRQ_DOMAIN_HIERARCHY
57 select GENERIC_IRQ_CHIP
65 default 4 if ARCH_S5PV210
69 The maximum number of VICs available in the system, for
75 config ARMADA_370_XP_IRQ
77 select GENERIC_IRQ_CHIP
79 select GENERIC_IRQ_EFFECTIVE_AFF_MASK if SMP
85 select GENERIC_IRQ_CHIP
88 bool "Amazon's Annapurna Labs Fabric Interrupt Controller"
91 select GENERIC_IRQ_CHIP
94 Support Amazon's Annapurna Labs Fabric Interrupt Controller.
98 select GENERIC_IRQ_CHIP
102 config ATMEL_AIC5_IRQ
104 select GENERIC_IRQ_CHIP
112 config BCM6345_L1_IRQ
114 select GENERIC_IRQ_CHIP
116 select GENERIC_IRQ_EFFECTIVE_AFF_MASK if SMP
118 config BCM7038_L1_IRQ
119 tristate "Broadcom STB 7038-style L1/L2 interrupt controller driver"
120 depends on ARCH_BRCMSTB || BMIPS_GENERIC
121 default ARCH_BRCMSTB || BMIPS_GENERIC
122 select GENERIC_IRQ_CHIP
124 select GENERIC_IRQ_EFFECTIVE_AFF_MASK if SMP
126 config BCM7120_L2_IRQ
127 tristate "Broadcom STB 7120-style L2 interrupt controller driver"
128 depends on ARCH_BRCMSTB || BMIPS_GENERIC
129 default ARCH_BRCMSTB || BMIPS_GENERIC
130 select GENERIC_IRQ_CHIP
133 config BRCMSTB_L2_IRQ
134 tristate "Broadcom STB generic L2 interrupt controller driver"
135 depends on ARCH_BCM2835 || ARCH_BRCMSTB || BMIPS_GENERIC
136 default ARCH_BCM2835 || ARCH_BRCMSTB || BMIPS_GENERIC
137 select GENERIC_IRQ_CHIP
140 config DAVINCI_CP_INTC
142 select GENERIC_IRQ_CHIP
147 select GENERIC_IRQ_CHIP
148 select IRQ_DOMAIN_HIERARCHY
150 config FARADAY_FTINTC010
155 config HISILICON_IRQ_MBIGEN
158 select ARM_GIC_V3_ITS
162 select GENERIC_IRQ_CHIP
171 tristate "Microchip LAN966x OIC Support"
172 depends on MCHP_LAN966X_PCI || COMPILE_TEST
173 select GENERIC_IRQ_CHIP
176 Enable support for the LAN966x Outbound Interrupt Controller.
177 This controller is present on the Microchip LAN966x PCI device and
178 maps the internal interrupts sources to PCIe interrupt.
180 To compile this driver as a module, choose M here: the module
181 will be called irq-lan966x-oic.
188 select GENERIC_IRQ_CHIP
189 select GENERIC_IRQ_IPI if SMP && SYS_SUPPORTS_MULTITHREADING
191 select GENERIC_IRQ_EFFECTIVE_AFF_MASK if SMP
193 config CLPS711X_IRQCHIP
195 depends on ARCH_CLPS711X
209 select GENERIC_IRQ_CHIP
218 select GENERIC_IRQ_CHIP
222 bool "J-Core integrated AIC" if COMPILE_TEST
226 Support for the J-Core integrated AIC.
232 config RENESAS_INTC_IRQPIN
233 bool "Renesas INTC External IRQ Pin Support" if COMPILE_TEST
236 Enable support for the Renesas Interrupt Controller for external
237 interrupt pins, as found on SH/R-Mobile and R-Car Gen1 SoCs.
240 bool "Renesas R-Mobile APE6, R-Car Gen{2,3} and RZ/G{1,2} IRQC support" if COMPILE_TEST
241 select GENERIC_IRQ_CHIP
244 Enable support for the Renesas Interrupt Controller for external
245 devices, as found on R-Mobile APE6, R-Car Gen{2,3} and RZ/G{1,2} SoCs.
247 config RENESAS_RZA1_IRQC
248 bool "Renesas RZ/A1 IRQC support" if COMPILE_TEST
249 select IRQ_DOMAIN_HIERARCHY
251 Enable support for the Renesas RZ/A1 Interrupt Controller, to use up
252 to 8 external interrupts with configurable sense select.
254 config RENESAS_RZG2L_IRQC
255 bool "Renesas RZ/G2L (and alike SoC) IRQC support" if COMPILE_TEST
256 select GENERIC_IRQ_CHIP
257 select IRQ_DOMAIN_HIERARCHY
259 Enable support for the Renesas RZ/G2L (and alike SoC) Interrupt Controller
260 for external devices.
262 config RENESAS_RZV2H_ICU
263 bool "Renesas RZ/V2H(P) ICU support" if COMPILE_TEST
264 select GENERIC_IRQ_CHIP
265 select IRQ_DOMAIN_HIERARCHY
267 Enable support for the Renesas RZ/V2H(P) Interrupt Control Unit (ICU)
270 bool "Kontron sl28cpld IRQ controller"
271 depends on MFD_SL28CPLD=y || COMPILE_TEST
274 Interrupt controller driver for the board management controller
275 found on the Kontron sl28 CPLD.
282 Enables SysCfg Controlled IRQs on STi based platforms.
289 select IRQ_DOMAIN_HIERARCHY
290 select IRQ_FASTEOI_HIERARCHY_HANDLERS
292 config SUNXI_NMI_INTC
294 select GENERIC_IRQ_CHIP
299 select GENERIC_IRQ_CHIP
302 tristate "TS-4800 IRQ controller"
305 depends on SOC_IMX51 || COMPILE_TEST
307 Support for the TS-4800 FPGA IRQ controller
309 config VERSATILE_FPGA_IRQ
313 config VERSATILE_FPGA_IRQ_NR
316 depends on VERSATILE_FPGA_IRQ
321 select GENERIC_IRQ_EFFECTIVE_AFF_MASK if SMP
324 bool "Xilinx Interrupt Controller IP"
325 depends on OF_ADDRESS
328 Support for the Xilinx Interrupt Controller IP core.
329 This is used as a primary controller with MicroBlaze and can also
330 be used as a secondary chained controller on other platforms.
335 Support for a CROSSBAR ip that precedes the main interrupt controller.
336 The primary irqchip invokes the crossbar's callback which inturn allocates
337 a free irq and configures the IP. Thus the peripheral interrupts are
338 routed to one of the free irqchip interrupt lines.
341 tristate "Keystone 2 IRQ controller IP"
342 depends on ARCH_KEYSTONE
344 Support for Texas Instruments Keystone 2 IRQ controller IP which
345 is part of the Keystone 2 IPC mechanism
349 select GENERIC_IRQ_EFFECTIVE_AFF_MASK if SMP
350 select GENERIC_IRQ_IPI if SMP
351 select IRQ_DOMAIN_HIERARCHY
356 depends on MACH_INGENIC
359 config INGENIC_TCU_IRQ
360 bool "Ingenic JZ47xx TCU interrupt controller"
362 depends on MIPS || COMPILE_TEST
364 select GENERIC_IRQ_CHIP
366 Support for interrupts in the Timer/Counter Unit (TCU) of the Ingenic
375 Enables the wakeup IRQs for IMX platforms with GPCv2 block
378 def_bool y if MACH_ASM9260 || ARCH_MXS
382 config MSCC_OCELOT_IRQ
385 select GENERIC_IRQ_CHIP
397 select GENERIC_MSI_IRQ
406 def_bool y if SOC_LS1021A || ARCH_LAYERSCAPE
410 def_bool y if SOC_LS1021A || ARCH_LAYERSCAPE
413 config PARTITION_PERCPU
417 tristate "STM32MP extended interrupts and event controller"
418 depends on (ARCH_STM32 && !ARM_SINGLE_ARMV7M) || COMPILE_TEST
419 default ARCH_STM32 && !ARM_SINGLE_ARMV7M
420 select IRQ_DOMAIN_HIERARCHY
421 select GENERIC_IRQ_CHIP
423 Support STM32MP EXTI (extended interrupts and event) controller.
428 select GENERIC_IRQ_CHIP
430 config QCOM_IRQ_COMBINER
431 bool "QCOM IRQ combiner support"
432 depends on ARCH_QCOM && ACPI
433 select IRQ_DOMAIN_HIERARCHY
435 Say yes here to add support for the IRQ combiner devices embedded
436 in Qualcomm Technologies chips.
438 config IRQ_UNIPHIER_AIDET
439 bool "UniPhier AIDET support" if COMPILE_TEST
440 depends on ARCH_UNIPHIER || COMPILE_TEST
441 default ARCH_UNIPHIER
442 select IRQ_DOMAIN_HIERARCHY
444 Support for the UniPhier AIDET (ARM Interrupt Detector).
446 config MESON_IRQ_GPIO
447 tristate "Meson GPIO Interrupt Multiplexer"
448 depends on ARCH_MESON || COMPILE_TEST
450 select IRQ_DOMAIN_HIERARCHY
452 Support Meson SoC Family GPIO Interrupt Multiplexer
455 bool "Goldfish programmable interrupt controller"
456 depends on MIPS && (GOLDFISH || COMPILE_TEST)
457 select GENERIC_IRQ_CHIP
460 Say yes here to enable Goldfish interrupt controller driver used
461 for Goldfish based virtual platforms.
466 select IRQ_DOMAIN_HIERARCHY
468 Power Domain Controller driver to manage and configure wakeup
469 IRQs for Qualcomm Technologies Inc (QTI) mobile chips.
475 select IRQ_DOMAIN_HIERARCHY
477 MSM Power Manager driver to manage and configure wakeup
478 IRQs for Qualcomm Technologies Inc (QTI) mobile chips.
484 Say yes here to enable C-SKY SMP interrupt controller driver used
485 for C-SKY SMP system.
486 In fact it's not mmio map in hardware and it uses ld/st to visit the
487 controller's register inside CPU.
490 bool "C-SKY APB Interrupt Controller"
493 Say yes here to enable C-SKY APB interrupt controller driver used
494 by C-SKY single core SOC system. It uses mmio map apb-bus to visit
495 the controller's register.
498 bool "i.MX IRQSTEER support"
499 depends on ARCH_MXC || COMPILE_TEST
503 Support for the i.MX IRQSTEER interrupt multiplexer/remapper.
506 bool "i.MX INTMUX support" if COMPILE_TEST
507 default y if ARCH_MXC
510 Support for the i.MX INTMUX interrupt multiplexer.
513 tristate "i.MX MU used as MSI controller"
514 depends on OF && HAS_IOMEM
515 depends on ARCH_MXC || COMPILE_TEST
516 default m if ARCH_MXC
518 select IRQ_DOMAIN_HIERARCHY
519 select GENERIC_MSI_IRQ
522 Provide a driver for the i.MX Messaging Unit block used as a
523 CPU-to-CPU MSI controller. This requires a specially crafted DT
524 to make use of this driver.
529 bool "Loongson-1 Interrupt Controller"
530 depends on MACH_LOONGSON32
533 select GENERIC_IRQ_CHIP
535 Support for the Loongson-1 platform Interrupt Controller.
537 config TI_SCI_INTR_IRQCHIP
538 tristate "TI SCI INTR Interrupt Controller"
539 depends on TI_SCI_PROTOCOL
540 depends on ARCH_K3 || COMPILE_TEST
541 select IRQ_DOMAIN_HIERARCHY
543 This enables the irqchip driver support for K3 Interrupt router
544 over TI System Control Interface available on some new TI's SoCs.
545 If you wish to use interrupt router irq resources managed by the
546 TI System Controller, say Y here. Otherwise, say N.
548 config TI_SCI_INTA_IRQCHIP
549 tristate "TI SCI INTA Interrupt Controller"
550 depends on TI_SCI_PROTOCOL
551 depends on ARCH_K3 || (COMPILE_TEST && ARM64)
552 select IRQ_DOMAIN_HIERARCHY
553 select TI_SCI_INTA_MSI_DOMAIN
555 This enables the irqchip driver support for K3 Interrupt aggregator
556 over TI System Control Interface available on some new TI's SoCs.
557 If you wish to use interrupt aggregator irq resources managed by the
558 TI System Controller, say Y here. Otherwise, say N.
566 This enables support for the PRU-ICSS Local Interrupt Controller
567 present within a PRU-ICSS subsystem present on various TI SoCs.
568 The PRUSS INTC enables various interrupts to be routed to multiple
569 different processors within the SoC.
574 select IRQ_DOMAIN_HIERARCHY
579 select IRQ_DOMAIN_HIERARCHY
581 config RISCV_APLIC_MSI
583 depends on RISCV_APLIC
584 select GENERIC_MSI_IRQ
590 select IRQ_DOMAIN_HIERARCHY
591 select GENERIC_IRQ_MATRIX_ALLOCATOR
592 select GENERIC_MSI_IRQ
594 config RISCV_IMSIC_PCI
596 depends on RISCV_IMSIC
604 select IRQ_DOMAIN_HIERARCHY
605 select GENERIC_IRQ_EFFECTIVE_AFF_MASK if SMP
607 config STARFIVE_JH8100_INTC
608 bool "StarFive JH8100 External Interrupt Controller"
609 depends on ARCH_STARFIVE || COMPILE_TEST
610 default ARCH_STARFIVE
611 select IRQ_DOMAIN_HIERARCHY
613 This enables support for the INTC chip found in StarFive JH8100
616 If you don't know what to do here, say Y.
618 config THEAD_C900_ACLINT_SSWI
619 bool "THEAD C9XX ACLINT S-mode IPI Interrupt Controller"
622 select IRQ_DOMAIN_HIERARCHY
623 select GENERIC_IRQ_IPI_MUX
625 This enables support for T-HEAD specific ACLINT SSWI device
628 If you don't know what to do here, say Y.
630 config EXYNOS_IRQ_COMBINER
631 bool "Samsung Exynos IRQ combiner support" if COMPILE_TEST
632 depends on (ARCH_EXYNOS && ARM) || COMPILE_TEST
634 Say yes here to add support for the IRQ combiner devices embedded
635 in Samsung Exynos chips.
637 config IRQ_LOONGARCH_CPU
639 select GENERIC_IRQ_CHIP
641 select GENERIC_IRQ_EFFECTIVE_AFF_MASK if SMP
642 select LOONGSON_HTVEC
643 select LOONGSON_LIOINTC
644 select LOONGSON_EIOINTC
645 select LOONGSON_PCH_PIC
646 select LOONGSON_PCH_MSI
647 select LOONGSON_PCH_LPC
649 Support for the LoongArch CPU Interrupt Controller. For details of
650 irq chip hierarchy on LoongArch platforms please read the document
651 Documentation/arch/loongarch/irq-chip-model.rst.
653 config LOONGSON_LIOINTC
654 bool "Loongson Local I/O Interrupt Controller"
655 depends on MACH_LOONGSON64
658 select GENERIC_IRQ_CHIP
660 Support for the Loongson Local I/O Interrupt Controller.
662 config LOONGSON_EIOINTC
663 bool "Loongson Extend I/O Interrupt Controller"
665 depends on MACH_LOONGSON64
666 default MACH_LOONGSON64
667 select IRQ_DOMAIN_HIERARCHY
668 select GENERIC_IRQ_CHIP
670 Support for the Loongson3 Extend I/O Interrupt Vector Controller.
672 config LOONGSON_HTPIC
673 bool "Loongson3 HyperTransport PIC Controller"
674 depends on MACH_LOONGSON64 && MIPS
677 select GENERIC_IRQ_CHIP
679 Support for the Loongson-3 HyperTransport PIC Controller.
681 config LOONGSON_HTVEC
682 bool "Loongson HyperTransport Interrupt Vector Controller"
683 depends on MACH_LOONGSON64
684 default MACH_LOONGSON64
685 select IRQ_DOMAIN_HIERARCHY
687 Support for the Loongson HyperTransport Interrupt Vector Controller.
689 config LOONGSON_PCH_PIC
690 bool "Loongson PCH PIC Controller"
691 depends on MACH_LOONGSON64
692 default MACH_LOONGSON64
693 select IRQ_DOMAIN_HIERARCHY
694 select IRQ_FASTEOI_HIERARCHY_HANDLERS
696 Support for the Loongson PCH PIC Controller.
698 config LOONGSON_PCH_MSI
699 bool "Loongson PCH MSI Controller"
700 depends on MACH_LOONGSON64
702 default MACH_LOONGSON64
703 select IRQ_DOMAIN_HIERARCHY
707 Support for the Loongson PCH MSI Controller.
709 config LOONGSON_PCH_LPC
710 bool "Loongson PCH LPC Controller"
712 depends on MACH_LOONGSON64
713 default MACH_LOONGSON64
714 select IRQ_DOMAIN_HIERARCHY
716 Support for the Loongson PCH LPC Controller.
719 bool "MStar Interrupt Controller"
720 depends on ARCH_MEDIATEK || ARCH_MSTARV7 || COMPILE_TEST
721 default ARCH_MEDIATEK
723 select IRQ_DOMAIN_HIERARCHY
725 Support MStar Interrupt Controller.
728 bool "Nuvoton WPCM450 Advanced Interrupt Controller"
729 depends on ARCH_WPCM450
731 Support for the interrupt controller in the Nuvoton WPCM450 BMC SoC.
735 select GENERIC_IRQ_CHIP
739 bool "Apple Interrupt Controller (AIC)"
741 depends on ARCH_APPLE || COMPILE_TEST
742 select GENERIC_IRQ_IPI_MUX
744 Support for the Apple Interrupt Controller found on Apple Silicon SoCs,
748 bool "Microchip External Interrupt Controller"
749 depends on ARCH_AT91 || COMPILE_TEST
751 select IRQ_DOMAIN_HIERARCHY
753 Support for Microchip External Interrupt Controller.
755 config SUNPLUS_SP7021_INTC
756 bool "Sunplus SP7021 interrupt controller" if COMPILE_TEST
759 Support for the Sunplus SP7021 Interrupt Controller IP core.
760 SP7021 SoC has 2 Chips: C-Chip & P-Chip. This is used as a
761 chained controller, routing all interrupt source in P-Chip to
762 the primary controller on C-Chip.