zephyr/drivers
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
..
adc adc: mchp_xec: right justify ADC output data under 10-bit res 2020-03-06 19:29:09 +02:00
audio drivers: audio: tlv320dac310x: Convert to the new GPIO API 2020-02-05 12:00:36 +01:00
bluetooth kconfig: Replace non-defconfig single-symbol 'if's with 'depends on' 2020-02-12 10:32:34 -06:00
can drivers: can: loopback: Use thread to send frames. 2020-03-12 16:10:09 +02:00
clock_control drivers: clock_control: beetle: convert to DT_INST defines 2020-03-12 04:53:30 -06:00
console console: xtensa_sim_console: Cleanup and use static keyword 2020-03-11 09:17:38 -04:00
counter drivers: counter: mchp_xec: convert to DT_INST defines 2020-03-11 07:59:38 -06:00
crypto drivers: crypto: stm32: Add CAP_NO_IV_PREFIX capability 2020-03-12 17:52:46 +01:00
debug tracing: cleanup and split segger/rtt configuration options 2020-02-07 15:58:05 -05:00
display kconfig: Replace some single-symbol 'if's with 'depends on' 2020-02-08 08:32:42 -05:00
dma drivers: dma: dma_dw: convert to DT_INST defines 2020-03-11 07:59:38 -06:00
eeprom kconfig: Replace some single-symbol 'if's with 'depends on' 2020-02-08 08:32:42 -05:00
entropy drivers: entropy: sam: convert to DT_INST defines 2020-03-11 07:59:38 -06:00
espi drivers: espi: Obtain correct Rx lenght during OOB transaction. 2020-03-13 01:45:18 +02:00
ethernet drivers: ethernet: stellaris: convert to DT_INST defines 2020-03-12 04:54:04 -06:00
flash drivers: flash: Kconfig.sam: Enable support to SAMV71 2020-03-10 14:43:36 +02:00
gpio drivers: gpio: stellaris: convert to DT_INST defines 2020-03-12 04:54:04 -06:00
hwinfo drivers: hwinfo: Don't disable CLOE on SAM3x seies 2020-02-27 21:14:54 +01:00
i2c drivers: i2c: nios2: convert to DT_INST defines 2020-03-11 07:59:38 -06:00
i2s drivers: i2s: Kconfig.sam_ssc: Enable support to SAMV71 2020-03-10 14:43:36 +02:00
ieee802154 drivers: ieee802154: mcr20a: convert to DT_INST defines 2020-03-11 07:59:38 -06:00
interrupt_controller interrupt_controller: gic: Refactor GIC driver interface 2020-03-13 09:59:59 +01:00
ipm treewide: use full path to ipm.h header 2020-01-26 17:52:12 +01:00
kscan drivers: kscan: Introduce SDL mouse driver 2020-03-11 13:23:19 -05:00
led drivers: led: ht16k33: reorder pin interrupt configuration 2020-02-05 12:00:36 +01:00
led_strip kconfig: Replace some single-symbol 'if's with 'depends on' 2020-02-08 08:32:42 -05:00
lora kconfig: Replace non-defconfig single-symbol 'if's with 'depends on' 2020-02-12 10:32:34 -06:00
modem drivers: modem: Add support for commands that don't have a line ending 2020-03-11 23:48:06 +02:00
net drivers: modem: Implement uart_pipe interface for GSM modem 2020-01-28 12:44:17 +02:00
neural_net kconfig: Clean up header comments and make them consistent 2019-11-04 17:31:27 -05:00
pcie global: Remove leading/trailing blank lines in files 2019-12-11 19:17:27 +01:00
pinmux board: arm: black_f407ve: Initial support 2020-03-12 20:18:39 +02:00
ps2 drivers: ps2: mchp_xec: convert to DT_INST defines 2020-03-11 07:59:38 -06:00
ptp_clock kconfig: Clean up header comments and make them consistent 2019-11-04 17:31:27 -05:00
pwm modules: hal: nordic: Define NRFX_ASSERT as __ASSERT_NO_MSG 2020-03-10 17:21:27 +01:00
sensor driver: sensor: Add i2c_label and i2c_addr in the max30101_config struct 2020-03-12 13:12:35 +02:00
serial drivers: serial: stellaris: convert to DT_INST defines 2020-03-12 04:54:04 -06:00
spi drivers: spi: nrfx: Prevent double nrfx_spi[m]_uninit calls 2020-03-12 08:57:14 -05:00
timer arch: arc: bug fixes for running just one core for a multicore target 2020-03-12 13:02:17 -04:00
usb drivers: usb: usb_dw: convert to DT_INST defines 2020-03-11 07:59:38 -06:00
video video: mt9m114: Fix integer handling issues 2019-11-15 10:11:05 +01:00
watchdog drivers: watchdog: sam: convert to DT_INST defines 2020-03-11 07:59:38 -06:00
wifi drivers: wifi: eswifi: Convert to use DT_INST defines 2020-03-11 07:59:38 -06:00
CMakeLists.txt drivers: Add basic LoRa driver support 2019-12-21 12:20:24 +01:00
Kconfig tracing: cleanup and split segger/rtt configuration options 2020-02-07 15:58:05 -05:00