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_PCI
50 depends on ARM_GIC_V3_ITS
53 default ARM_GIC_V3_ITS
55 config ARM_GIC_V3_ITS_FSL_MC
57 depends on ARM_GIC_V3_ITS
59 default ARM_GIC_V3_ITS
63 select IRQ_DOMAIN_HIERARCHY
64 select GENERIC_IRQ_CHIP
72 default 4 if ARCH_S5PV210
76 The maximum number of VICs available in the system, for
82 config ARMADA_370_XP_IRQ
84 select GENERIC_IRQ_CHIP
86 select GENERIC_IRQ_EFFECTIVE_AFF_MASK if SMP
92 select GENERIC_IRQ_CHIP
95 bool "Amazon's Annapurna Labs Fabric Interrupt Controller"
98 select GENERIC_IRQ_CHIP
101 Support Amazon's Annapurna Labs Fabric Interrupt Controller.
105 select GENERIC_IRQ_CHIP
109 config ATMEL_AIC5_IRQ
111 select GENERIC_IRQ_CHIP
119 config BCM6345_L1_IRQ
121 select GENERIC_IRQ_CHIP
123 select GENERIC_IRQ_EFFECTIVE_AFF_MASK if SMP
125 config BCM7038_L1_IRQ
126 tristate "Broadcom STB 7038-style L1/L2 interrupt controller driver"
127 depends on ARCH_BRCMSTB || BMIPS_GENERIC
128 default ARCH_BRCMSTB || BMIPS_GENERIC
129 select GENERIC_IRQ_CHIP
131 select GENERIC_IRQ_EFFECTIVE_AFF_MASK if SMP
133 config BCM7120_L2_IRQ
134 tristate "Broadcom STB 7120-style L2 interrupt controller driver"
135 depends on ARCH_BRCMSTB || BMIPS_GENERIC
136 default ARCH_BRCMSTB || BMIPS_GENERIC
137 select GENERIC_IRQ_CHIP
140 config BRCMSTB_L2_IRQ
141 tristate "Broadcom STB generic L2 interrupt controller driver"
142 depends on ARCH_BCM2835 || ARCH_BRCMSTB || BMIPS_GENERIC
143 default ARCH_BCM2835 || ARCH_BRCMSTB || BMIPS_GENERIC
144 select GENERIC_IRQ_CHIP
147 config DAVINCI_CP_INTC
149 select GENERIC_IRQ_CHIP
154 select GENERIC_IRQ_CHIP
155 select IRQ_DOMAIN_HIERARCHY
157 config FARADAY_FTINTC010
162 config HISILICON_IRQ_MBIGEN
165 select ARM_GIC_V3_ITS
169 select GENERIC_IRQ_CHIP
178 tristate "Microchip LAN966x OIC Support"
179 select GENERIC_IRQ_CHIP
182 Enable support for the LAN966x Outbound Interrupt Controller.
183 This controller is present on the Microchip LAN966x PCI device and
184 maps the internal interrupts sources to PCIe interrupt.
186 To compile this driver as a module, choose M here: the module
187 will be called irq-lan966x-oic.
194 select GENERIC_IRQ_CHIP
195 select GENERIC_IRQ_IPI if SMP && SYS_SUPPORTS_MULTITHREADING
197 select GENERIC_IRQ_EFFECTIVE_AFF_MASK if SMP
199 config CLPS711X_IRQCHIP
201 depends on ARCH_CLPS711X
215 select GENERIC_IRQ_CHIP
224 select GENERIC_IRQ_CHIP
228 bool "J-Core integrated AIC" if COMPILE_TEST
232 Support for the J-Core integrated AIC.
238 config RENESAS_INTC_IRQPIN
239 bool "Renesas INTC External IRQ Pin Support" if COMPILE_TEST
242 Enable support for the Renesas Interrupt Controller for external
243 interrupt pins, as found on SH/R-Mobile and R-Car Gen1 SoCs.
246 bool "Renesas R-Mobile APE6, R-Car Gen{2,3} and RZ/G{1,2} IRQC support" if COMPILE_TEST
247 select GENERIC_IRQ_CHIP
250 Enable support for the Renesas Interrupt Controller for external
251 devices, as found on R-Mobile APE6, R-Car Gen{2,3} and RZ/G{1,2} SoCs.
253 config RENESAS_RZA1_IRQC
254 bool "Renesas RZ/A1 IRQC support" if COMPILE_TEST
255 select IRQ_DOMAIN_HIERARCHY
257 Enable support for the Renesas RZ/A1 Interrupt Controller, to use up
258 to 8 external interrupts with configurable sense select.
260 config RENESAS_RZG2L_IRQC
261 bool "Renesas RZ/G2L (and alike SoC) IRQC support" if COMPILE_TEST
262 select GENERIC_IRQ_CHIP
263 select IRQ_DOMAIN_HIERARCHY
265 Enable support for the Renesas RZ/G2L (and alike SoC) Interrupt Controller
266 for external devices.
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_IPI if SMP
349 select IRQ_DOMAIN_HIERARCHY
354 depends on MACH_INGENIC
357 config INGENIC_TCU_IRQ
358 bool "Ingenic JZ47xx TCU interrupt controller"
360 depends on MIPS || COMPILE_TEST
362 select GENERIC_IRQ_CHIP
364 Support for interrupts in the Timer/Counter Unit (TCU) of the Ingenic
373 Enables the wakeup IRQs for IMX platforms with GPCv2 block
376 def_bool y if MACH_ASM9260 || ARCH_MXS
380 config MSCC_OCELOT_IRQ
383 select GENERIC_IRQ_CHIP
395 select GENERIC_MSI_IRQ
404 def_bool y if SOC_LS1021A || ARCH_LAYERSCAPE
408 def_bool y if SOC_LS1021A || ARCH_LAYERSCAPE
411 config PARTITION_PERCPU
415 tristate "STM32MP extended interrupts and event controller"
416 depends on (ARCH_STM32 && !ARM_SINGLE_ARMV7M) || COMPILE_TEST
418 select IRQ_DOMAIN_HIERARCHY
419 select GENERIC_IRQ_CHIP
421 Support STM32MP EXTI (extended interrupts and event) controller.
426 select GENERIC_IRQ_CHIP
428 config QCOM_IRQ_COMBINER
429 bool "QCOM IRQ combiner support"
430 depends on ARCH_QCOM && ACPI
431 select IRQ_DOMAIN_HIERARCHY
433 Say yes here to add support for the IRQ combiner devices embedded
434 in Qualcomm Technologies chips.
436 config IRQ_UNIPHIER_AIDET
437 bool "UniPhier AIDET support" if COMPILE_TEST
438 depends on ARCH_UNIPHIER || COMPILE_TEST
439 default ARCH_UNIPHIER
440 select IRQ_DOMAIN_HIERARCHY
442 Support for the UniPhier AIDET (ARM Interrupt Detector).
444 config MESON_IRQ_GPIO
445 tristate "Meson GPIO Interrupt Multiplexer"
446 depends on ARCH_MESON || COMPILE_TEST
448 select IRQ_DOMAIN_HIERARCHY
450 Support Meson SoC Family GPIO Interrupt Multiplexer
453 bool "Goldfish programmable interrupt controller"
454 depends on MIPS && (GOLDFISH || COMPILE_TEST)
455 select GENERIC_IRQ_CHIP
458 Say yes here to enable Goldfish interrupt controller driver used
459 for Goldfish based virtual platforms.
464 select IRQ_DOMAIN_HIERARCHY
466 Power Domain Controller driver to manage and configure wakeup
467 IRQs for Qualcomm Technologies Inc (QTI) mobile chips.
473 select IRQ_DOMAIN_HIERARCHY
475 MSM Power Manager driver to manage and configure wakeup
476 IRQs for Qualcomm Technologies Inc (QTI) mobile chips.
482 Say yes here to enable C-SKY SMP interrupt controller driver used
483 for C-SKY SMP system.
484 In fact it's not mmio map in hardware and it uses ld/st to visit the
485 controller's register inside CPU.
488 bool "C-SKY APB Interrupt Controller"
491 Say yes here to enable C-SKY APB interrupt controller driver used
492 by C-SKY single core SOC system. It uses mmio map apb-bus to visit
493 the controller's register.
496 bool "i.MX IRQSTEER support"
497 depends on ARCH_MXC || COMPILE_TEST
501 Support for the i.MX IRQSTEER interrupt multiplexer/remapper.
504 bool "i.MX INTMUX support" if COMPILE_TEST
505 default y if ARCH_MXC
508 Support for the i.MX INTMUX interrupt multiplexer.
511 tristate "i.MX MU used as MSI controller"
512 depends on OF && HAS_IOMEM
513 depends on ARCH_MXC || COMPILE_TEST
514 default m if ARCH_MXC
516 select IRQ_DOMAIN_HIERARCHY
517 select GENERIC_MSI_IRQ
520 Provide a driver for the i.MX Messaging Unit block used as a
521 CPU-to-CPU MSI controller. This requires a specially crafted DT
522 to make use of this driver.
527 bool "Loongson-1 Interrupt Controller"
528 depends on MACH_LOONGSON32
531 select GENERIC_IRQ_CHIP
533 Support for the Loongson-1 platform Interrupt Controller.
535 config TI_SCI_INTR_IRQCHIP
537 depends on TI_SCI_PROTOCOL
538 select IRQ_DOMAIN_HIERARCHY
540 This enables the irqchip driver support for K3 Interrupt router
541 over TI System Control Interface available on some new TI's SoCs.
542 If you wish to use interrupt router irq resources managed by the
543 TI System Controller, say Y here. Otherwise, say N.
545 config TI_SCI_INTA_IRQCHIP
547 depends on TI_SCI_PROTOCOL
548 select IRQ_DOMAIN_HIERARCHY
549 select TI_SCI_INTA_MSI_DOMAIN
551 This enables the irqchip driver support for K3 Interrupt aggregator
552 over TI System Control Interface available on some new TI's SoCs.
553 If you wish to use interrupt aggregator irq resources managed by the
554 TI System Controller, say Y here. Otherwise, say N.
562 This enables support for the PRU-ICSS Local Interrupt Controller
563 present within a PRU-ICSS subsystem present on various TI SoCs.
564 The PRUSS INTC enables various interrupts to be routed to multiple
565 different processors within the SoC.
570 select IRQ_DOMAIN_HIERARCHY
575 select IRQ_DOMAIN_HIERARCHY
577 config RISCV_APLIC_MSI
579 depends on RISCV_APLIC
580 select GENERIC_MSI_IRQ
586 select IRQ_DOMAIN_HIERARCHY
587 select GENERIC_IRQ_MATRIX_ALLOCATOR
588 select GENERIC_MSI_IRQ
590 config RISCV_IMSIC_PCI
592 depends on RISCV_IMSIC
600 select IRQ_DOMAIN_HIERARCHY
601 select GENERIC_IRQ_EFFECTIVE_AFF_MASK if SMP
603 config STARFIVE_JH8100_INTC
604 bool "StarFive JH8100 External Interrupt Controller"
605 depends on ARCH_STARFIVE || COMPILE_TEST
606 default ARCH_STARFIVE
607 select IRQ_DOMAIN_HIERARCHY
609 This enables support for the INTC chip found in StarFive JH8100
612 If you don't know what to do here, say Y.
614 config EXYNOS_IRQ_COMBINER
615 bool "Samsung Exynos IRQ combiner support" if COMPILE_TEST
616 depends on (ARCH_EXYNOS && ARM) || COMPILE_TEST
618 Say yes here to add support for the IRQ combiner devices embedded
619 in Samsung Exynos chips.
621 config IRQ_LOONGARCH_CPU
623 select GENERIC_IRQ_CHIP
625 select GENERIC_IRQ_EFFECTIVE_AFF_MASK if SMP
626 select LOONGSON_HTVEC
627 select LOONGSON_LIOINTC
628 select LOONGSON_EIOINTC
629 select LOONGSON_PCH_PIC
630 select LOONGSON_PCH_MSI
631 select LOONGSON_PCH_LPC
633 Support for the LoongArch CPU Interrupt Controller. For details of
634 irq chip hierarchy on LoongArch platforms please read the document
635 Documentation/arch/loongarch/irq-chip-model.rst.
637 config LOONGSON_LIOINTC
638 bool "Loongson Local I/O Interrupt Controller"
639 depends on MACH_LOONGSON64
642 select GENERIC_IRQ_CHIP
644 Support for the Loongson Local I/O Interrupt Controller.
646 config LOONGSON_EIOINTC
647 bool "Loongson Extend I/O Interrupt Controller"
649 depends on MACH_LOONGSON64
650 default MACH_LOONGSON64
651 select IRQ_DOMAIN_HIERARCHY
652 select GENERIC_IRQ_CHIP
654 Support for the Loongson3 Extend I/O Interrupt Vector Controller.
656 config LOONGSON_HTPIC
657 bool "Loongson3 HyperTransport PIC Controller"
658 depends on MACH_LOONGSON64 && MIPS
661 select GENERIC_IRQ_CHIP
663 Support for the Loongson-3 HyperTransport PIC Controller.
665 config LOONGSON_HTVEC
666 bool "Loongson HyperTransport Interrupt Vector Controller"
667 depends on MACH_LOONGSON64
668 default MACH_LOONGSON64
669 select IRQ_DOMAIN_HIERARCHY
671 Support for the Loongson HyperTransport Interrupt Vector Controller.
673 config LOONGSON_PCH_PIC
674 bool "Loongson PCH PIC Controller"
675 depends on MACH_LOONGSON64
676 default MACH_LOONGSON64
677 select IRQ_DOMAIN_HIERARCHY
678 select IRQ_FASTEOI_HIERARCHY_HANDLERS
680 Support for the Loongson PCH PIC Controller.
682 config LOONGSON_PCH_MSI
683 bool "Loongson PCH MSI Controller"
684 depends on MACH_LOONGSON64
686 default MACH_LOONGSON64
687 select IRQ_DOMAIN_HIERARCHY
690 Support for the Loongson PCH MSI Controller.
692 config LOONGSON_PCH_LPC
693 bool "Loongson PCH LPC Controller"
695 depends on MACH_LOONGSON64
696 default MACH_LOONGSON64
697 select IRQ_DOMAIN_HIERARCHY
699 Support for the Loongson PCH LPC Controller.
702 bool "MStar Interrupt Controller"
703 depends on ARCH_MEDIATEK || ARCH_MSTARV7 || COMPILE_TEST
704 default ARCH_MEDIATEK
706 select IRQ_DOMAIN_HIERARCHY
708 Support MStar Interrupt Controller.
711 bool "Nuvoton WPCM450 Advanced Interrupt Controller"
712 depends on ARCH_WPCM450
714 Support for the interrupt controller in the Nuvoton WPCM450 BMC SoC.
718 select GENERIC_IRQ_CHIP
722 bool "Apple Interrupt Controller (AIC)"
724 depends on ARCH_APPLE || COMPILE_TEST
725 select GENERIC_IRQ_IPI_MUX
727 Support for the Apple Interrupt Controller found on Apple Silicon SoCs,
731 bool "Microchip External Interrupt Controller"
732 depends on ARCH_AT91 || COMPILE_TEST
734 select IRQ_DOMAIN_HIERARCHY
736 Support for Microchip External Interrupt Controller.
738 config SUNPLUS_SP7021_INTC
739 bool "Sunplus SP7021 interrupt controller" if COMPILE_TEST
742 Support for the Sunplus SP7021 Interrupt Controller IP core.
743 SP7021 SoC has 2 Chips: C-Chip & P-Chip. This is used as a
744 chained controller, routing all interrupt source in P-Chip to
745 the primary controller on C-Chip.