2015-06-15 21:20:24 +08:00
|
|
|
# Kconfig - interrupt controller configuration options
|
|
|
|
|
|
|
|
#
|
|
|
|
# Copyright (c) 2015 Intel Corporation
|
|
|
|
#
|
2017-01-19 09:01:01 +08:00
|
|
|
# SPDX-License-Identifier: Apache-2.0
|
2015-06-15 21:20:24 +08:00
|
|
|
#
|
|
|
|
|
|
|
|
menu "Interrupt Controllers"
|
|
|
|
|
2019-01-19 20:40:49 +08:00
|
|
|
menuconfig LOAPIC
|
2015-06-06 00:11:24 +08:00
|
|
|
bool "LOAPIC"
|
2015-10-09 18:20:52 +08:00
|
|
|
depends on X86
|
2015-06-06 00:11:24 +08:00
|
|
|
help
|
2017-12-13 23:08:21 +08:00
|
|
|
This option selects local APIC as the interrupt controller.
|
2019-01-19 20:40:49 +08:00
|
|
|
if LOAPIC
|
2015-07-28 01:56:53 +08:00
|
|
|
config LOAPIC_BASE_ADDRESS
|
|
|
|
hex "Local APIC Base Address"
|
|
|
|
default 0xFEE00000
|
|
|
|
help
|
2017-12-13 23:08:21 +08:00
|
|
|
This option specifies the base address of the Local APIC device.
|
2015-07-28 01:56:53 +08:00
|
|
|
|
2019-06-06 01:28:38 +08:00
|
|
|
config X2APIC
|
|
|
|
bool "Access local APIC in x2APIC mode"
|
|
|
|
default n
|
|
|
|
help
|
|
|
|
If your local APIC supports x2APIC mode, turn this on.
|
|
|
|
|
2015-12-10 06:53:41 +08:00
|
|
|
config LOAPIC_SPURIOUS_VECTOR
|
|
|
|
bool "Handle LOAPIC spurious interrupts"
|
|
|
|
help
|
2017-12-13 23:08:21 +08:00
|
|
|
A special situation may occur when a processor raises its task
|
|
|
|
priority to be greater than or equal to the level of the
|
|
|
|
interrupt for which the processor INTR signal is currently being
|
|
|
|
asserted. If at the time the INTA cycle is issued, the
|
|
|
|
interrupt that was to be dispensed has become masked (programmed
|
|
|
|
by software), the local APIC will deliver a spurious-interrupt
|
|
|
|
vector. Dispensing the spurious-interrupt vector does not affect
|
|
|
|
the ISR, so the handler for this vector should return without an EOI.
|
|
|
|
From x86 manual Volume 3 Section 10.9.
|
2015-12-10 06:53:41 +08:00
|
|
|
|
|
|
|
config LOAPIC_SPURIOUS_VECTOR_ID
|
|
|
|
int "LOAPIC spurious vector ID"
|
|
|
|
default -1
|
|
|
|
depends on LOAPIC_SPURIOUS_VECTOR
|
|
|
|
help
|
2017-12-13 23:08:21 +08:00
|
|
|
IDT vector to use for spurious LOAPIC interrupts. Note that some
|
|
|
|
arches (P6, Pentium) ignore the low 4 bits and fix them at 0xF.
|
|
|
|
If this value is left at -1 the last entry in the IDT will be used.
|
2015-12-10 06:53:41 +08:00
|
|
|
|
2015-07-23 23:46:25 +08:00
|
|
|
config IOAPIC
|
2015-08-11 21:08:59 +08:00
|
|
|
bool "IO-APIC"
|
2015-07-29 01:24:23 +08:00
|
|
|
default y
|
2015-06-06 01:48:18 +08:00
|
|
|
help
|
2017-12-13 23:08:21 +08:00
|
|
|
This option signifies that the target has an IO-APIC device. This
|
|
|
|
capability allows IO-APIC-dependent code to be included.
|
2015-06-06 01:48:18 +08:00
|
|
|
|
2015-08-11 21:08:59 +08:00
|
|
|
config IOAPIC_DEBUG
|
|
|
|
bool "IO-APIC Debugging"
|
|
|
|
depends on IOAPIC
|
|
|
|
help
|
2017-12-13 23:08:21 +08:00
|
|
|
Enable debugging for IO-APIC driver.
|
2015-08-11 21:08:59 +08:00
|
|
|
|
2015-07-28 01:56:53 +08:00
|
|
|
config IOAPIC_NUM_RTES
|
|
|
|
int "Number of Redirection Table Entries available"
|
|
|
|
default 24
|
|
|
|
depends on IOAPIC
|
|
|
|
help
|
2017-12-13 23:08:21 +08:00
|
|
|
This option indicates the maximum number of Redirection Table Entries
|
|
|
|
(RTEs) (one per IRQ available to the IO-APIC) made available to the
|
|
|
|
kernel, regardless of the number provided by the hardware itself. For
|
|
|
|
most efficient usage of memory, it should match the number of IRQ lines
|
|
|
|
needed by devices connected to the IO-APIC.
|
2015-07-28 01:56:53 +08:00
|
|
|
|
2016-09-23 00:46:35 +08:00
|
|
|
config IOAPIC_MASK_RTE
|
|
|
|
bool "Mask out RTE entries on boot"
|
|
|
|
default y
|
|
|
|
depends on IOAPIC
|
|
|
|
help
|
2017-12-13 23:08:21 +08:00
|
|
|
At boot, mask all IOAPIC RTEs if they may be in an undefined state.
|
|
|
|
You don't need this if the RTEs are either all guaranteed to be masked
|
|
|
|
when the OS starts up, or a previous boot stage has done some IOAPIC
|
|
|
|
configuration that needs to be preserved.
|
2016-09-23 00:46:35 +08:00
|
|
|
|
2019-01-19 20:40:49 +08:00
|
|
|
endif #LOAPIC
|
|
|
|
|
2015-06-20 21:26:06 +08:00
|
|
|
config ARCV2_INTERRUPT_UNIT
|
|
|
|
bool "ARCv2 Interrupt Unit"
|
|
|
|
default y
|
|
|
|
depends on ARC
|
|
|
|
help
|
2017-12-13 23:08:21 +08:00
|
|
|
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.
|
2016-03-14 23:29:46 +08:00
|
|
|
|
2018-06-11 01:02:14 +08:00
|
|
|
config PLIC
|
|
|
|
bool "Platform Level Interrupt Controller (PLIC)"
|
2017-03-15 05:16:30 +08:00
|
|
|
default y
|
2018-10-14 22:37:38 +08:00
|
|
|
depends on SOC_FAMILY_RISCV_PRIVILEGE
|
2017-03-15 05:16:30 +08:00
|
|
|
select RISCV_HAS_PLIC
|
|
|
|
help
|
2018-06-11 01:02:14 +08:00
|
|
|
Platform Level Interrupt Controller provides support
|
|
|
|
for external interrupt lines defined by the RISC-V SoC;
|
2017-03-15 05:16:30 +08:00
|
|
|
|
2019-03-28 21:44:12 +08:00
|
|
|
config VEXRISCV_LITEX_IRQ
|
|
|
|
bool "VexRiscv LiteX Interrupt controller"
|
|
|
|
depends on SOC_RISCV32_LITEX_VEXRISCV
|
|
|
|
help
|
|
|
|
IRQ implementation for LiteX VexRiscv
|
|
|
|
|
2017-10-12 18:14:48 +08:00
|
|
|
config DW_ICTL
|
|
|
|
bool "Designware Interrupt Controller"
|
|
|
|
depends on MULTI_LEVEL_INTERRUPTS
|
|
|
|
help
|
|
|
|
Designware Interrupt Controller can be used as a 2nd level interrupt
|
|
|
|
controller which combines several sources of interrupt into one line
|
|
|
|
that is then routed to the 1st level interrupt controller.
|
|
|
|
|
|
|
|
config DW_ICTL_NAME
|
|
|
|
string "Name for Designware Interrupt Controller"
|
|
|
|
depends on DW_ICTL
|
|
|
|
default "DW_ICTL"
|
|
|
|
help
|
|
|
|
Give a name for the instance of Designware Interrupt Controller
|
|
|
|
|
|
|
|
config DW_ICTL_OFFSET
|
2018-11-25 14:43:06 +08:00
|
|
|
int "Parent interrupt number to which DW_ICTL maps"
|
|
|
|
default 0
|
2017-10-12 18:14:48 +08:00
|
|
|
depends on DW_ICTL
|
|
|
|
help
|
|
|
|
Parent interrupt number to which DW_ICTL maps
|
|
|
|
|
|
|
|
config DW_ISR_TBL_OFFSET
|
|
|
|
int "Offset in the SW ISR Table"
|
|
|
|
default 0
|
|
|
|
depends on DW_ICTL
|
|
|
|
help
|
|
|
|
This indicates the offset in the SW_ISR_TABLE beginning from where
|
|
|
|
the ISRs for Designware Interrupt Controller are assigned.
|
|
|
|
|
|
|
|
config DW_ICTL_INIT_PRIORITY
|
|
|
|
int "Init priority for DW interrupt controller"
|
|
|
|
default 60
|
|
|
|
depends on DW_ICTL
|
|
|
|
help
|
|
|
|
DesignWare Interrupt Controller initialization priority.
|
|
|
|
|
2018-04-18 17:13:06 +08:00
|
|
|
config GIC
|
|
|
|
bool "ARM Generic Interrupt Controller (GIC)"
|
|
|
|
depends on CPU_CORTEX_R
|
|
|
|
help
|
|
|
|
The ARM Generic Interrupt Controller works with Cortex-A and
|
|
|
|
Cortex-R processors.
|
|
|
|
|
2016-03-14 23:29:46 +08:00
|
|
|
source "drivers/interrupt_controller/Kconfig.stm32"
|
|
|
|
|
2017-12-24 17:48:57 +08:00
|
|
|
source "drivers/interrupt_controller/Kconfig.multilevel"
|
|
|
|
|
2017-10-12 01:06:20 +08:00
|
|
|
source "drivers/interrupt_controller/Kconfig.s1000"
|
|
|
|
|
2018-11-25 17:41:38 +08:00
|
|
|
source "drivers/interrupt_controller/Kconfig.rv32m1"
|
|
|
|
|
2019-03-02 10:29:07 +08:00
|
|
|
source "drivers/interrupt_controller/Kconfig.sam0"
|
|
|
|
|
2015-06-15 21:20:24 +08:00
|
|
|
endmenu
|