# interrupt controller configuration options

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

menu "Interrupt Controllers"

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_VEXRISCV_INTC0_ENABLED
	help
	  IRQ implementation for LiteX VexRiscv

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.

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.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.esp32c3"

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"

endmenu
