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:
parent
c30600d4ab
commit
ff0625185f
3 changed files with 118 additions and 110 deletions
|
@ -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"
|
||||
|
|
39
drivers/interrupt_controller/Kconfig.dw
Normal file
39
drivers/interrupt_controller/Kconfig.dw
Normal 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
|
73
drivers/interrupt_controller/Kconfig.loapic
Normal file
73
drivers/interrupt_controller/Kconfig.loapic
Normal 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
|
Loading…
Add table
Add a link
Reference in a new issue