xref: /linux/drivers/irqchip/Kconfig (revision 5ea5880764cbb164afb17a62e76ca75dc371409d)
1# SPDX-License-Identifier: GPL-2.0-only
2menu "IRQ chip support"
3
4config IRQCHIP
5	def_bool y
6	depends on (OF_IRQ || ACPI_GENERIC_GSI)
7
8config ARM_GIC
9	bool
10	depends on OF
11	select IRQ_DOMAIN_HIERARCHY
12	select GENERIC_IRQ_EFFECTIVE_AFF_MASK if SMP
13
14config ARM_GIC_PM
15	bool
16	depends on PM
17	select ARM_GIC
18
19config ARM_GIC_MAX_NR
20	int
21	depends on ARM_GIC
22	default 2 if ARCH_REALVIEW
23	default 1
24
25config ARM_GIC_V2M
26	bool
27	depends on PCI
28	select ARM_GIC
29	select IRQ_MSI_LIB
30	select PCI_MSI
31	select IRQ_MSI_IOMMU
32
33config GIC_NON_BANKED
34	bool
35
36config ARM_GIC_V3
37	bool
38	select IRQ_DOMAIN_HIERARCHY
39	select GENERIC_IRQ_EFFECTIVE_AFF_MASK if SMP
40	select HAVE_ARM_SMCCC_DISCOVERY
41	select IRQ_MSI_IOMMU
42
43config ARM_GIC_ITS_PARENT
44	bool
45
46config ARM_GIC_V3_ITS
47	bool
48	select GENERIC_MSI_IRQ
49	select IRQ_MSI_LIB
50	select ARM_GIC_ITS_PARENT
51	default ARM_GIC_V3
52	select IRQ_MSI_IOMMU
53
54config ARM_GIC_V3_ITS_FSL_MC
55	bool
56	depends on ARM_GIC_V3_ITS
57	depends on FSL_MC_BUS
58	default ARM_GIC_V3_ITS
59
60config ARM_GIC_V5
61	bool
62	select IRQ_DOMAIN_HIERARCHY
63	select GENERIC_IRQ_EFFECTIVE_AFF_MASK
64	select GENERIC_MSI_IRQ
65	select IRQ_MSI_LIB
66	select ARM_GIC_ITS_PARENT
67
68config ARM_NVIC
69	bool
70	select IRQ_DOMAIN_HIERARCHY
71	select GENERIC_IRQ_CHIP
72
73config ARM_VIC
74	bool
75	select IRQ_DOMAIN
76
77config ARM_VIC_NR
78	int
79	default 4 if ARCH_S5PV210
80	default 2
81	depends on ARM_VIC
82	help
83	  The maximum number of VICs available in the system, for
84	  power management.
85
86config IRQ_MSI_LIB
87	bool
88	select GENERIC_MSI_IRQ
89
90config ARMADA_370_XP_IRQ
91	bool
92	select GENERIC_IRQ_CHIP
93	select PCI_MSI if PCI
94	select IRQ_MSI_LIB if PCI
95	select GENERIC_IRQ_EFFECTIVE_AFF_MASK if SMP
96
97config ALPINE_MSI
98	bool
99	depends on PCI
100	select PCI_MSI
101	select IRQ_MSI_LIB
102	select GENERIC_IRQ_CHIP
103
104config AL_FIC
105	bool "Amazon's Annapurna Labs Fabric Interrupt Controller"
106	depends on OF
107	depends on HAS_IOMEM
108	select GENERIC_IRQ_CHIP
109	select IRQ_DOMAIN
110	help
111	  Support Amazon's Annapurna Labs Fabric Interrupt Controller.
112
113config ATMEL_AIC_IRQ
114	bool
115	select GENERIC_IRQ_CHIP
116	select IRQ_DOMAIN
117	select SPARSE_IRQ
118
119config ATMEL_AIC5_IRQ
120	bool
121	select GENERIC_IRQ_CHIP
122	select IRQ_DOMAIN
123	select SPARSE_IRQ
124
125config I8259
126	bool
127	select IRQ_DOMAIN
128
129config BCM2712_MIP
130	tristate "Broadcom BCM2712 MSI-X Interrupt Peripheral support"
131	depends on ARCH_BRCMSTB || ARCH_BCM2835 || COMPILE_TEST
132	default m if ARCH_BRCMSTB || ARCH_BCM2835
133	depends on ARM_GIC
134	select GENERIC_IRQ_CHIP
135	select IRQ_DOMAIN_HIERARCHY
136	select GENERIC_MSI_IRQ
137	select IRQ_MSI_LIB
138	help
139	  Enable support for the Broadcom BCM2712 MSI-X target peripheral
140	  (MIP) needed by brcmstb PCIe to handle MSI-X interrupts on
141	  Raspberry Pi 5.
142
143	  If unsure say n.
144
145config BCM6345_L1_IRQ
146	bool
147	select GENERIC_IRQ_CHIP
148	select IRQ_DOMAIN
149	select GENERIC_IRQ_EFFECTIVE_AFF_MASK if SMP
150
151config BCM7038_L1_IRQ
152	tristate "Broadcom STB 7038-style L1/L2 interrupt controller driver"
153	depends on ARCH_BRCMSTB || BMIPS_GENERIC || COMPILE_TEST
154	default ARCH_BRCMSTB || BMIPS_GENERIC
155	select GENERIC_IRQ_CHIP
156	select IRQ_DOMAIN
157	select GENERIC_IRQ_EFFECTIVE_AFF_MASK if SMP
158
159config BCM7120_L2_IRQ
160	tristate "Broadcom STB 7120-style L2 interrupt controller driver"
161	depends on ARCH_BRCMSTB || BMIPS_GENERIC || COMPILE_TEST
162	default ARCH_BRCMSTB || BMIPS_GENERIC
163	select GENERIC_IRQ_CHIP
164	select IRQ_DOMAIN
165
166config BRCMSTB_L2_IRQ
167	tristate "Broadcom STB generic L2 interrupt controller driver"
168	depends on ARCH_BCM2835 || ARCH_BRCMSTB || BMIPS_GENERIC || COMPILE_TEST
169	default ARCH_BCM2835 || ARCH_BRCMSTB || BMIPS_GENERIC
170	select GENERIC_IRQ_CHIP
171	select IRQ_DOMAIN
172
173config DAVINCI_CP_INTC
174	bool
175	select GENERIC_IRQ_CHIP
176	select IRQ_DOMAIN
177
178config DW_APB_ICTL
179	bool
180	select GENERIC_IRQ_CHIP
181	select IRQ_DOMAIN_HIERARCHY
182
183config ECONET_EN751221_INTC
184	bool
185	select GENERIC_IRQ_CHIP
186	select IRQ_DOMAIN
187
188config FARADAY_FTINTC010
189	bool
190	select IRQ_DOMAIN
191	select SPARSE_IRQ
192
193config HISILICON_IRQ_MBIGEN
194	bool
195	select ARM_GIC_V3
196	select ARM_GIC_V3_ITS
197
198config IMGPDC_IRQ
199	bool
200	select GENERIC_IRQ_CHIP
201	select IRQ_DOMAIN
202
203config IXP4XX_IRQ
204	bool
205	select IRQ_DOMAIN
206	select SPARSE_IRQ
207
208config LAN966X_OIC
209	tristate "Microchip LAN966x OIC Support"
210	depends on MCHP_LAN966X_PCI || COMPILE_TEST
211	select GENERIC_IRQ_CHIP
212	select IRQ_DOMAIN
213	help
214	  Enable support for the LAN966x Outbound Interrupt Controller.
215	  This controller is present on the Microchip LAN966x PCI device and
216	  maps the internal interrupts sources to PCIe interrupt.
217
218	  To compile this driver as a module, choose M here: the module
219	  will be called irq-lan966x-oic.
220
221config MADERA_IRQ
222	tristate
223
224config IRQ_MIPS_CPU
225	bool
226	select GENERIC_IRQ_CHIP
227	select GENERIC_IRQ_IPI if SMP && SYS_SUPPORTS_MULTITHREADING
228	select IRQ_DOMAIN
229	select GENERIC_IRQ_EFFECTIVE_AFF_MASK if SMP
230
231config CLPS711X_IRQCHIP
232	bool
233	depends on ARCH_CLPS711X
234	select IRQ_DOMAIN
235	select SPARSE_IRQ
236	default y
237
238config OMPIC
239	bool
240
241config OR1K_PIC
242	bool
243	select IRQ_DOMAIN
244
245config OMAP_IRQCHIP
246	bool
247	select GENERIC_IRQ_CHIP
248	select IRQ_DOMAIN
249
250config ORION_IRQCHIP
251	bool
252	select IRQ_DOMAIN
253
254config PIC32_EVIC
255	def_bool MACH_PIC32 || COMPILE_TEST
256	select GENERIC_IRQ_CHIP
257	select IRQ_DOMAIN
258	help
259	  Enable support for the interrupt controller on the Microchip PIC32
260	  family of platforms.
261
262config JCORE_AIC
263	bool "J-Core integrated AIC" if COMPILE_TEST
264	depends on OF
265	select IRQ_DOMAIN
266	help
267	  Support for the J-Core integrated AIC.
268
269config RDA_INTC
270	bool
271	select IRQ_DOMAIN
272
273config RENESAS_INTC_IRQPIN
274	bool "Renesas INTC External IRQ Pin Support" if COMPILE_TEST
275	select IRQ_DOMAIN
276	help
277	  Enable support for the Renesas Interrupt Controller for external
278	  interrupt pins, as found on SH/R-Mobile and R-Car Gen1 SoCs.
279
280config RENESAS_IRQC
281	bool "Renesas R-Mobile APE6, R-Car Gen{2,3} and RZ/G{1,2} IRQC support" if COMPILE_TEST
282	select GENERIC_IRQ_CHIP
283	select IRQ_DOMAIN
284	help
285	  Enable support for the Renesas Interrupt Controller for external
286	  devices, as found on R-Mobile APE6, R-Car Gen{2,3} and RZ/G{1,2} SoCs.
287
288config RENESAS_RZA1_IRQC
289	bool "Renesas RZ/A1 IRQC support" if COMPILE_TEST
290	select IRQ_DOMAIN_HIERARCHY
291	help
292	  Enable support for the Renesas RZ/A1 Interrupt Controller, to use up
293	  to 8 external interrupts with configurable sense select.
294
295config RENESAS_RZG2L_IRQC
296	bool "Renesas RZ/G2L (and alike SoC) IRQC support" if COMPILE_TEST
297	select GENERIC_IRQ_CHIP
298	select IRQ_DOMAIN_HIERARCHY
299	help
300	  Enable support for the Renesas RZ/G2L (and alike SoC) Interrupt Controller
301	  for external devices.
302
303config RENESAS_RZT2H_ICU
304	bool "Renesas RZ/{T2H,N2H} ICU support" if COMPILE_TEST
305	select GENERIC_IRQ_CHIP
306	select IRQ_DOMAIN_HIERARCHY
307	help
308	  Enable support for the Renesas RZ/{T2H,N2H} Interrupt Controller
309	  (ICU).
310
311config RENESAS_RZV2H_ICU
312	bool "Renesas RZ/V2H(P) ICU support" if COMPILE_TEST
313	select GENERIC_IRQ_CHIP
314	select IRQ_DOMAIN_HIERARCHY
315	help
316	  Enable support for the Renesas RZ/V2H(P) Interrupt Control Unit (ICU)
317
318config SL28CPLD_INTC
319	bool "Kontron sl28cpld IRQ controller"
320	depends on MFD_SL28CPLD=y || COMPILE_TEST
321	select REGMAP_IRQ
322	help
323	  Interrupt controller driver for the board management controller
324	  found on the Kontron sl28 CPLD.
325
326config ST_IRQCHIP
327	bool
328	select REGMAP
329	select MFD_SYSCON
330	help
331	  Enables SysCfg Controlled IRQs on STi based platforms.
332
333config SUN4I_INTC
334	bool
335
336config SUN6I_R_INTC
337	bool
338	select IRQ_DOMAIN_HIERARCHY
339	select IRQ_FASTEOI_HIERARCHY_HANDLERS
340
341config SUNXI_NMI_INTC
342	bool
343	select GENERIC_IRQ_CHIP
344
345config TB10X_IRQC
346	bool
347	select IRQ_DOMAIN
348	select GENERIC_IRQ_CHIP
349
350config TS4800_IRQ
351	tristate "TS-4800 IRQ controller"
352	select IRQ_DOMAIN
353	depends on HAS_IOMEM
354	depends on SOC_IMX51 || COMPILE_TEST
355	help
356	  Support for the TS-4800 FPGA IRQ controller
357
358config VERSATILE_FPGA_IRQ
359	bool
360	select IRQ_DOMAIN
361
362config VERSATILE_FPGA_IRQ_NR
363       int
364       default 4
365       depends on VERSATILE_FPGA_IRQ
366
367config XTENSA_MX
368	bool
369	select IRQ_DOMAIN
370	select GENERIC_IRQ_EFFECTIVE_AFF_MASK if SMP
371
372config XILINX_INTC
373	bool "Xilinx Interrupt Controller IP"
374	depends on OF_ADDRESS
375	select IRQ_DOMAIN
376	help
377	  Support for the Xilinx Interrupt Controller IP core.
378	  This is used as a primary controller with MicroBlaze and can also
379	  be used as a secondary chained controller on other platforms.
380
381config IRQ_CROSSBAR
382	bool
383	help
384	  Support for a CROSSBAR ip that precedes the main interrupt controller.
385	  The primary irqchip invokes the crossbar's callback which inturn allocates
386	  a free irq and configures the IP. Thus the peripheral interrupts are
387	  routed to one of the free irqchip interrupt lines.
388
389config KEYSTONE_IRQ
390	tristate "Keystone 2 IRQ controller IP"
391	depends on ARCH_KEYSTONE
392	help
393		Support for Texas Instruments Keystone 2 IRQ controller IP which
394		is part of the Keystone 2 IPC mechanism
395
396config MIPS_GIC
397	bool
398	select GENERIC_IRQ_EFFECTIVE_AFF_MASK if SMP
399	select GENERIC_IRQ_IPI if SMP
400	select IRQ_DOMAIN_HIERARCHY
401	select MIPS_CM
402
403config INGENIC_IRQ
404	bool
405	depends on MACH_INGENIC
406	default y
407
408config INGENIC_TCU_IRQ
409	bool "Ingenic JZ47xx TCU interrupt controller"
410	default MACH_INGENIC
411	depends on MIPS || COMPILE_TEST
412	select MFD_SYSCON
413	select GENERIC_IRQ_CHIP
414	help
415	  Support for interrupts in the Timer/Counter Unit (TCU) of the Ingenic
416	  JZ47xx SoCs.
417
418	  If unsure, say N.
419
420config IMX_GPCV2
421	bool
422	select IRQ_DOMAIN
423	help
424	  Enables the wakeup IRQs for IMX platforms with GPCv2 block
425
426config IRQ_MXS
427	def_bool y if MACH_ASM9260 || ARCH_MXS
428	select IRQ_DOMAIN
429	select STMP_DEVICE
430
431config MSCC_OCELOT_IRQ
432	bool
433	select IRQ_DOMAIN
434	select GENERIC_IRQ_CHIP
435
436config MVEBU_GICP
437	select IRQ_MSI_LIB
438	bool
439
440config MVEBU_ICU
441	bool
442
443config MVEBU_ODMI
444	bool
445	select IRQ_MSI_LIB
446	select GENERIC_MSI_IRQ
447
448config MVEBU_PIC
449	bool
450
451config MVEBU_SEI
452        bool
453
454config LS_EXTIRQ
455	def_bool y if SOC_LS1021A || ARCH_LAYERSCAPE
456	select MFD_SYSCON
457
458config LS_SCFG_MSI
459	def_bool y if SOC_LS1021A || ARCH_LAYERSCAPE
460	select IRQ_MSI_IOMMU
461	depends on PCI_MSI
462	select IRQ_MSI_LIB
463
464config STM32MP_EXTI
465	tristate "STM32MP extended interrupts and event controller"
466	depends on (ARCH_STM32 && !ARM_SINGLE_ARMV7M) || COMPILE_TEST
467	default ARCH_STM32 && !ARM_SINGLE_ARMV7M
468	select IRQ_DOMAIN_HIERARCHY
469	select GENERIC_IRQ_CHIP
470	help
471	  Support STM32MP EXTI (extended interrupts and event) controller.
472
473config STM32_EXTI
474	bool
475	select IRQ_DOMAIN
476	select GENERIC_IRQ_CHIP
477
478config QCOM_IRQ_COMBINER
479	bool "QCOM IRQ combiner support"
480	depends on ARCH_QCOM && ACPI
481	select IRQ_DOMAIN_HIERARCHY
482	help
483	  Say yes here to add support for the IRQ combiner devices embedded
484	  in Qualcomm Technologies chips.
485
486config IRQ_UNIPHIER_AIDET
487	bool "UniPhier AIDET support" if COMPILE_TEST
488	depends on ARCH_UNIPHIER || COMPILE_TEST
489	default ARCH_UNIPHIER
490	select IRQ_DOMAIN_HIERARCHY
491	help
492	  Support for the UniPhier AIDET (ARM Interrupt Detector).
493
494config MESON_IRQ_GPIO
495       tristate "Meson GPIO Interrupt Multiplexer"
496       depends on ARCH_MESON || COMPILE_TEST
497       default ARCH_MESON
498       select IRQ_DOMAIN_HIERARCHY
499       help
500         Support Meson SoC Family GPIO Interrupt Multiplexer
501
502config GOLDFISH_PIC
503       bool "Goldfish programmable interrupt controller"
504       depends on MIPS && (GOLDFISH || COMPILE_TEST)
505       select GENERIC_IRQ_CHIP
506       select IRQ_DOMAIN
507       help
508         Say yes here to enable Goldfish interrupt controller driver used
509         for Goldfish based virtual platforms.
510
511config QCOM_PDC
512	tristate "QCOM PDC"
513	depends on ARCH_QCOM
514	select IRQ_DOMAIN_HIERARCHY
515	help
516	  Power Domain Controller driver to manage and configure wakeup
517	  IRQs for Qualcomm Technologies Inc (QTI) mobile chips.
518
519config QCOM_MPM
520	tristate "QCOM MPM"
521	depends on ARCH_QCOM
522	depends on MAILBOX
523	select IRQ_DOMAIN_HIERARCHY
524	help
525	  MSM Power Manager driver to manage and configure wakeup
526	  IRQs for Qualcomm Technologies Inc (QTI) mobile chips.
527
528config CSKY_MPINTC
529	bool
530	depends on CSKY
531	help
532	  Say yes here to enable C-SKY SMP interrupt controller driver used
533	  for C-SKY SMP system.
534	  In fact it's not mmio map in hardware and it uses ld/st to visit the
535	  controller's register inside CPU.
536
537config CSKY_APB_INTC
538	bool "C-SKY APB Interrupt Controller"
539	depends on CSKY
540	help
541	  Say yes here to enable C-SKY APB interrupt controller driver used
542	  by C-SKY single core SOC system. It uses mmio map apb-bus to visit
543	  the controller's register.
544
545config IMX_IRQSTEER
546	bool "i.MX IRQSTEER support"
547	depends on ARCH_MXC || ARCH_S32 || COMPILE_TEST
548	default y if ARCH_MXC || ARCH_S32
549	select IRQ_DOMAIN
550	help
551	  Support for the i.MX and S32 IRQSTEER interrupt multiplexer/remapper.
552
553config IMX_INTMUX
554	bool "i.MX INTMUX support" if COMPILE_TEST
555	default y if ARCH_MXC
556	select IRQ_DOMAIN
557	help
558	  Support for the i.MX INTMUX interrupt multiplexer.
559
560config IMX_MU_MSI
561	tristate "i.MX MU used as MSI controller"
562	depends on OF && HAS_IOMEM
563	depends on ARCH_MXC || COMPILE_TEST
564	depends on ARM || ARM64
565	default m if ARCH_MXC
566	select IRQ_DOMAIN
567	select IRQ_DOMAIN_HIERARCHY
568	select GENERIC_MSI_IRQ
569	select IRQ_MSI_LIB
570	help
571	  Provide a driver for the i.MX Messaging Unit block used as a
572	  CPU-to-CPU MSI controller. This requires a specially crafted DT
573	  to make use of this driver.
574
575	  If unsure, say N
576
577config LS1X_IRQ
578	bool "Loongson-1 Interrupt Controller"
579	depends on MACH_LOONGSON32
580	default y
581	select IRQ_DOMAIN
582	select GENERIC_IRQ_CHIP
583	help
584	  Support for the Loongson-1 platform Interrupt Controller.
585
586config TI_SCI_INTR_IRQCHIP
587	tristate "TI SCI INTR Interrupt Controller"
588	depends on TI_SCI_PROTOCOL
589	depends on ARCH_K3 || COMPILE_TEST
590	select IRQ_DOMAIN_HIERARCHY
591	help
592	  This enables the irqchip driver support for K3 Interrupt router
593	  over TI System Control Interface available on some new TI's SoCs.
594	  If you wish to use interrupt router irq resources managed by the
595	  TI System Controller, say Y here. Otherwise, say N.
596
597config TI_SCI_INTA_IRQCHIP
598	tristate "TI SCI INTA Interrupt Controller"
599	depends on TI_SCI_PROTOCOL
600	depends on ARCH_K3 || (COMPILE_TEST && ARM64)
601	select IRQ_DOMAIN_HIERARCHY
602	select TI_SCI_INTA_MSI_DOMAIN
603	help
604	  This enables the irqchip driver support for K3 Interrupt aggregator
605	  over TI System Control Interface available on some new TI's SoCs.
606	  If you wish to use interrupt aggregator irq resources managed by the
607	  TI System Controller, say Y here. Otherwise, say N.
608
609config TI_PRUSS_INTC
610	tristate
611	depends on TI_PRUSS
612	default TI_PRUSS
613	select IRQ_DOMAIN
614	help
615	  This enables support for the PRU-ICSS Local Interrupt Controller
616	  present within a PRU-ICSS subsystem present on various TI SoCs.
617	  The PRUSS INTC enables various interrupts to be routed to multiple
618	  different processors within the SoC.
619
620config RISCV_INTC
621	bool
622	depends on RISCV
623	select IRQ_DOMAIN_HIERARCHY
624
625config RISCV_APLIC
626	bool
627	depends on RISCV
628	select IRQ_DOMAIN_HIERARCHY
629
630config RISCV_APLIC_MSI
631	bool
632	depends on RISCV_APLIC
633	select GENERIC_MSI_IRQ
634	default RISCV_APLIC
635
636config RISCV_IMSIC
637	bool
638	depends on RISCV
639	select IRQ_DOMAIN_HIERARCHY
640	select GENERIC_IRQ_MATRIX_ALLOCATOR
641	select GENERIC_MSI_IRQ
642	select IRQ_MSI_LIB
643
644config RISCV_RPMI_SYSMSI
645	bool
646	depends on RISCV && MAILBOX
647	select IRQ_DOMAIN_HIERARCHY
648	select GENERIC_MSI_IRQ
649	default RISCV
650
651config SIFIVE_PLIC
652	bool
653	depends on RISCV
654	select IRQ_DOMAIN_HIERARCHY
655	select GENERIC_IRQ_EFFECTIVE_AFF_MASK if SMP
656
657config STARFIVE_JH8100_INTC
658	bool "StarFive JH8100 External Interrupt Controller"
659	depends on ARCH_STARFIVE || COMPILE_TEST
660	default ARCH_STARFIVE
661	select IRQ_DOMAIN_HIERARCHY
662	help
663	  This enables support for the INTC chip found in StarFive JH8100
664	  SoC.
665
666	  If you don't know what to do here, say Y.
667
668config ACLINT_SSWI
669	bool "RISC-V ACLINT S-mode IPI Interrupt Controller"
670	depends on RISCV
671	depends on SMP
672	select IRQ_DOMAIN_HIERARCHY
673	select GENERIC_IRQ_IPI_MUX
674	help
675	  This enables support for variants of the RISC-V ACLINT-SSWI device.
676	  Supported variants are:
677	  - T-HEAD, with compatible "thead,c900-aclint-sswi"
678	  - MIPS P8700, with compatible "mips,p8700-aclint-sswi"
679
680	  If you don't know what to do here, say Y.
681
682# Backwards compatibility so oldconfig does not drop it.
683config THEAD_C900_ACLINT_SSWI
684	bool
685	select ACLINT_SSWI
686
687config EXYNOS_IRQ_COMBINER
688	bool "Samsung Exynos IRQ combiner support" if COMPILE_TEST
689	depends on (ARCH_EXYNOS && ARM) || COMPILE_TEST
690	help
691	  Say yes here to add support for the IRQ combiner devices embedded
692	  in Samsung Exynos chips.
693
694config IRQ_LOONGARCH_CPU
695	bool
696	select GENERIC_IRQ_CHIP
697	select IRQ_DOMAIN
698	select GENERIC_IRQ_EFFECTIVE_AFF_MASK if SMP
699	select LOONGSON_HTVEC
700	select LOONGSON_LIOINTC
701	select LOONGSON_EIOINTC
702	select LOONGSON_PCH_PIC
703	select LOONGSON_PCH_MSI
704	select LOONGSON_PCH_LPC
705	help
706	  Support for the LoongArch CPU Interrupt Controller. For details of
707	  irq chip hierarchy on LoongArch platforms please read the document
708	  Documentation/arch/loongarch/irq-chip-model.rst.
709
710config LOONGSON_LIOINTC
711	bool "Loongson Local I/O Interrupt Controller"
712	depends on MACH_LOONGSON64 || LOONGARCH
713	default y
714	select IRQ_DOMAIN
715	select GENERIC_IRQ_CHIP
716	help
717	  Support for the Loongson Local I/O Interrupt Controller.
718
719config LOONGSON_EIOINTC
720	bool "Loongson Extend I/O Interrupt Controller"
721	depends on LOONGARCH
722	default MACH_LOONGSON64
723	select IRQ_DOMAIN_HIERARCHY
724	select GENERIC_IRQ_CHIP
725	help
726	  Support for the Loongson3 Extend I/O Interrupt Vector Controller.
727
728config LOONGSON_HTPIC
729	bool "Loongson3 HyperTransport PIC Controller"
730	depends on MACH_LOONGSON64 && MIPS
731	default y
732	select IRQ_DOMAIN
733	select GENERIC_IRQ_CHIP
734	help
735	  Support for the Loongson-3 HyperTransport PIC Controller.
736
737config LOONGSON_HTVEC
738	bool "Loongson HyperTransport Interrupt Vector Controller"
739	depends on MACH_LOONGSON64 || LOONGARCH
740	default MACH_LOONGSON64
741	select IRQ_DOMAIN_HIERARCHY
742	help
743	  Support for the Loongson HyperTransport Interrupt Vector Controller.
744
745config LOONGSON_PCH_PIC
746	bool "Loongson PCH PIC Controller"
747	depends on MACH_LOONGSON64 || LOONGARCH
748	default MACH_LOONGSON64
749	select IRQ_DOMAIN_HIERARCHY
750	select IRQ_FASTEOI_HIERARCHY_HANDLERS
751	help
752	  Support for the Loongson PCH PIC Controller.
753
754config LOONGSON_PCH_MSI
755	bool "Loongson PCH MSI Controller"
756	depends on MACH_LOONGSON64 || LOONGARCH
757	depends on PCI
758	default MACH_LOONGSON64
759	select IRQ_DOMAIN_HIERARCHY
760	select IRQ_MSI_LIB
761	select PCI_MSI
762	help
763	  Support for the Loongson PCH MSI Controller.
764
765config LOONGSON_PCH_LPC
766	bool "Loongson PCH LPC Controller"
767	depends on MACH_LOONGSON64 || LOONGARCH
768	default MACH_LOONGSON64
769	select IRQ_DOMAIN_HIERARCHY
770	help
771	  Support for the Loongson PCH LPC Controller.
772
773config MST_IRQ
774	bool "MStar Interrupt Controller"
775	depends on ARCH_MEDIATEK || ARCH_MSTARV7 || COMPILE_TEST
776	default ARCH_MEDIATEK
777	select IRQ_DOMAIN
778	select IRQ_DOMAIN_HIERARCHY
779	help
780	  Support MStar Interrupt Controller.
781
782config WPCM450_AIC
783	bool "Nuvoton WPCM450 Advanced Interrupt Controller"
784	depends on ARCH_WPCM450
785	help
786	  Support for the interrupt controller in the Nuvoton WPCM450 BMC SoC.
787
788config IRQ_IDT3243X
789	bool
790	select GENERIC_IRQ_CHIP
791	select IRQ_DOMAIN
792
793config APPLE_AIC
794	bool "Apple Interrupt Controller (AIC)"
795	depends on ARM64
796	depends on ARCH_APPLE || COMPILE_TEST
797	select GENERIC_IRQ_IPI_MUX
798	help
799	  Support for the Apple Interrupt Controller found on Apple Silicon SoCs,
800	  such as the M1.
801
802config MCHP_EIC
803	bool "Microchip External Interrupt Controller"
804	depends on ARCH_AT91 || COMPILE_TEST
805	select IRQ_DOMAIN
806	select IRQ_DOMAIN_HIERARCHY
807	help
808	  Support for Microchip External Interrupt Controller.
809
810config SOPHGO_SG2042_MSI
811	bool "Sophgo SG2042 MSI Controller"
812	depends on ARCH_SOPHGO || COMPILE_TEST
813	depends on PCI
814	select IRQ_DOMAIN_HIERARCHY
815	select IRQ_MSI_LIB
816	select PCI_MSI
817	help
818	  Support for the Sophgo SG2042 MSI Controller.
819	  This on-chip interrupt controller enables MSI sources to be
820	  routed to the primary PLIC controller on SoC.
821
822config SUNPLUS_SP7021_INTC
823	bool "Sunplus SP7021 interrupt controller" if COMPILE_TEST
824	default SOC_SP7021
825	help
826	  Support for the Sunplus SP7021 Interrupt Controller IP core.
827	  SP7021 SoC has 2 Chips: C-Chip & P-Chip. This is used as a
828	  chained controller, routing all interrupt source in P-Chip to
829	  the primary controller on C-Chip.
830
831endmenu
832