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 select GENERIC_IRQ_CHIP
175 Enable support for the LAN966x Outbound Interrupt Controller.
176 This controller is present on the Microchip LAN966x PCI device and
177 maps the internal interrupts sources to PCIe interrupt.
179 To compile this driver as a module, choose M here: the module
180 will be called irq-lan966x-oic.
187 select GENERIC_IRQ_CHIP
188 select GENERIC_IRQ_IPI if SMP && SYS_SUPPORTS_MULTITHREADING
190 select GENERIC_IRQ_EFFECTIVE_AFF_MASK if SMP
192 config CLPS711X_IRQCHIP
194 depends on ARCH_CLPS711X
208 select GENERIC_IRQ_CHIP
217 select GENERIC_IRQ_CHIP
221 bool "J-Core integrated AIC" if COMPILE_TEST
225 Support for the J-Core integrated AIC.
231 config RENESAS_INTC_IRQPIN
232 bool "Renesas INTC External IRQ Pin Support" if COMPILE_TEST
235 Enable support for the Renesas Interrupt Controller for external
236 interrupt pins, as found on SH/R-Mobile and R-Car Gen1 SoCs.
239 bool "Renesas R-Mobile APE6, R-Car Gen{2,3} and RZ/G{1,2} IRQC support" if COMPILE_TEST
240 select GENERIC_IRQ_CHIP
243 Enable support for the Renesas Interrupt Controller for external
244 devices, as found on R-Mobile APE6, R-Car Gen{2,3} and RZ/G{1,2} SoCs.
246 config RENESAS_RZA1_IRQC
247 bool "Renesas RZ/A1 IRQC support" if COMPILE_TEST
248 select IRQ_DOMAIN_HIERARCHY
250 Enable support for the Renesas RZ/A1 Interrupt Controller, to use up
251 to 8 external interrupts with configurable sense select.
253 config RENESAS_RZG2L_IRQC
254 bool "Renesas RZ/G2L (and alike SoC) IRQC support" if COMPILE_TEST
255 select GENERIC_IRQ_CHIP
256 select IRQ_DOMAIN_HIERARCHY
258 Enable support for the Renesas RZ/G2L (and alike SoC) Interrupt Controller
259 for external devices.
261 config RENESAS_RZV2H_ICU
262 bool "Renesas RZ/V2H(P) ICU support" if COMPILE_TEST
263 select GENERIC_IRQ_CHIP
264 select IRQ_DOMAIN_HIERARCHY
266 Enable support for the Renesas RZ/V2H(P) Interrupt Control Unit (ICU)
269 bool "Kontron sl28cpld IRQ controller"
270 depends on MFD_SL28CPLD=y || COMPILE_TEST
273 Interrupt controller driver for the board management controller
274 found on the Kontron sl28 CPLD.
281 Enables SysCfg Controlled IRQs on STi based platforms.
288 select IRQ_DOMAIN_HIERARCHY
289 select IRQ_FASTEOI_HIERARCHY_HANDLERS
291 config SUNXI_NMI_INTC
293 select GENERIC_IRQ_CHIP
298 select GENERIC_IRQ_CHIP
301 tristate "TS-4800 IRQ controller"
304 depends on SOC_IMX51 || COMPILE_TEST
306 Support for the TS-4800 FPGA IRQ controller
308 config VERSATILE_FPGA_IRQ
312 config VERSATILE_FPGA_IRQ_NR
315 depends on VERSATILE_FPGA_IRQ
320 select GENERIC_IRQ_EFFECTIVE_AFF_MASK if SMP
323 bool "Xilinx Interrupt Controller IP"
324 depends on OF_ADDRESS
327 Support for the Xilinx Interrupt Controller IP core.
328 This is used as a primary controller with MicroBlaze and can also
329 be used as a secondary chained controller on other platforms.
334 Support for a CROSSBAR ip that precedes the main interrupt controller.
335 The primary irqchip invokes the crossbar's callback which inturn allocates
336 a free irq and configures the IP. Thus the peripheral interrupts are
337 routed to one of the free irqchip interrupt lines.
340 tristate "Keystone 2 IRQ controller IP"
341 depends on ARCH_KEYSTONE
343 Support for Texas Instruments Keystone 2 IRQ controller IP which
344 is part of the Keystone 2 IPC mechanism
348 select GENERIC_IRQ_EFFECTIVE_AFF_MASK if SMP
349 select GENERIC_IRQ_IPI if SMP
350 select IRQ_DOMAIN_HIERARCHY
355 depends on MACH_INGENIC
358 config INGENIC_TCU_IRQ
359 bool "Ingenic JZ47xx TCU interrupt controller"
361 depends on MIPS || COMPILE_TEST
363 select GENERIC_IRQ_CHIP
365 Support for interrupts in the Timer/Counter Unit (TCU) of the Ingenic
374 Enables the wakeup IRQs for IMX platforms with GPCv2 block
377 def_bool y if MACH_ASM9260 || ARCH_MXS
381 config MSCC_OCELOT_IRQ
384 select GENERIC_IRQ_CHIP
396 select GENERIC_MSI_IRQ
405 def_bool y if SOC_LS1021A || ARCH_LAYERSCAPE
409 def_bool y if SOC_LS1021A || ARCH_LAYERSCAPE
412 config PARTITION_PERCPU
416 tristate "STM32MP extended interrupts and event controller"
417 depends on (ARCH_STM32 && !ARM_SINGLE_ARMV7M) || COMPILE_TEST
419 select IRQ_DOMAIN_HIERARCHY
420 select GENERIC_IRQ_CHIP
422 Support STM32MP EXTI (extended interrupts and event) controller.
427 select GENERIC_IRQ_CHIP
429 config QCOM_IRQ_COMBINER
430 bool "QCOM IRQ combiner support"
431 depends on ARCH_QCOM && ACPI
432 select IRQ_DOMAIN_HIERARCHY
434 Say yes here to add support for the IRQ combiner devices embedded
435 in Qualcomm Technologies chips.
437 config IRQ_UNIPHIER_AIDET
438 bool "UniPhier AIDET support" if COMPILE_TEST
439 depends on ARCH_UNIPHIER || COMPILE_TEST
440 default ARCH_UNIPHIER
441 select IRQ_DOMAIN_HIERARCHY
443 Support for the UniPhier AIDET (ARM Interrupt Detector).
445 config MESON_IRQ_GPIO
446 tristate "Meson GPIO Interrupt Multiplexer"
447 depends on ARCH_MESON || COMPILE_TEST
449 select IRQ_DOMAIN_HIERARCHY
451 Support Meson SoC Family GPIO Interrupt Multiplexer
454 bool "Goldfish programmable interrupt controller"
455 depends on MIPS && (GOLDFISH || COMPILE_TEST)
456 select GENERIC_IRQ_CHIP
459 Say yes here to enable Goldfish interrupt controller driver used
460 for Goldfish based virtual platforms.
465 select IRQ_DOMAIN_HIERARCHY
467 Power Domain Controller driver to manage and configure wakeup
468 IRQs for Qualcomm Technologies Inc (QTI) mobile chips.
474 select IRQ_DOMAIN_HIERARCHY
476 MSM Power Manager driver to manage and configure wakeup
477 IRQs for Qualcomm Technologies Inc (QTI) mobile chips.
483 Say yes here to enable C-SKY SMP interrupt controller driver used
484 for C-SKY SMP system.
485 In fact it's not mmio map in hardware and it uses ld/st to visit the
486 controller's register inside CPU.
489 bool "C-SKY APB Interrupt Controller"
492 Say yes here to enable C-SKY APB interrupt controller driver used
493 by C-SKY single core SOC system. It uses mmio map apb-bus to visit
494 the controller's register.
497 bool "i.MX IRQSTEER support"
498 depends on ARCH_MXC || COMPILE_TEST
502 Support for the i.MX IRQSTEER interrupt multiplexer/remapper.
505 bool "i.MX INTMUX support" if COMPILE_TEST
506 default y if ARCH_MXC
509 Support for the i.MX INTMUX interrupt multiplexer.
512 tristate "i.MX MU used as MSI controller"
513 depends on OF && HAS_IOMEM
514 depends on ARCH_MXC || COMPILE_TEST
515 default m if ARCH_MXC
517 select IRQ_DOMAIN_HIERARCHY
518 select GENERIC_MSI_IRQ
521 Provide a driver for the i.MX Messaging Unit block used as a
522 CPU-to-CPU MSI controller. This requires a specially crafted DT
523 to make use of this driver.
528 bool "Loongson-1 Interrupt Controller"
529 depends on MACH_LOONGSON32
532 select GENERIC_IRQ_CHIP
534 Support for the Loongson-1 platform Interrupt Controller.
536 config TI_SCI_INTR_IRQCHIP
538 depends on TI_SCI_PROTOCOL
539 select IRQ_DOMAIN_HIERARCHY
541 This enables the irqchip driver support for K3 Interrupt router
542 over TI System Control Interface available on some new TI's SoCs.
543 If you wish to use interrupt router irq resources managed by the
544 TI System Controller, say Y here. Otherwise, say N.
546 config TI_SCI_INTA_IRQCHIP
548 depends on TI_SCI_PROTOCOL
549 select IRQ_DOMAIN_HIERARCHY
550 select TI_SCI_INTA_MSI_DOMAIN
552 This enables the irqchip driver support for K3 Interrupt aggregator
553 over TI System Control Interface available on some new TI's SoCs.
554 If you wish to use interrupt aggregator irq resources managed by the
555 TI System Controller, say Y here. Otherwise, say N.
563 This enables support for the PRU-ICSS Local Interrupt Controller
564 present within a PRU-ICSS subsystem present on various TI SoCs.
565 The PRUSS INTC enables various interrupts to be routed to multiple
566 different processors within the SoC.
571 select IRQ_DOMAIN_HIERARCHY
576 select IRQ_DOMAIN_HIERARCHY
578 config RISCV_APLIC_MSI
580 depends on RISCV_APLIC
581 select GENERIC_MSI_IRQ
587 select IRQ_DOMAIN_HIERARCHY
588 select GENERIC_IRQ_MATRIX_ALLOCATOR
589 select GENERIC_MSI_IRQ
591 config RISCV_IMSIC_PCI
593 depends on RISCV_IMSIC
601 select IRQ_DOMAIN_HIERARCHY
602 select GENERIC_IRQ_EFFECTIVE_AFF_MASK if SMP
604 config STARFIVE_JH8100_INTC
605 bool "StarFive JH8100 External Interrupt Controller"
606 depends on ARCH_STARFIVE || COMPILE_TEST
607 default ARCH_STARFIVE
608 select IRQ_DOMAIN_HIERARCHY
610 This enables support for the INTC chip found in StarFive JH8100
613 If you don't know what to do here, say Y.
615 config THEAD_C900_ACLINT_SSWI
616 bool "THEAD C9XX ACLINT S-mode IPI Interrupt Controller"
619 select IRQ_DOMAIN_HIERARCHY
620 select GENERIC_IRQ_IPI_MUX
622 This enables support for T-HEAD specific ACLINT SSWI device
625 If you don't know what to do here, say Y.
627 config EXYNOS_IRQ_COMBINER
628 bool "Samsung Exynos IRQ combiner support" if COMPILE_TEST
629 depends on (ARCH_EXYNOS && ARM) || COMPILE_TEST
631 Say yes here to add support for the IRQ combiner devices embedded
632 in Samsung Exynos chips.
634 config IRQ_LOONGARCH_CPU
636 select GENERIC_IRQ_CHIP
638 select GENERIC_IRQ_EFFECTIVE_AFF_MASK if SMP
639 select LOONGSON_HTVEC
640 select LOONGSON_LIOINTC
641 select LOONGSON_EIOINTC
642 select LOONGSON_PCH_PIC
643 select LOONGSON_PCH_MSI
644 select LOONGSON_PCH_LPC
646 Support for the LoongArch CPU Interrupt Controller. For details of
647 irq chip hierarchy on LoongArch platforms please read the document
648 Documentation/arch/loongarch/irq-chip-model.rst.
650 config LOONGSON_LIOINTC
651 bool "Loongson Local I/O Interrupt Controller"
652 depends on MACH_LOONGSON64
655 select GENERIC_IRQ_CHIP
657 Support for the Loongson Local I/O Interrupt Controller.
659 config LOONGSON_EIOINTC
660 bool "Loongson Extend I/O Interrupt Controller"
662 depends on MACH_LOONGSON64
663 default MACH_LOONGSON64
664 select IRQ_DOMAIN_HIERARCHY
665 select GENERIC_IRQ_CHIP
667 Support for the Loongson3 Extend I/O Interrupt Vector Controller.
669 config LOONGSON_HTPIC
670 bool "Loongson3 HyperTransport PIC Controller"
671 depends on MACH_LOONGSON64 && MIPS
674 select GENERIC_IRQ_CHIP
676 Support for the Loongson-3 HyperTransport PIC Controller.
678 config LOONGSON_HTVEC
679 bool "Loongson HyperTransport Interrupt Vector Controller"
680 depends on MACH_LOONGSON64
681 default MACH_LOONGSON64
682 select IRQ_DOMAIN_HIERARCHY
684 Support for the Loongson HyperTransport Interrupt Vector Controller.
686 config LOONGSON_PCH_PIC
687 bool "Loongson PCH PIC Controller"
688 depends on MACH_LOONGSON64
689 default MACH_LOONGSON64
690 select IRQ_DOMAIN_HIERARCHY
691 select IRQ_FASTEOI_HIERARCHY_HANDLERS
693 Support for the Loongson PCH PIC Controller.
695 config LOONGSON_PCH_MSI
696 bool "Loongson PCH MSI Controller"
697 depends on MACH_LOONGSON64
699 default MACH_LOONGSON64
700 select IRQ_DOMAIN_HIERARCHY
704 Support for the Loongson PCH MSI Controller.
706 config LOONGSON_PCH_LPC
707 bool "Loongson PCH LPC Controller"
709 depends on MACH_LOONGSON64
710 default MACH_LOONGSON64
711 select IRQ_DOMAIN_HIERARCHY
713 Support for the Loongson PCH LPC Controller.
716 bool "MStar Interrupt Controller"
717 depends on ARCH_MEDIATEK || ARCH_MSTARV7 || COMPILE_TEST
718 default ARCH_MEDIATEK
720 select IRQ_DOMAIN_HIERARCHY
722 Support MStar Interrupt Controller.
725 bool "Nuvoton WPCM450 Advanced Interrupt Controller"
726 depends on ARCH_WPCM450
728 Support for the interrupt controller in the Nuvoton WPCM450 BMC SoC.
732 select GENERIC_IRQ_CHIP
736 bool "Apple Interrupt Controller (AIC)"
738 depends on ARCH_APPLE || COMPILE_TEST
739 select GENERIC_IRQ_IPI_MUX
741 Support for the Apple Interrupt Controller found on Apple Silicon SoCs,
745 bool "Microchip External Interrupt Controller"
746 depends on ARCH_AT91 || COMPILE_TEST
748 select IRQ_DOMAIN_HIERARCHY
750 Support for Microchip External Interrupt Controller.
752 config SUNPLUS_SP7021_INTC
753 bool "Sunplus SP7021 interrupt controller" if COMPILE_TEST
756 Support for the Sunplus SP7021 Interrupt Controller IP core.
757 SP7021 SoC has 2 Chips: C-Chip & P-Chip. This is used as a
758 chained controller, routing all interrupt source in P-Chip to
759 the primary controller on C-Chip.