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>
diff --git a/drivers/interrupt_controller/Kconfig b/drivers/interrupt_controller/Kconfig
index 4cb3fd4..ca6f61c 100644
--- a/drivers/interrupt_controller/Kconfig
+++ b/drivers/interrupt_controller/Kconfig
@@ -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 @@
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 @@
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"
diff --git a/drivers/interrupt_controller/Kconfig.dw b/drivers/interrupt_controller/Kconfig.dw
new file mode 100644
index 0000000..34b9f7d
--- /dev/null
+++ b/drivers/interrupt_controller/Kconfig.dw
@@ -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
diff --git a/drivers/interrupt_controller/Kconfig.loapic b/drivers/interrupt_controller/Kconfig.loapic
new file mode 100644
index 0000000..251b6b0
--- /dev/null
+++ b/drivers/interrupt_controller/Kconfig.loapic
@@ -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