From f10e8daef8081c68439d129dc02e79e87eeffde5 Mon Sep 17 00:00:00 2001 From: patacongo Date: Sun, 14 Aug 2011 22:47:44 +0000 Subject: Add beginning of Kinetis pin interrupt/dma logic git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3880 42af7a65-404d-4744-a932-0658087f49c3 --- nuttx/arch/arm/src/kinetis/Make.defs | 14 +- nuttx/arch/arm/src/kinetis/kinetis_clrpend.c | 0 nuttx/arch/arm/src/kinetis/kinetis_config.h | 0 nuttx/arch/arm/src/kinetis/kinetis_gpio.c | 344 ---------- nuttx/arch/arm/src/kinetis/kinetis_idle.c | 0 nuttx/arch/arm/src/kinetis/kinetis_internal.h | 534 +++++++-------- nuttx/arch/arm/src/kinetis/kinetis_irq.c | 20 +- nuttx/arch/arm/src/kinetis/kinetis_k40pinmux.h | 866 ++++++++++++------------- nuttx/arch/arm/src/kinetis/kinetis_k60pinmux.h | 782 +++++++++++----------- nuttx/arch/arm/src/kinetis/kinetis_lowputc.c | 24 +- nuttx/arch/arm/src/kinetis/kinetis_pin.c | 261 ++++++++ nuttx/arch/arm/src/kinetis/kinetis_pindma.c | 146 +++++ nuttx/arch/arm/src/kinetis/kinetis_pingpio.c | 151 +++++ nuttx/arch/arm/src/kinetis/kinetis_pinirq.c | 211 ++++++ nuttx/arch/arm/src/kinetis/kinetis_start.c | 0 nuttx/arch/arm/src/kinetis/kinetis_timerisr.c | 0 nuttx/arch/arm/src/kinetis/kinetis_vectors.S | 0 nuttx/arch/arm/src/stm32/stm32_gpio.c | 3 - nuttx/arch/arm/src/stm32/stm32_gpio.h | 3 - nuttx/configs/kwikstik-k40/include/board.h | 16 +- nuttx/configs/twr-k60n512/include/board.h | 20 +- 21 files changed, 1885 insertions(+), 1510 deletions(-) mode change 100755 => 100644 nuttx/arch/arm/src/kinetis/kinetis_clrpend.c mode change 100755 => 100644 nuttx/arch/arm/src/kinetis/kinetis_config.h delete mode 100755 nuttx/arch/arm/src/kinetis/kinetis_gpio.c mode change 100755 => 100644 nuttx/arch/arm/src/kinetis/kinetis_idle.c mode change 100755 => 100644 nuttx/arch/arm/src/kinetis/kinetis_irq.c mode change 100755 => 100644 nuttx/arch/arm/src/kinetis/kinetis_lowputc.c create mode 100755 nuttx/arch/arm/src/kinetis/kinetis_pin.c create mode 100644 nuttx/arch/arm/src/kinetis/kinetis_pindma.c create mode 100644 nuttx/arch/arm/src/kinetis/kinetis_pingpio.c create mode 100644 nuttx/arch/arm/src/kinetis/kinetis_pinirq.c mode change 100755 => 100644 nuttx/arch/arm/src/kinetis/kinetis_start.c mode change 100755 => 100644 nuttx/arch/arm/src/kinetis/kinetis_timerisr.c mode change 100755 => 100644 nuttx/arch/arm/src/kinetis/kinetis_vectors.S (limited to 'nuttx') diff --git a/nuttx/arch/arm/src/kinetis/Make.defs b/nuttx/arch/arm/src/kinetis/Make.defs index 3af81c78f..2b48320ff 100644 --- a/nuttx/arch/arm/src/kinetis/Make.defs +++ b/nuttx/arch/arm/src/kinetis/Make.defs @@ -57,18 +57,22 @@ endif # Required Kinetis files CHIP_ASRCS = -CHIP_CSRCS = kinetis_clockconfig.c kinetis_clrpend.c kinetis_gpio.c \ - kinetis_idle.c kinetis_irq.c kinetis_lowputc.c kinetis_serial.c \ - kinetis_start.c kinetis_timerisr.c kinetis_wdog.c +CHIP_CSRCS = kinetis_clockconfig.c kinetis_clrpend.c kinetis_idle.c \ + kinetis_irq.c kinetis_lowputc.c kinetis_pin.c kinetis_pingpio.c \ + kinetis_serial.c kinetis_start.c kinetis_timerisr.c kinetis_wdog.c # Configuration-dependent Kinetis files ifeq ($(CONFIG_GPIO_IRQ),y) -CHIP_CSRCS += kinetis_gpioint.c +CHIP_CSRCS += kinetis_pinirq.c +endif + +ifeq ($(CONFIG_KINETIS_DMA),y) +CHIP_CSRCS += kinetis_pindma.c endif ifeq ($(CONFIG_DEBUG_GPIO),y) -CHIP_CSRCS += kinetis_gpiodbg.c +CHIP_CSRCS += kinetis_pindbg.c endif ifeq ($(CONFIG_USBDEV),y) diff --git a/nuttx/arch/arm/src/kinetis/kinetis_clrpend.c b/nuttx/arch/arm/src/kinetis/kinetis_clrpend.c old mode 100755 new mode 100644 diff --git a/nuttx/arch/arm/src/kinetis/kinetis_config.h b/nuttx/arch/arm/src/kinetis/kinetis_config.h old mode 100755 new mode 100644 diff --git a/nuttx/arch/arm/src/kinetis/kinetis_gpio.c b/nuttx/arch/arm/src/kinetis/kinetis_gpio.c deleted file mode 100755 index cb89bc932..000000000 --- a/nuttx/arch/arm/src/kinetis/kinetis_gpio.c +++ /dev/null @@ -1,344 +0,0 @@ -/**************************************************************************** - * arch/arm/src/kinetis/kinetis_gpio.c - * - * Copyright (C) 2011 Gregory Nutt. All rights reserved. - * Author: Gregory Nutt - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * 3. Neither the name NuttX nor the names of its contributors may be - * used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS - * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED - * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************/ - -/**************************************************************************** - * Included Files - ****************************************************************************/ - -#include -#include - -#include -#include - -#include - -#include "up_arch.h" -#include "up_internal.h" - -#include "kinetis_memorymap.h" -#include "kinetis_internal.h" -#include "kinetis_port.h" -#include "kinetis_gpio.h" - -/**************************************************************************** - * Pre-processor Definitions - ****************************************************************************/ - -/**************************************************************************** - * Private Data - ****************************************************************************/ - -/**************************************************************************** - * Private Functions - ****************************************************************************/ - -/**************************************************************************** - * Public Functions - ****************************************************************************/ - -/**************************************************************************** - * Name: kinetis_configgpio - * - * Description: - * Configure a GPIO pin based on bit-encoded description of the pin. - * - ****************************************************************************/ - -int kinetis_configgpio(uint32_t cfgset) -{ - uintptr_t base; - uint32_t regval; - unsigned int port; - unsigned int pin; - unsigned int mode; - - /* Get the port number and pin number */ - - port = (cfgset & _GPIO_PORT_MASK) >> _GPIO_PORT_SHIFT; - pin = (cfgset & _GPIO_PIN_MASK) >> _GPIO_PIN_SHIFT; - - DEBUGASSERT(port < KINETIS_NPORTS); - if (port < KINETIS_NPORTS) - { - /* Get the base address of PORT block for this port */ - - base = KINETIS_PORT_BASE(port); - - /* Get the port mode */ - - mode = (cfgset & _GPIO_MODE_MASK) >> _GPIO_MODE_SHIFT; - - /* Special case analog port mode. In this case, not of the digital - * options are applicable. - */ - - if (mode == _GPIO_MODE_ANALOG) - { - /* Set the analog mode with all digital options zeroed */ - - regval = PORT_PCR_MUX_ANALOG | PORT_PCR_IRQC_DISABLED; - putreg32(regval, base + KINETIS_PORT_PCR_OFFSET(pin)); - } - else - { - /* Configure the digital pin options */ - - regval = (mode << PORT_PCR_MUX_SHIFT); - if ((cfgset & _GPIO_IO_MASK) == _GPIO_INPUT) - { - /* Handle input-only digital options */ - /* Check for pull-up or pull-down */ - - - if ((cfgset & _GPIO_INPUT_PULLMASK) == _GPIO_INPUT_PULLDOWN) - { - regval |= PORT_PCR_PE; - } - else if ((cfgset & _GPIO_INPUT_PULLMASK) == _GPIO_INPUT_PULLUP) - { - regval |= (PORT_PCR_PE | PORT_PCR_PS); - } - -# warning "Missing interrupt configuration logic" - - } - else - { - /* Handle output-only digital options */ - /* Check for slow slew rate setting */ - - if ((cfgset & _GPIO_OUTPUT_SLEW_MASK) == _GPIO_OUTPUT_SLOW) - { - regval |= PORT_PCR_SRE; - } - - /* Check for open drain output */ - - if ((cfgset & _GPIO_OUTPUT_OD_MASK) == _GPIO_OUTPUT_OPENDRAIN) - { - regval |= PORT_PCR_ODE; - } - - /* Check for high drive output */ - - if ((cfgset & _GPIO_OUTPUT_DRIVE_MASK) == _GPIO_OUTPUT_HIGHDRIVE) - { - regval |= PORT_PCR_DSE; - } - } - - /* Check for passive filter enable. Passive Filter configuration - * is valid in all digital pin muxing modes. - */ - - if ((cfgset & GPIO_PASV_FILTER) != 0) - { - regval |= PORT_PCR_PFE; - } - - /* Set the digital mode with all of the selected options */ - - putreg32(regval, base + KINETIS_PORT_PCR_OFFSET(pin)); - - /* Check for digital filter enable. Digital Filter configuration - * is valid in all digital pin muxing modes. - */ - - regval = getreg32(base + KINETIS_PORT_DFER_OFFSET); - if ((cfgset & GPIO_DIG_FILTER) != 0) - { - regval |= (1 << pin); - } - else - { - regval &= ~(1 << pin); - } - putreg32(regval, base + KINETIS_PORT_DFER_OFFSET); - - /* Additional configuration for the case of Alternative 1 (GPIO) modes */ - - if (mode == _GPIO_MODE_GPIO) - { - /* Set the GPIO port direction */ - - base = KINETIS_GPIO_BASE(port); - regval = getreg32(base + KINETIS_GPIO_PDDR_OFFSET); - if ((cfgset & _GPIO_IO_MASK) == _GPIO_INPUT) - { - /* Select GPIO input */ - - regval &= ~(1 << pin); - putreg32(regval, base + KINETIS_GPIO_PDDR_OFFSET); - } - else /* if ((cfgset & _GPIO_IO_MASK) == _GPIO_OUTPUT) */ - { - /* Select GPIO input */ - - regval |= (1 << pin); - putreg32(regval, base + KINETIS_GPIO_PDDR_OFFSET); - - /* Set the initial value of the GPIO output */ - - kinetis_gpiowrite(cfgset, ((cfgset & GPIO_OUTPUT_ONE) != 0)); - } - } - } - - return OK; - } - return -EINVAL; -} - -/************************************************************************************ - * Name: kinetis_configfilter - * - * Description: - * Configure the digital filter associated with a port. The digital filter - * capabilities of the PORT module are available in all digital pin muxing modes. - * - * Input parmeters: - * port - Port number. See KINETIS_PORTn definitions in kinetis_port.h - * lpo - true: Digital Filters are clocked by the bus clock - * false: Digital Filters are clocked by the 1 kHz LPO clock - * width - Filter Length - * - ************************************************************************************/ - -int kinetis_configfilter(unsigned int port, bool lpo, unsigned int width) -{ - uintptr_t base; - uint32_t regval; - - DEBUGASSERT(port < KINETIS_NPORTS); - if (port < KINETIS_NPORTS) - { - /* Get the base address of PORT block for this port */ - - base = KINETIS_PORT_BASE(port); - - /* Select clocking */ - - regval = (lpo ? PORT_DFCR_CS : 0); - putreg32(regval, base + KINETIS_PORT_DFCR_OFFSET); - - /* Select the filter width */ - - DEBUGASSERT(width < 32); - putreg32(width, base + KINETIS_PORT_DFWR_OFFSET); - return OK; - } - return -EINVAL; -} - -/**************************************************************************** - * Name: kinetis_gpiowrite - * - * Description: - * Write one or zero to the selected GPIO pin - * - ****************************************************************************/ - -void kinetis_gpiowrite(uint32_t pinset, bool value) -{ - uintptr_t base; - unsigned int port; - unsigned int pin; - - DEBUGASSERT((pinset & _GPIO_IO_MASK) == _GPIO_OUTPUT); - - /* Get the port number and pin number */ - - port = (pinset & _GPIO_PORT_MASK) >> _GPIO_PORT_SHIFT; - pin = (pinset & _GPIO_PIN_MASK) >> _GPIO_PIN_SHIFT; - - DEBUGASSERT(port < KINETIS_NPORTS); - if (port < KINETIS_NPORTS) - { - /* Get the base address of GPIO block for this port */ - - base = KINETIS_GPIO_BASE(port); - - /* Set or clear the output */ - - if (value) - { - putreg32((1 << pin), base + KINETIS_GPIO_PSOR_OFFSET); - } - else - { - putreg32((1 << pin), base + KINETIS_GPIO_PCOR_OFFSET); - } - } -} - -/**************************************************************************** - * Name: kinetis_gpioread - * - * Description: - * Read one or zero from the selected GPIO pin - * - ****************************************************************************/ - -bool kinetis_gpioread(uint32_t pinset) -{ - uintptr_t base; - uint32_t regval; - unsigned int port; - unsigned int pin; - bool ret = false; - - DEBUGASSERT((pinset & _GPIO_IO_MASK) == _GPIO_INPUT); - - /* Get the port number and pin number */ - - port = (pinset & _GPIO_PORT_MASK) >> _GPIO_PORT_SHIFT; - pin = (pinset & _GPIO_PIN_MASK) >> _GPIO_PIN_SHIFT; - - DEBUGASSERT(port < KINETIS_NPORTS); - if (port < KINETIS_NPORTS) - { - /* Get the base address of GPIO block for this port */ - - base = KINETIS_GPIO_BASE(port); - - /* return the state of the pin */ - - regval = getreg32(base + KINETIS_GPIO_PDIR_OFFSET); - ret = ((regval & (1 << pin)) != 0); - } - return ret; -} - diff --git a/nuttx/arch/arm/src/kinetis/kinetis_idle.c b/nuttx/arch/arm/src/kinetis/kinetis_idle.c old mode 100755 new mode 100644 diff --git a/nuttx/arch/arm/src/kinetis/kinetis_internal.h b/nuttx/arch/arm/src/kinetis/kinetis_internal.h index f9fb87150..b743dac7e 100644 --- a/nuttx/arch/arm/src/kinetis/kinetis_internal.h +++ b/nuttx/arch/arm/src/kinetis/kinetis_internal.h @@ -47,6 +47,8 @@ #include #include +#include + #include "up_internal.h" #include "kinetis_config.h" #include "chip.h" @@ -58,10 +60,10 @@ /* Configuration ********************************************************************/ -/* Bit-encoded input to kinetis_configgpio() ****************************************/ +/* Bit-encoded input to kinetis_pinconfig() *****************************************/ /* General form (32-bits, only 22 bits are unused in the encoding): * - * oooo mmmv iiii fd-- ---- -ppp ---b bbbb + * oooo mmmv iiii ifd- ---- -ppp ---b bbbb */ /* Bits 25-31: 7 bits are used to encode the basic pin configuration: @@ -72,188 +74,125 @@ * `------- oooo: options (may be combined) */ -#define _GPIO_MODE_SHIFT (25) /* Bits 25-27: Pin mode */ -#define _GPIO_MODE_MASK (7 << _GPIO_MODE_SHIFT) -#define _GPIO_OPTIONS_SHIFT (28) /* Bits 28-31: Pin mode options */ -#define _GPIO_OPTIONS_MASK (15 << _GPIO_OPTIONS_SHIFT) +#define _PIN_MODE_SHIFT (25) /* Bits 25-27: Pin mode */ +#define _PIN_MODE_MASK (7 << _PIN_MODE_SHIFT) +#define _PIN_OPTIONS_SHIFT (28) /* Bits 28-31: Pin mode options */ +#define _PIN_OPTIONS_MASK (15 << _PIN_OPTIONS_SHIFT) /* Port Modes */ -#define _GPIO_MODE_ANALOG (0) /* 000 Pin Disabled (Analog) */ -#define _GPIO_MODE_GPIO (1) /* 001 Alternative 1 (GPIO) */ -#define _GPIO_MODE_ALT2 (2) /* 010 Alternative 2 */ -#define _GPIO_MODE_ALT3 (3) /* 011 Alternative 3 */ -#define _GPIO_MODE_ALT4 (4) /* 100 Alternative 4 */ -#define _GPIO_MODE_ALT5 (5) /* 101 Alternative 5 */ -#define _GPIO_MODE_ALT6 (6) /* 110 Alternative 6 */ -#define _GPIO_MODE_ALT7 (7) /* 111 Alternative 7 */ +#define _PIN_MODE_ANALOG (0 << _PIN_MODE_SHIFT) /* 000 Pin Disabled (Analog) */ +#define _PIN_MODE_GPIO (1 << _PIN_MODE_SHIFT) /* 001 Alternative 1 (GPIO) */ +#define _PIN_MODE_ALT2 (2 << _PIN_MODE_SHIFT) /* 010 Alternative 2 */ +#define _PIN_MODE_ALT3 (3 << _PIN_MODE_SHIFT) /* 011 Alternative 3 */ +#define _PIN_MODE_ALT4 (4 << _PIN_MODE_SHIFT) /* 100 Alternative 4 */ +#define _PIN_MODE_ALT5 (5 << _PIN_MODE_SHIFT) /* 101 Alternative 5 */ +#define _PIN_MODE_ALT6 (6 << _PIN_MODE_SHIFT) /* 110 Alternative 6 */ +#define _PIN_MODE_ALT7 (7 << _PIN_MODE_SHIFT) /* 111 Alternative 7 */ /* Options for all digital modes (Alternatives 1-7). None of the digital * options apply if the analog mode is selected. */ -#define _GPIO_IO_MASK (1) /* xxx1 Digital input/output mask */ -#define _GPIO_INPUT (0) /* xxx0 Digital input */ -#define _GPIO_OUTPUT (1) /* xxx1 Digital output */ +#define _PIN_IO_MASK (1 << _PIN_OPTIONS_SHIFT) /* xxx1 Digital input/output mask */ +#define _PIN_INPUT (0 << _PIN_OPTIONS_SHIFT) /* xxx0 Digital input */ +#define _PIN_OUTPUT (1 << _PIN_OPTIONS_SHIFT) /* xxx1 Digital output */ -#define _GPIO_INPUT_PULLMASK (7) /* x111 Mask for pull-up or -down bits */ -#define _GPIO_INPUT_PULLDOWN (2) /* x010 Input with internal pull-down resistor */ -#define _GPIO_INPUT_PULLUP (6) /* x110 Input with internal pull-up resistor */ +#define _PIN_INPUT_PULLMASK (7 << _PIN_OPTIONS_SHIFT) /* x111 Mask for pull-up or -down bits */ +#define _PIN_INPUT_PULLDOWN (2 << _PIN_OPTIONS_SHIFT) /* x010 Input with internal pull-down resistor */ +#define _PIN_INPUT_PULLUP (6 << _PIN_OPTIONS_SHIFT) /* x110 Input with internal pull-up resistor */ -#define _GPIO_OUTPUT_SLEW_MASK (3) /* xx11 Mask to test for slow slew rate */ -#define _GPIO_OUTPUT_FAST (1) /* xx01 Output with fast slew rate */ -#define _GPIO_OUTPUT_SLOW (3) /* xx11 Output with slow slew rate */ -#define _GPIO_OUTPUT_OD_MASK (5) /* x1x1 Mask to test for open drain */ -#define _GPIO_OUTPUT_OPENDRAIN (5) /* x1x1 Output with open drain enabled */ -#define _GPIO_OUTPUT_DRIVE_MASK (9) /* 1xx1 Mask to test for high drive strengh */ -#define _GPIO_OUTPUT_LOWDRIVE (1) /* 0xx1 Output with low drive strength */ -#define _GPIO_OUTPUT_HIGHDRIVE (9) /* 1xx1 Output with high drive strength */ +#define _PIN_OUTPUT_SLEW_MASK (3 << _PIN_OPTIONS_SHIFT) /* xx11 Mask to test for slow slew rate */ +#define _PIN_OUTPUT_FAST (1 << _PIN_OPTIONS_SHIFT) /* xx01 Output with fast slew rate */ +#define _PIN_OUTPUT_SLOW (3 << _PIN_OPTIONS_SHIFT) /* xx11 Output with slow slew rate */ +#define _PIN_OUTPUT_OD_MASK (5 << _PIN_OPTIONS_SHIFT) /* x1x1 Mask to test for open drain */ +#define _PIN_OUTPUT_OPENDRAIN (5 << _PIN_OPTIONS_SHIFT) /* x1x1 Output with open drain enabled */ +#define _PIN_OUTPUT_DRIVE_MASK (9 << _PIN_OPTIONS_SHIFT) /* 1xx1 Mask to test for high drive strengh */ +#define _PIN_OUTPUT_LOWDRIVE (1 << _PIN_OPTIONS_SHIFT) /* 0xx1 Output with low drive strength */ +#define _PIN_OUTPUT_HIGHDRIVE (9 << _PIN_OPTIONS_SHIFT) /* 1xx1 Output with high drive strength */ /* End-user pin modes and configurations. Notes: (1) None of the digital options * are available for the analog mode, (2) digital settings may be combined (OR'ed) * provided that input-only and output-only options are not intermixed. */ -#define GPIO_ANALOG (_GPIO_MODE_ANALOG << _GPIO_MODE_SHIFT) - -#define GPIO_INPUT ((_GPIO_MODE_GPIO << _GPIO_MODE_SHIFT) | \ - (_GPIO_INPUT << _GPIO_OPTIONS_SHIFT)) -#define GPIO_PULLDOWN ((_GPIO_MODE_GPIO << _GPIO_MODE_SHIFT) | \ - (_GPIO_INPUT_PULLDOWN << _GPIO_OPTIONS_SHIFT)) -#define GPIO_PULLUP ((_GPIO_MODE_GPIO << _GPIO_MODE_SHIFT) | \ - (_GPIO_INPUT_PULLUP << _GPIO_OPTIONS_SHIFT)) -#define GPIO_OUTPUT ((_GPIO_MODE_GPIO << _GPIO_MODE_SHIFT) | \ - (_GPIO_OUTPUT << _GPIO_OPTIONS_SHIFT)) -#define GPIO_FAST ((_GPIO_MODE_GPIO << _GPIO_MODE_SHIFT) | \ - (_GPIO_OUTPUT_FAST << _GPIO_OPTIONS_SHIFT)) -#define GPIO_SLOW ((_GPIO_MODE_GPIO << _GPIO_MODE_SHIFT) | \ - (_GPIO_OUTPUT_SLOW << _GPIO_OPTIONS_SHIFT)) -#define GPIO_OPENDRAIN ((_GPIO_MODE_GPIO << _GPIO_MODE_SHIFT) | \ - (_GPIO_OUTPUT_LOWDRIVE << _GPIO_OPTIONS_SHIFT)) -#define GPIO_LOWDRIVE ((_GPIO_MODE_GPIO << _GPIO_MODE_SHIFT) | \ - (_GPIO_OUTPUT_OPENDRAIN << _GPIO_OPTIONS_SHIFT)) -#define GPIO_HIGHDRIVE ((_GPIO_MODE_GPIO << _GPIO_MODE_SHIFT) | \ - (_GPIO_OUTPUT_HIGHDRIVE << _GPIO_OPTIONS_SHIFT)) - -#define GPIO_ALT2 (_GPIO_MODE_ALT2 << _GPIO_MODE_SHIFT) -#define GPIO_ALT2_INPUT ((_GPIO_MODE_ALT2 << _GPIO_MODE_SHIFT) | \ - (_GPIO_INPUT << _GPIO_OPTIONS_SHIFT)) -#define GPIO_ALT2_PULLDOWN ((_GPIO_MODE_ALT2 << _GPIO_MODE_SHIFT) | \ - (_GPIO_INPUT_PULLDOWN << _GPIO_OPTIONS_SHIFT)) -#define GPIO_ALT2_PULLUP ((_GPIO_MODE_ALT2 << _GPIO_MODE_SHIFT) | \ - (_GPIO_INPUT_PULLUP << _GPIO_OPTIONS_SHIFT)) -#define GPIO_ALT2_OUTPUT ((_GPIO_MODE_ALT2 << _GPIO_MODE_SHIFT) | \ - (_GPIO_OUTPUT << _GPIO_OPTIONS_SHIFT)) -#define GPIO_ALT2_FAST ((_GPIO_MODE_ALT2 << _GPIO_MODE_SHIFT) | \ - (_GPIO_OUTPUT_FAST << _GPIO_OPTIONS_SHIFT)) -#define GPIO_ALT2_SLOW ((_GPIO_MODE_ALT2 << _GPIO_MODE_SHIFT) | \ - (_GPIO_OUTPUT_SLOW << _GPIO_OPTIONS_SHIFT)) -#define GPIO_ALT2_OPENDRAIN ((_GPIO_MODE_ALT2 << _GPIO_MODE_SHIFT) | \ - (_GPIO_OUTPUT_LOWDRIVE << _GPIO_OPTIONS_SHIFT)) -#define GPIO_ALT2_LOWDRIVE ((_GPIO_MODE_ALT2 << _GPIO_MODE_SHIFT) | \ - (_GPIO_OUTPUT_OPENDRAIN << _GPIO_OPTIONS_SHIFT)) -#define GPIO_ALT2_HIGHDRIVE ((_GPIO_MODE_ALT2 << _GPIO_MODE_SHIFT) | \ - (_GPIO_OUTPUT_HIGHDRIVE << _GPIO_OPTIONS_SHIFT)) - -#define GPIO_ALT3 (_GPIO_MODE_ALT3 << _GPIO_MODE_SHIFT) -#define GPIO_ALT3_INPUT ((_GPIO_MODE_ALT3 << _GPIO_MODE_SHIFT) | \ - (_GPIO_INPUT << _GPIO_OPTIONS_SHIFT)) -#define GPIO_ALT3_PULLDOWN ((_GPIO_MODE_ALT3 << _GPIO_MODE_SHIFT) | \ - (_GPIO_INPUT_PULLDOWN << _GPIO_OPTIONS_SHIFT)) -#define GPIO_ALT3_PULLUP ((_GPIO_MODE_ALT3 << _GPIO_MODE_SHIFT) | \ - (_GPIO_INPUT_PULLUP << _GPIO_OPTIONS_SHIFT)) -#define GPIO_ALT3_OUTPUT ((_GPIO_MODE_ALT3 << _GPIO_MODE_SHIFT) | \ - (_GPIO_OUTPUT << _GPIO_OPTIONS_SHIFT)) -#define GPIO_ALT3_FAST ((_GPIO_MODE_ALT3 << _GPIO_MODE_SHIFT) | \ - (_GPIO_OUTPUT_FAST << _GPIO_OPTIONS_SHIFT)) -#define GPIO_ALT3_SLOW ((_GPIO_MODE_ALT3 << _GPIO_MODE_SHIFT) | \ - (_GPIO_OUTPUT_SLOW << _GPIO_OPTIONS_SHIFT)) -#define GPIO_ALT3_OPENDRAIN ((_GPIO_MODE_ALT3 << _GPIO_MODE_SHIFT) | \ - (_GPIO_OUTPUT_LOWDRIVE << _GPIO_OPTIONS_SHIFT)) -#define GPIO_ALT3_LOWDRIVE ((_GPIO_MODE_ALT3 << _GPIO_MODE_SHIFT) | \ - (_GPIO_OUTPUT_OPENDRAIN << _GPIO_OPTIONS_SHIFT)) -#define GPIO_ALT3_HIGHDRIVE ((_GPIO_MODE_ALT3 << _GPIO_MODE_SHIFT) | \ - (_GPIO_OUTPUT_HIGHDRIVE << _GPIO_OPTIONS_SHIFT)) - -#define GPIO_ALT4 (_GPIO_MODE_ALT4 << _GPIO_MODE_SHIFT) -#define GPIO_ALT4_INPUT ((_GPIO_MODE_ALT4 << _GPIO_MODE_SHIFT) | \ - (_GPIO_INPUT << _GPIO_OPTIONS_SHIFT)) -#define GPIO_ALT4_PULLDOWN ((_GPIO_MODE_ALT4 << _GPIO_MODE_SHIFT) | \ - (_GPIO_INPUT_PULLDOWN << _GPIO_OPTIONS_SHIFT)) -#define GPIO_ALT4_PULLUP ((_GPIO_MODE_ALT4 << _GPIO_MODE_SHIFT) | \ - (_GPIO_INPUT_PULLUP << _GPIO_OPTIONS_SHIFT)) -#define GPIO_ALT4_OUTPUT ((_GPIO_MODE_ALT4 << _GPIO_MODE_SHIFT) | \ - (_GPIO_OUTPUT << _GPIO_OPTIONS_SHIFT)) -#define GPIO_ALT4_FAST ((_GPIO_MODE_ALT4 << _GPIO_MODE_SHIFT) | \ - (_GPIO_OUTPUT_FAST << _GPIO_OPTIONS_SHIFT)) -#define GPIO_ALT4_SLOW ((_GPIO_MODE_ALT4 << _GPIO_MODE_SHIFT) | \ - (_GPIO_OUTPUT_SLOW << _GPIO_OPTIONS_SHIFT)) -#define GPIO_ALT4_OPENDRAIN ((_GPIO_MODE_ALT4 << _GPIO_MODE_SHIFT) | \ - (_GPIO_OUTPUT_LOWDRIVE << _GPIO_OPTIONS_SHIFT)) -#define GPIO_ALT4_LOWDRIVE ((_GPIO_MODE_ALT4 << _GPIO_MODE_SHIFT) | \ - (_GPIO_OUTPUT_OPENDRAIN << _GPIO_OPTIONS_SHIFT)) -#define GPIO_ALT4_HIGHDRIVE ((_GPIO_MODE_ALT4 << _GPIO_MODE_SHIFT) | \ - (_GPIO_OUTPUT_HIGHDRIVE << _GPIO_OPTIONS_SHIFT)) - -#define GPIO_ALT5 (_GPIO_MODE_ALT5 << _GPIO_MODE_SHIFT) -#define GPIO_ALT5_INPUT ((_GPIO_MODE_ALT5 << _GPIO_MODE_SHIFT) | \ - (_GPIO_INPUT << _GPIO_OPTIONS_SHIFT)) -#define GPIO_ALT5_PULLDOWN ((_GPIO_MODE_ALT5 << _GPIO_MODE_SHIFT) | \ - (_GPIO_INPUT_PULLDOWN << _GPIO_OPTIONS_SHIFT)) -#define GPIO_ALT5_PULLUP ((_GPIO_MODE_ALT5 << _GPIO_MODE_SHIFT) | \ - (_GPIO_INPUT_PULLUP << _GPIO_OPTIONS_SHIFT)) -#define GPIO_ALT5_OUTPUT ((_GPIO_MODE_ALT5 << _GPIO_MODE_SHIFT) | \ - (_GPIO_OUTPUT << _GPIO_OPTIONS_SHIFT)) -#define GPIO_ALT5_FAST ((_GPIO_MODE_ALT5 << _GPIO_MODE_SHIFT) | \ - (_GPIO_OUTPUT_FAST << _GPIO_OPTIONS_SHIFT)) -#define GPIO_ALT5_SLOW ((_GPIO_MODE_ALT5 << _GPIO_MODE_SHIFT) | \ - (_GPIO_OUTPUT_SLOW << _GPIO_OPTIONS_SHIFT)) -#define GPIO_ALT5_OPENDRAIN ((_GPIO_MODE_ALT5 << _GPIO_MODE_SHIFT) | \ - (_GPIO_OUTPUT_LOWDRIVE << _GPIO_OPTIONS_SHIFT)) -#define GPIO_ALT5_LOWDRIVE ((_GPIO_MODE_ALT5 << _GPIO_MODE_SHIFT) | \ - (_GPIO_OUTPUT_OPENDRAIN << _GPIO_OPTIONS_SHIFT)) -#define GPIO_ALT5_HIGHDRIVE ((_GPIO_MODE_ALT5 << _GPIO_MODE_SHIFT) | \ - (_GPIO_OUTPUT_HIGHDRIVE << _GPIO_OPTIONS_SHIFT)) - -#define GPIO_ALT6 (_GPIO_MODE_ALT6 << _GPIO_MODE_SHIFT) -#define GPIO_ALT6_INPUT ((_GPIO_MODE_ALT6 << _GPIO_MODE_SHIFT) | \ - (_GPIO_INPUT << _GPIO_OPTIONS_SHIFT)) -#define GPIO_ALT6_PULLDOWN ((_GPIO_MODE_ALT6 << _GPIO_MODE_SHIFT) | \ - (_GPIO_INPUT_PULLDOWN << _GPIO_OPTIONS_SHIFT)) -#define GPIO_ALT6_PULLUP ((_GPIO_MODE_ALT6 << _GPIO_MODE_SHIFT) | \ - (_GPIO_INPUT_PULLUP << _GPIO_OPTIONS_SHIFT)) -#define GPIO_ALT6_OUTPUT ((_GPIO_MODE_ALT6 << _GPIO_MODE_SHIFT) | \ - (_GPIO_OUTPUT << _GPIO_OPTIONS_SHIFT)) -#define GPIO_ALT6_FAST ((_GPIO_MODE_ALT6 << _GPIO_MODE_SHIFT) | \ - (_GPIO_OUTPUT_FAST << _GPIO_OPTIONS_SHIFT)) -#define GPIO_ALT6_SLOW ((_GPIO_MODE_ALT6 << _GPIO_MODE_SHIFT) | \ - (_GPIO_OUTPUT_SLOW << _GPIO_OPTIONS_SHIFT)) -#define GPIO_ALT6_OPENDRAIN ((_GPIO_MODE_ALT6 << _GPIO_MODE_SHIFT) | \ - (_GPIO_OUTPUT_LOWDRIVE << _GPIO_OPTIONS_SHIFT)) -#define GPIO_ALT6_LOWDRIVE ((_GPIO_MODE_ALT6 << _GPIO_MODE_SHIFT) | \ - (_GPIO_OUTPUT_OPENDRAIN << _GPIO_OPTIONS_SHIFT)) -#define GPIO_ALT6_HIGHDRIVE ((_GPIO_MODE_ALT6 << _GPIO_MODE_SHIFT) | \ - (_GPIO_OUTPUT_HIGHDRIVE << _GPIO_OPTIONS_SHIFT)) - -#define GPIO_ALT7 (_GPIO_MODE_ALT7 << _GPIO_MODE_SHIFT) -#define GPIO_ALT7_INPUT ((_GPIO_MODE_ALT7 << _GPIO_MODE_SHIFT) | \ - (_GPIO_INPUT << _GPIO_OPTIONS_SHIFT)) -#define GPIO_ALT7_PULLDOWN ((_GPIO_MODE_ALT7 << _GPIO_MODE_SHIFT) | \ - (_GPIO_INPUT_PULLDOWN << _GPIO_OPTIONS_SHIFT)) -#define GPIO_ALT7_PULLUP ((_GPIO_MODE_ALT7 << _GPIO_MODE_SHIFT) | \ - (_GPIO_INPUT_PULLUP << _GPIO_OPTIONS_SHIFT)) -#define GPIO_ALT7_OUTPUT ((_GPIO_MODE_ALT7 << _GPIO_MODE_SHIFT) | \ - (_GPIO_OUTPUT << _GPIO_OPTIONS_SHIFT)) -#define GPIO_ALT7_FAST ((_GPIO_MODE_ALT7 << _GPIO_MODE_SHIFT) | \ - (_GPIO_OUTPUT_FAST << _GPIO_OPTIONS_SHIFT)) -#define GPIO_ALT7_SLOW ((_GPIO_MODE_ALT7 << _GPIO_MODE_SHIFT) | \ - (_GPIO_OUTPUT_SLOW << _GPIO_OPTIONS_SHIFT)) -#define GPIO_ALT7_OPENDRAIN ((_GPIO_MODE_ALT7 << _GPIO_MODE_SHIFT) | \ - (_GPIO_OUTPUT_LOWDRIVE << _GPIO_OPTIONS_SHIFT)) -#define GPIO_ALT7_LOWDRIVE ((_GPIO_MODE_ALT7 << _GPIO_MODE_SHIFT) | \ - (_GPIO_OUTPUT_OPENDRAIN << _GPIO_OPTIONS_SHIFT)) -#define GPIO_ALT7_HIGHDRIVE ((_GPIO_MODE_ALT7 << _GPIO_MODE_SHIFT) | \ - (_GPIO_OUTPUT_HIGHDRIVE << _GPIO_OPTIONS_SHIFT)) +#define PIN_ANALOG _PIN_MODE_ANALOG + +#define GPIO_INPUT (_PIN_MODE_GPIO | _PIN_INPUT) +#define GPIO_PULLDOWN (_PIN_MODE_GPIO | _PIN_INPUT_PULLDOWN) +#define GPIO_PULLUP (_PIN_MODE_GPIO | _PIN_INPUT_PULLUP) +#define GPIO_OUTPUT (_PIN_MODE_GPIO | _PIN_OUTPUT) +#define GPIO_FAST (_PIN_MODE_GPIO | _PIN_OUTPUT_FAST) +#define GPIO_SLOW (_PIN_MODE_GPIO | _PIN_OUTPUT_SLOW) +#define GPIO_OPENDRAIN (_PIN_MODE_GPIO | _PIN_OUTPUT_LOWDRIVE) +#define GPIO_LOWDRIVE (_PIN_MODE_GPIO | _PIN_OUTPUT_OPENDRAIN) +#define GPIO_HIGHDRIVE (_PIN_MODE_GPIO | _PIN_OUTPUT_HIGHDRIVE) + +#define PIN_ALT2 _PIN_MODE_ALT2 +#define PIN_ALT2_INPUT (_PIN_MODE_ALT2 | _PIN_INPUT) +#define PIN_ALT2_PULLDOWN (_PIN_MODE_ALT2 | _PIN_INPUT_PULLDOWN) +#define PIN_ALT2_PULLUP (_PIN_MODE_ALT2 | _PIN_INPUT_PULLUP) +#define PIN_ALT2_OUTPUT (_PIN_MODE_ALT2 | _PIN_OUTPUT) +#define PIN_ALT2_FAST (_PIN_MODE_ALT2 | _PIN_OUTPUT_FAST) +#define PIN_ALT2_SLOW (_PIN_MODE_ALT2 | _PIN_OUTPUT_SLOW) +#define PIN_ALT2_OPENDRAIN (_PIN_MODE_ALT2 | _PIN_OUTPUT_LOWDRIVE) +#define PIN_ALT2_LOWDRIVE (_PIN_MODE_ALT2 | _PIN_OUTPUT_OPENDRAIN) +#define PIN_ALT2_HIGHDRIVE (_PIN_MODE_ALT2 | _PIN_OUTPUT_HIGHDRIVE) + +#define PIN_ALT3 _PIN_MODE_ALT3 +#define PIN_ALT3_INPUT (_PIN_MODE_ALT3 | _PIN_INPUT) +#define PIN_ALT3_PULLDOWN (_PIN_MODE_ALT3 | _PIN_INPUT_PULLDOWN) +#define PIN_ALT3_PULLUP (_PIN_MODE_ALT3 | _PIN_INPUT_PULLUP) +#define PIN_ALT3_OUTPUT (_PIN_MODE_ALT3 | _PIN_OUTPUT) +#define PIN_ALT3_FAST (_PIN_MODE_ALT3 | _PIN_OUTPUT_FAST) +#define PIN_ALT3_SLOW (_PIN_MODE_ALT3 | _PIN_OUTPUT_SLOW) +#define PIN_ALT3_OPENDRAIN (_PIN_MODE_ALT3 | _PIN_OUTPUT_LOWDRIVE) +#define PIN_ALT3_LOWDRIVE (_PIN_MODE_ALT3 | _PIN_OUTPUT_OPENDRAIN) +#define PIN_ALT3_HIGHDRIVE (_PIN_MODE_ALT3 | _PIN_OUTPUT_HIGHDRIVE) + +#define PIN_ALT4 _PIN_MODE_ALT4 +#define PIN_ALT4_INPUT (_PIN_MODE_ALT4 | _PIN_INPUT) +#define PIN_ALT4_PULLDOWN (_PIN_MODE_ALT4 | _PIN_INPUT_PULLDOWN) +#define PIN_ALT4_PULLUP (_PIN_MODE_ALT4 | _PIN_INPUT_PULLUP) +#define PIN_ALT4_OUTPUT (_PIN_MODE_ALT4 | _PIN_OUTPUT) +#define PIN_ALT4_FAST (_PIN_MODE_ALT4 | _PIN_OUTPUT_FAST) +#define PIN_ALT4_SLOW (_PIN_MODE_ALT4 | _PIN_OUTPUT_SLOW) +#define PIN_ALT4_OPENDRAIN (_PIN_MODE_ALT4 | _PIN_OUTPUT_LOWDRIVE) +#define PIN_ALT4_LOWDRIVE (_PIN_MODE_ALT4 | _PIN_OUTPUT_OPENDRAIN) +#define PIN_ALT4_HIGHDRIVE (_PIN_MODE_ALT4 | _PIN_OUTPUT_HIGHDRIVE) + +#define PIN_ALT5 _PIN_MODE_ALT5 +#define PIN_ALT5_INPUT (_PIN_MODE_ALT5 | _PIN_INPUT) +#define PIN_ALT5_PULLDOWN (_PIN_MODE_ALT5 | _PIN_INPUT_PULLDOWN) +#define PIN_ALT5_PULLUP (_PIN_MODE_ALT5 | _PIN_INPUT_PULLUP) +#define PIN_ALT5_OUTPUT (_PIN_MODE_ALT5 | _PIN_OUTPUT) +#define PIN_ALT5_FAST (_PIN_MODE_ALT5 | _PIN_OUTPUT_FAST) +#define PIN_ALT5_SLOW (_PIN_MODE_ALT5 | _PIN_OUTPUT_SLOW) +#define PIN_ALT5_OPENDRAIN (_PIN_MODE_ALT5 | _PIN_OUTPUT_LOWDRIVE) +#define PIN_ALT5_LOWDRIVE (_PIN_MODE_ALT5 | _PIN_OUTPUT_OPENDRAIN) +#define PIN_ALT5_HIGHDRIVE (_PIN_MODE_ALT5 | _PIN_OUTPUT_HIGHDRIVE) + +#define PIN_ALT6 _PIN_MODE_ALT6 +#define PIN_ALT6_INPUT (_PIN_MODE_ALT6 | _PIN_INPUT) +#define PIN_ALT6_PULLDOWN (_PIN_MODE_ALT6 | _PIN_INPUT_PULLDOWN) +#define PIN_ALT6_PULLUP (_PIN_MODE_ALT6 | _PIN_INPUT_PULLUP) +#define PIN_ALT6_OUTPUT (_PIN_MODE_ALT6 | _PIN_OUTPUT) +#define PIN_ALT6_FAST (_PIN_MODE_ALT6 | _PIN_OUTPUT_FAST) +#define PIN_ALT6_SLOW (_PIN_MODE_ALT6 | _PIN_OUTPUT_SLOW) +#define PIN_ALT6_OPENDRAIN (_PIN_MODE_ALT6 | _PIN_OUTPUT_LOWDRIVE) +#define PIN_ALT6_LOWDRIVE (_PIN_MODE_ALT6 | _PIN_OUTPUT_OPENDRAIN) +#define PIN_ALT6_HIGHDRIVE (_PIN_MODE_ALT6 | _PIN_OUTPUT_HIGHDRIVE) + +#define PIN_ALT7 _PIN_MODE_ALT7 +#define PIN_ALT7_INPUT (_PIN_MODE_ALT7 | _PIN_INPUT) +#define PIN_ALT7_PULLDOWN (_PIN_MODE_ALT7 | _PIN_INPUT_PULLDOWN) +#define PIN_ALT7_PULLUP (_PIN_MODE_ALT7 | _PIN_INPUT_PULLUP) +#define PIN_ALT7_OUTPUT (_PIN_MODE_ALT7 | _PIN_OUTPUT) +#define PIN_ALT7_FAST (_PIN_MODE_ALT7 | _PIN_OUTPUT_FAST) +#define PIN_ALT7_SLOW (_PIN_MODE_ALT7 | _PIN_OUTPUT_SLOW) +#define PIN_ALT7_OPENDRAIN (_PIN_MODE_ALT7 | _PIN_OUTPUT_LOWDRIVE) +#define PIN_ALT7_LOWDRIVE (_PIN_MODE_ALT7 | _PIN_OUTPUT_OPENDRAIN) +#define PIN_ALT7_HIGHDRIVE (_PIN_MODE_ALT7 | _PIN_OUTPUT_HIGHDRIVE) /* The initial value for GPIO (Alternative 1 outputs): * @@ -263,110 +202,95 @@ * muxing modes. */ -#define GPIO_OUTPUT_ONE (1 << 24) /* Bit 24: 1:Initial output value=1 */ -#define GPIO_OUTPUT_ZER0 (0) /* Bit 24: 0:Initial output value=0 */ +#define GPIO_OUTPUT_ONE (1 << 24) /* Bit 24: 1:Initial output value=1 */ +#define GPIO_OUTPUT_ZER0 (0) /* Bit 24: 0:Initial output value=0 */ -/* One bit is used to enable the passive filter: +/* Five bits are used to incode DMA/interrupt options: * - * ---- ---- ---- fd-- ---- ---- ---- ---- + * ---- ---- iiii i--- ---- ---- ---- ---- * - * Passive Filter and digital filter enable are valid in all digital pin - * muxing modes. + * The pin interrupt configuration is valid in all digital pin muxing modes + * (restricted to inputs). */ -#define GPIO_PASV_FILTER (1 << 19) /* Bit 19: Enable passive filter */ -#define GPIO_DIG_FILTER (1 << 18) /* Bit 18: Enable digital filter */ - -/* Four bits are used to incode DMA/interupt options: +#define _PIN_INT_SHIFT (20) +#define _PIN_INT_MASK (31 << _PIN_INT_SHIFT) + +#define PIN_DMA_RISING (5 << _PIN_INT_SHIFT) /* 00101 DMA Request on rising edge */ +#define PIN_DMA_FALLING (9 << _PIN_INT_SHIFT) /* 01001 DMA Request on falling edge */ +#define PIN_DMA_BOTH (13 << _PIN_INT_SHIFT) /* 01101 DMA Request on either edge */ +#define PIN_INT_ZERO (2 << _PIN_INT_SHIFT) /* 00010 Interrupt when logic zero */ +#define PIN_INT_RISING (6 << _PIN_INT_SHIFT) /* 00110 Interrupt on rising edge */ +#define PIN_INT_FALLING (10 << _PIN_INT_SHIFT) /* 01010 Interrupt on falling edge */ +#define PIN_INT_BOTH (14 << _PIN_INT_SHIFT) /* 01110 Interrupt on either edge */ +#define PIN_INT_ONE (18 << _PIN_INT_SHIFT) /* 10010 Interrupt when logic one */ + +/* Two bits is used to enable the filter options: * - * ---- ---- iiii ---- ---- ---- ---- ---- + * ---- ---- ---- -fd- ---- ---- ---- ---- * - * The pin interrupt configuration is valid in all digital pin muxing modes - * (restricted to inputs). + * Passive Filter and digital filter enable are valid in all digital pin + * muxing modes. */ -#define _GPIO_INT_SHIFT (20) -#define _GPIO_INT_MASK (15 << _GPIO_MODE_SHIFT) - -#define _GPIO_INTDMA_MASK (1) /* xxx1 DMA/interrupt mask */ -#define _GPIO_DMA (0) /* xxx0 DMA (vs interrupt) */ -#define _GPIO_DMA_EDGE_MASK (6) /* x11x Mask to test edge */ -#define _GPIO_DMA_RISING (2) /* x010 DMA Request on rising edge */ -#define _GPIO_DMA_FALLING (4) /* x100 DMA Request on falling edge */ -#define _GPIO_DMA_BOTH (6) /* x110 DMA Request on either edge */ - -#define _GPIO_INTERRUPT (1) /* xxx1 Interrupt (vs DMA) */ -#define _GPIO_INT_ZERO (1) /* 0001 Interrupt when logic zero */ -#define _GPIO_INT_RISING (3) /* 0011 Interrupt on rising edge */ -#define _GPIO_INT_FALLING (5) /* 0101 Interrupt on falling edge */ -#define _GPIO_INT_BOTH (7) /* 0111 Interrupt on either edge */ -#define _GPIO_INT_ONE (9) /* 1001 Interrupt when logic one */ - -#define GPIO_DMA_RISING (_GPIO_DMA_RISING << _GPIO_MODE_SHIFT) -#define GPIO_DMA_FALLING (_GPIO_DMA_FALLING << _GPIO_MODE_SHIFT) -#define GPIO_DMA_BOTH (_GPIO_DMA_BOTH << _GPIO_MODE_SHIFT) -#define GPIO_INT_ZERO (_GPIO_INT_ZERO << _GPIO_MODE_SHIFT) -#define GPIO_INT_RISING (_GPIO_INT_RISING << _GPIO_MODE_SHIFT) -#define GPIO_INT_FALLING (_GPIO_INT_FALLING << _GPIO_MODE_SHIFT) -#define GPIO_INT_BOTH (_GPIO_INT_BOTH << _GPIO_MODE_SHIFT) -#define GPIO_INT_ONE (_GPIO_INT_ONE << _GPIO_MODE_SHIFT) - +#define PIN_PASV_FILTER (1 << 18) /* Bit 18: Enable passive filter */ +#define PIN_DIG_FILTER (1 << 17) /* Bit 17: Enable digital filter */ + /* Three bits are used to define the port number: * - * oooo mmmf iiii ---- ---- -ppp ---b bbbb + * ---- ---- ---- ---- ---- -ppp ---- ---- */ -#define _GPIO_PORT_SHIFT (8) /* Bits 8-10: port number */ -#define _GPIO_PORT_MASK (7 << _GPIO_PORT_SHIFT) - -#define GPIO_PORTA (KINETIS_PORTA << _GPIO_PORT_SHIFT) -#define GPIO_PORTB (KINETIS_PORTB << _GPIO_PORT_SHIFT) -#define GPIO_PORTC (KINETIS_PORTC << _GPIO_PORT_SHIFT) -#define GPIO_PORTD (KINETIS_PORTD << _GPIO_PORT_SHIFT) -#define GPIO_PORTE (KINETIS_PORTE << _GPIO_PORT_SHIFT) +#define _PIN_PORT_SHIFT (8) /* Bits 8-10: port number */ +#define _PIN_PORT_MASK (7 << _PIN_PORT_SHIFT) +#define PIN_PORTA (KINETIS_PORTA << _PIN_PORT_SHIFT) +#define PIN_PORTB (KINETIS_PORTB << _PIN_PORT_SHIFT) +#define PIN_PORTC (KINETIS_PORTC << _PIN_PORT_SHIFT) +#define PIN_PORTD (KINETIS_PORTD << _PIN_PORT_SHIFT) +#define PIN_PORTE (KINETIS_PORTE << _PIN_PORT_SHIFT) /* Five bits are used to define the pin number: * - * oooo mmmf iiii ---- ---- -ppp ---b bbbb + * ---- ---- ---- ---- ---- ---- ---b bbbb */ -#define _GPIO_PIN_SHIFT (0) /* Bits 0-4: port number */ -#define _GPIO_PIN_MASK (31 << _GPIO_PIN_SHIFT) - -#define GPIO_PIN(n) ((n) << _GPIO_PIN_SHIFT) -#define GPIO_PIN0 (0 << _GPIO_PIN_SHIFT) -#define GPIO_PIN1 (1 << _GPIO_PIN_SHIFT) -#define GPIO_PIN2 (2 << _GPIO_PIN_SHIFT) -#define GPIO_PIN3 (3 << _GPIO_PIN_SHIFT) -#define GPIO_PIN4 (4 << _GPIO_PIN_SHIFT) -#define GPIO_PIN5 (5 << _GPIO_PIN_SHIFT) -#define GPIO_PIN6 (6 << _GPIO_PIN_SHIFT) -#define GPIO_PIN7 (7 << _GPIO_PIN_SHIFT) -#define GPIO_PIN8 (8 << _GPIO_PIN_SHIFT) -#define GPIO_PIN9 (9 << _GPIO_PIN_SHIFT) -#define GPIO_PIN10 (10 << _GPIO_PIN_SHIFT) -#define GPIO_PIN11 (11 << _GPIO_PIN_SHIFT) -#define GPIO_PIN12 (12 << _GPIO_PIN_SHIFT) -#define GPIO_PIN13 (13 << _GPIO_PIN_SHIFT) -#define GPIO_PIN14 (14 << _GPIO_PIN_SHIFT) -#define GPIO_PIN15 (15 << _GPIO_PIN_SHIFT) -#define GPIO_PIN16 (16 << _GPIO_PIN_SHIFT) -#define GPIO_PIN17 (17 << _GPIO_PIN_SHIFT) -#define GPIO_PIN18 (18 << _GPIO_PIN_SHIFT) -#define GPIO_PIN19 (19 << _GPIO_PIN_SHIFT) -#define GPIO_PIN20 (20 << _GPIO_PIN_SHIFT) -#define GPIO_PIN21 (21 << _GPIO_PIN_SHIFT) -#define GPIO_PIN22 (22 << _GPIO_PIN_SHIFT) -#define GPIO_PIN23 (23 << _GPIO_PIN_SHIFT) -#define GPIO_PIN24 (24 << _GPIO_PIN_SHIFT) -#define GPIO_PIN25 (25 << _GPIO_PIN_SHIFT) -#define GPIO_PIN26 (26 << _GPIO_PIN_SHIFT) -#define GPIO_PIN27 (27 << _GPIO_PIN_SHIFT) -#define GPIO_PIN28 (28 << _GPIO_PIN_SHIFT) -#define GPIO_PIN29 (29 << _GPIO_PIN_SHIFT) -#define GPIO_PIN30 (30 << _GPIO_PIN_SHIFT) -#define GPIO_PIN31 (31 << _GPIO_PIN_SHIFT) +#define _PIN_SHIFT (0) /* Bits 0-4: port number */ +#define _PIN_MASK (31 << _PIN_SHIFT) + +#define PIN(n) ((n) << _PIN_SHIFT) +#define PIN0 (0 << _PIN_SHIFT) +#define PIN1 (1 << _PIN_SHIFT) +#define PIN2 (2 << _PIN_SHIFT) +#define PIN3 (3 << _PIN_SHIFT) +#define PIN4 (4 << _PIN_SHIFT) +#define PIN5 (5 << _PIN_SHIFT) +#define PIN6 (6 << _PIN_SHIFT) +#define PIN7 (7 << _PIN_SHIFT) +#define PIN8 (8 << _PIN_SHIFT) +#define PIN9 (9 << _PIN_SHIFT) +#define PIN10 (10 << _PIN_SHIFT) +#define PIN11 (11 << _PIN_SHIFT) +#define PIN12 (12 << _PIN_SHIFT) +#define PIN13 (13 << _PIN_SHIFT) +#define PIN14 (14 << _PIN_SHIFT) +#define PIN15 (15 << _PIN_SHIFT) +#define PIN16 (16 << _PIN_SHIFT) +#define PIN17 (17 << _PIN_SHIFT) +#define PIN18 (18 << _PIN_SHIFT) +#define PIN19 (19 << _PIN_SHIFT) +#define PIN20 (20 << _PIN_SHIFT) +#define PIN21 (21 << _PIN_SHIFT) +#define PIN22 (22 << _PIN_SHIFT) +#define PIN23 (23 << _PIN_SHIFT) +#define PIN24 (24 << _PIN_SHIFT) +#define PIN25 (25 << _PIN_SHIFT) +#define PIN26 (26 << _PIN_SHIFT) +#define PIN27 (27 << _PIN_SHIFT) +#define PIN28 (28 << _PIN_SHIFT) +#define PIN29 (29 << _PIN_SHIFT) +#define PIN30 (30 << _PIN_SHIFT) +#define PIN31 (31 << _PIN_SHIFT) /************************************************************************************ * Public Types @@ -485,31 +409,17 @@ EXTERN void kinetis_uartconfigure(uintptr_t uart_base, uint32_t baud, EXTERN void kinetis_wddisable(void); /************************************************************************************ - * Name: kinetis_gpioirqinitialize + * Name: kinetis_pinconfig * * Description: - * Initialize logic to support a second level of interrupt decoding for GPIO pins. + * Configure a pin based on bit-encoded description of the pin. * ************************************************************************************/ -#ifdef CONFIG_GPIO_IRQ -EXTERN void kinetis_gpioirqinitialize(void); -#else -# define kinetis_gpioirqinitialize() -#endif +EXTERN int kinetis_pinconfig(uint32_t cfgset); /************************************************************************************ - * Name: kinetis_configgpio - * - * Description: - * Configure a GPIO pin based on bit-encoded description of the pin. - * - ************************************************************************************/ - -EXTERN int kinetis_configgpio(uint32_t cfgset); - -/************************************************************************************ - * Name: kinetis_configfilter + * Name: kinetis_pinfilter * * Description: * Configure the digital filter associated with a port. The digital filter @@ -523,7 +433,7 @@ EXTERN int kinetis_configgpio(uint32_t cfgset); * ************************************************************************************/ -EXTERN int kinetis_configfilter(unsigned int port, bool lpo, unsigned int width); +EXTERN int kinetis_pinfilter(unsigned int port, bool lpo, unsigned int width); /************************************************************************************ * Name: kinetis_gpiowrite @@ -546,35 +456,93 @@ EXTERN void kinetis_gpiowrite(uint32_t pinset, bool value); EXTERN bool kinetis_gpioread(uint32_t pinset); /************************************************************************************ - * Name: kinetis_gpioirqenable + * Name: kinetis_pinirqinitialize + * + * Description: + * Initialize logic to support a second level of interrupt decoding for GPIO pins. + * + ************************************************************************************/ + +#ifdef CONFIG_GPIO_IRQ +EXTERN void kinetis_pinirqinitialize(void); +#else +# define kinetis_pinirqinitialize() +#endif + +/************************************************************************************ + * Name: kinetis_pinirqconfig + * + * Description: + * Sets/clears PIN and interrupt triggers. On return PIN interrupts are always + * disabled. + * + * Parameters: + * - pinset: Pin configuration + * - pinisr: Pin interrupt service routine + * + * Returns: + * The previous value of the interrupt handler function pointer. This value may, + * for example, be used to restore the previous handler when multiple handlers are + * used. + * + ************************************************************************************/ + +EXTERN xcpt_t kinetis_pinirqconfig(uint32_t pinset, xcpt_t pinisr); + +/************************************************************************************ + * Name: kinetis_pinirqenable * * Description: - * Enable the interrupt for specified GPIO IRQ + * Enable the interrupt for specified pin IRQ * ************************************************************************************/ #ifdef CONFIG_GPIO_IRQ -EXTERN void kinetis_gpioirqenable(int irq); +EXTERN void kinetis_pinirqenable(uint32_t pinset); #else -# define kinetis_gpioirqenable(irq) +# define kinetis_pinirqenable(pinset) #endif /************************************************************************************ - * Name: kinetis_gpioirqdisable + * Name: kinetis_pinirqdisable * * Description: - * Disable the interrupt for specified GPIO IRQ + * Disable the interrupt for specified pin * ************************************************************************************/ #ifdef CONFIG_GPIO_IRQ -EXTERN void kinetis_gpioirqdisable(int irq); +EXTERN void kinetis_pinirqdisable(uint32_t pinset); #else -# define kinetis_gpioirqdisable(irq) +# define kinetis_pinirqdisable(pinset) +#endif + +/************************************************************************************ + * Name: kinetis_pindmaenable + * + * Description: + * Enable DMA for specified pin + * + ************************************************************************************/ + +#ifdef CONFIG_KINETIS_DMA +EXTERN void kinetis_pindmaenable(uint32_t pinset); +#endif + +/************************************************************************************ + * Name: kinetis_pindmadisable + * + * Description: + * Disable DMA for specified pin + * + ************************************************************************************/ + +#ifdef CONFIG_KINETIS_DMA +EXTERN void kinetis_pindmadisable(uint32_t pinset); #endif /************************************************************************************ - * Function: kinetis_dumpgpio + * Function: kinetis_pindump * * Description: * Dump all GPIO registers associated with the base address of the provided pinset. @@ -582,9 +550,9 @@ EXTERN void kinetis_gpioirqdisable(int irq); ************************************************************************************/ #ifdef CONFIG_DEBUG_GPIO -EXTERN int kinetis_dumpgpio(uint32_t pinset, const char *msg); +EXTERN int kinetis_pindump(uint32_t pinset, const char *msg); #else -# define kinetis_dumpgpio(p,m) +# define kinetis_pindump(p,m) #endif /************************************************************************************ diff --git a/nuttx/arch/arm/src/kinetis/kinetis_irq.c b/nuttx/arch/arm/src/kinetis/kinetis_irq.c old mode 100755 new mode 100644 index 58a6270f4..f89c63584 --- a/nuttx/arch/arm/src/kinetis/kinetis_irq.c +++ b/nuttx/arch/arm/src/kinetis/kinetis_irq.c @@ -392,11 +392,11 @@ void up_irqinitialize(void) #endif /* Initialize logic to support a second level of interrupt decoding for - * GPIO pins. + * configured pin interrupts. */ #ifdef CONFIG_GPIO_IRQ - kinetis_gpioirqinitialize(); + kinetis_pinirqinitialize(); #endif /* And finally, enable interrupts */ @@ -429,14 +429,6 @@ void up_disable_irq(int irq) regval &= ~bit; putreg32(regval, regaddr); } -#ifdef CONFIG_GPIO_IRQ - else - { - /* Maybe it is a (derived) GPIO IRQ */ - - kinetis_gpioirqdisable(irq); - } -#endif kinetis_dumpnvic("disable", irq); } @@ -462,14 +454,6 @@ void up_enable_irq(int irq) regval |= bit; putreg32(regval, regaddr); } -#ifdef CONFIG_GPIO_IRQ - else - { - /* Maybe it is a (derived) GPIO IRQ */ - - kinetis_gpioirqenable(irq); - } -#endif kinetis_dumpnvic("enable", irq); } diff --git a/nuttx/arch/arm/src/kinetis/kinetis_k40pinmux.h b/nuttx/arch/arm/src/kinetis/kinetis_k40pinmux.h index 282fdafe5..13a4da421 100644 --- a/nuttx/arch/arm/src/kinetis/kinetis_k40pinmux.h +++ b/nuttx/arch/arm/src/kinetis/kinetis_k40pinmux.h @@ -59,443 +59,443 @@ defined(CONFIG_ARCH_CHIP_MK40X256VLQ100) || defined(CONFIG_ARCH_CHIP_MK40X256VMD100) || \ defined(CONFIG_ARCH_CHIP_MK40N512VLQ100) || defined(CONFIG_ARCH_CHIP_MK40N512VMD100) -#define GPIO_TSI0_CH1 (GPIO_ANALOG | GPIO_PORTA | GPIO_PIN0) -#define GPIO_UART0_CTS_1 (GPIO_ALT2 | GPIO_PORTA | GPIO_PIN0) -#define GPIO_FTM0_CH5_1 (GPIO_ALT3 | GPIO_PORTA | GPIO_PIN0) -#define GPIO_JTAG_TCLK (GPIO_ALT7 | GPIO_PORTA | GPIO_PIN0) -#define GPIO_GPIO_SWD_CLK (GPIO_ALT7 | GPIO_PORTA | GPIO_PIN0) -#define GPIO_TSI0_CH2 (GPIO_ANALOG | GPIO_PORTA | GPIO_PIN1) -#define GPIO_UART0_RX_1 (GPIO_ALT2 | GPIO_PORTA | GPIO_PIN1) -#define GPIO_FTM0_CH6_1 (GPIO_ALT3 | GPIO_PORTA | GPIO_PIN1) -#define GPIO_JTAG_TDI (GPIO_ALT7 | GPIO_PORTA | GPIO_PIN1) -#define GPIO_TSI0_CH3 (GPIO_ANALOG | GPIO_PORTA | GPIO_PIN2) -#define GPIO_UART0_TX_1 (GPIO_ALT2 | GPIO_PORTA | GPIO_PIN2) -#define GPIO_FTM0_CH7_1 (GPIO_ALT3 | GPIO_PORTA | GPIO_PIN2) -#define GPIO_JTAG_TDO (GPIO_ALT7 | GPIO_PORTA | GPIO_PIN2) -#define GPIO_TRACE_SWO (GPIO_ALT7 | GPIO_PORTA | GPIO_PIN2) -#define GPIO_TSI0_CH4 (GPIO_ANALOG | GPIO_PORTA | GPIO_PIN3) -#define GPIO_UART0_RTS_1 (GPIO_ALT2 | GPIO_PORTA | GPIO_PIN3) -#define GPIO_FTM0_CH0_1 (GPIO_ALT3 | GPIO_PORTA | GPIO_PIN3) -#define GPIO_JTAG_TMS (GPIO_ALT7 | GPIO_PORTA | GPIO_PIN3) -#define GPIO_SWD_DIO (GPIO_ALT7 | GPIO_PORTA | GPIO_PIN3) -#define GPIO_TSI0_CH5 (GPIO_ANALOG | GPIO_PORTA | GPIO_PIN4) -#define GPIO_FTM0_CH1_1 (GPIO_ALT3 | GPIO_PORTA | GPIO_PIN4) -#define GPIO_NMI (GPIO_ALT7 | GPIO_PORTA | GPIO_PIN4) -#define GPIO_FTM0_CH2_1 (GPIO_ALT3 | GPIO_PORTA | GPIO_PIN5) -#define GPIO_CMP2_OUT_1 (GPIO_ALT5 | GPIO_PORTA | GPIO_PIN5) -#define GPIO_I2S0_RX_BCLK_1 (GPIO_ALT6 | GPIO_PORTA | GPIO_PIN5) -#define GPIO_JTAG_TRST (GPIO_ALT7 | GPIO_PORTA | GPIO_PIN5) -#define GPIO_FTM0_CH3_1 (GPIO_ALT3 | GPIO_PORTA | GPIO_PIN6) -#define GPIO_FB_CLKOUT (GPIO_ALT5 | GPIO_PORTA | GPIO_PIN6) -#define GPIO_TRACE_CLKOUT (GPIO_ALT7 | GPIO_PORTA | GPIO_PIN6) -#define GPIO_ADC0_SE10 (GPIO_ANALOG | GPIO_PORTA | GPIO_PIN7) -#define GPIO_FTM0_CH4_1 (GPIO_ALT3 | GPIO_PORTA | GPIO_PIN7) -#define GPIO_FB_AD18 (GPIO_ALT5 | GPIO_PORTA | GPIO_PIN7) -#define GPIO_TRACE_D3 (GPIO_ALT7 | GPIO_PORTA | GPIO_PIN7) -#define GPIO_ADC0_SE11 (GPIO_ANALOG | GPIO_PORTA | GPIO_PIN8) -#define GPIO_FTM1_CH0_1 (GPIO_ALT3 | GPIO_PORTA | GPIO_PIN8) -#define GPIO_FB_AD17 (GPIO_ALT5 | GPIO_PORTA | GPIO_PIN8) -#define GPIO_FTM1_QD_PHA_1 (GPIO_ALT6 | GPIO_PORTA | GPIO_PIN8) -#define GPIO_TRACE_D2 (GPIO_ALT7 | GPIO_PORTA | GPIO_PIN8) -#define GPIO_FTM1_CH1_1 (GPIO_ALT3 | GPIO_PORTA | GPIO_PIN9) -#define GPIO_FB_AD16 (GPIO_ALT5 | GPIO_PORTA | GPIO_PIN9) -#define GPIO_FTM1_QD_PHB_1 (GPIO_ALT6 | GPIO_PORTA | GPIO_PIN9) -#define GPIO_TRACE_D1 (GPIO_ALT7 | GPIO_PORTA | GPIO_PIN9) -#define GPIO_FTM2_CH0_1 (GPIO_ALT3 | GPIO_PORTA | GPIO_PIN10) -#define GPIO_FB_AD15 (GPIO_ALT5 | GPIO_PORTA | GPIO_PIN10) -#define GPIO_FTM2_QD_PHA_1 (GPIO_ALT6 | GPIO_PORTA | GPIO_PIN10) -#define GPIO_TRACE_D0 (GPIO_ALT7 | GPIO_PORTA | GPIO_PIN10) -#define GPIO_FTM2_CH1_1 (GPIO_ALT3 | GPIO_PORTA | GPIO_PIN11) -#define GPIO_FB_OE (GPIO_ALT5 | GPIO_PORTA | GPIO_PIN11) -#define GPIO_FTM2_QD_PHB_1 (GPIO_ALT6 | GPIO_PORTA | GPIO_PIN11) -#define GPIO_CMP2_IN0 (GPIO_ANALOG | GPIO_PORTA | GPIO_PIN12) -#define GPIO_CAN0_TX_1 (GPIO_ALT2 | GPIO_PORTA | GPIO_PIN12) -#define GPIO_FTM1_CH0_2 (GPIO_ALT3 | GPIO_PORTA | GPIO_PIN12) -#define GPIO_FB_CS5 (GPIO_ALT5 | GPIO_PORTA | GPIO_PIN12) -#define GPIO_FB_TSIZ1 (GPIO_ALT5 | GPIO_PORTA | GPIO_PIN12) -#define GPIO_FB_BE23_16_BLS15_8 (GPIO_ALT5 | GPIO_PORTA | GPIO_PIN12) -#define GPIO_I2S0_TXD_1 (GPIO_ALT6 | GPIO_PORTA | GPIO_PIN12) -#define GPIO_FTM1_QD_PHA_2 (GPIO_ALT7 | GPIO_PORTA | GPIO_PIN12) -#define GPIO_CMP2_IN1 (GPIO_ANALOG | GPIO_PORTA | GPIO_PIN13) -#define GPIO_CAN0_RX_1 (GPIO_ALT2 | GPIO_PORTA | GPIO_PIN13) -#define GPIO_FTM1_CH1_2 (GPIO_ALT3 | GPIO_PORTA | GPIO_PIN13) -#define GPIO_FB_CS4 (GPIO_ALT5 | GPIO_PORTA | GPIO_PIN13) -#define GPIO_FB_TSIZ0 (GPIO_ALT5 | GPIO_PORTA | GPIO_PIN13) -#define GPIO_FB_BE31_24_BLS7_0 (GPIO_ALT5 | GPIO_PORTA | GPIO_PIN13) -#define GPIO_I2S0_TX_FS_1 (GPIO_ALT6 | GPIO_PORTA | GPIO_PIN13) -#define GPIO_FTM1_QD_PHB_2 (GPIO_ALT7 | GPIO_PORTA | GPIO_PIN13) -#define GPIO_SPI0_PCS0_1 (GPIO_ALT2 | GPIO_PORTA | GPIO_PIN14) -#define GPIO_UART0_TX_2 (GPIO_ALT3 | GPIO_PORTA | GPIO_PIN14) -#define GPIO_FB_AD31 (GPIO_ALT5 | GPIO_PORTA | GPIO_PIN14) -#define GPIO_I2S0_TX_BCLK_1 (GPIO_ALT6 | GPIO_PORTA | GPIO_PIN14) -#define GPIO_SPI0_SCK_1 (GPIO_ALT2 | GPIO_PORTA | GPIO_PIN15) -#define GPIO_UART0_RX_2 (GPIO_ALT3 | GPIO_PORTA | GPIO_PIN15) -#define GPIO_FB_AD30 (GPIO_ALT5 | GPIO_PORTA | GPIO_PIN15) -#define GPIO_I2S0_RXD_1 (GPIO_ALT6 | GPIO_PORTA | GPIO_PIN15) -#define GPIO_SPI0_SOUT_1 (GPIO_ALT2 | GPIO_PORTA | GPIO_PIN16) -#define GPIO_UART0_CTS_2 (GPIO_ALT3 | GPIO_PORTA | GPIO_PIN16) -#define GPIO_FB_AD29 (GPIO_ALT5 | GPIO_PORTA | GPIO_PIN16) -#define GPIO_I2S0_RX_FS_1 (GPIO_ALT6 | GPIO_PORTA | GPIO_PIN16) -#define GPIO_ADC1_SE17 (GPIO_ANALOG | GPIO_PORTA | GPIO_PIN17) -#define GPIO_SPI0_SIN_1 (GPIO_ALT2 | GPIO_PORTA | GPIO_PIN17) -#define GPIO_UART0_RTS_2 (GPIO_ALT3 | GPIO_PORTA | GPIO_PIN17) -#define GPIO_FB_AD28 (GPIO_ALT5 | GPIO_PORTA | GPIO_PIN17) -#define GPIO_I2S0_MCLK_1 (GPIO_ALT6 | GPIO_PORTA | GPIO_PIN17) -#define GPIO_I2S0_CLKIN_1 (GPIO_ALT7 | GPIO_PORTA | GPIO_PIN17) -#define GPIO_EXTAL (GPIO_ANALOG | GPIO_PORTA | GPIO_PIN18) -#define GPIO_FTM0_FLT2_1 (GPIO_ALT3 | GPIO_PORTA | GPIO_PIN18) -#define GPIO_FTM_CLKIN0 (GPIO_ALT4 | GPIO_PORTA | GPIO_PIN18) -#define GPIO_XTAL (GPIO_ANALOG | GPIO_PORTA | GPIO_PIN19) -#define GPIO_FTM1_FLT0_1 (GPIO_ALT3 | GPIO_PORTA | GPIO_PIN19) -#define GPIO_FTM_CLKIN1 (GPIO_ALT4 | GPIO_PORTA | GPIO_PIN19) -#define GPIO_LPT0_ALT1 (GPIO_ALT6 | GPIO_PORTA | GPIO_PIN19) -#define GPIO_FB_AD14 (GPIO_ALT5 | GPIO_PORTA | GPIO_PIN24) -#define GPIO_FB_AD13 (GPIO_ALT5 | GPIO_PORTA | GPIO_PIN25) -#define GPIO_FB_AD12 (GPIO_ALT5 | GPIO_PORTA | GPIO_PIN26) -#define GPIO_FB_AD11 (GPIO_ALT5 | GPIO_PORTA | GPIO_PIN27) -#define GPIO_FB_AD10 (GPIO_ALT5 | GPIO_PORTA | GPIO_PIN28) -#define GPIO_FB_AD19 (GPIO_ALT5 | GPIO_PORTA | GPIO_PIN29) +#define PIN_TSI0_CH1 (PIN_ANALOG | PIN_PORTA | PIN0) +#define PIN_UART0_CTS_1 (PIN_ALT2 | PIN_PORTA | PIN0) +#define PIN_FTM0_CH5_1 (PIN_ALT3 | PIN_PORTA | PIN0) +#define PIN_JTAG_TCLK (PIN_ALT7 | PIN_PORTA | PIN0) +#define PIN_SWD_CLK (PIN_ALT7 | PIN_PORTA | PIN0) +#define PIN_TSI0_CH2 (PIN_ANALOG | PIN_PORTA | PIN1) +#define PIN_UART0_RX_1 (PIN_ALT2 | PIN_PORTA | PIN1) +#define PIN_FTM0_CH6_1 (PIN_ALT3 | PIN_PORTA | PIN1) +#define PIN_JTAG_TDI (PIN_ALT7 | PIN_PORTA | PIN1) +#define PIN_TSI0_CH3 (PIN_ANALOG | PIN_PORTA | PIN2) +#define PIN_UART0_TX_1 (PIN_ALT2 | PIN_PORTA | PIN2) +#define PIN_FTM0_CH7_1 (PIN_ALT3 | PIN_PORTA | PIN2) +#define PIN_JTAG_TDO (PIN_ALT7 | PIN_PORTA | PIN2) +#define PIN_TRACE_SWO (PIN_ALT7 | PIN_PORTA | PIN2) +#define PIN_TSI0_CH4 (PIN_ANALOG | PIN_PORTA | PIN3) +#define PIN_UART0_RTS_1 (PIN_ALT2 | PIN_PORTA | PIN3) +#define PIN_FTM0_CH0_1 (PIN_ALT3 | PIN_PORTA | PIN3) +#define PIN_JTAG_TMS (PIN_ALT7 | PIN_PORTA | PIN3) +#define PIN_SWD_DIO (PIN_ALT7 | PIN_PORTA | PIN3) +#define PIN_TSI0_CH5 (PIN_ANALOG | PIN_PORTA | PIN4) +#define PIN_FTM0_CH1_1 (PIN_ALT3 | PIN_PORTA | PIN4) +#define PIN_NMI (PIN_ALT7 | PIN_PORTA | PIN4) +#define PIN_FTM0_CH2_1 (PIN_ALT3 | PIN_PORTA | PIN5) +#define PIN_CMP2_OUT_1 (PIN_ALT5 | PIN_PORTA | PIN5) +#define PIN_I2S0_RX_BCLK_1 (PIN_ALT6 | PIN_PORTA | PIN5) +#define PIN_JTAG_TRST (PIN_ALT7 | PIN_PORTA | PIN5) +#define PIN_FTM0_CH3_1 (PIN_ALT3 | PIN_PORTA | PIN6) +#define PIN_FB_CLKOUT (PIN_ALT5 | PIN_PORTA | PIN6) +#define PIN_TRACE_CLKOUT (PIN_ALT7 | PIN_PORTA | PIN6) +#define PIN_ADC0_SE10 (PIN_ANALOG | PIN_PORTA | PIN7) +#define PIN_FTM0_CH4_1 (PIN_ALT3 | PIN_PORTA | PIN7) +#define PIN_FB_AD18 (PIN_ALT5 | PIN_PORTA | PIN7) +#define PIN_TRACE_D3 (PIN_ALT7 | PIN_PORTA | PIN7) +#define PIN_ADC0_SE11 (PIN_ANALOG | PIN_PORTA | PIN8) +#define PIN_FTM1_CH0_1 (PIN_ALT3 | PIN_PORTA | PIN8) +#define PIN_FB_AD17 (PIN_ALT5 | PIN_PORTA | PIN8) +#define PIN_FTM1_QD_PHA_1 (PIN_ALT6 | PIN_PORTA | PIN8) +#define PIN_TRACE_D2 (PIN_ALT7 | PIN_PORTA | PIN8) +#define PIN_FTM1_CH1_1 (PIN_ALT3 | PIN_PORTA | PIN9) +#define PIN_FB_AD16 (PIN_ALT5 | PIN_PORTA | PIN9) +#define PIN_FTM1_QD_PHB_1 (PIN_ALT6 | PIN_PORTA | PIN9) +#define PIN_TRACE_D1 (PIN_ALT7 | PIN_PORTA | PIN9) +#define PIN_FTM2_CH0_1 (PIN_ALT3 | PIN_PORTA | PIN10) +#define PIN_FB_AD15 (PIN_ALT5 | PIN_PORTA | PIN10) +#define PIN_FTM2_QD_PHA_1 (PIN_ALT6 | PIN_PORTA | PIN10) +#define PIN_TRACE_D0 (PIN_ALT7 | PIN_PORTA | PIN10) +#define PIN_FTM2_CH1_1 (PIN_ALT3 | PIN_PORTA | PIN11) +#define PIN_FB_OE (PIN_ALT5 | PIN_PORTA | PIN11) +#define PIN_FTM2_QD_PHB_1 (PIN_ALT6 | PIN_PORTA | PIN11) +#define PIN_CMP2_IN0 (PIN_ANALOG | PIN_PORTA | PIN12) +#define PIN_CAN0_TX_1 (PIN_ALT2 | PIN_PORTA | PIN12) +#define PIN_FTM1_CH0_2 (PIN_ALT3 | PIN_PORTA | PIN12) +#define PIN_FB_CS5 (PIN_ALT5 | PIN_PORTA | PIN12) +#define PIN_FB_TSIZ1 (PIN_ALT5 | PIN_PORTA | PIN12) +#define PIN_FB_BE23_16_BLS15_8 (PIN_ALT5 | PIN_PORTA | PIN12) +#define PIN_I2S0_TXD_1 (PIN_ALT6 | PIN_PORTA | PIN12) +#define PIN_FTM1_QD_PHA_2 (PIN_ALT7 | PIN_PORTA | PIN12) +#define PIN_CMP2_IN1 (PIN_ANALOG | PIN_PORTA | PIN13) +#define PIN_CAN0_RX_1 (PIN_ALT2 | PIN_PORTA | PIN13) +#define PIN_FTM1_CH1_2 (PIN_ALT3 | PIN_PORTA | PIN13) +#define PIN_FB_CS4 (PIN_ALT5 | PIN_PORTA | PIN13) +#define PIN_FB_TSIZ0 (PIN_ALT5 | PIN_PORTA | PIN13) +#define PIN_FB_BE31_24_BLS7_0 (PIN_ALT5 | PIN_PORTA | PIN13) +#define PIN_I2S0_TX_FS_1 (PIN_ALT6 | PIN_PORTA | PIN13) +#define PIN_FTM1_QD_PHB_2 (PIN_ALT7 | PIN_PORTA | PIN13) +#define PIN_SPI0_PCS0_1 (PIN_ALT2 | PIN_PORTA | PIN14) +#define PIN_UART0_TX_2 (PIN_ALT3 | PIN_PORTA | PIN14) +#define PIN_FB_AD31 (PIN_ALT5 | PIN_PORTA | PIN14) +#define PIN_I2S0_TX_BCLK_1 (PIN_ALT6 | PIN_PORTA | PIN14) +#define PIN_SPI0_SCK_1 (PIN_ALT2 | PIN_PORTA | PIN15) +#define PIN_UART0_RX_2 (PIN_ALT3 | PIN_PORTA | PIN15) +#define PIN_FB_AD30 (PIN_ALT5 | PIN_PORTA | PIN15) +#define PIN_I2S0_RXD_1 (PIN_ALT6 | PIN_PORTA | PIN15) +#define PIN_SPI0_SOUT_1 (PIN_ALT2 | PIN_PORTA | PIN16) +#define PIN_UART0_CTS_2 (PIN_ALT3 | PIN_PORTA | PIN16) +#define PIN_FB_AD29 (PIN_ALT5 | PIN_PORTA | PIN16) +#define PIN_I2S0_RX_FS_1 (PIN_ALT6 | PIN_PORTA | PIN16) +#define PIN_ADC1_SE17 (PIN_ANALOG | PIN_PORTA | PIN17) +#define PIN_SPI0_SIN_1 (PIN_ALT2 | PIN_PORTA | PIN17) +#define PIN_UART0_RTS_2 (PIN_ALT3 | PIN_PORTA | PIN17) +#define PIN_FB_AD28 (PIN_ALT5 | PIN_PORTA | PIN17) +#define PIN_I2S0_MCLK_1 (PIN_ALT6 | PIN_PORTA | PIN17) +#define PIN_I2S0_CLKIN_1 (PIN_ALT7 | PIN_PORTA | PIN17) +#define PIN_EXTAL (PIN_ANALOG | PIN_PORTA | PIN18) +#define PIN_FTM0_FLT2_1 (PIN_ALT3 | PIN_PORTA | PIN18) +#define PIN_FTM_CLKIN0 (PIN_ALT4 | PIN_PORTA | PIN18) +#define PIN_XTAL (PIN_ANALOG | PIN_PORTA | PIN19) +#define PIN_FTM1_FLT0_1 (PIN_ALT3 | PIN_PORTA | PIN19) +#define PIN_FTM_CLKIN1 (PIN_ALT4 | PIN_PORTA | PIN19) +#define PIN_LPT0_ALT1 (PIN_ALT6 | PIN_PORTA | PIN19) +#define PIN_FB_AD14 (PIN_ALT5 | PIN_PORTA | PIN24) +#define PIN_FB_AD13 (PIN_ALT5 | PIN_PORTA | PIN25) +#define PIN_FB_AD12 (PIN_ALT5 | PIN_PORTA | PIN26) +#define PIN_FB_AD11 (PIN_ALT5 | PIN_PORTA | PIN27) +#define PIN_FB_AD10 (PIN_ALT5 | PIN_PORTA | PIN28) +#define PIN_FB_AD19 (PIN_ALT5 | PIN_PORTA | PIN29) -#define GPIO_LCD_P0 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN0) -#define GPIO_ADC0_SE8 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN0) -#define GPIO_ADC1_SE8 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN0) -#define GPIO_TSI0_CH0 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN0) -#define GPIO_I2C0_SCL_1 (GPIO_ALT2 | GPIO_PORTB | GPIO_PIN0) -#define GPIO_FTM1_CH0_3 (GPIO_ALT3 | GPIO_PORTB | GPIO_PIN0) -#define GPIO_FTM1_QD_PHA_3 (GPIO_ALT6 | GPIO_PORTB | GPIO_PIN0) -#define GPIO_LCD_P0F (GPIO_ALT7 | GPIO_PORTB | GPIO_PIN0) -#define GPIO_LCD_P1 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN1) -#define GPIO_ADC0_SE9 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN1) -#define GPIO_ADC1_SE9 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN1) -#define GPIO_TSI0_CH6 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN1) -#define GPIO_I2C0_SDA_1 (GPIO_ALT2 | GPIO_PORTB | GPIO_PIN1) -#define GPIO_FTM1_CH1_3 (GPIO_ALT3 | GPIO_PORTB | GPIO_PIN1) -#define GPIO_FTM1_QD_PHB (GPIO_ALT6 | GPIO_PORTB | GPIO_PIN1) -#define GPIO_LCD_P1F (GPIO_ALT7 | GPIO_PORTB | GPIO_PIN1) -#define GPIO_LCD_P2 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN2) -#define GPIO_ADC0_SE12 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN2) -#define GPIO_TSI0_CH7 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN2) -#define GPIO_I2C0_SCL_2 (GPIO_ALT2 | GPIO_PORTB | GPIO_PIN2) -#define GPIO_UART0_RTS_3 (GPIO_ALT3 | GPIO_PORTB | GPIO_PIN2) -#define GPIO_FTM0_FLT3 (GPIO_ALT6 | GPIO_PORTB | GPIO_PIN2) -#define GPIO_LCD_P2F (GPIO_ALT7 | GPIO_PORTB | GPIO_PIN2) -#define GPIO_LCD_P3 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN3) -#define GPIO_ADC0_SE13 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN3) -#define GPIO_TSI0_CH8 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN3) -#define GPIO_I2C0_SDA_2 (GPIO_ALT2 | GPIO_PORTB | GPIO_PIN3) -#define GPIO_UART0_CTS_3 (GPIO_ALT3 | GPIO_PORTB | GPIO_PIN3) -#define GPIO_FTM0_FLT0_1 (GPIO_ALT6 | GPIO_PORTB | GPIO_PIN3) -#define GPIO_LCD_P3F (GPIO_ALT7 | GPIO_PORTB | GPIO_PIN3) -#define GPIO_LCD_P4 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN4) -#define GPIO_ADC1_SE10 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN4) -#define GPIO_FTM1_FLT0_2 (GPIO_ALT6 | GPIO_PORTB | GPIO_PIN4) -#define GPIO_LCD_P4F (GPIO_ALT7 | GPIO_PORTB | GPIO_PIN4) -#define GPIO_LCD_P5 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN5) -#define GPIO_ADC1_SE11 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN5) -#define GPIO_FTM2_FLT0_1 (GPIO_ALT6 | GPIO_PORTB | GPIO_PIN5) -#define GPIO_LCD_P5F (GPIO_ALT7 | GPIO_PORTB | GPIO_PIN5) -#define GPIO_LCD_P6 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN6) -#define GPIO_ADC1_SE12 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN6) -#define GPIO_LCD_P6F (GPIO_ALT7 | GPIO_PORTB | GPIO_PIN6) -#define GPIO_LCD_P7 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN7) -#define GPIO_ADC1_SE13 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN7) -#define GPIO_LCD_P7F (GPIO_ALT7 | GPIO_PORTB | GPIO_PIN7) -#define GPIO_LCD_P8 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN8) -#define GPIO_UART3_RTS_1 (GPIO_ALT3 | GPIO_PORTB | GPIO_PIN8) -#define GPIO_LCD_P8F (GPIO_ALT7 | GPIO_PORTB | GPIO_PIN8) -#define GPIO_LCD_P9 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN9) -#define GPIO_SPI1_PCS1_1 (GPIO_ALT2 | GPIO_PORTB | GPIO_PIN9) -#define GPIO_UART3_CTS_1 (GPIO_ALT3 | GPIO_PORTB | GPIO_PIN9) -#define GPIO_LCD_P9F (GPIO_ALT7 | GPIO_PORTB | GPIO_PIN9) -#define GPIO_LCD_P10 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN10) -#define GPIO_ADC1_SE14 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN10) -#define GPIO_SPI1_PCS0_1 (GPIO_ALT2 | GPIO_PORTB | GPIO_PIN10) -#define GPIO_UART3_RX_1 (GPIO_ALT3 | GPIO_PORTB | GPIO_PIN10) -#define GPIO_FTM0_FLT1_1 (GPIO_ALT6 | GPIO_PORTB | GPIO_PIN10) -#define GPIO_LCD_P10F (GPIO_ALT7 | GPIO_PORTB | GPIO_PIN10) -#define GPIO_LCD_P11 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN11) -#define GPIO_ADC1_SE15 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN11) -#define GPIO_SPI1_SCK_1 (GPIO_ALT2 | GPIO_PORTB | GPIO_PIN11) -#define GPIO_UART3_TX_1 (GPIO_ALT3 | GPIO_PORTB | GPIO_PIN11) -#define GPIO_FTM0_FLT2_2 (GPIO_ALT6 | GPIO_PORTB | GPIO_PIN11) -#define GPIO_LCD_P11F (GPIO_ALT7 | GPIO_PORTB | GPIO_PIN11) -#define GPIO_LCD_P12 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN16) -#define GPIO_TSI0_CH9 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN16) -#define GPIO_SPI1_SOUT_1 (GPIO_ALT2 | GPIO_PORTB | GPIO_PIN16) -#define GPIO_UART0_RX_3 (GPIO_ALT3 | GPIO_PORTB | GPIO_PIN16) -#define GPIO_EWM_IN_1 (GPIO_ALT6 | GPIO_PORTB | GPIO_PIN16) -#define GPIO_LCD_P12F (GPIO_ALT7 | GPIO_PORTB | GPIO_PIN16) -#define GPIO_LCD_P13 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN17) -#define GPIO_TSI0_CH10 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN17) -#define GPIO_SPI1_SIN_1 (GPIO_ALT2 | GPIO_PORTB | GPIO_PIN17) -#define GPIO_UART0_TX_3 (GPIO_ALT3 | GPIO_PORTB | GPIO_PIN17) -#define GPIO_EWM_OUT_1 (GPIO_ALT6 | GPIO_PORTB | GPIO_PIN17) -#define GPIO_LCD_P13F (GPIO_ALT7 | GPIO_PORTB | GPIO_PIN17) -#define GPIO_LCD_P14 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN18) -#define GPIO_TSI0_CH11 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN18) -#define GPIO_CAN0_TX_2 (GPIO_ALT2 | GPIO_PORTB | GPIO_PIN18) -#define GPIO_FTM2_CH0_2 (GPIO_ALT3 | GPIO_PORTB | GPIO_PIN18) -#define GPIO_I2S0_TX_BCLK_2 (GPIO_ALT4 | GPIO_PORTB | GPIO_PIN18) -#define GPIO_FTM2_QD_PHA_2 (GPIO_ALT6 | GPIO_PORTB | GPIO_PIN18) -#define GPIO_LCD_P14F (GPIO_ALT7 | GPIO_PORTB | GPIO_PIN18) -#define GPIO_LCD_P15 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN19) -#define GPIO_TSI0_CH12 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN19) -#define GPIO_CAN0_RX_2 (GPIO_ALT2 | GPIO_PORTB | GPIO_PIN19) -#define GPIO_FTM2_CH1_2 (GPIO_ALT3 | GPIO_PORTB | GPIO_PIN19) -#define GPIO_I2S0_TX_FS_2 (GPIO_ALT4 | GPIO_PORTB | GPIO_PIN19) -#define GPIO_FTM2_QD_PHB_2 (GPIO_ALT6 | GPIO_PORTB | GPIO_PIN19) -#define GPIO_LCD_P15F (GPIO_ALT7 | GPIO_PORTB | GPIO_PIN19) -#define GPIO_LCD_P16 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN20) -#define GPIO_SPI2_PCS0_1 (GPIO_ALT2 | GPIO_PORTB | GPIO_PIN20) -#define GPIO_CMP0_OUT_1 (GPIO_ALT6 | GPIO_PORTB | GPIO_PIN20) -#define GPIO_LCD_P16F (GPIO_ALT7 | GPIO_PORTB | GPIO_PIN20) -#define GPIO_LCD_P17 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN21) -#define GPIO_SPI2_SCK_1 (GPIO_ALT2 | GPIO_PORTB | GPIO_PIN21) -#define GPIO_CMP1_OUT_1 (GPIO_ALT6 | GPIO_PORTB | GPIO_PIN21) -#define GPIO_LCD_P17F (GPIO_ALT7 | GPIO_PORTB | GPIO_PIN21) -#define GPIO_LCD_P18 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN22) -#define GPIO_SPI2_SOUT_1 (GPIO_ALT2 | GPIO_PORTB | GPIO_PIN22) -#define GPIO_CMP2_OUT_2 (GPIO_ALT6 | GPIO_PORTB | GPIO_PIN22) -#define GPIO_LCD_P18F (GPIO_ALT7 | GPIO_PORTB | GPIO_PIN22) -#define GPIO_LCD_P19 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN23) -#define GPIO_SPI2_SIN_1 (GPIO_ALT2 | GPIO_PORTB | GPIO_PIN23) -#define GPIO_SPI0_PCS5 (GPIO_ALT3 | GPIO_PORTB | GPIO_PIN23) -#define GPIO_LCD_P19F (GPIO_ALT7 | GPIO_PORTB | GPIO_PIN23) +#define PIN_LCD_P0 (PIN_ANALOG | PIN_PORTB | PIN0) +#define PIN_ADC0_SE8 (PIN_ANALOG | PIN_PORTB | PIN0) +#define PIN_ADC1_SE8 (PIN_ANALOG | PIN_PORTB | PIN0) +#define PIN_TSI0_CH0 (PIN_ANALOG | PIN_PORTB | PIN0) +#define PIN_I2C0_SCL_1 (PIN_ALT2 | PIN_PORTB | PIN0) +#define PIN_FTM1_CH0_3 (PIN_ALT3 | PIN_PORTB | PIN0) +#define PIN_FTM1_QD_PHA_3 (PIN_ALT6 | PIN_PORTB | PIN0) +#define PIN_LCD_P0F (PIN_ALT7 | PIN_PORTB | PIN0) +#define PIN_LCD_P1 (PIN_ANALOG | PIN_PORTB | PIN1) +#define PIN_ADC0_SE9 (PIN_ANALOG | PIN_PORTB | PIN1) +#define PIN_ADC1_SE9 (PIN_ANALOG | PIN_PORTB | PIN1) +#define PIN_TSI0_CH6 (PIN_ANALOG | PIN_PORTB | PIN1) +#define PIN_I2C0_SDA_1 (PIN_ALT2 | PIN_PORTB | PIN1) +#define PIN_FTM1_CH1_3 (PIN_ALT3 | PIN_PORTB | PIN1) +#define PIN_FTM1_QD_PHB (PIN_ALT6 | PIN_PORTB | PIN1) +#define PIN_LCD_P1F (PIN_ALT7 | PIN_PORTB | PIN1) +#define PIN_LCD_P2 (PIN_ANALOG | PIN_PORTB | PIN2) +#define PIN_ADC0_SE12 (PIN_ANALOG | PIN_PORTB | PIN2) +#define PIN_TSI0_CH7 (PIN_ANALOG | PIN_PORTB | PIN2) +#define PIN_I2C0_SCL_2 (PIN_ALT2 | PIN_PORTB | PIN2) +#define PIN_UART0_RTS_3 (PIN_ALT3 | PIN_PORTB | PIN2) +#define PIN_FTM0_FLT3 (PIN_ALT6 | PIN_PORTB | PIN2) +#define PIN_LCD_P2F (PIN_ALT7 | PIN_PORTB | PIN2) +#define PIN_LCD_P3 (PIN_ANALOG | PIN_PORTB | PIN3) +#define PIN_ADC0_SE13 (PIN_ANALOG | PIN_PORTB | PIN3) +#define PIN_TSI0_CH8 (PIN_ANALOG | PIN_PORTB | PIN3) +#define PIN_I2C0_SDA_2 (PIN_ALT2 | PIN_PORTB | PIN3) +#define PIN_UART0_CTS_3 (PIN_ALT3 | PIN_PORTB | PIN3) +#define PIN_FTM0_FLT0_1 (PIN_ALT6 | PIN_PORTB | PIN3) +#define PIN_LCD_P3F (PIN_ALT7 | PIN_PORTB | PIN3) +#define PIN_LCD_P4 (PIN_ANALOG | PIN_PORTB | PIN4) +#define PIN_ADC1_SE10 (PIN_ANALOG | PIN_PORTB | PIN4) +#define PIN_FTM1_FLT0_2 (PIN_ALT6 | PIN_PORTB | PIN4) +#define PIN_LCD_P4F (PIN_ALT7 | PIN_PORTB | PIN4) +#define PIN_LCD_P5 (PIN_ANALOG | PIN_PORTB | PIN5) +#define PIN_ADC1_SE11 (PIN_ANALOG | PIN_PORTB | PIN5) +#define PIN_FTM2_FLT0_1 (PIN_ALT6 | PIN_PORTB | PIN5) +#define PIN_LCD_P5F (PIN_ALT7 | PIN_PORTB | PIN5) +#define PIN_LCD_P6 (PIN_ANALOG | PIN_PORTB | PIN6) +#define PIN_ADC1_SE12 (PIN_ANALOG | PIN_PORTB | PIN6) +#define PIN_LCD_P6F (PIN_ALT7 | PIN_PORTB | PIN6) +#define PIN_LCD_P7 (PIN_ANALOG | PIN_PORTB | PIN7) +#define PIN_ADC1_SE13 (PIN_ANALOG | PIN_PORTB | PIN7) +#define PIN_LCD_P7F (PIN_ALT7 | PIN_PORTB | PIN7) +#define PIN_LCD_P8 (PIN_ANALOG | PIN_PORTB | PIN8) +#define PIN_UART3_RTS_1 (PIN_ALT3 | PIN_PORTB | PIN8) +#define PIN_LCD_P8F (PIN_ALT7 | PIN_PORTB | PIN8) +#define PIN_LCD_P9 (PIN_ANALOG | PIN_PORTB | PIN9) +#define PIN_SPI1_PCS1_1 (PIN_ALT2 | PIN_PORTB | PIN9) +#define PIN_UART3_CTS_1 (PIN_ALT3 | PIN_PORTB | PIN9) +#define PIN_LCD_P9F (PIN_ALT7 | PIN_PORTB | PIN9) +#define PIN_LCD_P10 (PIN_ANALOG | PIN_PORTB | PIN10) +#define PIN_ADC1_SE14 (PIN_ANALOG | PIN_PORTB | PIN10) +#define PIN_SPI1_PCS0_1 (PIN_ALT2 | PIN_PORTB | PIN10) +#define PIN_UART3_RX_1 (PIN_ALT3 | PIN_PORTB | PIN10) +#define PIN_FTM0_FLT1_1 (PIN_ALT6 | PIN_PORTB | PIN10) +#define PIN_LCD_P10F (PIN_ALT7 | PIN_PORTB | PIN10) +#define PIN_LCD_P11 (PIN_ANALOG | PIN_PORTB | PIN11) +#define PIN_ADC1_SE15 (PIN_ANALOG | PIN_PORTB | PIN11) +#define PIN_SPI1_SCK_1 (PIN_ALT2 | PIN_PORTB | PIN11) +#define PIN_UART3_TX_1 (PIN_ALT3 | PIN_PORTB | PIN11) +#define PIN_FTM0_FLT2_2 (PIN_ALT6 | PIN_PORTB | PIN11) +#define PIN_LCD_P11F (PIN_ALT7 | PIN_PORTB | PIN11) +#define PIN_LCD_P12 (PIN_ANALOG | PIN_PORTB | PIN16) +#define PIN_TSI0_CH9 (PIN_ANALOG | PIN_PORTB | PIN16) +#define PIN_SPI1_SOUT_1 (PIN_ALT2 | PIN_PORTB | PIN16) +#define PIN_UART0_RX_3 (PIN_ALT3 | PIN_PORTB | PIN16) +#define PIN_EWM_IN_1 (PIN_ALT6 | PIN_PORTB | PIN16) +#define PIN_LCD_P12F (PIN_ALT7 | PIN_PORTB | PIN16) +#define PIN_LCD_P13 (PIN_ANALOG | PIN_PORTB | PIN17) +#define PIN_TSI0_CH10 (PIN_ANALOG | PIN_PORTB | PIN17) +#define PIN_SPI1_SIN_1 (PIN_ALT2 | PIN_PORTB | PIN17) +#define PIN_UART0_TX_3 (PIN_ALT3 | PIN_PORTB | PIN17) +#define PIN_EWM_OUT_1 (PIN_ALT6 | PIN_PORTB | PIN17) +#define PIN_LCD_P13F (PIN_ALT7 | PIN_PORTB | PIN17) +#define PIN_LCD_P14 (PIN_ANALOG | PIN_PORTB | PIN18) +#define PIN_TSI0_CH11 (PIN_ANALOG | PIN_PORTB | PIN18) +#define PIN_CAN0_TX_2 (PIN_ALT2 | PIN_PORTB | PIN18) +#define PIN_FTM2_CH0_2 (PIN_ALT3 | PIN_PORTB | PIN18) +#define PIN_I2S0_TX_BCLK_2 (PIN_ALT4 | PIN_PORTB | PIN18) +#define PIN_FTM2_QD_PHA_2 (PIN_ALT6 | PIN_PORTB | PIN18) +#define PIN_LCD_P14F (PIN_ALT7 | PIN_PORTB | PIN18) +#define PIN_LCD_P15 (PIN_ANALOG | PIN_PORTB | PIN19) +#define PIN_TSI0_CH12 (PIN_ANALOG | PIN_PORTB | PIN19) +#define PIN_CAN0_RX_2 (PIN_ALT2 | PIN_PORTB | PIN19) +#define PIN_FTM2_CH1_2 (PIN_ALT3 | PIN_PORTB | PIN19) +#define PIN_I2S0_TX_FS_2 (PIN_ALT4 | PIN_PORTB | PIN19) +#define PIN_FTM2_QD_PHB_2 (PIN_ALT6 | PIN_PORTB | PIN19) +#define PIN_LCD_P15F (PIN_ALT7 | PIN_PORTB | PIN19) +#define PIN_LCD_P16 (PIN_ANALOG | PIN_PORTB | PIN20) +#define PIN_SPI2_PCS0_1 (PIN_ALT2 | PIN_PORTB | PIN20) +#define PIN_CMP0_OUT_1 (PIN_ALT6 | PIN_PORTB | PIN20) +#define PIN_LCD_P16F (PIN_ALT7 | PIN_PORTB | PIN20) +#define PIN_LCD_P17 (PIN_ANALOG | PIN_PORTB | PIN21) +#define PIN_SPI2_SCK_1 (PIN_ALT2 | PIN_PORTB | PIN21) +#define PIN_CMP1_OUT_1 (PIN_ALT6 | PIN_PORTB | PIN21) +#define PIN_LCD_P17F (PIN_ALT7 | PIN_PORTB | PIN21) +#define PIN_LCD_P18 (PIN_ANALOG | PIN_PORTB | PIN22) +#define PIN_SPI2_SOUT_1 (PIN_ALT2 | PIN_PORTB | PIN22) +#define PIN_CMP2_OUT_2 (PIN_ALT6 | PIN_PORTB | PIN22) +#define PIN_LCD_P18F (PIN_ALT7 | PIN_PORTB | PIN22) +#define PIN_LCD_P19 (PIN_ANALOG | PIN_PORTB | PIN23) +#define PIN_SPI2_SIN_1 (PIN_ALT2 | PIN_PORTB | PIN23) +#define PIN_SPI0_PCS5 (PIN_ALT3 | PIN_PORTB | PIN23) +#define PIN_LCD_P19F (PIN_ALT7 | PIN_PORTB | PIN23) -#define GPIO_LCD_P20 (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN0) -#define GPIO_ADC0_SE14 (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN0) -#define GPIO_TSI0_CH13 (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN0) -#define GPIO_SPI0_PCS4 (GPIO_ALT2 | GPIO_PORTC | GPIO_PIN0) -#define GPIO_PDB0_EXTRG_1 (GPIO_ALT3 | GPIO_PORTC | GPIO_PIN0) -#define GPIO_I2S0_TXD_2 (GPIO_ALT4 | GPIO_PORTC | GPIO_PIN0) -#define GPIO_LCD_P20F (GPIO_ALT7 | GPIO_PORTC | GPIO_PIN0) -#define GPIO_LCD_P21 (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN1) -#define GPIO_ADC0_SE15 (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN1) -#define GPIO_TSI0_CH14 (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN1) -#define GPIO_SPI0_PCS3_1 (GPIO_ALT2 | GPIO_PORTC | GPIO_PIN1) -#define GPIO_UART1_RTS_1 (GPIO_ALT3 | GPIO_PORTC | GPIO_PIN1) -#define GPIO_FTM0_CH0_2 (GPIO_ALT4 | GPIO_PORTC | GPIO_PIN1) -#define GPIO_LCD_P21F (GPIO_ALT7 | GPIO_PORTC | GPIO_PIN1) -#define GPIO_LCD_P22 (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN2) -#define GPIO_ADC0_SE4B (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN2) -#define GPIO_CMP1_IN0 (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN2) -#define GPIO_TSI0_CH15 (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN2) -#define GPIO_SPI0_PCS2_1 (GPIO_ALT2 | GPIO_PORTC | GPIO_PIN2) -#define GPIO_UART1_CTS_1 (GPIO_ALT3 | GPIO_PORTC | GPIO_PIN2) -#define GPIO_FTM0_CH1_2 (GPIO_ALT4 | GPIO_PORTC | GPIO_PIN2) -#define GPIO_LCD_P22F (GPIO_ALT7 | GPIO_PORTC | GPIO_PIN2) -#define GPIO_LCD_P23 (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN3) -#define GPIO_CMP1_IN1 (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN3) -#define GPIO_SPI0_PCS1_1 (GPIO_ALT2 | GPIO_PORTC | GPIO_PIN3) -#define GPIO_UART1_RX_1 (GPIO_ALT3 | GPIO_PORTC | GPIO_PIN3) -#define GPIO_FTM0_CH2_2 (GPIO_ALT4 | GPIO_PORTC | GPIO_PIN3) -#define GPIO_LCD_P23F (GPIO_ALT7 | GPIO_PORTC | GPIO_PIN3) -#define GPIO_LCD_P24 (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN4) -#define GPIO_SPI0_PCS0_2 (GPIO_ALT2 | GPIO_PORTC | GPIO_PIN4) -#define GPIO_UART1_TX_1 (GPIO_ALT3 | GPIO_PORTC | GPIO_PIN4) -#define GPIO_FTM0_CH3_2 (GPIO_ALT4 | GPIO_PORTC | GPIO_PIN4) -#define GPIO_CMP1_OUT_2 (GPIO_ALT6 | GPIO_PORTC | GPIO_PIN4) -#define GPIO_LCD_P24F (GPIO_ALT7 | GPIO_PORTC | GPIO_PIN4) -#define GPIO_LCD_P25 (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN5) -#define GPIO_SPI0_SCK_2 (GPIO_ALT2 | GPIO_PORTC | GPIO_PIN5) -#define GPIO_LPT0_ALT2 (GPIO_ALT4 | GPIO_PORTC | GPIO_PIN5) -#define GPIO_CMP0_OUT_2 (GPIO_ALT6 | GPIO_PORTC | GPIO_PIN5) -#define GPIO_LCD_P25F (GPIO_ALT7 | GPIO_PORTC | GPIO_PIN5) -#define GPIO_LCD_P26 (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN6) -#define GPIO_CMP0_IN0 (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN6) -#define GPIO_SPI0_SOUT_2 (GPIO_ALT2 | GPIO_PORTC | GPIO_PIN6) -#define GPIO_PDB0_EXTRG_2 (GPIO_ALT3 | GPIO_PORTC | GPIO_PIN6) -#define GPIO_LCD_P26F (GPIO_ALT7 | GPIO_PORTC | GPIO_PIN6) -#define GPIO_LCD_P27 (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN7) -#define GPIO_CMP0_IN1 (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN7) -#define GPIO_SPI0_SIN_2 (GPIO_ALT2 | GPIO_PORTC | GPIO_PIN7) -#define GPIO_LCD_P27F (GPIO_ALT7 | GPIO_PORTC | GPIO_PIN7) -#define GPIO_LCD_P28 (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN8) -#define GPIO_ADC1_SE4B (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN8) -#define GPIO_CMP0_IN2 (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN8) -#define GPIO_I2S0_MCLK_2 (GPIO_ALT4 | GPIO_PORTC | GPIO_PIN8) -#define GPIO_I2S0_CLKIN_2 (GPIO_ALT5 | GPIO_PORTC | GPIO_PIN8) -#define GPIO_LCD_P28F (GPIO_ALT7 | GPIO_PORTC | GPIO_PIN8) -#define GPIO_LCD_P29 (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN9) -#define GPIO_ADC1_SE5B (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN9) -#define GPIO_CMP0_IN3 (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN9) -#define GPIO_I2S0_RX_BCLK_2 (GPIO_ALT4 | GPIO_PORTC | GPIO_PIN9) -#define GPIO_FTM2_FLT0_2 (GPIO_ALT6 | GPIO_PORTC | GPIO_PIN9) -#define GPIO_LCD_P29F (GPIO_ALT7 | GPIO_PORTC | GPIO_PIN9) -#define GPIO_LCD_P30 (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN10) -#define GPIO_ADC1_SE6B (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN10) -#define GPIO_CMP0_IN4 (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN10) -#define GPIO_I2C1_SCL_1 (GPIO_ALT2 | GPIO_PORTC | GPIO_PIN10) -#define GPIO_I2S0_RX_FS_2 (GPIO_ALT4 | GPIO_PORTC | GPIO_PIN10) -#define GPIO_LCD_P30F (GPIO_ALT7 | GPIO_PORTC | GPIO_PIN10) -#define GPIO_LCD_P31 (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN11) -#define GPIO_ADC1_SE7B (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN11) -#define GPIO_I2C1_SDA_1 (GPIO_ALT2 | GPIO_PORTC | GPIO_PIN11) -#define GPIO_I2S0_RXD_2 (GPIO_ALT4 | GPIO_PORTC | GPIO_PIN11) -#define GPIO_LCD_P31F (GPIO_ALT7 | GPIO_PORTC | GPIO_PIN11) -#define GPIO_LCD_P32 (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN12) -#define GPIO_UART4_RTS_1 (GPIO_ALT3 | GPIO_PORTC | GPIO_PIN12) -#define GPIO_LCD_P32F (GPIO_ALT7 | GPIO_PORTC | GPIO_PIN12) -#define GPIO_LCD_P33 (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN13) -#define GPIO_UART4_CTS_1 (GPIO_ALT3 | GPIO_PORTC | GPIO_PIN13) -#define GPIO_LCD_P33F (GPIO_ALT7 | GPIO_PORTC | GPIO_PIN13) -#define GPIO_LCD_P34 (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN14) -#define GPIO_UART4_RX_1 (GPIO_ALT3 | GPIO_PORTC | GPIO_PIN14) -#define GPIO_LCD_P34F (GPIO_ALT7 | GPIO_PORTC | GPIO_PIN14) -#define GPIO_LCD_P35 (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN15) -#define GPIO_UART4_TX_1 (GPIO_ALT3 | GPIO_PORTC | GPIO_PIN15) -#define GPIO_LCD_P35F (GPIO_ALT7 | GPIO_PORTC | GPIO_PIN15) -#define GPIO_LCD_P36 (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN16) -#define GPIO_CAN1_RX_1 (GPIO_ALT2 | GPIO_PORTC | GPIO_PIN16) -#define GPIO_UART3_RX_2 (GPIO_ALT3 | GPIO_PORTC | GPIO_PIN16) -#define GPIO_LCD_P36F (GPIO_ALT7 | GPIO_PORTC | GPIO_PIN16) -#define GPIO_LCD_P37 (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN17) -#define GPIO_CAN1_TX_1 (GPIO_ALT2 | GPIO_PORTC | GPIO_PIN17) -#define GPIO_UART3_TX_2 (GPIO_ALT3 | GPIO_PORTC | GPIO_PIN17) -#define GPIO_LCD_P37F (GPIO_ALT7 | GPIO_PORTC | GPIO_PIN17) -#define GPIO_LCD_P38 (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN18) -#define GPIO_UART3_RTS_2 (GPIO_ALT3 | GPIO_PORTC | GPIO_PIN18) -#define GPIO_LCD_P38F (GPIO_ALT7 | GPIO_PORTC | GPIO_PIN18) -#define GPIO_LCD_P39 (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN19) -#define GPIO_UART3_CTS_2 (GPIO_ALT3 | GPIO_PORTC | GPIO_PIN19) -#define GPIO_LCD_P39F (GPIO_ALT7 | GPIO_PORTC | GPIO_PIN19) +#define PIN_LCD_P20 (PIN_ANALOG | PIN_PORTC | PIN0) +#define PIN_ADC0_SE14 (PIN_ANALOG | PIN_PORTC | PIN0) +#define PIN_TSI0_CH13 (PIN_ANALOG | PIN_PORTC | PIN0) +#define PIN_SPI0_PCS4 (PIN_ALT2 | PIN_PORTC | PIN0) +#define PIN_PDB0_EXTRG_1 (PIN_ALT3 | PIN_PORTC | PIN0) +#define PIN_I2S0_TXD_2 (PIN_ALT4 | PIN_PORTC | PIN0) +#define PIN_LCD_P20F (PIN_ALT7 | PIN_PORTC | PIN0) +#define PIN_LCD_P21 (PIN_ANALOG | PIN_PORTC | PIN1) +#define PIN_ADC0_SE15 (PIN_ANALOG | PIN_PORTC | PIN1) +#define PIN_TSI0_CH14 (PIN_ANALOG | PIN_PORTC | PIN1) +#define PIN_SPI0_PCS3_1 (PIN_ALT2 | PIN_PORTC | PIN1) +#define PIN_UART1_RTS_1 (PIN_ALT3 | PIN_PORTC | PIN1) +#define PIN_FTM0_CH0_2 (PIN_ALT4 | PIN_PORTC | PIN1) +#define PIN_LCD_P21F (PIN_ALT7 | PIN_PORTC | PIN1) +#define PIN_LCD_P22 (PIN_ANALOG | PIN_PORTC | PIN2) +#define PIN_ADC0_SE4B (PIN_ANALOG | PIN_PORTC | PIN2) +#define PIN_CMP1_IN0 (PIN_ANALOG | PIN_PORTC | PIN2) +#define PIN_TSI0_CH15 (PIN_ANALOG | PIN_PORTC | PIN2) +#define PIN_SPI0_PCS2_1 (PIN_ALT2 | PIN_PORTC | PIN2) +#define PIN_UART1_CTS_1 (PIN_ALT3 | PIN_PORTC | PIN2) +#define PIN_FTM0_CH1_2 (PIN_ALT4 | PIN_PORTC | PIN2) +#define PIN_LCD_P22F (PIN_ALT7 | PIN_PORTC | PIN2) +#define PIN_LCD_P23 (PIN_ANALOG | PIN_PORTC | PIN3) +#define PIN_CMP1_IN1 (PIN_ANALOG | PIN_PORTC | PIN3) +#define PIN_SPI0_PCS1_1 (PIN_ALT2 | PIN_PORTC | PIN3) +#define PIN_UART1_RX_1 (PIN_ALT3 | PIN_PORTC | PIN3) +#define PIN_FTM0_CH2_2 (PIN_ALT4 | PIN_PORTC | PIN3) +#define PIN_LCD_P23F (PIN_ALT7 | PIN_PORTC | PIN3) +#define PIN_LCD_P24 (PIN_ANALOG | PIN_PORTC | PIN4) +#define PIN_SPI0_PCS0_2 (PIN_ALT2 | PIN_PORTC | PIN4) +#define PIN_UART1_TX_1 (PIN_ALT3 | PIN_PORTC | PIN4) +#define PIN_FTM0_CH3_2 (PIN_ALT4 | PIN_PORTC | PIN4) +#define PIN_CMP1_OUT_2 (PIN_ALT6 | PIN_PORTC | PIN4) +#define PIN_LCD_P24F (PIN_ALT7 | PIN_PORTC | PIN4) +#define PIN_LCD_P25 (PIN_ANALOG | PIN_PORTC | PIN5) +#define PIN_SPI0_SCK_2 (PIN_ALT2 | PIN_PORTC | PIN5) +#define PIN_LPT0_ALT2 (PIN_ALT4 | PIN_PORTC | PIN5) +#define PIN_CMP0_OUT_2 (PIN_ALT6 | PIN_PORTC | PIN5) +#define PIN_LCD_P25F (PIN_ALT7 | PIN_PORTC | PIN5) +#define PIN_LCD_P26 (PIN_ANALOG | PIN_PORTC | PIN6) +#define PIN_CMP0_IN0 (PIN_ANALOG | PIN_PORTC | PIN6) +#define PIN_SPI0_SOUT_2 (PIN_ALT2 | PIN_PORTC | PIN6) +#define PIN_PDB0_EXTRG_2 (PIN_ALT3 | PIN_PORTC | PIN6) +#define PIN_LCD_P26F (PIN_ALT7 | PIN_PORTC | PIN6) +#define PIN_LCD_P27 (PIN_ANALOG | PIN_PORTC | PIN7) +#define PIN_CMP0_IN1 (PIN_ANALOG | PIN_PORTC | PIN7) +#define PIN_SPI0_SIN_2 (PIN_ALT2 | PIN_PORTC | PIN7) +#define PIN_LCD_P27F (PIN_ALT7 | PIN_PORTC | PIN7) +#define PIN_LCD_P28 (PIN_ANALOG | PIN_PORTC | PIN8) +#define PIN_ADC1_SE4B (PIN_ANALOG | PIN_PORTC | PIN8) +#define PIN_CMP0_IN2 (PIN_ANALOG | PIN_PORTC | PIN8) +#define PIN_I2S0_MCLK_2 (PIN_ALT4 | PIN_PORTC | PIN8) +#define PIN_I2S0_CLKIN_2 (PIN_ALT5 | PIN_PORTC | PIN8) +#define PIN_LCD_P28F (PIN_ALT7 | PIN_PORTC | PIN8) +#define PIN_LCD_P29 (PIN_ANALOG | PIN_PORTC | PIN9) +#define PIN_ADC1_SE5B (PIN_ANALOG | PIN_PORTC | PIN9) +#define PIN_CMP0_IN3 (PIN_ANALOG | PIN_PORTC | PIN9) +#define PIN_I2S0_RX_BCLK_2 (PIN_ALT4 | PIN_PORTC | PIN9) +#define PIN_FTM2_FLT0_2 (PIN_ALT6 | PIN_PORTC | PIN9) +#define PIN_LCD_P29F (PIN_ALT7 | PIN_PORTC | PIN9) +#define PIN_LCD_P30 (PIN_ANALOG | PIN_PORTC | PIN10) +#define PIN_ADC1_SE6B (PIN_ANALOG | PIN_PORTC | PIN10) +#define PIN_CMP0_IN4 (PIN_ANALOG | PIN_PORTC | PIN10) +#define PIN_I2C1_SCL_1 (PIN_ALT2 | PIN_PORTC | PIN10) +#define PIN_I2S0_RX_FS_2 (PIN_ALT4 | PIN_PORTC | PIN10) +#define PIN_LCD_P30F (PIN_ALT7 | PIN_PORTC | PIN10) +#define PIN_LCD_P31 (PIN_ANALOG | PIN_PORTC | PIN11) +#define PIN_ADC1_SE7B (PIN_ANALOG | PIN_PORTC | PIN11) +#define PIN_I2C1_SDA_1 (PIN_ALT2 | PIN_PORTC | PIN11) +#define PIN_I2S0_RXD_2 (PIN_ALT4 | PIN_PORTC | PIN11) +#define PIN_LCD_P31F (PIN_ALT7 | PIN_PORTC | PIN11) +#define PIN_LCD_P32 (PIN_ANALOG | PIN_PORTC | PIN12) +#define PIN_UART4_RTS_1 (PIN_ALT3 | PIN_PORTC | PIN12) +#define PIN_LCD_P32F (PIN_ALT7 | PIN_PORTC | PIN12) +#define PIN_LCD_P33 (PIN_ANALOG | PIN_PORTC | PIN13) +#define PIN_UART4_CTS_1 (PIN_ALT3 | PIN_PORTC | PIN13) +#define PIN_LCD_P33F (PIN_ALT7 | PIN_PORTC | PIN13) +#define PIN_LCD_P34 (PIN_ANALOG | PIN_PORTC | PIN14) +#define PIN_UART4_RX_1 (PIN_ALT3 | PIN_PORTC | PIN14) +#define PIN_LCD_P34F (PIN_ALT7 | PIN_PORTC | PIN14) +#define PIN_LCD_P35 (PIN_ANALOG | PIN_PORTC | PIN15) +#define PIN_UART4_TX_1 (PIN_ALT3 | PIN_PORTC | PIN15) +#define PIN_LCD_P35F (PIN_ALT7 | PIN_PORTC | PIN15) +#define PIN_LCD_P36 (PIN_ANALOG | PIN_PORTC | PIN16) +#define PIN_CAN1_RX_1 (PIN_ALT2 | PIN_PORTC | PIN16) +#define PIN_UART3_RX_2 (PIN_ALT3 | PIN_PORTC | PIN16) +#define PIN_LCD_P36F (PIN_ALT7 | PIN_PORTC | PIN16) +#define PIN_LCD_P37 (PIN_ANALOG | PIN_PORTC | PIN17) +#define PIN_CAN1_TX_1 (PIN_ALT2 | PIN_PORTC | PIN17) +#define PIN_UART3_TX_2 (PIN_ALT3 | PIN_PORTC | PIN17) +#define PIN_LCD_P37F (PIN_ALT7 | PIN_PORTC | PIN17) +#define PIN_LCD_P38 (PIN_ANALOG | PIN_PORTC | PIN18) +#define PIN_UART3_RTS_2 (PIN_ALT3 | PIN_PORTC | PIN18) +#define PIN_LCD_P38F (PIN_ALT7 | PIN_PORTC | PIN18) +#define PIN_LCD_P39 (PIN_ANALOG | PIN_PORTC | PIN19) +#define PIN_UART3_CTS_2 (PIN_ALT3 | PIN_PORTC | PIN19) +#define PIN_LCD_P39F (PIN_ALT7 | PIN_PORTC | PIN19) -#define GPIO_LCD_P40 (GPIO_ANALOG | GPIO_PORTD | GPIO_PIN0) -#define GPIO_SPI0_PCS0_3 (GPIO_ALT2 | GPIO_PORTD | GPIO_PIN0) -#define GPIO_UART2_RTS (GPIO_ALT3 | GPIO_PORTD | GPIO_PIN0) -#define GPIO_LCD_P40F (GPIO_ALT7 | GPIO_PORTD | GPIO_PIN0) -#define GPIO_LCD_P41 (GPIO_ANALOG | GPIO_PORTD | GPIO_PIN1) -#define GPIO_ADC0_SE5B (GPIO_ANALOG | GPIO_PORTD | GPIO_PIN1) -#define GPIO_SPI0_SCK_3 (GPIO_ALT2 | GPIO_PORTD | GPIO_PIN1) -#define GPIO_UART2_CTS (GPIO_ALT3 | GPIO_PORTD | GPIO_PIN1) -#define GPIO_LCD_P41F (GPIO_ALT7 | GPIO_PORTD | GPIO_PIN1) -#define GPIO_LCD_P42 (GPIO_ANALOG | GPIO_PORTD | GPIO_PIN2) -#define GPIO_SPI0_SOUT_3 (GPIO_ALT2 | GPIO_PORTD | GPIO_PIN2) -#define GPIO_UART2_RX (GPIO_ALT3 | GPIO_PORTD | GPIO_PIN2) -#define GPIO_LCD_P42F (GPIO_ALT7 | GPIO_PORTD | GPIO_PIN2) -#define GPIO_LCD_P43 (GPIO_ANALOG | GPIO_PORTD | GPIO_PIN3) -#define GPIO_SPI0_SIN_3 (GPIO_ALT2 | GPIO_PORTD | GPIO_PIN3) -#define GPIO_UART2_TX (GPIO_ALT3 | GPIO_PORTD | GPIO_PIN3) -#define GPIO_LCD_P43F (GPIO_ALT7 | GPIO_PORTD | GPIO_PIN3) -#define GPIO_LCD_P44 (GPIO_ANALOG | GPIO_PORTD | GPIO_PIN4) -#define GPIO_SPI0_PCS1_2 (GPIO_ALT2 | GPIO_PORTD | GPIO_PIN4) -#define GPIO_UART0_RTS_4 (GPIO_ALT3 | GPIO_PORTD | GPIO_PIN4) -#define GPIO_FTM0_CH4_2 (GPIO_ALT4 | GPIO_PORTD | GPIO_PIN4) -#define GPIO_EWM_IN_2 (GPIO_ALT6 | GPIO_PORTD | GPIO_PIN4) -#define GPIO_LCD_P44F (GPIO_ALT7 | GPIO_PORTD | GPIO_PIN4) -#define GPIO_LCD_P45 (GPIO_ANALOG | GPIO_PORTD | GPIO_PIN5) -#define GPIO_ADC0_SE6B (GPIO_ANALOG | GPIO_PORTD | GPIO_PIN5) -#define GPIO_SPI0_PCS2_2 (GPIO_ALT2 | GPIO_PORTD | GPIO_PIN5) -#define GPIO_UART0_CTS_4 (GPIO_ALT3 | GPIO_PORTD | GPIO_PIN5) -#define GPIO_FTM0_CH5_2 (GPIO_ALT4 | GPIO_PORTD | GPIO_PIN5) -#define GPIO_EWM_OUT_2 (GPIO_ALT6 | GPIO_PORTD | GPIO_PIN5) -#define GPIO_LCD_P45F (GPIO_ALT7 | GPIO_PORTD | GPIO_PIN5) -#define GPIO_LCD_P46 (GPIO_ANALOG | GPIO_PORTD | GPIO_PIN6) -#define GPIO_ADC0_SE7B (GPIO_ANALOG | GPIO_PORTD | GPIO_PIN6) -#define GPIO_SPI0_PCS3_2 (GPIO_ALT2 | GPIO_PORTD | GPIO_PIN6) -#define GPIO_UART0_RX_4 (GPIO_ALT3 | GPIO_PORTD | GPIO_PIN6) -#define GPIO_FTM0_CH6_2 (GPIO_ALT4 | GPIO_PORTD | GPIO_PIN6) -#define GPIO_FTM0_FLT0_2 (GPIO_ALT6 | GPIO_PORTD | GPIO_PIN6) -#define GPIO_LCD_P46F (GPIO_ALT7 | GPIO_PORTD | GPIO_PIN6) -#define GPIO_LCD_P47 (GPIO_ANALOG | GPIO_PORTD | GPIO_PIN7) -#define GPIO_CMT_IRO (GPIO_ALT2 | GPIO_PORTD | GPIO_PIN7) -#define GPIO_UART0_TX_4 (GPIO_ALT3 | GPIO_PORTD | GPIO_PIN7) -#define GPIO_FTM0_CH7_2 (GPIO_ALT4 | GPIO_PORTD | GPIO_PIN7) -#define GPIO_FTM0_FLT1_2 (GPIO_ALT6 | GPIO_PORTD | GPIO_PIN7) -#define GPIO_LCD_P47F (GPIO_ALT7 | GPIO_PORTD | GPIO_PIN7) -#define GPIO_UART5_RTS_1 (GPIO_ALT3 | GPIO_PORTD | GPIO_PIN10) -#define GPIO_FB_AD9 (GPIO_ALT5 | GPIO_PORTD | GPIO_PIN10) -#define GPIO_SPI2_PCS0_2 (GPIO_ALT2 | GPIO_PORTD | GPIO_PIN11) -#define GPIO_UART5_CTS_1 (GPIO_ALT3 | GPIO_PORTD | GPIO_PIN11) -#define GPIO_SDHC0_CLKIN (GPIO_ALT4 | GPIO_PORTD | GPIO_PIN11) -#define GPIO_FB_AD8 (GPIO_ALT5 | GPIO_PORTD | GPIO_PIN11) -#define GPIO_SPI2_SCK_2 (GPIO_ALT2 | GPIO_PORTD | GPIO_PIN12) -#define GPIO_SDHC0_D4 (GPIO_ALT4 | GPIO_PORTD | GPIO_PIN12) -#define GPIO_FB_AD7 (GPIO_ALT5 | GPIO_PORTD | GPIO_PIN12) -#define GPIO_SPI2_SOUT_2 (GPIO_ALT2 | GPIO_PORTD | GPIO_PIN13) -#define GPIO_SDHC0_D5 (GPIO_ALT4 | GPIO_PORTD | GPIO_PIN13) -#define GPIO_FB_AD6 (GPIO_ALT5 | GPIO_PORTD | GPIO_PIN13) -#define GPIO_SPI2_SIN_2 (GPIO_ALT2 | GPIO_PORTD | GPIO_PIN14) -#define GPIO_SDHC0_D6 (GPIO_ALT4 | GPIO_PORTD | GPIO_PIN14) -#define GPIO_FB_AD5 (GPIO_ALT5 | GPIO_PORTD | GPIO_PIN14) -#define GPIO_SPI2_PCS1 (GPIO_ALT2 | GPIO_PORTD | GPIO_PIN15) -#define GPIO_SDHC0_D7 (GPIO_ALT4 | GPIO_PORTD | GPIO_PIN15) -#define GPIO_FB_RW (GPIO_ALT5 | GPIO_PORTD | GPIO_PIN15) +#define PIN_LCD_P40 (PIN_ANALOG | PIN_PORTD | PIN0) +#define PIN_SPI0_PCS0_3 (PIN_ALT2 | PIN_PORTD | PIN0) +#define PIN_UART2_RTS (PIN_ALT3 | PIN_PORTD | PIN0) +#define PIN_LCD_P40F (PIN_ALT7 | PIN_PORTD | PIN0) +#define PIN_LCD_P41 (PIN_ANALOG | PIN_PORTD | PIN1) +#define PIN_ADC0_SE5B (PIN_ANALOG | PIN_PORTD | PIN1) +#define PIN_SPI0_SCK_3 (PIN_ALT2 | PIN_PORTD | PIN1) +#define PIN_UART2_CTS (PIN_ALT3 | PIN_PORTD | PIN1) +#define PIN_LCD_P41F (PIN_ALT7 | PIN_PORTD | PIN1) +#define PIN_LCD_P42 (PIN_ANALOG | PIN_PORTD | PIN2) +#define PIN_SPI0_SOUT_3 (PIN_ALT2 | PIN_PORTD | PIN2) +#define PIN_UART2_RX (PIN_ALT3 | PIN_PORTD | PIN2) +#define PIN_LCD_P42F (PIN_ALT7 | PIN_PORTD | PIN2) +#define PIN_LCD_P43 (PIN_ANALOG | PIN_PORTD | PIN3) +#define PIN_SPI0_SIN_3 (PIN_ALT2 | PIN_PORTD | PIN3) +#define PIN_UART2_TX (PIN_ALT3 | PIN_PORTD | PIN3) +#define PIN_LCD_P43F (PIN_ALT7 | PIN_PORTD | PIN3) +#define PIN_LCD_P44 (PIN_ANALOG | PIN_PORTD | PIN4) +#define PIN_SPI0_PCS1_2 (PIN_ALT2 | PIN_PORTD | PIN4) +#define PIN_UART0_RTS_4 (PIN_ALT3 | PIN_PORTD | PIN4) +#define PIN_FTM0_CH4_2 (PIN_ALT4 | PIN_PORTD | PIN4) +#define PIN_EWM_IN_2 (PIN_ALT6 | PIN_PORTD | PIN4) +#define PIN_LCD_P44F (PIN_ALT7 | PIN_PORTD | PIN4) +#define PIN_LCD_P45 (PIN_ANALOG | PIN_PORTD | PIN5) +#define PIN_ADC0_SE6B (PIN_ANALOG | PIN_PORTD | PIN5) +#define PIN_SPI0_PCS2_2 (PIN_ALT2 | PIN_PORTD | PIN5) +#define PIN_UART0_CTS_4 (PIN_ALT3 | PIN_PORTD | PIN5) +#define PIN_FTM0_CH5_2 (PIN_ALT4 | PIN_PORTD | PIN5) +#define PIN_EWM_OUT_2 (PIN_ALT6 | PIN_PORTD | PIN5) +#define PIN_LCD_P45F (PIN_ALT7 | PIN_PORTD | PIN5) +#define PIN_LCD_P46 (PIN_ANALOG | PIN_PORTD | PIN6) +#define PIN_ADC0_SE7B (PIN_ANALOG | PIN_PORTD | PIN6) +#define PIN_SPI0_PCS3_2 (PIN_ALT2 | PIN_PORTD | PIN6) +#define PIN_UART0_RX_4 (PIN_ALT3 | PIN_PORTD | PIN6) +#define PIN_FTM0_CH6_2 (PIN_ALT4 | PIN_PORTD | PIN6) +#define PIN_FTM0_FLT0_2 (PIN_ALT6 | PIN_PORTD | PIN6) +#define PIN_LCD_P46F (PIN_ALT7 | PIN_PORTD | PIN6) +#define PIN_LCD_P47 (PIN_ANALOG | PIN_PORTD | PIN7) +#define PIN_CMT_IRO (PIN_ALT2 | PIN_PORTD | PIN7) +#define PIN_UART0_TX_4 (PIN_ALT3 | PIN_PORTD | PIN7) +#define PIN_FTM0_CH7_2 (PIN_ALT4 | PIN_PORTD | PIN7) +#define PIN_FTM0_FLT1_2 (PIN_ALT6 | PIN_PORTD | PIN7) +#define PIN_LCD_P47F (PIN_ALT7 | PIN_PORTD | PIN7) +#define PIN_UART5_RTS_1 (PIN_ALT3 | PIN_PORTD | PIN10) +#define PIN_FB_AD9 (PIN_ALT5 | PIN_PORTD | PIN10) +#define PIN_SPI2_PCS0_2 (PIN_ALT2 | PIN_PORTD | PIN11) +#define PIN_UART5_CTS_1 (PIN_ALT3 | PIN_PORTD | PIN11) +#define PIN_SDHC0_CLKIN (PIN_ALT4 | PIN_PORTD | PIN11) +#define PIN_FB_AD8 (PIN_ALT5 | PIN_PORTD | PIN11) +#define PIN_SPI2_SCK_2 (PIN_ALT2 | PIN_PORTD | PIN12) +#define PIN_SDHC0_D4 (PIN_ALT4 | PIN_PORTD | PIN12) +#define PIN_FB_AD7 (PIN_ALT5 | PIN_PORTD | PIN12) +#define PIN_SPI2_SOUT_2 (PIN_ALT2 | PIN_PORTD | PIN13) +#define PIN_SDHC0_D5 (PIN_ALT4 | PIN_PORTD | PIN13) +#define PIN_FB_AD6 (PIN_ALT5 | PIN_PORTD | PIN13) +#define PIN_SPI2_SIN_2 (PIN_ALT2 | PIN_PORTD | PIN14) +#define PIN_SDHC0_D6 (PIN_ALT4 | PIN_PORTD | PIN14) +#define PIN_FB_AD5 (PIN_ALT5 | PIN_PORTD | PIN14) +#define PIN_SPI2_PCS1 (PIN_ALT2 | PIN_PORTD | PIN15) +#define PIN_SDHC0_D7 (PIN_ALT4 | PIN_PORTD | PIN15) +#define PIN_FB_RW (PIN_ALT5 | PIN_PORTD | PIN15) -#define GPIO_ADC1_SE4A (GPIO_ANALOG | GPIO_PORTE | GPIO_PIN0) -#define GPIO_SPI1_PCS1_2 (GPIO_ALT2 | GPIO_PORTE | GPIO_PIN0) -#define GPIO_UART1_TX_2 (GPIO_ALT3 | GPIO_PORTE | GPIO_PIN0) -#define GPIO_SDHC0_D1 (GPIO_ALT4 | GPIO_PORTE | GPIO_PIN0) -#define GPIO_FB_AD27 (GPIO_ALT5 | GPIO_PORTE | GPIO_PIN0) -#define GPIO_I2C1_SDA_2 (GPIO_ALT6 | GPIO_PORTE | GPIO_PIN0) -#define GPIO_ADC1_SE5A (GPIO_ANALOG | GPIO_PORTE | GPIO_PIN1) -#define GPIO_SPI1_SOUT_2 (GPIO_ALT2 | GPIO_PORTE | GPIO_PIN1) -#define GPIO_UART1_RX_2 (GPIO_ALT3 | GPIO_PORTE | GPIO_PIN1) -#define GPIO_SDHC0_D0 (GPIO_ALT4 | GPIO_PORTE | GPIO_PIN1) -#define GPIO_FB_AD26 (GPIO_ALT5 | GPIO_PORTE | GPIO_PIN1) -#define GPIO_I2C1_SCL_2 (GPIO_ALT6 | GPIO_PORTE | GPIO_PIN1) -#define GPIO_ADC1_SE6A (GPIO_ANALOG | GPIO_PORTE | GPIO_PIN2) -#define GPIO_SPI1_SCK_2 (GPIO_ALT2 | GPIO_PORTE | GPIO_PIN2) -#define GPIO_UART1_CTS_2 (GPIO_ALT3 | GPIO_PORTE | GPIO_PIN2) -#define GPIO_SDHC0_DCLK (GPIO_ALT4 | GPIO_PORTE | GPIO_PIN2) -#define GPIO_FB_AD25 (GPIO_ALT5 | GPIO_PORTE | GPIO_PIN2) -#define GPIO_ADC1_SE7A (GPIO_ANALOG | GPIO_PORTE | GPIO_PIN3) -#define GPIO_SPI1_SIN_2 (GPIO_ALT2 | GPIO_PORTE | GPIO_PIN3) -#define GPIO_UART1_RTS_2 (GPIO_ALT3 | GPIO_PORTE | GPIO_PIN3) -#define GPIO_SDHC0_CMD (GPIO_ALT4 | GPIO_PORTE | GPIO_PIN3) -#define GPIO_FB_AD24 (GPIO_ALT5 | GPIO_PORTE | GPIO_PIN3) -#define GPIO_SPI1_PCS0_2 (GPIO_ALT2 | GPIO_PORTE | GPIO_PIN4) -#define GPIO_UART3_TX_3 (GPIO_ALT3 | GPIO_PORTE | GPIO_PIN4) -#define GPIO_SDHC0_D3 (GPIO_ALT4 | GPIO_PORTE | GPIO_PIN4) -#define GPIO_FB_CS3 (GPIO_ALT5 | GPIO_PORTE | GPIO_PIN4) -#define GPIO_FB_BE7_0_BLS31_24 (GPIO_ALT5 | GPIO_PORTE | GPIO_PIN4) -#define GPIO_FB_TA (GPIO_ALT6 | GPIO_PORTE | GPIO_PIN4) -#define GPIO_SPI1_PCS2 (GPIO_ANALOG | GPIO_PORTE | GPIO_PIN5) -#define GPIO_UART3_RX_3 (GPIO_ALT2 | GPIO_PORTE | GPIO_PIN5) -#define GPIO_SDHC0_D2 (GPIO_ALT3 | GPIO_PORTE | GPIO_PIN5) -#define GPIO_FB_TBST (GPIO_ALT4 | GPIO_PORTE | GPIO_PIN5) -#define GPIO_FB_CS2 (GPIO_ALT5 | GPIO_PORTE | GPIO_PIN5) -#define GPIO_FB_BE15_8_BLS23_16 (GPIO_ALT5 | GPIO_PORTE | GPIO_PIN5) -#define GPIO_SPI1_PCS3 (GPIO_ALT2 | GPIO_PORTE | GPIO_PIN6) -#define GPIO_UART3_CTS_3 (GPIO_ALT3 | GPIO_PORTE | GPIO_PIN6) -#define GPIO_I2S0_MCLK_3 (GPIO_ALT4 | GPIO_PORTE | GPIO_PIN6) -#define GPIO_FB_ALE (GPIO_ALT5 | GPIO_PORTE | GPIO_PIN6) -#define GPIO_FB_CS1 (GPIO_ALT5 | GPIO_PORTE | GPIO_PIN6) -#define GPIO_FB_TS (GPIO_ALT5 | GPIO_PORTE | GPIO_PIN6) -#define GPIO_I2S0_CLKIN_3 (GPIO_ALT6 | GPIO_PORTE | GPIO_PIN6) -#define GPIO_UART3_RTS_3 (GPIO_ALT3 | GPIO_PORTE | GPIO_PIN7) -#define GPIO_I2S0_RXD_3 (GPIO_ALT4 | GPIO_PORTE | GPIO_PIN7) -#define GPIO_FB_CS0 (GPIO_ALT5 | GPIO_PORTE | GPIO_PIN7) -#define GPIO_UART5_TX (GPIO_ALT3 | GPIO_PORTE | GPIO_PIN8) -#define GPIO_I2S0_RX_FS_3 (GPIO_ALT4 | GPIO_PORTE | GPIO_PIN8) -#define GPIO_FB_AD4 (GPIO_ALT5 | GPIO_PORTE | GPIO_PIN8) -#define GPIO_UART5_RX (GPIO_ALT3 | GPIO_PORTE | GPIO_PIN9) -#define GPIO_I2S0_RX_BCLK_3 (GPIO_ALT4 | GPIO_PORTE | GPIO_PIN9) -#define GPIO_FB_AD3 (GPIO_ALT5 | GPIO_PORTE | GPIO_PIN9) -#define GPIO_UART5_CTS_2 (GPIO_ALT3 | GPIO_PORTE | GPIO_PIN10) -#define GPIO_I2S0_TXD_3 (GPIO_ALT4 | GPIO_PORTE | GPIO_PIN10) -#define GPIO_FB_AD2 (GPIO_ALT5 | GPIO_PORTE | GPIO_PIN10) -#define GPIO_UART5_RTS_2 (GPIO_ALT3 | GPIO_PORTE | GPIO_PIN11) -#define GPIO_I2S0_TX_FS_3 (GPIO_ALT4 | GPIO_PORTE | GPIO_PIN11) -#define GPIO_FB_AD1 (GPIO_ALT5 | GPIO_PORTE | GPIO_PIN11) -#define GPIO_I2S0_TX_BCLK_3 (GPIO_ALT4 | GPIO_PORTE | GPIO_PIN12) -#define GPIO_FB_AD0 (GPIO_ALT5 | GPIO_PORTE | GPIO_PIN12) -#define GPIO_ADC0_SE17 (GPIO_ANALOG | GPIO_PORTE | GPIO_PIN24) -#define GPIO_CAN1_TX_2 (GPIO_ALT2 | GPIO_PORTE | GPIO_PIN24) -#define GPIO_UART4_TX_2 (GPIO_ALT3 | GPIO_PORTE | GPIO_PIN24) -#define GPIO_EWM_OUT_3 (GPIO_ALT6 | GPIO_PORTE | GPIO_PIN24) -#define GPIO_ADC0_SE18 (GPIO_ANALOG | GPIO_PORTE | GPIO_PIN25) -#define GPIO_CAN1_RX_2 (GPIO_ALT2 | GPIO_PORTE | GPIO_PIN25) -#define GPIO_UART4_RX_2 (GPIO_ALT3 | GPIO_PORTE | GPIO_PIN25) -#define GPIO_FB_AD23 (GPIO_ALT5 | GPIO_PORTE | GPIO_PIN25) -#define GPIO_EWM_IN_3 (GPIO_ALT6 | GPIO_PORTE | GPIO_PIN25) -#define GPIO_UART4_CTS_2 (GPIO_ALT3 | GPIO_PORTE | GPIO_PIN26) -#define GPIO_FB_AD22 (GPIO_ALT5 | GPIO_PORTE | GPIO_PIN26) -#define GPIO_RTC_CLKOUT (GPIO_ALT6 | GPIO_PORTE | GPIO_PIN26) -#define GPIO_USB_CLKIN (GPIO_ALT7 | GPIO_PORTE | GPIO_PIN26) -#define GPIO_UART4_RTS_2 (GPIO_ALT3 | GPIO_PORTE | GPIO_PIN27) -#define GPIO_FB_AD21 (GPIO_ALT5 | GPIO_PORTE | GPIO_PIN27) -#define GPIO_FB_AD20 (GPIO_ALT5 | GPIO_PORTE | GPIO_PIN28) +#define PIN_ADC1_SE4A (PIN_ANALOG | PIN_PORTE | PIN0) +#define PIN_SPI1_PCS1_2 (PIN_ALT2 | PIN_PORTE | PIN0) +#define PIN_UART1_TX_2 (PIN_ALT3 | PIN_PORTE | PIN0) +#define PIN_SDHC0_D1 (PIN_ALT4 | PIN_PORTE | PIN0) +#define PIN_FB_AD27 (PIN_ALT5 | PIN_PORTE | PIN0) +#define PIN_I2C1_SDA_2 (PIN_ALT6 | PIN_PORTE | PIN0) +#define PIN_ADC1_SE5A (PIN_ANALOG | PIN_PORTE | PIN1) +#define PIN_SPI1_SOUT_2 (PIN_ALT2 | PIN_PORTE | PIN1) +#define PIN_UART1_RX_2 (PIN_ALT3 | PIN_PORTE | PIN1) +#define PIN_SDHC0_D0 (PIN_ALT4 | PIN_PORTE | PIN1) +#define PIN_FB_AD26 (PIN_ALT5 | PIN_PORTE | PIN1) +#define PIN_I2C1_SCL_2 (PIN_ALT6 | PIN_PORTE | PIN1) +#define PIN_ADC1_SE6A (PIN_ANALOG | PIN_PORTE | PIN2) +#define PIN_SPI1_SCK_2 (PIN_ALT2 | PIN_PORTE | PIN2) +#define PIN_UART1_CTS_2 (PIN_ALT3 | PIN_PORTE | PIN2) +#define PIN_SDHC0_DCLK (PIN_ALT4 | PIN_PORTE | PIN2) +#define PIN_FB_AD25 (PIN_ALT5 | PIN_PORTE | PIN2) +#define PIN_ADC1_SE7A (PIN_ANALOG | PIN_PORTE | PIN3) +#define PIN_SPI1_SIN_2 (PIN_ALT2 | PIN_PORTE | PIN3) +#define PIN_UART1_RTS_2 (PIN_ALT3 | PIN_PORTE | PIN3) +#define PIN_SDHC0_CMD (PIN_ALT4 | PIN_PORTE | PIN3) +#define PIN_FB_AD24 (PIN_ALT5 | PIN_PORTE | PIN3) +#define PIN_SPI1_PCS0_2 (PIN_ALT2 | PIN_PORTE | PIN4) +#define PIN_UART3_TX_3 (PIN_ALT3 | PIN_PORTE | PIN4) +#define PIN_SDHC0_D3 (PIN_ALT4 | PIN_PORTE | PIN4) +#define PIN_FB_CS3 (PIN_ALT5 | PIN_PORTE | PIN4) +#define PIN_FB_BE7_0_BLS31_24 (PIN_ALT5 | PIN_PORTE | PIN4) +#define PIN_FB_TA (PIN_ALT6 | PIN_PORTE | PIN4) +#define PIN_SPI1_PCS2 (PIN_ANALOG | PIN_PORTE | PIN5) +#define PIN_UART3_RX_3 (PIN_ALT2 | PIN_PORTE | PIN5) +#define PIN_SDHC0_D2 (PIN_ALT3 | PIN_PORTE | PIN5) +#define PIN_FB_TBST (PIN_ALT4 | PIN_PORTE | PIN5) +#define PIN_FB_CS2 (PIN_ALT5 | PIN_PORTE | PIN5) +#define PIN_FB_BE15_8_BLS23_16 (PIN_ALT5 | PIN_PORTE | PIN5) +#define PIN_SPI1_PCS3 (PIN_ALT2 | PIN_PORTE | PIN6) +#define PIN_UART3_CTS_3 (PIN_ALT3 | PIN_PORTE | PIN6) +#define PIN_I2S0_MCLK_3 (PIN_ALT4 | PIN_PORTE | PIN6) +#define PIN_FB_ALE (PIN_ALT5 | PIN_PORTE | PIN6) +#define PIN_FB_CS1 (PIN_ALT5 | PIN_PORTE | PIN6) +#define PIN_FB_TS (PIN_ALT5 | PIN_PORTE | PIN6) +#define PIN_I2S0_CLKIN_3 (PIN_ALT6 | PIN_PORTE | PIN6) +#define PIN_UART3_RTS_3 (PIN_ALT3 | PIN_PORTE | PIN7) +#define PIN_I2S0_RXD_3 (PIN_ALT4 | PIN_PORTE | PIN7) +#define PIN_FB_CS0 (PIN_ALT5 | PIN_PORTE | PIN7) +#define PIN_UART5_TX (PIN_ALT3 | PIN_PORTE | PIN8) +#define PIN_I2S0_RX_FS_3 (PIN_ALT4 | PIN_PORTE | PIN8) +#define PIN_FB_AD4 (PIN_ALT5 | PIN_PORTE | PIN8) +#define PIN_UART5_RX (PIN_ALT3 | PIN_PORTE | PIN9) +#define PIN_I2S0_RX_BCLK_3 (PIN_ALT4 | PIN_PORTE | PIN9) +#define PIN_FB_AD3 (PIN_ALT5 | PIN_PORTE | PIN9) +#define PIN_UART5_CTS_2 (PIN_ALT3 | PIN_PORTE | PIN10) +#define PIN_I2S0_TXD_3 (PIN_ALT4 | PIN_PORTE | PIN10) +#define PIN_FB_AD2 (PIN_ALT5 | PIN_PORTE | PIN10) +#define PIN_UART5_RTS_2 (PIN_ALT3 | PIN_PORTE | PIN11) +#define PIN_I2S0_TX_FS_3 (PIN_ALT4 | PIN_PORTE | PIN11) +#define PIN_FB_AD1 (PIN_ALT5 | PIN_PORTE | PIN11) +#define PIN_I2S0_TX_BCLK_3 (PIN_ALT4 | PIN_PORTE | PIN12) +#define PIN_FB_AD0 (PIN_ALT5 | PIN_PORTE | PIN12) +#define PIN_ADC0_SE17 (PIN_ANALOG | PIN_PORTE | PIN24) +#define PIN_CAN1_TX_2 (PIN_ALT2 | PIN_PORTE | PIN24) +#define PIN_UART4_TX_2 (PIN_ALT3 | PIN_PORTE | PIN24) +#define PIN_EWM_OUT_3 (PIN_ALT6 | PIN_PORTE | PIN24) +#define PIN_ADC0_SE18 (PIN_ANALOG | PIN_PORTE | PIN25) +#define PIN_CAN1_RX_2 (PIN_ALT2 | PIN_PORTE | PIN25) +#define PIN_UART4_RX_2 (PIN_ALT3 | PIN_PORTE | PIN25) +#define PIN_FB_AD23 (PIN_ALT5 | PIN_PORTE | PIN25) +#define PIN_EWM_IN_3 (PIN_ALT6 | PIN_PORTE | PIN25) +#define PIN_UART4_CTS_2 (PIN_ALT3 | PIN_PORTE | PIN26) +#define PIN_FB_AD22 (PIN_ALT5 | PIN_PORTE | PIN26) +#define PIN_RTC_CLKOUT (PIN_ALT6 | PIN_PORTE | PIN26) +#define PIN_USB_CLKIN (PIN_ALT7 | PIN_PORTE | PIN26) +#define PIN_UART4_RTS_2 (PIN_ALT3 | PIN_PORTE | PIN27) +#define PIN_FB_AD21 (PIN_ALT5 | PIN_PORTE | PIN27) +#define PIN_FB_AD20 (PIN_ALT5 | PIN_PORTE | PIN28) #else /* The pin muxing for other K40 parts is defined in other documents */ diff --git a/nuttx/arch/arm/src/kinetis/kinetis_k60pinmux.h b/nuttx/arch/arm/src/kinetis/kinetis_k60pinmux.h index 128e89d8d..55a5df47d 100644 --- a/nuttx/arch/arm/src/kinetis/kinetis_k60pinmux.h +++ b/nuttx/arch/arm/src/kinetis/kinetis_k60pinmux.h @@ -59,401 +59,401 @@ defined(CONFIG_ARCH_CHIP_MK60N512VLQ100) || defined(CONFIG_ARCH_CHIP_MK60N256VMD100) || \ defined(CONFIG_ARCH_CHIP_MK60X256VMD100) || defined(CONFIG_ARCH_CHIP_MK60N512VMD100) -#define GPIO_TSI0_CH1 (GPIO_ANALOG | GPIO_PORTA | GPIO_PIN0) -#define GPIO_UART0_CTS_1 (GPIO_ALT2 | GPIO_PORTA | GPIO_PIN0) -#define GPIO_FTM0_CH5_1 (GPIO_ALT3 | GPIO_PORTA | GPIO_PIN0) -#define GPIO_JTAG_TCLK (GPIO_ALT7 | GPIO_PORTA | GPIO_PIN0) -#define GPIO_SWD_CLK (GPIO_ALT7 | GPIO_PORTA | GPIO_PIN0) -#define GPIO_TSI0_CH2 (GPIO_ANALOG | GPIO_PORTA | GPIO_PIN1) -#define GPIO_UART0_RX_1 (GPIO_ALT2 | GPIO_PORTA | GPIO_PIN1) -#define GPIO_FTM0_CH6_1 (GPIO_ALT3 | GPIO_PORTA | GPIO_PIN1) -#define GPIO_JTAG_TDI (GPIO_ALT7 | GPIO_PORTA | GPIO_PIN1) -#define GPIO_TSI0_CH3 (GPIO_ANALOG | GPIO_PORTA | GPIO_PIN2) -#define GPIO_UART0_TX_1 (GPIO_ALT2 | GPIO_PORTA | GPIO_PIN2) -#define GPIO_FTM0_CH7_1 (GPIO_ALT3 | GPIO_PORTA | GPIO_PIN2) -#define GPIO_JTAG_TDO (GPIO_ALT7 | GPIO_PORTA | GPIO_PIN2) -#define GPIO_TRACE_SWO (GPIO_ALT7 | GPIO_PORTA | GPIO_PIN2) -#define GPIO_TSI0_CH4 (GPIO_ANALOG | GPIO_PORTA | GPIO_PIN3) -#define GPIO_UART0_RTS_1 (GPIO_ALT2 | GPIO_PORTA | GPIO_PIN3) -#define GPIO_FTM0_CH0_1 (GPIO_ALT3 | GPIO_PORTA | GPIO_PIN3) -#define GPIO_JTAG_TMS (GPIO_ALT7 | GPIO_PORTA | GPIO_PIN3) -#define GPIO_SWD_DIO (GPIO_ALT7 | GPIO_PORTA | GPIO_PIN3) -#define GPIO_TSI0_CH5 (GPIO_ANALOG | GPIO_PORTA | GPIO_PIN4) -#define GPIO_FTM0_CH1_1 (GPIO_ALT3 | GPIO_PORTA | GPIO_PIN4) -#define GPIO_NMI (GPIO_ALT7 | GPIO_PORTA | GPIO_PIN4) -#define GPIO_FTM0_CH2_1 (GPIO_ALT3 | GPIO_PORTA | GPIO_PIN5) -#define GPIO_RMII0_RXER (GPIO_ALT4 | GPIO_PORTA | GPIO_PIN5) -#define GPIO_MII0_RXER (GPIO_ALT4 | GPIO_PORTA | GPIO_PIN5) -#define GPIO_CMP2_OUT_1 (GPIO_ALT5 | GPIO_PORTA | GPIO_PIN5) -#define GPIO_I2S0_RX_BCLK_1 (GPIO_ALT6 | GPIO_PORTA | GPIO_PIN5) -#define GPIO_JTAG_TRST (GPIO_ALT7 | GPIO_PORTA | GPIO_PIN5) -#define GPIO_FTM0_CH3_1 (GPIO_ALT3 | GPIO_PORTA | GPIO_PIN6) -#define GPIO_TRACE_CLKOUT (GPIO_ALT7 | GPIO_PORTA | GPIO_PIN6) -#define GPIO_ADC0_SE10 (GPIO_ANALOG | GPIO_PORTA | GPIO_PIN7) -#define GPIO_FTM0_CH4_1 (GPIO_ALT3 | GPIO_PORTA | GPIO_PIN7) -#define GPIO_TRACE_D3 (GPIO_ALT7 | GPIO_PORTA | GPIO_PIN7) -#define GPIO_ADC0_SE11 (GPIO_ANALOG | GPIO_PORTA | GPIO_PIN8) -#define GPIO_FTM1_CH0_1 (GPIO_ALT3 | GPIO_PORTA | GPIO_PIN8) -#define GPIO_FTM1_QD_PHA_1 (GPIO_ALT6 | GPIO_PORTA | GPIO_PIN8) -#define GPIO_TRACE_D2 (GPIO_ALT7 | GPIO_PORTA | GPIO_PIN8) -#define GPIO_FTM1_CH1_1 (GPIO_ALT3 | GPIO_PORTA | GPIO_PIN9) -#define GPIO_MII0_RXD3 (GPIO_ALT4 | GPIO_PORTA | GPIO_PIN9) -#define GPIO_FTM1_QD_PHB_1 (GPIO_ALT6 | GPIO_PORTA | GPIO_PIN9) -#define GPIO_TRACE_D1 (GPIO_ALT7 | GPIO_PORTA | GPIO_PIN9) -#define GPIO_FTM2_CH0_1 (GPIO_ALT3 | GPIO_PORTA | GPIO_PIN10) -#define GPIO_MII0_RXD2 (GPIO_ALT4 | GPIO_PORTA | GPIO_PIN10) -#define GPIO_FTM2_QD_PHA_1 (GPIO_ALT6 | GPIO_PORTA | GPIO_PIN10) -#define GPIO_TRACE_D0 (GPIO_ALT7 | GPIO_PORTA | GPIO_PIN10) -#define GPIO_FTM2_CH1_1 (GPIO_ALT3 | GPIO_PORTA | GPIO_PIN11) -#define GPIO_MII0_RXCLK (GPIO_ALT4 | GPIO_PORTA | GPIO_PIN11) -#define GPIO_FTM2_QD_PHB_1 (GPIO_ALT6 | GPIO_PORTA | GPIO_PIN11) -#define GPIO_CMP2_IN0 (GPIO_ANALOG | GPIO_PORTA | GPIO_PIN12) -#define GPIO_CAN0_TX_1 (GPIO_ALT2 | GPIO_PORTA | GPIO_PIN12) -#define GPIO_FTM1_CH0_2 (GPIO_ALT3 | GPIO_PORTA | GPIO_PIN12) -#define GPIO_RMII0_RXD1 (GPIO_ALT4 | GPIO_PORTA | GPIO_PIN12) -#define GPIO_MII0_RXD1 (GPIO_ALT4 | GPIO_PORTA | GPIO_PIN12) -#define GPIO_I2S0_TXD_1 (GPIO_ALT6 | GPIO_PORTA | GPIO_PIN12) -#define GPIO_FTM1_QD_PHA_2 (GPIO_ALT7 | GPIO_PORTA | GPIO_PIN12) -#define GPIO_CMP2_IN1 (GPIO_ANALOG | GPIO_PORTA | GPIO_PIN13) -#define GPIO_CAN0_RX_1 (GPIO_ALT2 | GPIO_PORTA | GPIO_PIN13) -#define GPIO_FTM1_CH1_2 (GPIO_ALT3 | GPIO_PORTA | GPIO_PIN13) -#define GPIO_RMII0_RXD0 (GPIO_ALT4 | GPIO_PORTA | GPIO_PIN13) -#define GPIO_MII0_RXD0 (GPIO_ALT4 | GPIO_PORTA | GPIO_PIN13) -#define GPIO_I2S0_TX_FS_1 (GPIO_ALT6 | GPIO_PORTA | GPIO_PIN13) -#define GPIO_FTM1_QD_PHB_2 (GPIO_ALT7 | GPIO_PORTA | GPIO_PIN13) -#define GPIO_SPI0_PCS0_1 (GPIO_ALT2 | GPIO_PORTA | GPIO_PIN14) -#define GPIO_UART0_TX_2 (GPIO_ALT3 | GPIO_PORTA | GPIO_PIN14) -#define GPIO_RMII0_CRS_DV (GPIO_ALT4 | GPIO_PORTA | GPIO_PIN14) -#define GPIO_MII0_RXDV (GPIO_ALT4 | GPIO_PORTA | GPIO_PIN14) -#define GPIO_I2S0_TX_BCLK_1 (GPIO_ALT6 | GPIO_PORTA | GPIO_PIN14) -#define GPIO_SPI0_SCK_1 (GPIO_ALT2 | GPIO_PORTA | GPIO_PIN15) -#define GPIO_UART0_RX_2 (GPIO_ALT3 | GPIO_PORTA | GPIO_PIN15) -#define GPIO_RMII0_TXEN (GPIO_ALT4 | GPIO_PORTA | GPIO_PIN15) -#define GPIO_MII0_TXEN (GPIO_ALT4 | GPIO_PORTA | GPIO_PIN15) -#define GPIO_I2S0_RXD_1 (GPIO_ALT6 | GPIO_PORTA | GPIO_PIN15) -#define GPIO_SPI0_SOUT_1 (GPIO_ALT2 | GPIO_PORTA | GPIO_PIN16) -#define GPIO_UART0_CTS_2 (GPIO_ALT3 | GPIO_PORTA | GPIO_PIN16) -#define GPIO_RMII0_TXD0 (GPIO_ALT4 | GPIO_PORTA | GPIO_PIN16) -#define GPIO_MII0_TXD0 (GPIO_ALT4 | GPIO_PORTA | GPIO_PIN16) -#define GPIO_I2S0_RX_FS_1 (GPIO_ALT6 | GPIO_PORTA | GPIO_PIN16) -#define GPIO_ADC1_SE17 (GPIO_ANALOG | GPIO_PORTA | GPIO_PIN17) -#define GPIO_SPI0_SIN_1 (GPIO_ALT2 | GPIO_PORTA | GPIO_PIN17) -#define GPIO_UART0_RTS_2 (GPIO_ALT3 | GPIO_PORTA | GPIO_PIN17) -#define GPIO_RMII0_TXD1 (GPIO_ALT4 | GPIO_PORTA | GPIO_PIN17) -#define GPIO_MII0_TXD1 (GPIO_ALT4 | GPIO_PORTA | GPIO_PIN17) -#define GPIO_I2S0_MCLK_1 (GPIO_ALT6 | GPIO_PORTA | GPIO_PIN17) -#define GPIO_I2S0_CLKIN_1 (GPIO_ALT7 | GPIO_PORTA | GPIO_PIN17) -#define GPIO_EXTAL (GPIO_ANALOG | GPIO_PORTA | GPIO_PIN18) -#define GPIO_FTM0_FLT2_1 (GPIO_ALT3 | GPIO_PORTA | GPIO_PIN18) -#define GPIO_FTM_CLKIN0 (GPIO_ALT4 | GPIO_PORTA | GPIO_PIN18) -#define GPIO_XTAL (GPIO_ANALOG | GPIO_PORTA | GPIO_PIN19) -#define GPIO_FTM1_FLT0_1 (GPIO_ALT3 | GPIO_PORTA | GPIO_PIN19) -#define GPIO_FTM_CLKIN1 (GPIO_ALT4 | GPIO_PORTA | GPIO_PIN19) -#define GPIO_LPT0_ALT1 (GPIO_ALT6 | GPIO_PORTA | GPIO_PIN19) -#define GPIO_MII0_TXD2 (GPIO_ALT4 | GPIO_PORTA | GPIO_PIN24) -#define GPIO_FB_A29 (GPIO_ALT6 | GPIO_PORTA | GPIO_PIN24) -#define GPIO_MII0_TXCLK (GPIO_ALT4 | GPIO_PORTA | GPIO_PIN25) -#define GPIO_FB_A28 (GPIO_ALT6 | GPIO_PORTA | GPIO_PIN25) -#define GPIO_MII0_TXD3 (GPIO_ALT4 | GPIO_PORTA | GPIO_PIN26) -#define GPIO_FB_A27 (GPIO_ALT6 | GPIO_PORTA | GPIO_PIN26) -#define GPIO_MII0_CRS (GPIO_ALT4 | GPIO_PORTA | GPIO_PIN27) -#define GPIO_FB_A26 (GPIO_ALT6 | GPIO_PORTA | GPIO_PIN27) -#define GPIO_MII0_TXER (GPIO_ALT4 | GPIO_PORTA | GPIO_PIN28) -#define GPIO_FB_A25 (GPIO_ALT6 | GPIO_PORTA | GPIO_PIN28) -#define GPIO_MII0_COL (GPIO_ALT4 | GPIO_PORTA | GPIO_PIN29) -#define GPIO_FB_A24 (GPIO_ALT6 | GPIO_PORTA | GPIO_PIN29) +#define PIN_TSI0_CH1 (PIN_ANALOG | PIN_PORTA | PIN0) +#define PIN_UART0_CTS_1 (PIN_ALT2 | PIN_PORTA | PIN0) +#define PIN_FTM0_CH5_1 (PIN_ALT3 | PIN_PORTA | PIN0) +#define PIN_JTAG_TCLK (PIN_ALT7 | PIN_PORTA | PIN0) +#define PIN_SWD_CLK (PIN_ALT7 | PIN_PORTA | PIN0) +#define PIN_TSI0_CH2 (PIN_ANALOG | PIN_PORTA | PIN1) +#define PIN_UART0_RX_1 (PIN_ALT2 | PIN_PORTA | PIN1) +#define PIN_FTM0_CH6_1 (PIN_ALT3 | PIN_PORTA | PIN1) +#define PIN_JTAG_TDI (PIN_ALT7 | PIN_PORTA | PIN1) +#define PIN_TSI0_CH3 (PIN_ANALOG | PIN_PORTA | PIN2) +#define PIN_UART0_TX_1 (PIN_ALT2 | PIN_PORTA | PIN2) +#define PIN_FTM0_CH7_1 (PIN_ALT3 | PIN_PORTA | PIN2) +#define PIN_JTAG_TDO (PIN_ALT7 | PIN_PORTA | PIN2) +#define PIN_TRACE_SWO (PIN_ALT7 | PIN_PORTA | PIN2) +#define PIN_TSI0_CH4 (PIN_ANALOG | PIN_PORTA | PIN3) +#define PIN_UART0_RTS_1 (PIN_ALT2 | PIN_PORTA | PIN3) +#define PIN_FTM0_CH0_1 (PIN_ALT3 | PIN_PORTA | PIN3) +#define PIN_JTAG_TMS (PIN_ALT7 | PIN_PORTA | PIN3) +#define PIN_SWD_DIO (PIN_ALT7 | PIN_PORTA | PIN3) +#define PIN_TSI0_CH5 (PIN_ANALOG | PIN_PORTA | PIN4) +#define PIN_FTM0_CH1_1 (PIN_ALT3 | PIN_PORTA | PIN4) +#define PIN_NMI (PIN_ALT7 | PIN_PORTA | PIN4) +#define PIN_FTM0_CH2_1 (PIN_ALT3 | PIN_PORTA | PIN5) +#define PIN_RMII0_RXER (PIN_ALT4 | PIN_PORTA | PIN5) +#define PIN_MII0_RXER (PIN_ALT4 | PIN_PORTA | PIN5) +#define PIN_CMP2_OUT_1 (PIN_ALT5 | PIN_PORTA | PIN5) +#define PIN_I2S0_RX_BCLK_1 (PIN_ALT6 | PIN_PORTA | PIN5) +#define PIN_JTAG_TRST (PIN_ALT7 | PIN_PORTA | PIN5) +#define PIN_FTM0_CH3_1 (PIN_ALT3 | PIN_PORTA | PIN6) +#define PIN_TRACE_CLKOUT (PIN_ALT7 | PIN_PORTA | PIN6) +#define PIN_ADC0_SE10 (PIN_ANALOG | PIN_PORTA | PIN7) +#define PIN_FTM0_CH4_1 (PIN_ALT3 | PIN_PORTA | PIN7) +#define PIN_TRACE_D3 (PIN_ALT7 | PIN_PORTA | PIN7) +#define PIN_ADC0_SE11 (PIN_ANALOG | PIN_PORTA | PIN8) +#define PIN_FTM1_CH0_1 (PIN_ALT3 | PIN_PORTA | PIN8) +#define PIN_FTM1_QD_PHA_1 (PIN_ALT6 | PIN_PORTA | PIN8) +#define PIN_TRACE_D2 (PIN_ALT7 | PIN_PORTA | PIN8) +#define PIN_FTM1_CH1_1 (PIN_ALT3 | PIN_PORTA | PIN9) +#define PIN_MII0_RXD3 (PIN_ALT4 | PIN_PORTA | PIN9) +#define PIN_FTM1_QD_PHB_1 (PIN_ALT6 | PIN_PORTA | PIN9) +#define PIN_TRACE_D1 (PIN_ALT7 | PIN_PORTA | PIN9) +#define PIN_FTM2_CH0_1 (PIN_ALT3 | PIN_PORTA | PIN10) +#define PIN_MII0_RXD2 (PIN_ALT4 | PIN_PORTA | PIN10) +#define PIN_FTM2_QD_PHA_1 (PIN_ALT6 | PIN_PORTA | PIN10) +#define PIN_TRACE_D0 (PIN_ALT7 | PIN_PORTA | PIN10) +#define PIN_FTM2_CH1_1 (PIN_ALT3 | PIN_PORTA | PIN11) +#define PIN_MII0_RXCLK (PIN_ALT4 | PIN_PORTA | PIN11) +#define PIN_FTM2_QD_PHB_1 (PIN_ALT6 | PIN_PORTA | PIN11) +#define PIN_CMP2_IN0 (PIN_ANALOG | PIN_PORTA | PIN12) +#define PIN_CAN0_TX_1 (PIN_ALT2 | PIN_PORTA | PIN12) +#define PIN_FTM1_CH0_2 (PIN_ALT3 | PIN_PORTA | PIN12) +#define PIN_RMII0_RXD1 (PIN_ALT4 | PIN_PORTA | PIN12) +#define PIN_MII0_RXD1 (PIN_ALT4 | PIN_PORTA | PIN12) +#define PIN_I2S0_TXD_1 (PIN_ALT6 | PIN_PORTA | PIN12) +#define PIN_FTM1_QD_PHA_2 (PIN_ALT7 | PIN_PORTA | PIN12) +#define PIN_CMP2_IN1 (PIN_ANALOG | PIN_PORTA | PIN13) +#define PIN_CAN0_RX_1 (PIN_ALT2 | PIN_PORTA | PIN13) +#define PIN_FTM1_CH1_2 (PIN_ALT3 | PIN_PORTA | PIN13) +#define PIN_RMII0_RXD0 (PIN_ALT4 | PIN_PORTA | PIN13) +#define PIN_MII0_RXD0 (PIN_ALT4 | PIN_PORTA | PIN13) +#define PIN_I2S0_TX_FS_1 (PIN_ALT6 | PIN_PORTA | PIN13) +#define PIN_FTM1_QD_PHB_2 (PIN_ALT7 | PIN_PORTA | PIN13) +#define PIN_SPI0_PCS0_1 (PIN_ALT2 | PIN_PORTA | PIN14) +#define PIN_UART0_TX_2 (PIN_ALT3 | PIN_PORTA | PIN14) +#define PIN_RMII0_CRS_DV (PIN_ALT4 | PIN_PORTA | PIN14) +#define PIN_MII0_RXDV (PIN_ALT4 | PIN_PORTA | PIN14) +#define PIN_I2S0_TX_BCLK_1 (PIN_ALT6 | PIN_PORTA | PIN14) +#define PIN_SPI0_SCK_1 (PIN_ALT2 | PIN_PORTA | PIN15) +#define PIN_UART0_RX_2 (PIN_ALT3 | PIN_PORTA | PIN15) +#define PIN_RMII0_TXEN (PIN_ALT4 | PIN_PORTA | PIN15) +#define PIN_MII0_TXEN (PIN_ALT4 | PIN_PORTA | PIN15) +#define PIN_I2S0_RXD_1 (PIN_ALT6 | PIN_PORTA | PIN15) +#define PIN_SPI0_SOUT_1 (PIN_ALT2 | PIN_PORTA | PIN16) +#define PIN_UART0_CTS_2 (PIN_ALT3 | PIN_PORTA | PIN16) +#define PIN_RMII0_TXD0 (PIN_ALT4 | PIN_PORTA | PIN16) +#define PIN_MII0_TXD0 (PIN_ALT4 | PIN_PORTA | PIN16) +#define PIN_I2S0_RX_FS_1 (PIN_ALT6 | PIN_PORTA | PIN16) +#define PIN_ADC1_SE17 (PIN_ANALOG | PIN_PORTA | PIN17) +#define PIN_SPI0_SIN_1 (PIN_ALT2 | PIN_PORTA | PIN17) +#define PIN_UART0_RTS_2 (PIN_ALT3 | PIN_PORTA | PIN17) +#define PIN_RMII0_TXD1 (PIN_ALT4 | PIN_PORTA | PIN17) +#define PIN_MII0_TXD1 (PIN_ALT4 | PIN_PORTA | PIN17) +#define PIN_I2S0_MCLK_1 (PIN_ALT6 | PIN_PORTA | PIN17) +#define PIN_I2S0_CLKIN_1 (PIN_ALT7 | PIN_PORTA | PIN17) +#define PIN_EXTAL (PIN_ANALOG | PIN_PORTA | PIN18) +#define PIN_FTM0_FLT2_1 (PIN_ALT3 | PIN_PORTA | PIN18) +#define PIN_FTM_CLKIN0 (PIN_ALT4 | PIN_PORTA | PIN18) +#define PIN_XTAL (PIN_ANALOG | PIN_PORTA | PIN19) +#define PIN_FTM1_FLT0_1 (PIN_ALT3 | PIN_PORTA | PIN19) +#define PIN_FTM_CLKIN1 (PIN_ALT4 | PIN_PORTA | PIN19) +#define PIN_LPT0_ALT1 (PIN_ALT6 | PIN_PORTA | PIN19) +#define PIN_MII0_TXD2 (PIN_ALT4 | PIN_PORTA | PIN24) +#define PIN_FB_A29 (PIN_ALT6 | PIN_PORTA | PIN24) +#define PIN_MII0_TXCLK (PIN_ALT4 | PIN_PORTA | PIN25) +#define PIN_FB_A28 (PIN_ALT6 | PIN_PORTA | PIN25) +#define PIN_MII0_TXD3 (PIN_ALT4 | PIN_PORTA | PIN26) +#define PIN_FB_A27 (PIN_ALT6 | PIN_PORTA | PIN26) +#define PIN_MII0_CRS (PIN_ALT4 | PIN_PORTA | PIN27) +#define PIN_FB_A26 (PIN_ALT6 | PIN_PORTA | PIN27) +#define PIN_MII0_TXER (PIN_ALT4 | PIN_PORTA | PIN28) +#define PIN_FB_A25 (PIN_ALT6 | PIN_PORTA | PIN28) +#define PIN_MII0_COL (PIN_ALT4 | PIN_PORTA | PIN29) +#define PIN_FB_A24 (PIN_ALT6 | PIN_PORTA | PIN29) -#define GPIO_ADC0_SE8 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN0) -#define GPIO_ADC1_SE8 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN0) -#define GPIO_TSI0_CH0 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN0) -#define GPIO_I2C0_SCL_1 (GPIO_ALT2 | GPIO_PORTB | GPIO_PIN0) -#define GPIO_FTM1_CH0_3 (GPIO_ALT3 | GPIO_PORTB | GPIO_PIN0) -#define GPIO_RMII0_MDIO (GPIO_ALT4 | GPIO_PORTB | GPIO_PIN0) -#define GPIO_MII0_MDIO (GPIO_ALT4 | GPIO_PORTB | GPIO_PIN0) -#define GPIO_FTM1_QD_PHA_3 (GPIO_ALT6 | GPIO_PORTB | GPIO_PIN0) -#define GPIO_ADC0_SE9 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN1) -#define GPIO_ADC1_SE9 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN1) -#define GPIO_TSI0_CH6 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN1) -#define GPIO_I2C0_SDA_1 (GPIO_ALT2 | GPIO_PORTB | GPIO_PIN1) -#define GPIO_FTM1_CH1_3 (GPIO_ALT3 | GPIO_PORTB | GPIO_PIN1) -#define GPIO_RMII0_MDC (GPIO_ALT4 | GPIO_PORTB | GPIO_PIN1) -#define GPIO_MII0_MDC (GPIO_ALT4 | GPIO_PORTB | GPIO_PIN1) -#define GPIO_FTM1_QD_PHB_3 (GPIO_ALT6 | GPIO_PORTB | GPIO_PIN1) -#define GPIO_ADC0_SE12 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN2) -#define GPIO_TSI0_CH7 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN2) -#define GPIO_I2C0_SCL_2 (GPIO_ALT2 | GPIO_PORTB | GPIO_PIN2) -#define GPIO_UART0_RTS_3 (GPIO_ALT3 | GPIO_PORTB | GPIO_PIN2) -#define GPIO_ENET0_1588_TMR0 (GPIO_ALT4 | GPIO_PORTB | GPIO_PIN2) -#define GPIO_FTM0_FLT3 (GPIO_ALT6 | GPIO_PORTB | GPIO_PIN2) -#define GPIO_ADC0_SE13 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN3) -#define GPIO_TSI0_CH8 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN3) -#define GPIO_I2C0_SDA_2 (GPIO_ALT2 | GPIO_PORTB | GPIO_PIN3) -#define GPIO_UART0_CTS_3 (GPIO_ALT3 | GPIO_PORTB | GPIO_PIN3) -#define GPIO_ENET0_1588_TMR1 (GPIO_ALT4 | GPIO_PORTB | GPIO_PIN3) -#define GPIO_FTM0_FLT0_2 (GPIO_ALT6 | GPIO_PORTB | GPIO_PIN3) -#define GPIO_ADC1_SE10 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN4) -#define GPIO_ENET0_1588_TMR2 (GPIO_ALT4 | GPIO_PORTB | GPIO_PIN4) -#define GPIO_FTM1_FLT0_2 (GPIO_ALT6 | GPIO_PORTB | GPIO_PIN4) -#define GPIO_ADC1_SE11 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN5) -#define GPIO_ENET0_1588_TMR3 (GPIO_ALT4 | GPIO_PORTB | GPIO_PIN5) -#define GPIO_FTM2_FLT0_1 (GPIO_ALT6 | GPIO_PORTB | GPIO_PIN5) -#define GPIO_ADC1_SE12 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN6) -#define GPIO_FB_AD23 (GPIO_ALT5 | GPIO_PORTB | GPIO_PIN6) -#define GPIO_ADC1_SE13 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN7) -#define GPIO_FB_AD22 (GPIO_ALT5 | GPIO_PORTB | GPIO_PIN7) -#define GPIO_UART3_RTS_1 (GPIO_ALT3 | GPIO_PORTB | GPIO_PIN8) -#define GPIO_FB_AD21 (GPIO_ALT5 | GPIO_PORTB | GPIO_PIN8) -#define GPIO_SPI1_PCS1_1 (GPIO_ALT2 | GPIO_PORTB | GPIO_PIN9) -#define GPIO_UART3_CTS_1 (GPIO_ALT3 | GPIO_PORTB | GPIO_PIN9) -#define GPIO_FB_AD20 (GPIO_ALT5 | GPIO_PORTB | GPIO_PIN9) -#define GPIO_ADC1_SE14 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN10) -#define GPIO_SPI1_PCS0_1 (GPIO_ALT2 | GPIO_PORTB | GPIO_PIN10) -#define GPIO_UART3_RX_1 (GPIO_ALT3 | GPIO_PORTB | GPIO_PIN10) -#define GPIO_FB_AD19 (GPIO_ALT5 | GPIO_PORTB | GPIO_PIN10) -#define GPIO_FTM0_FLT1_1 (GPIO_ALT6 | GPIO_PORTB | GPIO_PIN10) -#define GPIO_ADC1_SE15 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN11) -#define GPIO_SPI1_SCK_1 (GPIO_ALT2 | GPIO_PORTB | GPIO_PIN11) -#define GPIO_UART3_TX_1 (GPIO_ALT3 | GPIO_PORTB | GPIO_PIN11) -#define GPIO_FB_AD18 (GPIO_ALT5 | GPIO_PORTB | GPIO_PIN11) -#define GPIO_FTM0_FLT2_2 (GPIO_ALT6 | GPIO_PORTB | GPIO_PIN11) -#define GPIO_TSI0_CH9 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN16) -#define GPIO_SPI1_SOUT_1 (GPIO_ALT2 | GPIO_PORTB | GPIO_PIN16) -#define GPIO_UART0_RX_3 (GPIO_ALT3 | GPIO_PORTB | GPIO_PIN16) -#define GPIO_FB_AD17 (GPIO_ALT5 | GPIO_PORTB | GPIO_PIN16) -#define GPIO_EWM_IN_1 (GPIO_ALT6 | GPIO_PORTB | GPIO_PIN16) -#define GPIO_TSI0_CH10 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN17) -#define GPIO_SPI1_SIN_1 (GPIO_ALT2 | GPIO_PORTB | GPIO_PIN17) -#define GPIO_UART0_TX_3 (GPIO_ALT3 | GPIO_PORTB | GPIO_PIN17) -#define GPIO_FB_AD16 (GPIO_ALT5 | GPIO_PORTB | GPIO_PIN17) -#define GPIO_EWM_OUT_1 (GPIO_ALT6 | GPIO_PORTB | GPIO_PIN17) -#define GPIO_TSI0_CH11 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN18) -#define GPIO_CAN0_TX_2 (GPIO_ALT2 | GPIO_PORTB | GPIO_PIN18) -#define GPIO_FTM2_CH0_2 (GPIO_ALT3 | GPIO_PORTB | GPIO_PIN18) -#define GPIO_I2S0_TX_BCLK_2 (GPIO_ALT4 | GPIO_PORTB | GPIO_PIN18) -#define GPIO_FB_AD15 (GPIO_ALT5 | GPIO_PORTB | GPIO_PIN18) -#define GPIO_FTM2_QD_PHA_2 (GPIO_ALT6 | GPIO_PORTB | GPIO_PIN18) -#define GPIO_TSI0_CH12 (GPIO_ANALOG | GPIO_PORTB | GPIO_PIN19) -#define GPIO_CAN0_RX_2 (GPIO_ALT2 | GPIO_PORTB | GPIO_PIN19) -#define GPIO_FTM2_CH1_2 (GPIO_ALT3 | GPIO_PORTB | GPIO_PIN19) -#define GPIO_I2S0_TX_FS_2 (GPIO_ALT4 | GPIO_PORTB | GPIO_PIN19) -#define GPIO_FB_OE (GPIO_ALT5 | GPIO_PORTB | GPIO_PIN19) -#define GPIO_FTM2_QD_PHB_2 (GPIO_ALT6 | GPIO_PORTB | GPIO_PIN19) -#define GPIO_SPI2_PCS0_1 (GPIO_ALT2 | GPIO_PORTB | GPIO_PIN20) -#define GPIO_FB_AD31 (GPIO_ALT5 | GPIO_PORTB | GPIO_PIN20) -#define GPIO_CMP0_OUT_1 (GPIO_ALT6 | GPIO_PORTB | GPIO_PIN20) -#define GPIO_SPI2_SCK_1 (GPIO_ALT2 | GPIO_PORTB | GPIO_PIN21) -#define GPIO_FB_AD30 (GPIO_ALT5 | GPIO_PORTB | GPIO_PIN21) -#define GPIO_CMP1_OUT_1 (GPIO_ALT6 | GPIO_PORTB | GPIO_PIN21) -#define GPIO_SPI2_SOUT_1 (GPIO_ALT2 | GPIO_PORTB | GPIO_PIN22) -#define GPIO_FB_AD29 (GPIO_ALT5 | GPIO_PORTB | GPIO_PIN22) -#define GPIO_CMP2_OUT_2 (GPIO_ALT6 | GPIO_PORTB | GPIO_PIN22) -#define GPIO_SPI2_SIN_1 (GPIO_ALT2 | GPIO_PORTB | GPIO_PIN23) -#define GPIO_SPI0_PCS5 (GPIO_ALT3 | GPIO_PORTB | GPIO_PIN23) -#define GPIO_FB_AD28 (GPIO_ALT5 | GPIO_PORTB | GPIO_PIN23) +#define PIN_ADC0_SE8 (PIN_ANALOG | PIN_PORTB | PIN0) +#define PIN_ADC1_SE8 (PIN_ANALOG | PIN_PORTB | PIN0) +#define PIN_TSI0_CH0 (PIN_ANALOG | PIN_PORTB | PIN0) +#define PIN_I2C0_SCL_1 (PIN_ALT2 | PIN_PORTB | PIN0) +#define PIN_FTM1_CH0_3 (PIN_ALT3 | PIN_PORTB | PIN0) +#define PIN_RMII0_MDIO (PIN_ALT4 | PIN_PORTB | PIN0) +#define PIN_MII0_MDIO (PIN_ALT4 | PIN_PORTB | PIN0) +#define PIN_FTM1_QD_PHA_3 (PIN_ALT6 | PIN_PORTB | PIN0) +#define PIN_ADC0_SE9 (PIN_ANALOG | PIN_PORTB | PIN1) +#define PIN_ADC1_SE9 (PIN_ANALOG | PIN_PORTB | PIN1) +#define PIN_TSI0_CH6 (PIN_ANALOG | PIN_PORTB | PIN1) +#define PIN_I2C0_SDA_1 (PIN_ALT2 | PIN_PORTB | PIN1) +#define PIN_FTM1_CH1_3 (PIN_ALT3 | PIN_PORTB | PIN1) +#define PIN_RMII0_MDC (PIN_ALT4 | PIN_PORTB | PIN1) +#define PIN_MII0_MDC (PIN_ALT4 | PIN_PORTB | PIN1) +#define PIN_FTM1_QD_PHB_3 (PIN_ALT6 | PIN_PORTB | PIN1) +#define PIN_ADC0_SE12 (PIN_ANALOG | PIN_PORTB | PIN2) +#define PIN_TSI0_CH7 (PIN_ANALOG | PIN_PORTB | PIN2) +#define PIN_I2C0_SCL_2 (PIN_ALT2 | PIN_PORTB | PIN2) +#define PIN_UART0_RTS_3 (PIN_ALT3 | PIN_PORTB | PIN2) +#define PIN_ENET0_1588_TMR0 (PIN_ALT4 | PIN_PORTB | PIN2) +#define PIN_FTM0_FLT3 (PIN_ALT6 | PIN_PORTB | PIN2) +#define PIN_ADC0_SE13 (PIN_ANALOG | PIN_PORTB | PIN3) +#define PIN_TSI0_CH8 (PIN_ANALOG | PIN_PORTB | PIN3) +#define PIN_I2C0_SDA_2 (PIN_ALT2 | PIN_PORTB | PIN3) +#define PIN_UART0_CTS_3 (PIN_ALT3 | PIN_PORTB | PIN3) +#define PIN_ENET0_1588_TMR1 (PIN_ALT4 | PIN_PORTB | PIN3) +#define PIN_FTM0_FLT0_2 (PIN_ALT6 | PIN_PORTB | PIN3) +#define PIN_ADC1_SE10 (PIN_ANALOG | PIN_PORTB | PIN4) +#define PIN_ENET0_1588_TMR2 (PIN_ALT4 | PIN_PORTB | PIN4) +#define PIN_FTM1_FLT0_2 (PIN_ALT6 | PIN_PORTB | PIN4) +#define PIN_ADC1_SE11 (PIN_ANALOG | PIN_PORTB | PIN5) +#define PIN_ENET0_1588_TMR3 (PIN_ALT4 | PIN_PORTB | PIN5) +#define PIN_FTM2_FLT0_1 (PIN_ALT6 | PIN_PORTB | PIN5) +#define PIN_ADC1_SE12 (PIN_ANALOG | PIN_PORTB | PIN6) +#define PIN_FB_AD23 (PIN_ALT5 | PIN_PORTB | PIN6) +#define PIN_ADC1_SE13 (PIN_ANALOG | PIN_PORTB | PIN7) +#define PIN_FB_AD22 (PIN_ALT5 | PIN_PORTB | PIN7) +#define PIN_UART3_RTS_1 (PIN_ALT3 | PIN_PORTB | PIN8) +#define PIN_FB_AD21 (PIN_ALT5 | PIN_PORTB | PIN8) +#define PIN_SPI1_PCS1_1 (PIN_ALT2 | PIN_PORTB | PIN9) +#define PIN_UART3_CTS_1 (PIN_ALT3 | PIN_PORTB | PIN9) +#define PIN_FB_AD20 (PIN_ALT5 | PIN_PORTB | PIN9) +#define PIN_ADC1_SE14 (PIN_ANALOG | PIN_PORTB | PIN10) +#define PIN_SPI1_PCS0_1 (PIN_ALT2 | PIN_PORTB | PIN10) +#define PIN_UART3_RX_1 (PIN_ALT3 | PIN_PORTB | PIN10) +#define PIN_FB_AD19 (PIN_ALT5 | PIN_PORTB | PIN10) +#define PIN_FTM0_FLT1_1 (PIN_ALT6 | PIN_PORTB | PIN10) +#define PIN_ADC1_SE15 (PIN_ANALOG | PIN_PORTB | PIN11) +#define PIN_SPI1_SCK_1 (PIN_ALT2 | PIN_PORTB | PIN11) +#define PIN_UART3_TX_1 (PIN_ALT3 | PIN_PORTB | PIN11) +#define PIN_FB_AD18 (PIN_ALT5 | PIN_PORTB | PIN11) +#define PIN_FTM0_FLT2_2 (PIN_ALT6 | PIN_PORTB | PIN11) +#define PIN_TSI0_CH9 (PIN_ANALOG | PIN_PORTB | PIN16) +#define PIN_SPI1_SOUT_1 (PIN_ALT2 | PIN_PORTB | PIN16) +#define PIN_UART0_RX_3 (PIN_ALT3 | PIN_PORTB | PIN16) +#define PIN_FB_AD17 (PIN_ALT5 | PIN_PORTB | PIN16) +#define PIN_EWM_IN_1 (PIN_ALT6 | PIN_PORTB | PIN16) +#define PIN_TSI0_CH10 (PIN_ANALOG | PIN_PORTB | PIN17) +#define PIN_SPI1_SIN_1 (PIN_ALT2 | PIN_PORTB | PIN17) +#define PIN_UART0_TX_3 (PIN_ALT3 | PIN_PORTB | PIN17) +#define PIN_FB_AD16 (PIN_ALT5 | PIN_PORTB | PIN17) +#define PIN_EWM_OUT_1 (PIN_ALT6 | PIN_PORTB | PIN17) +#define PIN_TSI0_CH11 (PIN_ANALOG | PIN_PORTB | PIN18) +#define PIN_CAN0_TX_2 (PIN_ALT2 | PIN_PORTB | PIN18) +#define PIN_FTM2_CH0_2 (PIN_ALT3 | PIN_PORTB | PIN18) +#define PIN_I2S0_TX_BCLK_2 (PIN_ALT4 | PIN_PORTB | PIN18) +#define PIN_FB_AD15 (PIN_ALT5 | PIN_PORTB | PIN18) +#define PIN_FTM2_QD_PHA_2 (PIN_ALT6 | PIN_PORTB | PIN18) +#define PIN_TSI0_CH12 (PIN_ANALOG | PIN_PORTB | PIN19) +#define PIN_CAN0_RX_2 (PIN_ALT2 | PIN_PORTB | PIN19) +#define PIN_FTM2_CH1_2 (PIN_ALT3 | PIN_PORTB | PIN19) +#define PIN_I2S0_TX_FS_2 (PIN_ALT4 | PIN_PORTB | PIN19) +#define PIN_FB_OE (PIN_ALT5 | PIN_PORTB | PIN19) +#define PIN_FTM2_QD_PHB_2 (PIN_ALT6 | PIN_PORTB | PIN19) +#define PIN_SPI2_PCS0_1 (PIN_ALT2 | PIN_PORTB | PIN20) +#define PIN_FB_AD31 (PIN_ALT5 | PIN_PORTB | PIN20) +#define PIN_CMP0_OUT_1 (PIN_ALT6 | PIN_PORTB | PIN20) +#define PIN_SPI2_SCK_1 (PIN_ALT2 | PIN_PORTB | PIN21) +#define PIN_FB_AD30 (PIN_ALT5 | PIN_PORTB | PIN21) +#define PIN_CMP1_OUT_1 (PIN_ALT6 | PIN_PORTB | PIN21) +#define PIN_SPI2_SOUT_1 (PIN_ALT2 | PIN_PORTB | PIN22) +#define PIN_FB_AD29 (PIN_ALT5 | PIN_PORTB | PIN22) +#define PIN_CMP2_OUT_2 (PIN_ALT6 | PIN_PORTB | PIN22) +#define PIN_SPI2_SIN_1 (PIN_ALT2 | PIN_PORTB | PIN23) +#define PIN_SPI0_PCS5 (PIN_ALT3 | PIN_PORTB | PIN23) +#define PIN_FB_AD28 (PIN_ALT5 | PIN_PORTB | PIN23) -#define GPIO_ADC0_SE14 (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN0) -#define GPIO_TSI0_CH13 (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN0) -#define GPIO_SPI0_PCS4 (GPIO_ALT2 | GPIO_PORTC | GPIO_PIN0) -#define GPIO_PDB0_EXTRG_1 (GPIO_ALT3 | GPIO_PORTC | GPIO_PIN0) -#define GPIO_I2S0_TXD_2 (GPIO_ALT4 | GPIO_PORTC | GPIO_PIN0) -#define GPIO_FB_AD14 (GPIO_ALT5 | GPIO_PORTC | GPIO_PIN0) -#define GPIO_ADC0_SE15 (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN1) -#define GPIO_TSI0_CH14 (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN1) -#define GPIO_SPI0_PCS3_1 (GPIO_ALT2 | GPIO_PORTC | GPIO_PIN1) -#define GPIO_UART1_RTS_1 (GPIO_ALT3 | GPIO_PORTC | GPIO_PIN1) -#define GPIO_FTM0_CH0_2 (GPIO_ALT4 | GPIO_PORTC | GPIO_PIN1) -#define GPIO_FB_AD13 (GPIO_ALT5 | GPIO_PORTC | GPIO_PIN1) -#define GPIO_ADC0_SE4B (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN2) -#define GPIO_CMP1_IN0 (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN2) -#define GPIO_TSI0_CH15 (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN2) -#define GPIO_SPI0_PCS2_2 (GPIO_ALT2 | GPIO_PORTC | GPIO_PIN2) -#define GPIO_UART1_CTS_1 (GPIO_ALT3 | GPIO_PORTC | GPIO_PIN2) -#define GPIO_FTM0_CH1_2 (GPIO_ALT4 | GPIO_PORTC | GPIO_PIN2) -#define GPIO_FB_AD12 (GPIO_ALT5 | GPIO_PORTC | GPIO_PIN2) -#define GPIO_CMP1_IN1 (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN3) -#define GPIO_SPI0_PCS1_1 (GPIO_ALT2 | GPIO_PORTC | GPIO_PIN3) -#define GPIO_UART1_RX_1 (GPIO_ALT3 | GPIO_PORTC | GPIO_PIN3) -#define GPIO_FTM0_CH2_2 (GPIO_ALT4 | GPIO_PORTC | GPIO_PIN3) -#define GPIO_FB_CLKOUT (GPIO_ALT5 | GPIO_PORTC | GPIO_PIN3) -#define GPIO_SPI0_PCS0_2 (GPIO_ALT2 | GPIO_PORTC | GPIO_PIN4) -#define GPIO_UART1_TX_1 (GPIO_ALT3 | GPIO_PORTC | GPIO_PIN4) -#define GPIO_FTM0_CH3_2 (GPIO_ALT4 | GPIO_PORTC | GPIO_PIN4) -#define GPIO_FB_AD11 (GPIO_ALT5 | GPIO_PORTC | GPIO_PIN4) -#define GPIO_CMP1_OUT_2 (GPIO_ALT6 | GPIO_PORTC | GPIO_PIN4) -#define GPIO_SPI0_SCK_2 (GPIO_ALT2 | GPIO_PORTC | GPIO_PIN5) -#define GPIO_LPT0_ALT2 (GPIO_ALT4 | GPIO_PORTC | GPIO_PIN5) -#define GPIO_FB_AD10 (GPIO_ALT5 | GPIO_PORTC | GPIO_PIN5) -#define GPIO_CMP0_OUT_2 (GPIO_ALT6 | GPIO_PORTC | GPIO_PIN5) -#define GPIO_CMP0_IN0 (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN6) -#define GPIO_SPI0_SOUT_2 (GPIO_ALT2 | GPIO_PORTC | GPIO_PIN6) -#define GPIO_PDB0_EXTRG_2 (GPIO_ALT3 | GPIO_PORTC | GPIO_PIN6) -#define GPIO_FB_AD9 (GPIO_ALT5 | GPIO_PORTC | GPIO_PIN6) -#define GPIO_CMP0_IN1 (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN7) -#define GPIO_SPI0_SIN_2 (GPIO_ALT2 | GPIO_PORTC | GPIO_PIN7) -#define GPIO_FB_AD8 (GPIO_ALT5 | GPIO_PORTC | GPIO_PIN7) -#define GPIO_ADC1_SE4B (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN8) -#define GPIO_CMP0_IN2 (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN8) -#define GPIO_I2S0_MCLK_2 (GPIO_ALT3 | GPIO_PORTC | GPIO_PIN8) -#define GPIO_I2S0_CLKIN_2 (GPIO_ALT4 | GPIO_PORTC | GPIO_PIN8) -#define GPIO_FB_AD7 (GPIO_ALT5 | GPIO_PORTC | GPIO_PIN8) -#define GPIO_ADC1_SE5B (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN9) -#define GPIO_CMP0_IN3 (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN9) -#define GPIO_I2S0_RX_BCLK_2 (GPIO_ALT4 | GPIO_PORTC | GPIO_PIN9) -#define GPIO_FB_AD6 (GPIO_ALT5 | GPIO_PORTC | GPIO_PIN9) -#define GPIO_FTM2_FLT0_2 (GPIO_ALT6 | GPIO_PORTC | GPIO_PIN9) -#define GPIO_ADC1_SE6B (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN10) -#define GPIO_CMP0_IN4 (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN10) -#define GPIO_I2C1_SCL_1 (GPIO_ALT2 | GPIO_PORTC | GPIO_PIN10) -#define GPIO_I2S0_RX_FS_2 (GPIO_ALT4 | GPIO_PORTC | GPIO_PIN10) -#define GPIO_FB_AD5 (GPIO_ALT5 | GPIO_PORTC | GPIO_PIN10) -#define GPIO_ADC1_SE7B (GPIO_ANALOG | GPIO_PORTC | GPIO_PIN11) -#define GPIO_I2C1_SDA_1 (GPIO_ALT2 | GPIO_PORTC | GPIO_PIN11) -#define GPIO_I2S0_RXD_2 (GPIO_ALT4 | GPIO_PORTC | GPIO_PIN11) -#define GPIO_FB_RW (GPIO_ALT5 | GPIO_PORTC | GPIO_PIN11) -#define GPIO_UART4_RTS_1 (GPIO_ALT3 | GPIO_PORTC | GPIO_PIN12) -#define GPIO_FB_AD27 (GPIO_ALT5 | GPIO_PORTC | GPIO_PIN12) -#define GPIO_UART4_CTS_1 (GPIO_ALT3 | GPIO_PORTC | GPIO_PIN13) -#define GPIO_FB_AD26 (GPIO_ALT5 | GPIO_PORTC | GPIO_PIN13) -#define GPIO_UART4_RX_1 (GPIO_ALT3 | GPIO_PORTC | GPIO_PIN14) -#define GPIO_FB_AD25 (GPIO_ALT5 | GPIO_PORTC | GPIO_PIN14) -#define GPIO_UART4_TX_1 (GPIO_ALT3 | GPIO_PORTC | GPIO_PIN15) -#define GPIO_FB_AD24 (GPIO_ALT5 | GPIO_PORTC | GPIO_PIN15) -#define GPIO_CAN1_RX_1 (GPIO_ALT2 | GPIO_PORTC | GPIO_PIN16) -#define GPIO_UART3_RX_2 (GPIO_ALT3 | GPIO_PORTC | GPIO_PIN16) -#define GPIO_ENET0_1588_TMR0 (GPIO_ALT4 | GPIO_PORTC | GPIO_PIN16) -#define GPIO_FB_CS5 (GPIO_ALT5 | GPIO_PORTC | GPIO_PIN16) -#define GPIO_FB_TSIZ1 (GPIO_ALT5 | GPIO_PORTC | GPIO_PIN16) -#define GPIO_FB_BE23_16_BLS15_8 (GPIO_ALT5 | GPIO_PORTC | GPIO_PIN16) -#define GPIO_CAN1_TX_1 (GPIO_ALT2 | GPIO_PORTC | GPIO_PIN17) -#define GPIO_UART3_TX_2 (GPIO_ALT3 | GPIO_PORTC | GPIO_PIN17) -#define GPIO_ENET0_1588_TMR1 (GPIO_ALT4 | GPIO_PORTC | GPIO_PIN17) -#define GPIO_FB_CS4 (GPIO_ALT5 | GPIO_PORTC | GPIO_PIN17) -#define GPIO_FB_TSIZ0 (GPIO_ALT5 | GPIO_PORTC | GPIO_PIN17) -#define GPIO_FB_BE31_24_BLS7_0 (GPIO_ALT5 | GPIO_PORTC | GPIO_PIN17) -#define GPIO_UART3_RTS_2 (GPIO_ALT3 | GPIO_PORTC | GPIO_PIN18) -#define GPIO_ENET0_1588_TMR2 (GPIO_ALT4 | GPIO_PORTC | GPIO_PIN18) -#define GPIO_FB_TBST (GPIO_ALT5 | GPIO_PORTC | GPIO_PIN18) -#define GPIO_FB_CS2 (GPIO_ALT5 | GPIO_PORTC | GPIO_PIN18) -#define GPIO_FB_BE15_8_BLS23_16 (GPIO_ALT5 | GPIO_PORTC | GPIO_PIN18) -#define GPIO_UART3_CTS_2 (GPIO_ALT3 | GPIO_PORTC | GPIO_PIN19) -#define GPIO_ENET0_1588_TMR3 (GPIO_ALT4 | GPIO_PORTC | GPIO_PIN19) -#define GPIO_FB_CS3 (GPIO_ALT5 | GPIO_PORTC | GPIO_PIN19) -#define GPIO_FB_BE7_0_BLS31_24 (GPIO_ALT5 | GPIO_PORTC | GPIO_PIN19) -#define GPIO_FB_TA (GPIO_ALT6 | GPIO_PORTC | GPIO_PIN19) +#define PIN_ADC0_SE14 (PIN_ANALOG | PIN_PORTC | PIN0) +#define PIN_TSI0_CH13 (PIN_ANALOG | PIN_PORTC | PIN0) +#define PIN_SPI0_PCS4 (PIN_ALT2 | PIN_PORTC | PIN0) +#define PIN_PDB0_EXTRG_1 (PIN_ALT3 | PIN_PORTC | PIN0) +#define PIN_I2S0_TXD_2 (PIN_ALT4 | PIN_PORTC | PIN0) +#define PIN_FB_AD14 (PIN_ALT5 | PIN_PORTC | PIN0) +#define PIN_ADC0_SE15 (PIN_ANALOG | PIN_PORTC | PIN1) +#define PIN_TSI0_CH14 (PIN_ANALOG | PIN_PORTC | PIN1) +#define PIN_SPI0_PCS3_1 (PIN_ALT2 | PIN_PORTC | PIN1) +#define PIN_UART1_RTS_1 (PIN_ALT3 | PIN_PORTC | PIN1) +#define PIN_FTM0_CH0_2 (PIN_ALT4 | PIN_PORTC | PIN1) +#define PIN_FB_AD13 (PIN_ALT5 | PIN_PORTC | PIN1) +#define PIN_ADC0_SE4B (PIN_ANALOG | PIN_PORTC | PIN2) +#define PIN_CMP1_IN0 (PIN_ANALOG | PIN_PORTC | PIN2) +#define PIN_TSI0_CH15 (PIN_ANALOG | PIN_PORTC | PIN2) +#define PIN_SPI0_PCS2_2 (PIN_ALT2 | PIN_PORTC | PIN2) +#define PIN_UART1_CTS_1 (PIN_ALT3 | PIN_PORTC | PIN2) +#define PIN_FTM0_CH1_2 (PIN_ALT4 | PIN_PORTC | PIN2) +#define PIN_FB_AD12 (PIN_ALT5 | PIN_PORTC | PIN2) +#define PIN_CMP1_IN1 (PIN_ANALOG | PIN_PORTC | PIN3) +#define PIN_SPI0_PCS1_1 (PIN_ALT2 | PIN_PORTC | PIN3) +#define PIN_UART1_RX_1 (PIN_ALT3 | PIN_PORTC | PIN3) +#define PIN_FTM0_CH2_2 (PIN_ALT4 | PIN_PORTC | PIN3) +#define PIN_FB_CLKOUT (PIN_ALT5 | PIN_PORTC | PIN3) +#define PIN_SPI0_PCS0_2 (PIN_ALT2 | PIN_PORTC | PIN4) +#define PIN_UART1_TX_1 (PIN_ALT3 | PIN_PORTC | PIN4) +#define PIN_FTM0_CH3_2 (PIN_ALT4 | PIN_PORTC | PIN4) +#define PIN_FB_AD11 (PIN_ALT5 | PIN_PORTC | PIN4) +#define PIN_CMP1_OUT_2 (PIN_ALT6 | PIN_PORTC | PIN4) +#define PIN_SPI0_SCK_2 (PIN_ALT2 | PIN_PORTC | PIN5) +#define PIN_LPT0_ALT2 (PIN_ALT4 | PIN_PORTC | PIN5) +#define PIN_FB_AD10 (PIN_ALT5 | PIN_PORTC | PIN5) +#define PIN_CMP0_OUT_2 (PIN_ALT6 | PIN_PORTC | PIN5) +#define PIN_CMP0_IN0 (PIN_ANALOG | PIN_PORTC | PIN6) +#define PIN_SPI0_SOUT_2 (PIN_ALT2 | PIN_PORTC | PIN6) +#define PIN_PDB0_EXTRG_2 (PIN_ALT3 | PIN_PORTC | PIN6) +#define PIN_FB_AD9 (PIN_ALT5 | PIN_PORTC | PIN6) +#define PIN_CMP0_IN1 (PIN_ANALOG | PIN_PORTC | PIN7) +#define PIN_SPI0_SIN_2 (PIN_ALT2 | PIN_PORTC | PIN7) +#define PIN_FB_AD8 (PIN_ALT5 | PIN_PORTC | PIN7) +#define PIN_ADC1_SE4B (PIN_ANALOG | PIN_PORTC | PIN8) +#define PIN_CMP0_IN2 (PIN_ANALOG | PIN_PORTC | PIN8) +#define PIN_I2S0_MCLK_2 (PIN_ALT3 | PIN_PORTC | PIN8) +#define PIN_I2S0_CLKIN_2 (PIN_ALT4 | PIN_PORTC | PIN8) +#define PIN_FB_AD7 (PIN_ALT5 | PIN_PORTC | PIN8) +#define PIN_ADC1_SE5B (PIN_ANALOG | PIN_PORTC | PIN9) +#define PIN_CMP0_IN3 (PIN_ANALOG | PIN_PORTC | PIN9) +#define PIN_I2S0_RX_BCLK_2 (PIN_ALT4 | PIN_PORTC | PIN9) +#define PIN_FB_AD6 (PIN_ALT5 | PIN_PORTC | PIN9) +#define PIN_FTM2_FLT0_2 (PIN_ALT6 | PIN_PORTC | PIN9) +#define PIN_ADC1_SE6B (PIN_ANALOG | PIN_PORTC | PIN10) +#define PIN_CMP0_IN4 (PIN_ANALOG | PIN_PORTC | PIN10) +#define PIN_I2C1_SCL_1 (PIN_ALT2 | PIN_PORTC | PIN10) +#define PIN_I2S0_RX_FS_2 (PIN_ALT4 | PIN_PORTC | PIN10) +#define PIN_FB_AD5 (PIN_ALT5 | PIN_PORTC | PIN10) +#define PIN_ADC1_SE7B (PIN_ANALOG | PIN_PORTC | PIN11) +#define PIN_I2C1_SDA_1 (PIN_ALT2 | PIN_PORTC | PIN11) +#define PIN_I2S0_RXD_2 (PIN_ALT4 | PIN_PORTC | PIN11) +#define PIN_FB_RW (PIN_ALT5 | PIN_PORTC | PIN11) +#define PIN_UART4_RTS_1 (PIN_ALT3 | PIN_PORTC | PIN12) +#define PIN_FB_AD27 (PIN_ALT5 | PIN_PORTC | PIN12) +#define PIN_UART4_CTS_1 (PIN_ALT3 | PIN_PORTC | PIN13) +#define PIN_FB_AD26 (PIN_ALT5 | PIN_PORTC | PIN13) +#define PIN_UART4_RX_1 (PIN_ALT3 | PIN_PORTC | PIN14) +#define PIN_FB_AD25 (PIN_ALT5 | PIN_PORTC | PIN14) +#define PIN_UART4_TX_1 (PIN_ALT3 | PIN_PORTC | PIN15) +#define PIN_FB_AD24 (PIN_ALT5 | PIN_PORTC | PIN15) +#define PIN_CAN1_RX_1 (PIN_ALT2 | PIN_PORTC | PIN16) +#define PIN_UART3_RX_2 (PIN_ALT3 | PIN_PORTC | PIN16) +#define PIN_ENET0_1588_TMR0 (PIN_ALT4 | PIN_PORTC | PIN16) +#define PIN_FB_CS5 (PIN_ALT5 | PIN_PORTC | PIN16) +#define PIN_FB_TSIZ1 (PIN_ALT5 | PIN_PORTC | PIN16) +#define PIN_FB_BE23_16_BLS15_8 (PIN_ALT5 | PIN_PORTC | PIN16) +#define PIN_CAN1_TX_1 (PIN_ALT2 | PIN_PORTC | PIN17) +#define PIN_UART3_TX_2 (PIN_ALT3 | PIN_PORTC | PIN17) +#define PIN_ENET0_1588_TMR1 (PIN_ALT4 | PIN_PORTC | PIN17) +#define PIN_FB_CS4 (PIN_ALT5 | PIN_PORTC | PIN17) +#define PIN_FB_TSIZ0 (PIN_ALT5 | PIN_PORTC | PIN17) +#define PIN_FB_BE31_24_BLS7_0 (PIN_ALT5 | PIN_PORTC | PIN17) +#define PIN_UART3_RTS_2 (PIN_ALT3 | PIN_PORTC | PIN18) +#define PIN_ENET0_1588_TMR2 (PIN_ALT4 | PIN_PORTC | PIN18) +#define PIN_FB_TBST (PIN_ALT5 | PIN_PORTC | PIN18) +#define PIN_FB_CS2 (PIN_ALT5 | PIN_PORTC | PIN18) +#define PIN_FB_BE15_8_BLS23_16 (PIN_ALT5 | PIN_PORTC | PIN18) +#define PIN_UART3_CTS_2 (PIN_ALT3 | PIN_PORTC | PIN19) +#define PIN_ENET0_1588_TMR3 (PIN_ALT4 | PIN_PORTC | PIN19) +#define PIN_FB_CS3 (PIN_ALT5 | PIN_PORTC | PIN19) +#define PIN_FB_BE7_0_BLS31_24 (PIN_ALT5 | PIN_PORTC | PIN19) +#define PIN_FB_TA (PIN_ALT6 | PIN_PORTC | PIN19) -#define GPIO_SPI0_PCS0_3 (GPIO_ALT2 | GPIO_PORTD | GPIO_PIN0) -#define GPIO_UART2_RTS (GPIO_ALT3 | GPIO_PORTD | GPIO_PIN0) -#define GPIO_FB_ALE (GPIO_ALT5 | GPIO_PORTD | GPIO_PIN0) -#define GPIO_FB_CS1 (GPIO_ALT5 | GPIO_PORTD | GPIO_PIN0) -#define GPIO_FB_TS (GPIO_ALT5 | GPIO_PORTD | GPIO_PIN0) -#define GPIO_ADC0_SE5B (GPIO_ANALOG | GPIO_PORTD | GPIO_PIN1) -#define GPIO_SPI0_SCK_3 (GPIO_ALT2 | GPIO_PORTD | GPIO_PIN1) -#define GPIO_UART2_CTS (GPIO_ALT3 | GPIO_PORTD | GPIO_PIN1) -#define GPIO_FB_CS0 (GPIO_ALT5 | GPIO_PORTD | GPIO_PIN1) -#define GPIO_SPI0_SOUT_3 (GPIO_ALT2 | GPIO_PORTD | GPIO_PIN2) -#define GPIO_UART2_RX (GPIO_ALT3 | GPIO_PORTD | GPIO_PIN2) -#define GPIO_FB_AD4 (GPIO_ALT5 | GPIO_PORTD | GPIO_PIN2) -#define GPIO_SPI0_SIN_3 (GPIO_ALT2 | GPIO_PORTD | GPIO_PIN3) -#define GPIO_UART2_TX (GPIO_ALT3 | GPIO_PORTD | GPIO_PIN3) -#define GPIO_FB_AD3 (GPIO_ALT5 | GPIO_PORTD | GPIO_PIN3) -#define GPIO_SPI0_PCS1_2 (GPIO_ALT2 | GPIO_PORTD | GPIO_PIN4) -#define GPIO_UART0_RTS_4 (GPIO_ALT3 | GPIO_PORTD | GPIO_PIN4) -#define GPIO_FTM0_CH4_2 (GPIO_ALT4 | GPIO_PORTD | GPIO_PIN4) -#define GPIO_FB_AD2 (GPIO_ALT5 | GPIO_PORTD | GPIO_PIN4) -#define GPIO_EWM_IN_2 (GPIO_ALT6 | GPIO_PORTD | GPIO_PIN4) -#define GPIO_ADC0_SE6B (GPIO_ANALOG | GPIO_PORTD | GPIO_PIN5) -#define GPIO_SPI0_PCS2_1 (GPIO_ALT2 | GPIO_PORTD | GPIO_PIN5) -#define GPIO_UART0_CTS_4 (GPIO_ALT3 | GPIO_PORTD | GPIO_PIN5) -#define GPIO_FTM0_CH5_2 (GPIO_ALT4 | GPIO_PORTD | GPIO_PIN5) -#define GPIO_FB_AD1 (GPIO_ALT5 | GPIO_PORTD | GPIO_PIN5) -#define GPIO_EWM_OUT_2 (GPIO_ALT6 | GPIO_PORTD | GPIO_PIN5) -#define GPIO_ADC0_SE7B (GPIO_ANALOG | GPIO_PORTD | GPIO_PIN6) -#define GPIO_SPI0_PCS3_2 (GPIO_ALT2 | GPIO_PORTD | GPIO_PIN6) -#define GPIO_UART0_RX_4 (GPIO_ALT3 | GPIO_PORTD | GPIO_PIN6) -#define GPIO_FTM0_CH6_2 (GPIO_ALT4 | GPIO_PORTD | GPIO_PIN6) -#define GPIO_FB_AD0 (GPIO_ALT5 | GPIO_PORTD | GPIO_PIN6) -#define GPIO_FTM0_FLT0_1 (GPIO_ALT6 | GPIO_PORTD | GPIO_PIN6) -#define GPIO_CMT_IRO (GPIO_ALT2 | GPIO_PORTD | GPIO_PIN7) -#define GPIO_UART0_TX_4 (GPIO_ALT3 | GPIO_PORTD | GPIO_PIN7) -#define GPIO_FTM0_CH7_2 (GPIO_ALT4 | GPIO_PORTD | GPIO_PIN7) -#define GPIO_FTM0_FLT1_2 (GPIO_ALT6 | GPIO_PORTD | GPIO_PIN7) -#define GPIO_I2C0_SCL_3 (GPIO_ALT2 | GPIO_PORTD | GPIO_PIN8) -#define GPIO_UART5_RX_1 (GPIO_ALT3 | GPIO_PORTD | GPIO_PIN8) -#define GPIO_FB_A16 (GPIO_ALT6 | GPIO_PORTD | GPIO_PIN8) -#define GPIO_I2C0_SDA (GPIO_ALT2 | GPIO_PORTD | GPIO_PIN9) -#define GPIO_UART5_TX_1 (GPIO_ALT3 | GPIO_PORTD | GPIO_PIN9) -#define GPIO_FB_A17 (GPIO_ALT6 | GPIO_PORTD | GPIO_PIN9) -#define GPIO_UART5_RTS_1 (GPIO_ALT3 | GPIO_PORTD | GPIO_PIN10) -#define GPIO_FB_A18 (GPIO_ALT6 | GPIO_PORTD | GPIO_PIN10) -#define GPIO_SPI2_PCS0_2 (GPIO_ALT2 | GPIO_PORTD | GPIO_PIN11) -#define GPIO_UART5_CTS_1 (GPIO_ALT3 | GPIO_PORTD | GPIO_PIN11) -#define GPIO_SDHC0_CLKIN (GPIO_ALT4 | GPIO_PORTD | GPIO_PIN11) -#define GPIO_FB_A19 (GPIO_ALT6 | GPIO_PORTD | GPIO_PIN11) -#define GPIO_SPI2_SCK_2 (GPIO_ALT2 | GPIO_PORTD | GPIO_PIN12) -#define GPIO_SDHC0_D4 (GPIO_ALT4 | GPIO_PORTD | GPIO_PIN12) -#define GPIO_FB_A20 (GPIO_ALT6 | GPIO_PORTD | GPIO_PIN12) -#define GPIO_SPI2_SOUT_2 (GPIO_ALT2 | GPIO_PORTD | GPIO_PIN13) -#define GPIO_SDHC0_D5 (GPIO_ALT4 | GPIO_PORTD | GPIO_PIN13) -#define GPIO_FB_A21 (GPIO_ALT6 | GPIO_PORTD | GPIO_PIN13) -#define GPIO_SPI2_SIN_2 (GPIO_ALT2 | GPIO_PORTD | GPIO_PIN14) -#define GPIO_SDHC0_D6 (GPIO_ALT4 | GPIO_PORTD | GPIO_PIN14) -#define GPIO_FB_A22 (GPIO_ALT6 | GPIO_PORTD | GPIO_PIN14) -#define GPIO_SPI2_PCS1 (GPIO_ALT2 | GPIO_PORTD | GPIO_PIN15) -#define GPIO_SDHC0_D7 (GPIO_ALT4 | GPIO_PORTD | GPIO_PIN15) -#define GPIO_FB_A23 (GPIO_ALT6 | GPIO_PORTD | GPIO_PIN15) +#define PIN_SPI0_PCS0_3 (PIN_ALT2 | PIN_PORTD | PIN0) +#define PIN_UART2_RTS (PIN_ALT3 | PIN_PORTD | PIN0) +#define PIN_FB_ALE (PIN_ALT5 | PIN_PORTD | PIN0) +#define PIN_FB_CS1 (PIN_ALT5 | PIN_PORTD | PIN0) +#define PIN_FB_TS (PIN_ALT5 | PIN_PORTD | PIN0) +#define PIN_ADC0_SE5B (PIN_ANALOG | PIN_PORTD | PIN1) +#define PIN_SPI0_SCK_3 (PIN_ALT2 | PIN_PORTD | PIN1) +#define PIN_UART2_CTS (PIN_ALT3 | PIN_PORTD | PIN1) +#define PIN_FB_CS0 (PIN_ALT5 | PIN_PORTD | PIN1) +#define PIN_SPI0_SOUT_3 (PIN_ALT2 | PIN_PORTD | PIN2) +#define PIN_UART2_RX (PIN_ALT3 | PIN_PORTD | PIN2) +#define PIN_FB_AD4 (PIN_ALT5 | PIN_PORTD | PIN2) +#define PIN_SPI0_SIN_3 (PIN_ALT2 | PIN_PORTD | PIN3) +#define PIN_UART2_TX (PIN_ALT3 | PIN_PORTD | PIN3) +#define PIN_FB_AD3 (PIN_ALT5 | PIN_PORTD | PIN3) +#define PIN_SPI0_PCS1_2 (PIN_ALT2 | PIN_PORTD | PIN4) +#define PIN_UART0_RTS_4 (PIN_ALT3 | PIN_PORTD | PIN4) +#define PIN_FTM0_CH4_2 (PIN_ALT4 | PIN_PORTD | PIN4) +#define PIN_FB_AD2 (PIN_ALT5 | PIN_PORTD | PIN4) +#define PIN_EWM_IN_2 (PIN_ALT6 | PIN_PORTD | PIN4) +#define PIN_ADC0_SE6B (PIN_ANALOG | PIN_PORTD | PIN5) +#define PIN_SPI0_PCS2_1 (PIN_ALT2 | PIN_PORTD | PIN5) +#define PIN_UART0_CTS_4 (PIN_ALT3 | PIN_PORTD | PIN5) +#define PIN_FTM0_CH5_2 (PIN_ALT4 | PIN_PORTD | PIN5) +#define PIN_FB_AD1 (PIN_ALT5 | PIN_PORTD | PIN5) +#define PIN_EWM_OUT_2 (PIN_ALT6 | PIN_PORTD | PIN5) +#define PIN_ADC0_SE7B (PIN_ANALOG | PIN_PORTD | PIN6) +#define PIN_SPI0_PCS3_2 (PIN_ALT2 | PIN_PORTD | PIN6) +#define PIN_UART0_RX_4 (PIN_ALT3 | PIN_PORTD | PIN6) +#define PIN_FTM0_CH6_2 (PIN_ALT4 | PIN_PORTD | PIN6) +#define PIN_FB_AD0 (PIN_ALT5 | PIN_PORTD | PIN6) +#define PIN_FTM0_FLT0_1 (PIN_ALT6 | PIN_PORTD | PIN6) +#define PIN_CMT_IRO (PIN_ALT2 | PIN_PORTD | PIN7) +#define PIN_UART0_TX_4 (PIN_ALT3 | PIN_PORTD | PIN7) +#define PIN_FTM0_CH7_2 (PIN_ALT4 | PIN_PORTD | PIN7) +#define PIN_FTM0_FLT1_2 (PIN_ALT6 | PIN_PORTD | PIN7) +#define PIN_I2C0_SCL_3 (PIN_ALT2 | PIN_PORTD | PIN8) +#define PIN_UART5_RX_1 (PIN_ALT3 | PIN_PORTD | PIN8) +#define PIN_FB_A16 (PIN_ALT6 | PIN_PORTD | PIN8) +#define PIN_I2C0_SDA (PIN_ALT2 | PIN_PORTD | PIN9) +#define PIN_UART5_TX_1 (PIN_ALT3 | PIN_PORTD | PIN9) +#define PIN_FB_A17 (PIN_ALT6 | PIN_PORTD | PIN9) +#define PIN_UART5_RTS_1 (PIN_ALT3 | PIN_PORTD | PIN10) +#define PIN_FB_A18 (PIN_ALT6 | PIN_PORTD | PIN10) +#define PIN_SPI2_PCS0_2 (PIN_ALT2 | PIN_PORTD | PIN11) +#define PIN_UART5_CTS_1 (PIN_ALT3 | PIN_PORTD | PIN11) +#define PIN_SDHC0_CLKIN (PIN_ALT4 | PIN_PORTD | PIN11) +#define PIN_FB_A19 (PIN_ALT6 | PIN_PORTD | PIN11) +#define PIN_SPI2_SCK_2 (PIN_ALT2 | PIN_PORTD | PIN12) +#define PIN_SDHC0_D4 (PIN_ALT4 | PIN_PORTD | PIN12) +#define PIN_FB_A20 (PIN_ALT6 | PIN_PORTD | PIN12) +#define PIN_SPI2_SOUT_2 (PIN_ALT2 | PIN_PORTD | PIN13) +#define PIN_SDHC0_D5 (PIN_ALT4 | PIN_PORTD | PIN13) +#define PIN_FB_A21 (PIN_ALT6 | PIN_PORTD | PIN13) +#define PIN_SPI2_SIN_2 (PIN_ALT2 | PIN_PORTD | PIN14) +#define PIN_SDHC0_D6 (PIN_ALT4 | PIN_PORTD | PIN14) +#define PIN_FB_A22 (PIN_ALT6 | PIN_PORTD | PIN14) +#define PIN_SPI2_PCS1 (PIN_ALT2 | PIN_PORTD | PIN15) +#define PIN_SDHC0_D7 (PIN_ALT4 | PIN_PORTD | PIN15) +#define PIN_FB_A23 (PIN_ALT6 | PIN_PORTD | PIN15) -#define GPIO_ADC1_SE4A (GPIO_ANALOG | GPIO_PORTE | GPIO_PIN0) -#define GPIO_SPI1_PCS1_2 (GPIO_ALT2 | GPIO_PORTE | GPIO_PIN0) -#define GPIO_UART1_TX_2 (GPIO_ALT3 | GPIO_PORTE | GPIO_PIN0) -#define GPIO_SDHC0_D1 (GPIO_ALT4 | GPIO_PORTE | GPIO_PIN0) -#define GPIO_I2C1_SDA_2 (GPIO_ALT6 | GPIO_PORTE | GPIO_PIN0) -#define GPIO_ADC1_SE5A (GPIO_ANALOG | GPIO_PORTE | GPIO_PIN1) -#define GPIO_SPI1_SOUT_2 (GPIO_ALT2 | GPIO_PORTE | GPIO_PIN1) -#define GPIO_UART1_RX_2 (GPIO_ALT3 | GPIO_PORTE | GPIO_PIN1) -#define GPIO_SDHC0_D0 (GPIO_ALT4 | GPIO_PORTE | GPIO_PIN1) -#define GPIO_I2C1_SCL_2 (GPIO_ALT6 | GPIO_PORTE | GPIO_PIN1) -#define GPIO_ADC1_SE6A (GPIO_ANALOG | GPIO_PORTE | GPIO_PIN2) -#define GPIO_SPI1_SCK_2 (GPIO_ALT2 | GPIO_PORTE | GPIO_PIN2) -#define GPIO_UART1_CTS_2 (GPIO_ALT3 | GPIO_PORTE | GPIO_PIN2) -#define GPIO_SDHC0_DCLK (GPIO_ALT4 | GPIO_PORTE | GPIO_PIN2) -#define GPIO_ADC1_SE7A (GPIO_ANALOG | GPIO_PORTE | GPIO_PIN3) -#define GPIO_SPI1_SIN_2 (GPIO_ALT2 | GPIO_PORTE | GPIO_PIN3) -#define GPIO_UART1_RTS_2 (GPIO_ALT3 | GPIO_PORTE | GPIO_PIN3) -#define GPIO_SDHC0_CMD (GPIO_ALT4 | GPIO_PORTE | GPIO_PIN3) -#define GPIO_SPI1_PCS0_2 (GPIO_ALT2 | GPIO_PORTE | GPIO_PIN4) -#define GPIO_UART3_TX_3 (GPIO_ALT3 | GPIO_PORTE | GPIO_PIN4) -#define GPIO_SDHC0_D3 (GPIO_ALT4 | GPIO_PORTE | GPIO_PIN4) -#define GPIO_SPI1_PCS2 (GPIO_ALT2 | GPIO_PORTE | GPIO_PIN5) -#define GPIO_UART3_RX_3 (GPIO_ALT3 | GPIO_PORTE | GPIO_PIN5) -#define GPIO_SDHC0_D2 (GPIO_ALT4 | GPIO_PORTE | GPIO_PIN5) -#define GPIO_SPI1_PCS3 (GPIO_ALT2 | GPIO_PORTE | GPIO_PIN6) -#define GPIO_UART3_CTS_3 (GPIO_ALT3 | GPIO_PORTE | GPIO_PIN6) -#define GPIO_I2S0_MCLK_3 (GPIO_ALT4 | GPIO_PORTE | GPIO_PIN6) -#define GPIO_I2S0_CLKIN_3 (GPIO_ALT6 | GPIO_PORTE | GPIO_PIN6) -#define GPIO_UART3_RTS_3 (GPIO_ALT3 | GPIO_PORTE | GPIO_PIN7) -#define GPIO_I2S0_RXD_3 (GPIO_ALT4 | GPIO_PORTE | GPIO_PIN7) -#define GPIO_UART5_TX_2 (GPIO_ALT3 | GPIO_PORTE | GPIO_PIN8) -#define GPIO_I2S0_RX_FS_3 (GPIO_ALT4 | GPIO_PORTE | GPIO_PIN8) -#define GPIO_UART5_RX_2 (GPIO_ALT3 | GPIO_PORTE | GPIO_PIN9) -#define GPIO_I2S0_RX_BCLK_3 (GPIO_ALT4 | GPIO_PORTE | GPIO_PIN9) -#define GPIO_UART5_CTS_1 (GPIO_ALT3 | GPIO_PORTE | GPIO_PIN10) -#define GPIO_I2S0_TXD_3 (GPIO_ALT4 | GPIO_PORTE | GPIO_PIN10) -#define GPIO_UART5_RTS_2 (GPIO_ALT3 | GPIO_PORTE | GPIO_PIN11) -#define GPIO_I2S0_TX_FS_3 (GPIO_ALT4 | GPIO_PORTE | GPIO_PIN11) -#define GPIO_I2S0_TX_BCLK_3 (GPIO_ALT4 | GPIO_PORTE | GPIO_PIN12) -#define GPIO_ADC0_SE17 (GPIO_ANALOG | GPIO_PORTE | GPIO_PIN24) -#define GPIO_CAN1_TX_2 (GPIO_ALT2 | GPIO_PORTE | GPIO_PIN24) -#define GPIO_UART4_TX_2 (GPIO_ALT3 | GPIO_PORTE | GPIO_PIN24) -#define GPIO_EWM_OUT_3 (GPIO_ALT6 | GPIO_PORTE | GPIO_PIN24) -#define GPIO_ADC0_SE18 (GPIO_ANALOG | GPIO_PORTE | GPIO_PIN25) -#define GPIO_CAN1_RX_2 (GPIO_ALT2 | GPIO_PORTE | GPIO_PIN25) -#define GPIO_UART4_RX_2 (GPIO_ALT3 | GPIO_PORTE | GPIO_PIN25) -#define GPIO_EWM_IN_3 (GPIO_ALT6 | GPIO_PORTE | GPIO_PIN25) -#define GPIO_UART4_CTS_2 (GPIO_ALT3 | GPIO_PORTE | GPIO_PIN26) -#define GPIO_ENET_1588_CLKIN (GPIO_ALT4 | GPIO_PORTE | GPIO_PIN26) -#define GPIO_RTC_CLKOUT (GPIO_ALT6 | GPIO_PORTE | GPIO_PIN26) -#define GPIO_USB_CLKIN (GPIO_ALT7 | GPIO_PORTE | GPIO_PIN26) -#define GPIO_UART4_RTS_2 (GPIO_ALT3 | GPIO_PORTE | GPIO_PIN27) +#define PIN_ADC1_SE4A (PIN_ANALOG | PIN_PORTE | PIN0) +#define PIN_SPI1_PCS1_2 (PIN_ALT2 | PIN_PORTE | PIN0) +#define PIN_UART1_TX_2 (PIN_ALT3 | PIN_PORTE | PIN0) +#define PIN_SDHC0_D1 (PIN_ALT4 | PIN_PORTE | PIN0) +#define PIN_I2C1_SDA_2 (PIN_ALT6 | PIN_PORTE | PIN0) +#define PIN_ADC1_SE5A (PIN_ANALOG | PIN_PORTE | PIN1) +#define PIN_SPI1_SOUT_2 (PIN_ALT2 | PIN_PORTE | PIN1) +#define PIN_UART1_RX_2 (PIN_ALT3 | PIN_PORTE | PIN1) +#define PIN_SDHC0_D0 (PIN_ALT4 | PIN_PORTE | PIN1) +#define PIN_I2C1_SCL_2 (PIN_ALT6 | PIN_PORTE | PIN1) +#define PIN_ADC1_SE6A (PIN_ANALOG | PIN_PORTE | PIN2) +#define PIN_SPI1_SCK_2 (PIN_ALT2 | PIN_PORTE | PIN2) +#define PIN_UART1_CTS_2 (PIN_ALT3 | PIN_PORTE | PIN2) +#define PIN_SDHC0_DCLK (PIN_ALT4 | PIN_PORTE | PIN2) +#define PIN_ADC1_SE7A (PIN_ANALOG | PIN_PORTE | PIN3) +#define PIN_SPI1_SIN_2 (PIN_ALT2 | PIN_PORTE | PIN3) +#define PIN_UART1_RTS_2 (PIN_ALT3 | PIN_PORTE | PIN3) +#define PIN_SDHC0_CMD (PIN_ALT4 | PIN_PORTE | PIN3) +#define PIN_SPI1_PCS0_2 (PIN_ALT2 | PIN_PORTE | PIN4) +#define PIN_UART3_TX_3 (PIN_ALT3 | PIN_PORTE | PIN4) +#define PIN_SDHC0_D3 (PIN_ALT4 | PIN_PORTE | PIN4) +#define PIN_SPI1_PCS2 (PIN_ALT2 | PIN_PORTE | PIN5) +#define PIN_UART3_RX_3 (PIN_ALT3 | PIN_PORTE | PIN5) +#define PIN_SDHC0_D2 (PIN_ALT4 | PIN_PORTE | PIN5) +#define PIN_SPI1_PCS3 (PIN_ALT2 | PIN_PORTE | PIN6) +#define PIN_UART3_CTS_3 (PIN_ALT3 | PIN_PORTE | PIN6) +#define PIN_I2S0_MCLK_3 (PIN_ALT4 | PIN_PORTE | PIN6) +#define PIN_I2S0_CLKIN_3 (PIN_ALT6 | PIN_PORTE | PIN6) +#define PIN_UART3_RTS_3 (PIN_ALT3 | PIN_PORTE | PIN7) +#define PIN_I2S0_RXD_3 (PIN_ALT4 | PIN_PORTE | PIN7) +#define PIN_UART5_TX_2 (PIN_ALT3 | PIN_PORTE | PIN8) +#define PIN_I2S0_RX_FS_3 (PIN_ALT4 | PIN_PORTE | PIN8) +#define PIN_UART5_RX_2 (PIN_ALT3 | PIN_PORTE | PIN9) +#define PIN_I2S0_RX_BCLK_3 (PIN_ALT4 | PIN_PORTE | PIN9) +#define PIN_UART5_CTS_1 (PIN_ALT3 | PIN_PORTE | PIN10) +#define PIN_I2S0_TXD_3 (PIN_ALT4 | PIN_PORTE | PIN10) +#define PIN_UART5_RTS_2 (PIN_ALT3 | PIN_PORTE | PIN11) +#define PIN_I2S0_TX_FS_3 (PIN_ALT4 | PIN_PORTE | PIN11) +#define PIN_I2S0_TX_BCLK_3 (PIN_ALT4 | PIN_PORTE | PIN12) +#define PIN_ADC0_SE17 (PIN_ANALOG | PIN_PORTE | PIN24) +#define PIN_CAN1_TX_2 (PIN_ALT2 | PIN_PORTE | PIN24) +#define PIN_UART4_TX_2 (PIN_ALT3 | PIN_PORTE | PIN24) +#define PIN_EWM_OUT_3 (PIN_ALT6 | PIN_PORTE | PIN24) +#define PIN_ADC0_SE18 (PIN_ANALOG | PIN_PORTE | PIN25) +#define PIN_CAN1_RX_2 (PIN_ALT2 | PIN_PORTE | PIN25) +#define PIN_UART4_RX_2 (PIN_ALT3 | PIN_PORTE | PIN25) +#define PIN_EWM_IN_3 (PIN_ALT6 | PIN_PORTE | PIN25) +#define PIN_UART4_CTS_2 (PIN_ALT3 | PIN_PORTE | PIN26) +#define PIN_ENET_1588_CLKIN (PIN_ALT4 | PIN_PORTE | PIN26) +#define PIN_RTC_CLKOUT (PIN_ALT6 | PIN_PORTE | PIN26) +#define PIN_USB_CLKIN (PIN_ALT7 | PIN_PORTE | PIN26) +#define PIN_UART4_RTS_2 (PIN_ALT3 | PIN_PORTE | PIN27) #else /* The pin muxing for other K60 parts is defined in other documents */ diff --git a/nuttx/arch/arm/src/kinetis/kinetis_lowputc.c b/nuttx/arch/arm/src/kinetis/kinetis_lowputc.c old mode 100755 new mode 100644 index e0095c11f..20d76013b --- a/nuttx/arch/arm/src/kinetis/kinetis_lowputc.c +++ b/nuttx/arch/arm/src/kinetis/kinetis_lowputc.c @@ -226,28 +226,28 @@ void kinetis_lowsetup(void) /* Configure UART pins for the all enabled UARTs */ #ifdef CONFIG_KINETIS_UART0 - kinetis_configgpio(GPIO_UART0_TX); - kinetis_configgpio(GPIO_UART0_RX); + kinetis_pinconfig(PIN_UART0_TX); + kinetis_pinconfig(PIN_UART0_RX); #endif #ifdef CONFIG_KINETIS_UART1 - kinetis_configgpio(GPIO_UART1_TX); - kinetis_configgpio(GPIO_UART1_RX); + kinetis_pinconfig(PIN_UART1_TX); + kinetis_pinconfig(PIN_UART1_RX); #endif #ifdef CONFIG_KINETIS_UART2 - kinetis_configgpio(GPIO_UART2_TX); - kinetis_configgpio(GPIO_UART2_RX); + kinetis_pinconfig(PIN_UART2_TX); + kinetis_pinconfig(PIN_UART2_RX); #endif #ifdef CONFIG_KINETIS_UART3 - kinetis_configgpio(GPIO_UART3_TX); - kinetis_configgpio(GPIO_UART3_RX); + kinetis_pinconfig(PIN_UART3_TX); + kinetis_pinconfig(PIN_UART3_RX); #endif #ifdef CONFIG_KINETIS_UART4 - kinetis_configgpio(GPIO_UART4_TX); - kinetis_configgpio(GPIO_UART4_RX); + kinetis_pinconfig(PIN_UART4_TX); + kinetis_pinconfig(PIN_UART4_RX); #endif #ifdef CONFIG_KINETIS_UART5 - kinetis_configgpio(GPIO_UART5_TX); - kinetis_configgpio(GPIO_UART5_RX); + kinetis_pinconfig(PIN_UART5_TX); + kinetis_pinconfig(PIN_UART5_RX); #endif /* Configure the console (only) now. Other UARTs will be configured diff --git a/nuttx/arch/arm/src/kinetis/kinetis_pin.c b/nuttx/arch/arm/src/kinetis/kinetis_pin.c new file mode 100755 index 000000000..cdd9e19c1 --- /dev/null +++ b/nuttx/arch/arm/src/kinetis/kinetis_pin.c @@ -0,0 +1,261 @@ +/**************************************************************************** + * arch/arm/src/kinetis/kinetis_pin.c + * + * Copyright (C) 2011 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name NuttX nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include +#include + +#include +#include + +#include + +#include "up_arch.h" +#include "up_internal.h" + +#include "kinetis_memorymap.h" +#include "kinetis_internal.h" +#include "kinetis_port.h" +#include "kinetis_gpio.h" + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/**************************************************************************** + * Private Data + ****************************************************************************/ + +/**************************************************************************** + * Private Functions + ****************************************************************************/ + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: kinetis_pinconfig + * + * Description: + * Configure a PIN based on bit-encoded description of the pin. NOTE that + * DMA/interrupts are disabled at the initial PIN configuratin. + * + ****************************************************************************/ + +int kinetis_pinconfig(uint32_t cfgset) +{ + uintptr_t base; + uint32_t regval; + unsigned int port; + unsigned int pin; + unsigned int mode; + + /* Get the port number and pin number */ + + port = (cfgset & _PIN_PORT_MASK) >> _PIN_PORT_SHIFT; + pin = (cfgset & _PIN_MASK) >> _PIN_SHIFT; + + DEBUGASSERT(port < KINETIS_NPORTS); + if (port < KINETIS_NPORTS) + { + /* Get the base address of PORT block for this port */ + + base = KINETIS_PORT_BASE(port); + + /* Get the port mode */ + + mode = (cfgset & _PIN_MODE_MASK) >> _PIN_MODE_SHIFT; + + /* Special case analog port mode. In this case, not of the digital + * options are applicable. + */ + + if (mode == _PIN_MODE_ANALOG) + { + /* Set the analog mode with all digital options zeroed */ + + regval = PORT_PCR_MUX_ANALOG | PORT_PCR_IRQC_DISABLED; + putreg32(regval, base + KINETIS_PORT_PCR_OFFSET(pin)); + } + else + { + /* Configure the digital pin options */ + + regval = (mode << PORT_PCR_MUX_SHIFT); + if ((cfgset & _PIN_IO_MASK) == _PIN_INPUT) + { + /* Handle input-only digital options */ + /* Check for pull-up or pull-down */ + + if ((cfgset & _PIN_INPUT_PULLMASK) == _PIN_INPUT_PULLDOWN) + { + regval |= PORT_PCR_PE; + } + else if ((cfgset & _PIN_INPUT_PULLMASK) == _PIN_INPUT_PULLUP) + { + regval |= (PORT_PCR_PE | PORT_PCR_PS); + } + } + else + { + /* Handle output-only digital options */ + /* Check for slow slew rate setting */ + + if ((cfgset & _PIN_OUTPUT_SLEW_MASK) == _PIN_OUTPUT_SLOW) + { + regval |= PORT_PCR_SRE; + } + + /* Check for open drain output */ + + if ((cfgset & _PIN_OUTPUT_OD_MASK) == _PIN_OUTPUT_OPENDRAIN) + { + regval |= PORT_PCR_ODE; + } + + /* Check for high drive output */ + + if ((cfgset & _PIN_OUTPUT_DRIVE_MASK) == _PIN_OUTPUT_HIGHDRIVE) + { + regval |= PORT_PCR_DSE; + } + } + + /* Check for passive filter enable. Passive Filter configuration + * is valid in all digital pin muxing modes. + */ + + if ((cfgset & PIN_PASV_FILTER) != 0) + { + regval |= PORT_PCR_PFE; + } + + /* Set the digital mode with all of the selected options */ + + putreg32(regval, base + KINETIS_PORT_PCR_OFFSET(pin)); + + /* Check for digital filter enable. Digital Filter configuration + * is valid in all digital pin muxing modes. + */ + + regval = getreg32(base + KINETIS_PORT_DFER_OFFSET); + if ((cfgset & PIN_DIG_FILTER) != 0) + { + regval |= (1 << pin); + } + else + { + regval &= ~(1 << pin); + } + putreg32(regval, base + KINETIS_PORT_DFER_OFFSET); + + /* Additional configuration for the case of Alternative 1 (GPIO) modes */ + + if (mode == _PIN_MODE_GPIO) + { + /* Set the GPIO port direction */ + + base = KINETIS_GPIO_BASE(port); + regval = getreg32(base + KINETIS_GPIO_PDDR_OFFSET); + if ((cfgset & _PIN_IO_MASK) == _PIN_INPUT) + { + /* Select GPIO input */ + + regval &= ~(1 << pin); + putreg32(regval, base + KINETIS_GPIO_PDDR_OFFSET); + } + else /* if ((cfgset & _PIN_IO_MASK) == _PIN_OUTPUT) */ + { + /* Select GPIO input */ + + regval |= (1 << pin); + putreg32(regval, base + KINETIS_GPIO_PDDR_OFFSET); + + /* Set the initial value of the GPIO output */ + + kinetis_gpiowrite(cfgset, ((cfgset & GPIO_OUTPUT_ONE) != 0)); + } + } + } + + return OK; + } + return -EINVAL; +} + +/************************************************************************************ + * Name: kinetis_pinfilter + * + * Description: + * Configure the digital filter associated with a port. The digital filter + * capabilities of the PORT module are available in all digital pin muxing modes. + * + * Input parmeters: + * port - Port number. See KINETIS_PORTn definitions in kinetis_port.h + * lpo - true: Digital Filters are clocked by the bus clock + * false: Digital Filters are clocked by the 1 kHz LPO clock + * width - Filter Length + * + ************************************************************************************/ + +int kinetis_pinfilter(unsigned int port, bool lpo, unsigned int width) +{ + uintptr_t base; + uint32_t regval; + + DEBUGASSERT(port < KINETIS_NPORTS); + if (port < KINETIS_NPORTS) + { + /* Get the base address of PORT block for this port */ + + base = KINETIS_PORT_BASE(port); + + /* Select clocking */ + + regval = (lpo ? PORT_DFCR_CS : 0); + putreg32(regval, base + KINETIS_PORT_DFCR_OFFSET); + + /* Select the filter width */ + + DEBUGASSERT(width < 32); + putreg32(width, base + KINETIS_PORT_DFWR_OFFSET); + return OK; + } + return -EINVAL; +} diff --git a/nuttx/arch/arm/src/kinetis/kinetis_pindma.c b/nuttx/arch/arm/src/kinetis/kinetis_pindma.c new file mode 100644 index 000000000..00d9a07e6 --- /dev/null +++ b/nuttx/arch/arm/src/kinetis/kinetis_pindma.c @@ -0,0 +1,146 @@ +/**************************************************************************** + * arch/arm/src/kinetis/kinetis_pindma.c + * + * Copyright (C) 2011 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name NuttX nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include +#include + +#include +#include "up_internal.h" + +#ifdef CONFIG_KINETIS_DMA + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/**************************************************************************** + * Private Data + ****************************************************************************/ + +/**************************************************************************** + * Private Functions + ****************************************************************************/ + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/************************************************************************************ + * Name: kinetis_pindmaenable + * + * Description: + * Enable DMA for specified pin + * + ************************************************************************************/ + +void kinetis_pindmaenable(uint32_t pinset) +{ + uintptr_t base; + uint32_t regval; + unsigned int port; + unsigned int pin; + + /* Get the port number and pin number */ + + port = (pinset & _PIN_PORT_MASK) >> _PIN_PORT_SHIFT; + pin = (pinset & _PIN_MASK) >> _PIN_SHIFT; + + DEBUGASSERT(port < KINETIS_NPORTS); + if (port < KINETIS_NPORTS) + { + /* Modify the IRQC field of the port PCR register in order to enable DMA. */ + + regval = getreg32(base + KINETIS_PORT_PCR_OFFSET(pin)); + regval &= ~PORT_PCR_IRQC_MASK; + + switch (pinset & _PIN_INT_MASK) + { + case PIN_DMA_RISING : /* DMA Request on rising edge */ + regval |= PORT_PCR_IRQC_DMARISING; + break; + + case PIN_DMA_FALLING : /* DMA Request on falling edge */ + regval |= PORT_PCR_IRQC_DMAFALLING; + break; + + case PIN_DMA_BOTH : /* DMA Request on either edge */ + regval |= PORT_PCR_IRQC_DMABOTH; + break; + + default: + return; + } + + putreg32(regval, base + KINETIS_PORT_PCR_OFFSET(pin)); + } +} + +/************************************************************************************ + * Name: kinetis_pindmadisable + * + * Description: + * Disable DMA for specified pin + * + ************************************************************************************/ + +void kinetis_pindmadisable(uint32_t pinset) +{ + uintptr_t base; + uint32_t regval; + unsigned int port; + unsigned int pin; + + /* Get the port number and pin number */ + + port = (pinset & _PIN_PORT_MASK) >> _PIN_PORT_SHIFT; + pin = (pinset & _PIN_MASK) >> _PIN_SHIFT; + + DEBUGASSERT(port < KINETIS_NPORTS); + if (port < KINETIS_NPORTS) + { + /* Clear the IRQC field of the port PCR register in order to disable DMA. */ + + regval = getreg32(base + KINETIS_PORT_PCR_OFFSET(pin)); + regval &= ~PORT_PCR_IRQC_MASK; + putreg32(regval, base + KINETIS_PORT_PCR_OFFSET(pin)); + } +} + +#endif + diff --git a/nuttx/arch/arm/src/kinetis/kinetis_pingpio.c b/nuttx/arch/arm/src/kinetis/kinetis_pingpio.c new file mode 100644 index 000000000..23829c6d7 --- /dev/null +++ b/nuttx/arch/arm/src/kinetis/kinetis_pingpio.c @@ -0,0 +1,151 @@ +/**************************************************************************** + * arch/arm/src/kinetis/kinetis_pingpio.c + * + * Copyright (C) 2011 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name NuttX nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include +#include + +#include +#include + +#include + +#include "up_arch.h" +#include "up_internal.h" + +#include "kinetis_memorymap.h" +#include "kinetis_internal.h" +#include "kinetis_gpio.h" + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/**************************************************************************** + * Private Data + ****************************************************************************/ + +/**************************************************************************** + * Private Functions + ****************************************************************************/ + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: kinetis_gpiowrite + * + * Description: + * Write one or zero to the selected GPIO pin + * + ****************************************************************************/ + +void kinetis_gpiowrite(uint32_t pinset, bool value) +{ + uintptr_t base; + unsigned int port; + unsigned int pin; + + DEBUGASSERT((pinset & _PIN_MODE_MASK) == _PIN_MODE_GPIO); + DEBUGASSERT((pinset & _PIN_IO_MASK) == _PIN_OUTPUT); + + /* Get the port number and pin number */ + + port = (pinset & _PIN_PORT_MASK) >> _PIN_PORT_SHIFT; + pin = (pinset & _PIN_MASK) >> _PIN_SHIFT; + + DEBUGASSERT(port < KINETIS_NPORTS); + if (port < KINETIS_NPORTS) + { + /* Get the base address of GPIO block for this port */ + + base = KINETIS_GPIO_BASE(port); + + /* Set or clear the output */ + + if (value) + { + putreg32((1 << pin), base + KINETIS_GPIO_PSOR_OFFSET); + } + else + { + putreg32((1 << pin), base + KINETIS_GPIO_PCOR_OFFSET); + } + } +} + +/**************************************************************************** + * Name: kinetis_gpioread + * + * Description: + * Read one or zero from the selected GPIO pin + * + ****************************************************************************/ + +bool kinetis_gpioread(uint32_t pinset) +{ + uintptr_t base; + uint32_t regval; + unsigned int port; + unsigned int pin; + bool ret = false; + + DEBUGASSERT((pinset & _PIN_MODE_MASK) == _PIN_MODE_GPIO); + DEBUGASSERT((pinset & _PIN_IO_MASK) == _PIN_INPUT); + + /* Get the port number and pin number */ + + port = (pinset & _PIN_PORT_MASK) >> _PIN_PORT_SHIFT; + pin = (pinset & _PIN_MASK) >> _PIN_SHIFT; + + DEBUGASSERT(port < KINETIS_NPORTS); + if (port < KINETIS_NPORTS) + { + /* Get the base address of GPIO block for this port */ + + base = KINETIS_GPIO_BASE(port); + + /* return the state of the pin */ + + regval = getreg32(base + KINETIS_GPIO_PDIR_OFFSET); + ret = ((regval & (1 << pin)) != 0); + } + return ret; +} + diff --git a/nuttx/arch/arm/src/kinetis/kinetis_pinirq.c b/nuttx/arch/arm/src/kinetis/kinetis_pinirq.c new file mode 100644 index 000000000..fdb9f8dc8 --- /dev/null +++ b/nuttx/arch/arm/src/kinetis/kinetis_pinirq.c @@ -0,0 +1,211 @@ +/**************************************************************************** + * arch/arm/src/kinetis/kinetis_pinirq.c + * + * Copyright (C) 2011 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name NuttX nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include +#include + +#include +#include "up_internal.h" + +#ifdef CONFIG_GPIO_IRQ + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ +/* Configuration ************************************************************/ + +#ifdndef CONFIG_KINESIS_NGPIOIRQS +# define CONFIG_KINESIS_NGPIOIRQS 8 +#endif + +/**************************************************************************** + * Private Types + ****************************************************************************/ + +/**************************************************************************** + * Private Data + ****************************************************************************/ + +/**************************************************************************** + * Private Functions + ****************************************************************************/ + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/************************************************************************************ + * Name: kinetis_pinirqinitialize + * + * Description: + * Initialize logic to support a second level of interrupt decoding for GPIO pins. + * + ************************************************************************************/ + +void kinetis_pinirqinitialize(void) +{ +# warning "Missing logic" +} + +/************************************************************************************ + * Name: kinetis_pinirqconfig + * + * Description: + * Sets/clears PIN and interrupt triggers. On return PIN interrupts are always + * disabled. + * + * Parameters: + * - pinset: Pin configuration + * - pinisr: Pin interrupt service routine + * + * Returns: + * The previous value of the interrupt handler function pointer. This value may, + * for example, be used to restore the previous handler when multiple handlers are + * used. + * + ************************************************************************************/ + +xcpt_t kinetis_pinirqconfig(uint32_t pinset, xcpt_t pinisr) +{ + + /* It only makes sense to call this function for input pins that are configured + * as interrupts. + */ + + DEBUGASSERT((pinset & _PIN_INTDMA_MASK) == _PIN_INTERRUPT); + DEBUGASSERT((pinset & _PIN_IO_MASK) == _PIN_INPUT); + +# warning "Missing logic" + return NULL; +} + +/************************************************************************************ + * Name: kinetis_pinirqenable + * + * Description: + * Enable the interrupt for specified pin IRQ + * + ************************************************************************************/ + +void kinetis_pinirqenable(uint32_t pinset) +{ + uintptr_t base; + uint32_t regval; + unsigned int port; + unsigned int pin; + + /* Get the port number and pin number */ + + port = (pinset & _PIN_PORT_MASK) >> _PIN_PORT_SHIFT; + pin = (pinset & _PIN_MASK) >> _PIN_SHIFT; + + DEBUGASSERT(port < KINETIS_NPORTS); + if (port < KINETIS_NPORTS) + { + /* Modify the IRQC field of the port PCR register in order to enable + * the interrupt. + */ + + regval = getreg32(base + KINETIS_PORT_PCR_OFFSET(pin)); + regval &= ~PORT_PCR_IRQC_MASK; + + switch (pinset & _PIN_INT_MASK) + { + case PIN_INT_ZERO : /* Interrupt when logic zero */ + regval |= PORT_PCR_IRQC_ZERO; + break; + + case PIN_INT_RISING : /* Interrupt on rising edge*/ + regval |= PORT_PCR_IRQC_RISING; + break; + + case PIN_INT_BOTH : /* Interrupt on falling edge */ + regval |= PORT_PCR_IRQC_FALLING; + break; + + case PIN_DMA_FALLING : /* nterrupt on either edge */ + regval |= PORT_PCR_IRQC_BOTH; + break; + + case PIN_INT_ONE : /* IInterrupt when logic one */ + regval |= PORT_PCR_IRQC_ONE; + break; + + default: + return; + } + + putreg32(regval, base + KINETIS_PORT_PCR_OFFSET(pin)); + } +} + +/************************************************************************************ + * Name: kinetis_pinirqdisable + * + * Description: + * Disable the interrupt for specified pin + * + ************************************************************************************/ + +void kinetis_pinirqdisable(uint32_t pinset) +{ + uintptr_t base; + uint32_t regval; + unsigned int port; + unsigned int pin; + + /* Get the port number and pin number */ + + port = (pinset & _PIN_PORT_MASK) >> _PIN_PORT_SHIFT; + pin = (pinset & _PIN_MASK) >> _PIN_SHIFT; + + DEBUGASSERT(port < KINETIS_NPORTS); + if (port < KINETIS_NPORTS) + { + /* Clear the IRQC field of the port PCR register in order to disable + * the interrupt. + */ + + regval = getreg32(base + KINETIS_PORT_PCR_OFFSET(pin)); + regval &= ~PORT_PCR_IRQC_MASK; + putreg32(regval, base + KINETIS_PORT_PCR_OFFSET(pin)); + } +} + +#endif /* CONFIG_GPIO_IRQ */ diff --git a/nuttx/arch/arm/src/kinetis/kinetis_start.c b/nuttx/arch/arm/src/kinetis/kinetis_start.c old mode 100755 new mode 100644 diff --git a/nuttx/arch/arm/src/kinetis/kinetis_timerisr.c b/nuttx/arch/arm/src/kinetis/kinetis_timerisr.c old mode 100755 new mode 100644 diff --git a/nuttx/arch/arm/src/kinetis/kinetis_vectors.S b/nuttx/arch/arm/src/kinetis/kinetis_vectors.S old mode 100755 new mode 100644 diff --git a/nuttx/arch/arm/src/stm32/stm32_gpio.c b/nuttx/arch/arm/src/stm32/stm32_gpio.c index 159f5d4f6..80a24b12e 100755 --- a/nuttx/arch/arm/src/stm32/stm32_gpio.c +++ b/nuttx/arch/arm/src/stm32/stm32_gpio.c @@ -608,9 +608,6 @@ bool stm32_gpioread(uint32_t pinset) * Description: * Sets/clears GPIO based event and interrupt triggers. * - * Limitations: - * Presently single gpio can configured on the same EXTI line. - * * Parameters: * - pinset: gpio pin configuration * - rising/falling edge: enables diff --git a/nuttx/arch/arm/src/stm32/stm32_gpio.h b/nuttx/arch/arm/src/stm32/stm32_gpio.h index e30bb0ac9..2c1d3bcb2 100644 --- a/nuttx/arch/arm/src/stm32/stm32_gpio.h +++ b/nuttx/arch/arm/src/stm32/stm32_gpio.h @@ -229,9 +229,6 @@ EXTERN bool stm32_gpioread(uint32_t pinset); * Description: * Sets/clears GPIO based event and interrupt triggers. * - * Limitations: - * Presently single gpio can configured on the same EXTI line. - * * Parameters: * - pinset: gpio pin configuration * - rising/falling edge: enables diff --git a/nuttx/configs/kwikstik-k40/include/board.h b/nuttx/configs/kwikstik-k40/include/board.h index 97fd786ac..cfd32b0fb 100755 --- a/nuttx/configs/kwikstik-k40/include/board.h +++ b/nuttx/configs/kwikstik-k40/include/board.h @@ -106,14 +106,14 @@ * maps to the correct alternative. */ #warning "Revisit: This only only here to get a clean compiliation" -#define GPIO_UART0_RX GPIO_UART0_RX_1 -#define GPIO_UART0_TX GPIO_UART0_TX_1 -#define GPIO_UART1_RX GPIO_UART1_RX_1 -#define GPIO_UART1_TX GPIO_UART1_TX_1 -#define GPIO_UART3_RX GPIO_UART3_RX_1 -#define GPIO_UART3_TX GPIO_UART3_TX_1 -#define GPIO_UART4_RX GPIO_UART4_RX_1 -#define GPIO_UART4_TX GPIO_UART4_TX_1 +#define PIN_UART0_RX PIN_UART0_RX_1 +#define PIN_UART0_TX PIN_UART0_TX_1 +#define PIN_UART1_RX PIN_UART1_RX_1 +#define PIN_UART1_TX PIN_UART1_TX_1 +#define PIN_UART3_RX PIN_UART3_RX_1 +#define PIN_UART3_TX PIN_UART3_TX_1 +#define PIN_UART4_RX PIN_UART4_RX_1 +#define PIN_UART4_TX PIN_UART4_TX_1 /************************************************************************************ * Public Data diff --git a/nuttx/configs/twr-k60n512/include/board.h b/nuttx/configs/twr-k60n512/include/board.h index efe16bb94..206a82573 100755 --- a/nuttx/configs/twr-k60n512/include/board.h +++ b/nuttx/configs/twr-k60n512/include/board.h @@ -107,16 +107,16 @@ * maps to the correct alternative. */ #warning "Revisit: This only only here to get a clean compiliation" -#define GPIO_UART0_RX GPIO_UART0_RX_1 -#define GPIO_UART0_TX GPIO_UART0_TX_1 -#define GPIO_UART1_RX GPIO_UART1_RX_1 -#define GPIO_UART1_TX GPIO_UART1_TX_1 -#define GPIO_UART3_RX GPIO_UART3_RX_1 -#define GPIO_UART3_TX GPIO_UART3_TX_1 -#define GPIO_UART4_RX GPIO_UART4_RX_1 -#define GPIO_UART4_TX GPIO_UART4_TX_1 -#define GPIO_UART5_RX GPIO_UART5_RX_1 -#define GPIO_UART5_TX GPIO_UART5_TX_1 +#define PIN_UART0_RX PIN_UART0_RX_1 +#define PIN_UART0_TX PIN_UART0_TX_1 +#define PIN_UART1_RX PIN_UART1_RX_1 +#define PIN_UART1_TX PIN_UART1_TX_1 +#define PIN_UART3_RX PIN_UART3_RX_1 +#define PIN_UART3_TX PIN_UART3_TX_1 +#define PIN_UART4_RX PIN_UART4_RX_1 +#define PIN_UART4_TX PIN_UART4_TX_1 +#define PIN_UART5_RX PIN_UART5_RX_1 +#define PIN_UART5_TX PIN_UART5_TX_1 /************************************************************************************ * Public Data -- cgit v1.2.3