mirror of
https://github.com/zephyrproject-rtos/zephyr
synced 2025-08-11 06:46:04 +00:00
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>
701 lines
11 KiB
C
701 lines
11 KiB
C
/*
|
|
* Copyright (c) 2019 Derek Hageman <hageman@inthat.cloud>
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
#ifndef ZEPHYR_DRIVERS_INTERRUPT_CONTROLLER_SAM0_EIC_PRIV_H_
|
|
#define ZEPHYR_DRIVERS_INTERRUPT_CONTROLLER_SAM0_EIC_PRIV_H_
|
|
|
|
#include <zephyr/types.h>
|
|
#include <soc.h>
|
|
|
|
/*
|
|
* Used in the ASF headers, but not always defined by them (looks like they
|
|
* sometimes define __L instead).
|
|
*/
|
|
#ifndef _L
|
|
#define _L(i) i ## L
|
|
#endif
|
|
|
|
/*
|
|
* Unfortunately the ASF headers define the EIC mappings somewhat painfully:
|
|
* the macros have both the port letter and are only defined if that pin
|
|
* has an EIC channel. So we can't just use a macro expansion here, because
|
|
* some of them might be undefined for a port and we can't test for another
|
|
* macro definition inside a macro.
|
|
*/
|
|
static const u8_t sam0_eic_channels[PORT_GROUPS][32] = {
|
|
#if PORT_GROUPS >= 1
|
|
{
|
|
#ifdef PIN_PA00A_EIC_EXTINT_NUM
|
|
PIN_PA00A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PA01A_EIC_EXTINT_NUM
|
|
PIN_PA01A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PA02A_EIC_EXTINT_NUM
|
|
PIN_PA02A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PA03A_EIC_EXTINT_NUM
|
|
PIN_PA03A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PA04A_EIC_EXTINT_NUM
|
|
PIN_PA04A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PA05A_EIC_EXTINT_NUM
|
|
PIN_PA05A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PA06A_EIC_EXTINT_NUM
|
|
PIN_PA06A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PA07A_EIC_EXTINT_NUM
|
|
PIN_PA07A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PA08A_EIC_EXTINT_NUM
|
|
PIN_PA08A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PA09A_EIC_EXTINT_NUM
|
|
PIN_PA09A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PA10A_EIC_EXTINT_NUM
|
|
PIN_PA10A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PA11A_EIC_EXTINT_NUM
|
|
PIN_PA11A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PA12A_EIC_EXTINT_NUM
|
|
PIN_PA12A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PA13A_EIC_EXTINT_NUM
|
|
PIN_PA13A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PA14A_EIC_EXTINT_NUM
|
|
PIN_PA14A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PA15A_EIC_EXTINT_NUM
|
|
PIN_PA15A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PA16A_EIC_EXTINT_NUM
|
|
PIN_PA16A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PA17A_EIC_EXTINT_NUM
|
|
PIN_PA17A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PA18A_EIC_EXTINT_NUM
|
|
PIN_PA18A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PA19A_EIC_EXTINT_NUM
|
|
PIN_PA19A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PA20A_EIC_EXTINT_NUM
|
|
PIN_PA20A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PA21A_EIC_EXTINT_NUM
|
|
PIN_PA21A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PA22A_EIC_EXTINT_NUM
|
|
PIN_PA22A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PA23A_EIC_EXTINT_NUM
|
|
PIN_PA23A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PA24A_EIC_EXTINT_NUM
|
|
PIN_PA24A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PA25A_EIC_EXTINT_NUM
|
|
PIN_PA25A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PA26A_EIC_EXTINT_NUM
|
|
PIN_PA26A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PA27A_EIC_EXTINT_NUM
|
|
PIN_PA27A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PA28A_EIC_EXTINT_NUM
|
|
PIN_PA28A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PA29A_EIC_EXTINT_NUM
|
|
PIN_PA29A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PA30A_EIC_EXTINT_NUM
|
|
PIN_PA30A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PA31A_EIC_EXTINT_NUM
|
|
PIN_PA31A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
},
|
|
#endif
|
|
|
|
#if PORT_GROUPS >= 2
|
|
{
|
|
#ifdef PIN_PB00A_EIC_EXTINT_NUM
|
|
PIN_PB00A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PB01A_EIC_EXTINT_NUM
|
|
PIN_PB01A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PB02A_EIC_EXTINT_NUM
|
|
PIN_PB02A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PB03A_EIC_EXTINT_NUM
|
|
PIN_PB03A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PB04A_EIC_EXTINT_NUM
|
|
PIN_PB04A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PB05A_EIC_EXTINT_NUM
|
|
PIN_PB05A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PB06A_EIC_EXTINT_NUM
|
|
PIN_PB06A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PB07A_EIC_EXTINT_NUM
|
|
PIN_PB07A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PB08A_EIC_EXTINT_NUM
|
|
PIN_PB08A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PB09A_EIC_EXTINT_NUM
|
|
PIN_PB09A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PB10A_EIC_EXTINT_NUM
|
|
PIN_PB10A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PB11A_EIC_EXTINT_NUM
|
|
PIN_PB11A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PB12A_EIC_EXTINT_NUM
|
|
PIN_PB12A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PB13A_EIC_EXTINT_NUM
|
|
PIN_PB13A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PB14A_EIC_EXTINT_NUM
|
|
PIN_PB14A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PB15A_EIC_EXTINT_NUM
|
|
PIN_PB15A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PB16A_EIC_EXTINT_NUM
|
|
PIN_PB16A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PB17A_EIC_EXTINT_NUM
|
|
PIN_PB17A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PB18A_EIC_EXTINT_NUM
|
|
PIN_PB18A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PB19A_EIC_EXTINT_NUM
|
|
PIN_PB19A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PB20A_EIC_EXTINT_NUM
|
|
PIN_PB20A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PB21A_EIC_EXTINT_NUM
|
|
PIN_PB21A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PB22A_EIC_EXTINT_NUM
|
|
PIN_PB22A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PB23A_EIC_EXTINT_NUM
|
|
PIN_PB23A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PB24A_EIC_EXTINT_NUM
|
|
PIN_PB24A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PB25A_EIC_EXTINT_NUM
|
|
PIN_PB25A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PB26A_EIC_EXTINT_NUM
|
|
PIN_PB26A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PB27A_EIC_EXTINT_NUM
|
|
PIN_PB27A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PB28A_EIC_EXTINT_NUM
|
|
PIN_PB28A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PB29A_EIC_EXTINT_NUM
|
|
PIN_PB29A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PB30A_EIC_EXTINT_NUM
|
|
PIN_PB30A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PB31A_EIC_EXTINT_NUM
|
|
PIN_PB31A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
},
|
|
#endif
|
|
|
|
#if PORT_GROUPS >= 3
|
|
{
|
|
#ifdef PIN_PC00A_EIC_EXTINT_NUM
|
|
PIN_PC00A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PC01A_EIC_EXTINT_NUM
|
|
PIN_PC01A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PC02A_EIC_EXTINT_NUM
|
|
PIN_PC02A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PC03A_EIC_EXTINT_NUM
|
|
PIN_PC03A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PC04A_EIC_EXTINT_NUM
|
|
PIN_PC04A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PC05A_EIC_EXTINT_NUM
|
|
PIN_PC05A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PC06A_EIC_EXTINT_NUM
|
|
PIN_PC06A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PC07A_EIC_EXTINT_NUM
|
|
PIN_PC07A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PC08A_EIC_EXTINT_NUM
|
|
PIN_PC08A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PC09A_EIC_EXTINT_NUM
|
|
PIN_PC09A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PC10A_EIC_EXTINT_NUM
|
|
PIN_PC10A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PC11A_EIC_EXTINT_NUM
|
|
PIN_PC11A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PC12A_EIC_EXTINT_NUM
|
|
PIN_PC12A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PC13A_EIC_EXTINT_NUM
|
|
PIN_PC13A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PC14A_EIC_EXTINT_NUM
|
|
PIN_PC14A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PC15A_EIC_EXTINT_NUM
|
|
PIN_PC15A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PC16A_EIC_EXTINT_NUM
|
|
PIN_PC16A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PC17A_EIC_EXTINT_NUM
|
|
PIN_PC17A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PC18A_EIC_EXTINT_NUM
|
|
PIN_PC18A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PC19A_EIC_EXTINT_NUM
|
|
PIN_PC19A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PC20A_EIC_EXTINT_NUM
|
|
PIN_PC20A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PC21A_EIC_EXTINT_NUM
|
|
PIN_PC21A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PC22A_EIC_EXTINT_NUM
|
|
PIN_PC22A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PC23A_EIC_EXTINT_NUM
|
|
PIN_PC23A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PC24A_EIC_EXTINT_NUM
|
|
PIN_PC24A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PC25A_EIC_EXTINT_NUM
|
|
PIN_PC25A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PC26A_EIC_EXTINT_NUM
|
|
PIN_PC26A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PC27A_EIC_EXTINT_NUM
|
|
PIN_PC27A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PC28A_EIC_EXTINT_NUM
|
|
PIN_PC28A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PC29A_EIC_EXTINT_NUM
|
|
PIN_PC29A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PC30A_EIC_EXTINT_NUM
|
|
PIN_PC30A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PC31A_EIC_EXTINT_NUM
|
|
PIN_PC31A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
},
|
|
#endif
|
|
|
|
#if PORT_GROUPS >= 4
|
|
{
|
|
#ifdef PIN_PD00A_EIC_EXTINT_NUM
|
|
PIN_PD00A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PD01A_EIC_EXTINT_NUM
|
|
PIN_PD01A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PD02A_EIC_EXTINT_NUM
|
|
PIN_PD02A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PD03A_EIC_EXTINT_NUM
|
|
PIN_PD03A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PD04A_EIC_EXTINT_NUM
|
|
PIN_PD04A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PD05A_EIC_EXTINT_NUM
|
|
PIN_PD05A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PD06A_EIC_EXTINT_NUM
|
|
PIN_PD06A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PD07A_EIC_EXTINT_NUM
|
|
PIN_PD07A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PD08A_EIC_EXTINT_NUM
|
|
PIN_PD08A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PD09A_EIC_EXTINT_NUM
|
|
PIN_PD09A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PD10A_EIC_EXTINT_NUM
|
|
PIN_PD10A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PD11A_EIC_EXTINT_NUM
|
|
PIN_PD11A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PD12A_EIC_EXTINT_NUM
|
|
PIN_PD12A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PD13A_EIC_EXTINT_NUM
|
|
PIN_PD13A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PD14A_EIC_EXTINT_NUM
|
|
PIN_PD14A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PD15A_EIC_EXTINT_NUM
|
|
PIN_PD15A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PD16A_EIC_EXTINT_NUM
|
|
PIN_PD16A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PD17A_EIC_EXTINT_NUM
|
|
PIN_PD17A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PD18A_EIC_EXTINT_NUM
|
|
PIN_PD18A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PD19A_EIC_EXTINT_NUM
|
|
PIN_PD19A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PD20A_EIC_EXTINT_NUM
|
|
PIN_PD20A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PD21A_EIC_EXTINT_NUM
|
|
PIN_PD21A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PD22A_EIC_EXTINT_NUM
|
|
PIN_PD22A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PD23A_EIC_EXTINT_NUM
|
|
PIN_PD23A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PD24A_EIC_EXTINT_NUM
|
|
PIN_PD24A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PD25A_EIC_EXTINT_NUM
|
|
PIN_PD25A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PD26A_EIC_EXTINT_NUM
|
|
PIN_PD26A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PD27A_EIC_EXTINT_NUM
|
|
PIN_PD27A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PD28A_EIC_EXTINT_NUM
|
|
PIN_PD28A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PD29A_EIC_EXTINT_NUM
|
|
PIN_PD29A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PD30A_EIC_EXTINT_NUM
|
|
PIN_PD30A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
#ifdef PIN_PD31A_EIC_EXTINT_NUM
|
|
PIN_PD31A_EIC_EXTINT_NUM,
|
|
#else
|
|
0xFF,
|
|
#endif
|
|
},
|
|
#endif
|
|
};
|
|
|
|
static inline int sam0_eic_map_to_line(int port, int pin)
|
|
{
|
|
u8_t ch = sam0_eic_channels[port][pin];
|
|
|
|
if (ch == 0xFF) {
|
|
return -ENOTSUP;
|
|
}
|
|
return ch;
|
|
}
|
|
|
|
#endif /* ZEPHYR_DRIVERS_INTERRUPT_CONTROLLER_SAM0_EIC_PRIV_H_ */
|