zephyr/drivers/interrupt_controller
Stephanos Ioannidis 50519ce7ba interrupt_controller: gic: Refactor GIC driver interface
The current Generic Interrupt Controller (GIC) driver makes use of the
multi-level interrupt mechanism and `irq_nextlevel` public interface.

This is a less-than-ideal implementation for the following reasons:

1. The GIC is often used as the main interrupt controller for the
  Cortex-A and Cortex-R family SoCs and, in this case, it is not a 2nd
  level interrupt controller; in fact, it is the root interrupt
  controller and therefore should be treated as such.

2. The only reason for using `irq_nextlevel` here is to interface the
  architecture implementation to the interrupt controller functions.
  Since there is no nesting or multiple instances of an interrupt
  controller involved, there is really no point in adding such an
  abstraction.

3. 2nd level topology adds many unnecessary abstractions and results
  in strange coding artefacts as well as performance penalty due to
  additional branching.

This commit refactors the GIC driver interface as follows:

1. Remove the current GIC driver interface based on the multi-level
  interrupt mechanism and the `irq_nextlevel` public interface.

2. Define the GIC driver interface in
  `include/drivers/interrupt_controller/gic.h` and allow the arch
  implementation to directly invoke this interface.

Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
2020-03-13 09:59:59 +01:00
..
CMakeLists.txt interrupt_controller: gic: Support multiple GIC versions 2019-12-19 11:05:27 -05:00
intc_arcv2_irq_unit.c drivers/interrupt_controller: Adopt file naming as other drivers 2019-12-18 21:49:46 +01:00
intc_cavs.c drivers/interrupt_controller: Adopt file naming as other drivers 2019-12-18 21:49:46 +01:00
intc_cavs.h drivers/interrupt_controller: Adopt file naming as other drivers 2019-12-18 21:49:46 +01:00
intc_dw.c driver: interrupt_controller: dw: convert to DT_INST defines 2020-03-11 07:59:38 -06:00
intc_dw.h intel_s1000: various fixes for build errors 2020-01-31 14:51:37 -05:00
intc_exti_stm32.c drivers: interrupt_controller: stm32: Missing break statement 2020-02-12 10:01:11 -06:00
intc_gic.c interrupt_controller: gic: Refactor GIC driver interface 2020-03-13 09:59:59 +01:00
intc_ioapic.c drivers: intc: ioapic: convert to DT_INST defines 2020-03-11 16:36:21 -06:00
intc_ioapic_priv.h drivers/interrupt_controller: Adopt file naming as other drivers 2019-12-18 21:49:46 +01:00
intc_loapic.c revert: "program local APIC LDR register for..." 2020-02-19 14:40:19 -08:00
intc_loapic_spurious.S drivers/interrupt_controller: Adopt file naming as other drivers 2019-12-18 21:49:46 +01:00
intc_plic.c drivers: intc: plic: convert to DT_INST defines 2020-03-11 07:59:38 -06:00
intc_rv32m1_intmux.c driver: interrupt_controller: Filter invalid channel for RV32M1 SOC 2020-01-16 07:10:23 -06:00
intc_sam0_eic.c include/drivers: Move 2 specific intc headers into public location 2019-12-18 21:49:46 +01:00
intc_sam0_eic_priv.h drivers/interrupt_controller: Adopt file naming as other drivers 2019-12-18 21:49:46 +01:00
intc_shared_irq.c drivers/interrupt_controller: Adopt file naming as other drivers 2019-12-18 21:49:46 +01:00
intc_swerv_pic.c drivers/interrupt_controller: Adopt file naming as other drivers 2019-12-18 21:49:46 +01:00
intc_system_apic.c drivers/interrupt_controller: Adopt file naming as other drivers 2019-12-18 21:49:46 +01:00
intc_vexriscv_litex.c riscv: use standard MSTATUS 2020-01-06 13:27:45 -05:00
Kconfig drivers: interrupt_controller: Refactor GIC configurations 2019-12-19 11:05:27 -05:00
Kconfig.cavs drivers/interrupt_controller: Renaming s1000 to cavs 2019-12-18 21:49:46 +01:00
Kconfig.dw drivers/interrupt_controller: Split Kconfig for clarity 2019-12-18 21:49:46 +01:00
Kconfig.gic drivers: interrupt_controller: Refactor GIC configurations 2019-12-19 11:05:27 -05:00
Kconfig.loapic drivers/interrupt_controller: Split Kconfig for clarity 2019-12-18 21:49:46 +01:00
Kconfig.multilevel kconfig: Clean up header comments and make them consistent 2019-11-04 17:31:27 -05:00
Kconfig.multilevel.aggregator_template license: cleanup: add SPDX Apache-2.0 license identifier 2019-04-07 08:45:22 -04:00
Kconfig.rv32m1 boards: riscv: rv32m1: enable BT related configuration 2019-11-08 15:38:57 +01:00
Kconfig.sam0 kconfig: Replace non-defconfig single-symbol 'if's with 'depends on' 2020-02-12 10:32:34 -06:00
Kconfig.shared_irq kconfig: Clean up header comments and make them consistent 2019-11-04 17:31:27 -05:00
Kconfig.stm32 kconfig: Clean up header comments and make them consistent 2019-11-04 17:31:27 -05:00