zephyr/drivers/interrupt_controller
Derek Hageman 4462069d74 drivers: gpio: sam0: Add interrupt support
This adds interrupt support to the SAM0 GPIO driver.  This is heavily
inspired by @nzmichaelh work in #5715.  The primary difference
from that implementation is that here the External Interrupt
Controller (EIC) is separated out into an interrupt controller driver
that is less tightly coupled to the GPIO API.  Instead it implements
more of a conversion from the EIC's own odd multiplexing to a more
traditional port and pin mask IRQ-like callback.  Unfortunately,
through the EIC on the SAMD2x are relatively well behaved
in terms of pin to EIC line mappings, other chips that share the
peripheral interface are not.  So the EIC driver implements a
per-line lookup to the pin and port pair using definitions extracted
from the ASF headers.

The EIC driver still makes some assumptions about how it will be used:
mostly it assumes exactly one callback per port.  This should be fine
as the only intended user is the GPIO driver itself.

This has been tested with some simple programs and with
tests/drivers/gpio/gpio_basic_api on a SAMD21 breakout and an
adafruit_trinket_m0 board.

Signed-off-by: Derek Hageman <hageman@inthat.cloud>
2019-05-07 08:43:56 -04:00
..
CMakeLists.txt drivers: gpio: sam0: Add interrupt support 2019-05-07 08:43:56 -04:00
Kconfig drivers: gpio: sam0: Add interrupt support 2019-05-07 08:43:56 -04:00
Kconfig.multilevel drivers: interrupt_controller: multi-level improvements 2019-01-25 11:59:46 -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 interrupt_controller: rv32m1: fix intmux driver initialization priority 2019-04-18 14:00:18 -07:00
Kconfig.s1000 drivers: interrupt_controller: multi-level improvements 2019-01-25 11:59:46 -05:00
Kconfig.sam0 drivers: gpio: sam0: Add interrupt support 2019-05-07 08:43:56 -04:00
Kconfig.shared_irq drivers/interrupt_controller: shared_irq: configure by device tree 2019-02-06 07:18:15 -05:00
Kconfig.stm32 drivers/interrupt_controller: stm32: add support of stm32mp1 2019-04-19 12:05:27 -05:00
arcv2_irq_unit.c drivers: Rename reserved function names 2019-04-03 17:31:00 -04:00
cavs_ictl.c dts_fixups: Use DT_ prefix in all defined labels not related to Kconfig 2018-11-13 10:44:42 -06:00
cavs_ictl.h headers: Fix headers across the project 2018-09-17 15:49:26 -04:00
dw_ictl.c drivers: Add 'U' to unsigned variable assignments 2018-12-04 22:51:56 -05:00
dw_ictl.h headers: Fix headers across the project 2018-09-17 15:49:26 -04:00
exti_stm32.c drivers: interrupt_controller: Add STM32L1X EXTI support 2019-04-22 08:54:18 -05:00
exti_stm32.h drivers/interrupt_controller: stm32: Complete driver factorization 2019-01-24 09:38:38 -06:00
i8259.c drivers: Remove board.h include 2018-11-01 13:21:11 -04:00
ioapic_intr.c drivers: Rename reserved function names 2019-04-03 17:31:00 -04:00
ioapic_priv.h headers: Fix headers across the project 2018-09-17 15:49:26 -04:00
loapic_intr.c drivers: Rename reserved function names 2019-04-03 17:31:00 -04:00
loapic_spurious.S drivers: Rename reserved function names 2019-04-03 17:31:00 -04:00
mvic.c drivers: Rename reserved function names 2019-04-03 17:31:00 -04:00
plic.c all: Add 'U' suffix when using unsigned variables 2019-03-28 17:15:58 -05:00
plic.h drivers/plic: Update PLIC driver with DTS symbols 2018-12-04 07:48:27 -06:00
rv32m1_intmux.c interrupt_controller: rv32m1: fix intmux driver initialization priority 2019-04-18 14:00:18 -07:00
sam0_eic.c drivers: gpio: sam0: Add interrupt support 2019-05-07 08:43:56 -04:00
sam0_eic.h drivers: gpio: sam0: Add interrupt support 2019-05-07 08:43:56 -04:00
sam0_eic_priv.h drivers: gpio: sam0: Add interrupt support 2019-05-07 08:43:56 -04:00
shared_irq.c all: Add 'U' suffix when using unsigned variables 2019-03-28 17:15:58 -05:00
system_apic.c all: Update reserved function names 2019-03-11 13:48:42 -04:00