drivers/interrupt_controller: Split Kconfig for clarity

Let's move loapic and dw related options into there own Kconfig file.

Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
This commit is contained in:
Tomasz Bursztyka 2019-12-18 09:42:14 +01:00 committed by Carles Cufí
commit ff0625185f
3 changed files with 118 additions and 110 deletions

View file

@ -5,77 +5,6 @@
menu "Interrupt Controllers"
menuconfig LOAPIC
bool "LOAPIC"
depends on X86
help
This option selects local APIC as the interrupt controller.
if LOAPIC
config LOAPIC_BASE_ADDRESS
hex "Local APIC Base Address"
default 0xFEE00000
help
This option specifies the base address of the Local APIC device.
config X2APIC
bool "Access local APIC in x2APIC mode"
help
If your local APIC supports x2APIC mode, turn this on.
config LOAPIC_SPURIOUS_VECTOR
bool "Handle LOAPIC spurious interrupts"
help
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.
config LOAPIC_SPURIOUS_VECTOR_ID
int "LOAPIC spurious vector ID"
default -1
depends on LOAPIC_SPURIOUS_VECTOR
help
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.
config IOAPIC
bool "IO-APIC"
default y
help
This option signifies that the target has an IO-APIC device. This
capability allows IO-APIC-dependent code to be included.
config IOAPIC_NUM_RTES
int "Number of Redirection Table Entries available"
default 24
depends on IOAPIC
help
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.
config IOAPIC_MASK_RTE
bool "Mask out RTE entries on boot"
default y
depends on IOAPIC
help
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.
endif # LOAPIC
config ARCV2_INTERRUPT_UNIT
bool "ARCv2 Interrupt Unit"
default y
@ -110,43 +39,6 @@ config VEXRISCV_LITEX_IRQ
help
IRQ implementation for LiteX VexRiscv
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
int "Parent interrupt number to which DW_ICTL maps"
default 0
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.
config GIC
bool "ARM Generic Interrupt Controller (GIC)"
depends on CPU_CORTEX_R
@ -154,10 +46,14 @@ config GIC
The ARM Generic Interrupt Controller works with Cortex-A and
Cortex-R processors.
source "drivers/interrupt_controller/Kconfig.stm32"
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.s1000"
source "drivers/interrupt_controller/Kconfig.rv32m1"

View file

@ -0,0 +1,39 @@
# Copyright (c) 2019 Intel Corporation
# SPDX-License-Identifier: Apache-2.0
menuconfig 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.
if DW_ICTL
config DW_ICTL_NAME
string "Name for Designware Interrupt Controller"
default "DW_ICTL"
help
Give a name for the instance of Designware Interrupt Controller
config DW_ICTL_OFFSET
int "Parent interrupt number to which DW_ICTL maps"
default 0
help
Parent interrupt number to which DW_ICTL maps
config DW_ISR_TBL_OFFSET
int "Offset in the SW ISR Table"
default 0
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
help
DesignWare Interrupt Controller initialization priority.
endif # DW_ICTL

View file

@ -0,0 +1,73 @@
# Copyright (c) 2019 Intel Corporation
# SPDX-License-Identifier: Apache-2.0
menuconfig LOAPIC
bool "LOAPIC"
depends on X86
help
This option selects local APIC as the interrupt controller.
if LOAPIC
config LOAPIC_BASE_ADDRESS
hex "Local APIC Base Address"
default 0xFEE00000
help
This option specifies the base address of the Local APIC device.
config X2APIC
bool "Access local APIC in x2APIC mode"
help
If your local APIC supports x2APIC mode, turn this on.
config LOAPIC_SPURIOUS_VECTOR
bool "Handle LOAPIC spurious interrupts"
help
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.
config LOAPIC_SPURIOUS_VECTOR_ID
int "LOAPIC spurious vector ID"
default -1
depends on LOAPIC_SPURIOUS_VECTOR
help
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.
config IOAPIC
bool "IO-APIC"
default y
help
This option signifies that the target has an IO-APIC device. This
capability allows IO-APIC-dependent code to be included.
config IOAPIC_NUM_RTES
int "Number of Redirection Table Entries available"
default 24
depends on IOAPIC
help
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.
config IOAPIC_MASK_RTE
bool "Mask out RTE entries on boot"
default y
depends on IOAPIC
help
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.
endif # LOAPIC