# interrupt controller configuration options

# Copyright (c) 2015 Intel Corporation
# SPDX-License-Identifier: Apache-2.0

menu "Interrupt controller drivers"

config ARCV2_INTERRUPT_UNIT
	bool "ARCv2 Interrupt Unit"
	default y
	depends on ARC
	help
	  The ARCv2 interrupt unit has 16 allocated exceptions associated with
	  vectors 0 to 15 and 240 interrupts associated with vectors 16 to 255.
	  The interrupt unit is optional in the ARCv2-based processors. When
	  building a processor, you can configure the processor to include an
	  interrupt unit. The ARCv2 interrupt unit is highly programmable.

config SWERV_PIC
	bool "SweRV EH1 Programmable Interrupt Controller (PIC)"
	default y
	depends on DT_HAS_SWERV_PIC_ENABLED
	help
	  Programmable Interrupt Controller for the SweRV EH1 RISC-V CPU.

config VEXRISCV_LITEX_IRQ
	bool "VexRiscv LiteX Interrupt controller"
	default y
	depends on DT_HAS_LITEX_VEXRISCV_INTC0_ENABLED
	help
	  IRQ implementation for LiteX VexRiscv

config HAZARD3_INTC
	bool "Hazard3 interrupt controller"
	default y
	select PICOSDK_USE_CLAIM
	select RISCV_SOC_HAS_CUSTOM_IRQ_HANDLING
	depends on DT_HAS_HAZARD3_HAZARD3_INTC_ENABLED
	help
	  IRQ implementation for Hazard3 Interrupt Controller found on the RP2350 series SoCs

config LEON_IRQMP
	bool "GRLIB IRQMP interrupt controller"
	default y
	depends on DT_HAS_GAISLER_IRQMP_ENABLED
	help
	  GRLIB IRQMP and IRQAMP

config INTC_INIT_PRIORITY
	int "Interrupt controller init priority"
	default KERNEL_INIT_PRIORITY_DEFAULT
	help
	  Interrupt controller device initialization priority.

if MCHP_ECIA_XEC

config XEC_GIRQ_INIT_PRIORITY
	int "XEX GIRQ Interrupt controller init priority"
	default 41
	help
	  XEC GIRQ Interrupt controller device initialization priority.
	  The priority value needs to be greater than INTC_INIT_PRIORITY
	  So that the XEC GIRQ controllers are initialized after the
	  xec_ecia.

endif

module = INTC
module-str = intc
source "subsys/logging/Kconfig.template.log_config"

source "drivers/interrupt_controller/Kconfig.multilevel"

source "drivers/interrupt_controller/Kconfig.loapic"

source "drivers/interrupt_controller/Kconfig.dw"

source "drivers/interrupt_controller/Kconfig.it51xxx"

source "drivers/interrupt_controller/Kconfig.it8xxx2"

source "drivers/interrupt_controller/Kconfig.stm32"

source "drivers/interrupt_controller/Kconfig.cavs"

source "drivers/interrupt_controller/Kconfig.rv32m1"

source "drivers/interrupt_controller/Kconfig.sam0"

source "drivers/interrupt_controller/Kconfig.gic"

source "drivers/interrupt_controller/Kconfig.npcx"

source "drivers/interrupt_controller/Kconfig.intel_vtd"

source "drivers/interrupt_controller/Kconfig.esp32"

source "drivers/interrupt_controller/Kconfig.xec"

source "drivers/interrupt_controller/Kconfig.clic"

source "drivers/interrupt_controller/Kconfig.gd32_exti"

source "drivers/interrupt_controller/Kconfig.plic"

source "drivers/interrupt_controller/Kconfig.nxp_s32"

source "drivers/interrupt_controller/Kconfig.nxp_siul2"

source "drivers/interrupt_controller/Kconfig.xmc4xxx"

source "drivers/interrupt_controller/Kconfig.nxp_pint"

source "drivers/interrupt_controller/Kconfig.vim"

source "drivers/interrupt_controller/Kconfig.renesas_rz"

source "drivers/interrupt_controller/Kconfig.renesas_rx"

source "drivers/interrupt_controller/Kconfig.nxp_irqsteer"

source "drivers/interrupt_controller/Kconfig.mtk_adsp"

source "drivers/interrupt_controller/Kconfig.wch_pfic"

source "drivers/interrupt_controller/Kconfig.wch_exti"

endmenu
