# 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)"
	help
	  Programmable Interrupt Controller for the SweRV EH1 RISC-V CPU.

config VEXRISCV_LITEX_IRQ
	bool "VexRiscv LiteX Interrupt controller"
	depends on SOC_RISCV32_LITEX_VEXRISCV
	help
	  IRQ implementation for LiteX VexRiscv

config LEON_IRQMP
	bool "GRLIB IRQMP interrupt controller"
	default y
	depends on SOC_SPARC_LEON
	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
