# 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 PLIC
	bool "Platform Level Interrupt Controller (PLIC)"
	default y
	depends on SOC_FAMILY_RISCV_PRIVILEGE
	select RISCV_HAS_PLIC
	select MULTI_LEVEL_INTERRUPTS
	select 2ND_LEVEL_INTERRUPTS
	help
	  Platform Level Interrupt Controller provides support
	  for external interrupt lines defined by the RISC-V SoC;

config PLIC_TARGET_INCR_OF_NEXT_HART
	int "The increased number of PLIC interrupt target of next hart"
	default 2
	depends on PLIC
	depends on SMP
	help
	  PLIC register is based on interrupt target (hart context), but
	  interrupt target doesn't directly map to RISCV hart. It refers
	  specific priv mode of specific hart. We suppose the increment
	  of PLIC target number of next RISCV hart is same, and we use
	  this option to map RISCV hart to PLIC target.

config SWERV_PIC
	bool "SweRV EH1 Programmable Interrupt Controller (PIC)"
	default n
	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

source "drivers/interrupt_controller/Kconfig.multilevel"

source "drivers/interrupt_controller/Kconfig.loapic"

source "drivers/interrupt_controller/Kconfig.dw"

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"

endmenu
