arch/arm/src/s32k1xx/hardware/s32k1xx_gpio.h: Add GPIO register definition file.

This commit is contained in:
Gregory Nutt
2019-08-13 10:06:13 -06:00
parent 1da2f6b685
commit 248a2966c6
2 changed files with 156 additions and 0 deletions
@@ -0,0 +1,151 @@
/************************************************************************************
* arch/arm/src/s32k1xx/chip/s32k1xx_gpio.h
*
* Copyright (C) 2019 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* 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.
*
************************************************************************************/
#ifndef __ARCH_ARM_SRC_S32K1XX_HARDWARE_S32K1XX_GPIO_H
#define __ARCH_ARM_SRC_S32K1XX_HARDWARE_S32K1XX_GPIO_H
/************************************************************************************
* Included Files
************************************************************************************/
#include <nuttx/config.h>
#include <hardware/s32k1xx_memorymap.h>
/************************************************************************************
* Pre-processor Definitions
************************************************************************************/
#define S32K1XX_GPIOA (0)
#define S32K1XX_GPIOB (1)
#define S32K1XX_GPIOC (2)
#define S32K1XX_GPIOD (3)
#define S32K1XX_GPIOE (4)
#define S32K1XX_NGPIO (5)
/* GPIO Register Offsets *************************************************************/
#define S32K1XX_GPIO_OFFSET(g) ((g) << 6)
#define S32K1XX_GPIO_PDOR_OFFSET 0x0000 /* Port Data Output Register */
#define S32K1XX_GPIO_PSOR_OFFSET 0x0004 /* Port Set Output Register */
#define S32K1XX_GPIO_PCOR_OFFSET 0x0008 /* Port Clear Output Register */
#define S32K1XX_GPIO_PTOR_OFFSET 0x000c /* Port Toggle Output Register */
#define S32K1XX_GPIO_PDIR_OFFSET 0x0010 /* Port Data Input Register */
#define S32K1XX_GPIO_PDDR_OFFSET 0x0014 /* Port Data Direction Register */
#define S32K1XX_GPIO_PIDR_OFFSET 0x0018 /* Port Input Disable Register */
/* GPIO Register Addresses ***********************************************************/
#define S32K1XX_GPIO_BASE(g) (S32K1XX_GPIO_BASE + S32K1XX_GPIO_OFFSET(g))
#define S32K1XX_GPIO_PDOR(g) (S32K1XX_GPIO_BASE(g) + S32K1XX_GPIO_PDOR_OFFSET)
#define S32K1XX_GPIO_PSOR(g) (S32K1XX_GPIO_BASE(g) + S32K1XX_GPIO_PSOR_OFFSET)
#define S32K1XX_GPIO_PCOR(g) (S32K1XX_GPIO_BASE(g) + S32K1XX_GPIO_PCOR_OFFSET)
#define S32K1XX_GPIO_PTOR(g) (S32K1XX_GPIO_BASE(g) + S32K1XX_GPIO_PTOR_OFFSET)
#define S32K1XX_GPIO_PDIR(g) (S32K1XX_GPIO_BASE(g) + S32K1XX_GPIO_PDIR_OFFSET)
#define S32K1XX_GPIO_PDDR(g) (S32K1XX_GPIO_BASE(g) + S32K1XX_GPIO_PDDR_OFFSET)
#define S32K1XX_GPIO_PIDR(g) (S32K1XX_GPIO_BASE(g) + S32K1XX_GPIO_PIDR_OFFSET)
#define S32K1XX_GPIOA_PDOR (S32K1XX_GPIOA_BASE + S32K1XX_GPIO_PDOR_OFFSET)
#define S32K1XX_GPIOA_PSOR (S32K1XX_GPIOA_BASE + S32K1XX_GPIO_PSOR_OFFSET)
#define S32K1XX_GPIOA_PCOR (S32K1XX_GPIOA_BASE + S32K1XX_GPIO_PCOR_OFFSET)
#define S32K1XX_GPIOA_PTOR (S32K1XX_GPIOA_BASE + S32K1XX_GPIO_PTOR_OFFSET)
#define S32K1XX_GPIOA_PDIR (S32K1XX_GPIOA_BASE + S32K1XX_GPIO_PDIR_OFFSET)
#define S32K1XX_GPIOA_PDDR (S32K1XX_GPIOA_BASE + S32K1XX_GPIO_PDDR_OFFSET)
#define S32K1XX_GPIOA_PIDR (S32K1XX_GPIOA_BASE + S32K1XX_GPIO_PIDR_OFFSET)
#define S32K1XX_GPIOB_PDOR (S32K1XX_GPIOB_BASE + S32K1XX_GPIO_PDOR_OFFSET)
#define S32K1XX_GPIOB_PSOR (S32K1XX_GPIOB_BASE + S32K1XX_GPIO_PSOR_OFFSET)
#define S32K1XX_GPIOB_PCOR (S32K1XX_GPIOB_BASE + S32K1XX_GPIO_PCOR_OFFSET)
#define S32K1XX_GPIOB_PTOR (S32K1XX_GPIOB_BASE + S32K1XX_GPIO_PTOR_OFFSET)
#define S32K1XX_GPIOB_PDIR (S32K1XX_GPIOB_BASE + S32K1XX_GPIO_PDIR_OFFSET)
#define S32K1XX_GPIOB_PDDR (S32K1XX_GPIOB_BASE + S32K1XX_GPIO_PDDR_OFFSET)
#define S32K1XX_GPIOB_PIDR (S32K1XX_GPIOB_BASE + S32K1XX_GPIO_PIDR_OFFSET)
#define S32K1XX_GPIOC_PDOR (S32K1XX_GPIOC_BASE + S32K1XX_GPIO_PDOR_OFFSET)
#define S32K1XX_GPIOC_PSOR (S32K1XX_GPIOC_BASE + S32K1XX_GPIO_PSOR_OFFSET)
#define S32K1XX_GPIOC_PCOR (S32K1XX_GPIOC_BASE + S32K1XX_GPIO_PCOR_OFFSET)
#define S32K1XX_GPIOC_PTOR (S32K1XX_GPIOC_BASE + S32K1XX_GPIO_PTOR_OFFSET)
#define S32K1XX_GPIOC_PDIR (S32K1XX_GPIOC_BASE + S32K1XX_GPIO_PDIR_OFFSET)
#define S32K1XX_GPIOC_PDDR (S32K1XX_GPIOC_BASE + S32K1XX_GPIO_PDDR_OFFSET)
#define S32K1XX_GPIOC_PIDR (S32K1XX_GPIOC_BASE + S32K1XX_GPIO_PIDR_OFFSET)
#define S32K1XX_GPIOD_PDOR (S32K1XX_GPIOD_BASE + S32K1XX_GPIO_PDOR_OFFSET)
#define S32K1XX_GPIOD_PSOR (S32K1XX_GPIOD_BASE + S32K1XX_GPIO_PSOR_OFFSET)
#define S32K1XX_GPIOD_PCOR (S32K1XX_GPIOD_BASE + S32K1XX_GPIO_PCOR_OFFSET)
#define S32K1XX_GPIOD_PTOR (S32K1XX_GPIOD_BASE + S32K1XX_GPIO_PTOR_OFFSET)
#define S32K1XX_GPIOD_PDIR (S32K1XX_GPIOD_BASE + S32K1XX_GPIO_PDIR_OFFSET)
#define S32K1XX_GPIOD_PDDR (S32K1XX_GPIOD_BASE + S32K1XX_GPIO_PDDR_OFFSET)
#define S32K1XX_GPIOD_PIDR (S32K1XX_GPIOD_BASE + S32K1XX_GPIO_PIDR_OFFSET)
#define S32K1XX_GPIOE_PDOR (S32K1XX_GPIOE_BASE + S32K1XX_GPIO_PDOR_OFFSET)
#define S32K1XX_GPIOE_PSOR (S32K1XX_GPIOE_BASE + S32K1XX_GPIO_PSOR_OFFSET)
#define S32K1XX_GPIOE_PCOR (S32K1XX_GPIOE_BASE + S32K1XX_GPIO_PCOR_OFFSET)
#define S32K1XX_GPIOE_PTOR (S32K1XX_GPIOE_BASE + S32K1XX_GPIO_PTOR_OFFSET)
#define S32K1XX_GPIOE_PDIR (S32K1XX_GPIOE_BASE + S32K1XX_GPIO_PDIR_OFFSET)
#define S32K1XX_GPIOE_PDDR (S32K1XX_GPIOE_BASE + S32K1XX_GPIO_PDDR_OFFSET)
#define S32K1XX_GPIOE_PIDR (S32K1XX_GPIOE_BASE + S32K1XX_GPIO_PIDR_OFFSET)
/* GPIO Register Bitfield Definitions ************************************************/
/* Port Data Output Register */
#define GPIO_PDOR(n) (1 << (n)) /* Pin n data output, n=0..31 */
/* Port Set Output Register */
#define GPIO_PSOR(n) (1 << (n)) /* Pin n set output, n=0..31 */
/* Port Clear Output Register */
#define GPIO_PCOR(n) (1 << (n)) /* Pin n clear output, n=0..31 */
/* Port Toggle Output Register */
#define GPIO_PTOR(n) (1 << (n)) /* Pin n toggle output, n=0..31 */
/* Port Data Input Register */
#define GPIO_PDIR(n) (1 << (n)) /* Pin n data input, n=0..31 */
/* Port Data Direction Register */
#define GPIO_PDDR(n) (1 << (n)) /* Pin n data direction, n=0..31 */
/* Port Input Disable Register */
#define GPIO_PIDR(n) (1 << (n)) /* Pin n input disable, n=0..31 */
#endif /* __ARCH_ARM_SRC_S32K1XX_HARDWARE_S32K1XX_GPIO_H */
@@ -106,6 +106,11 @@
#define S32K1XX_SMC_BASE 0x4007e000 /* System Mode controller */
#define S32K1XX_RCM_BASE 0x4007f000 /* Reset Control Module */
#define S32K1XX_GPIO_BASE 0x400ff000 /* GPIO controller */
# define S32K1XX_GPIOA_BASE 0x400ff000 /* GPIOA controller */
# define S32K1XX_GPIOB_BASE 0x400ff040 /* GPIOB controller */
# define S32K1XX_GPIOC_BASE 0x400ff080 /* GPIOC controller */
# define S32K1XX_GPIOD_BASE 0x400ff0c0 /* GPIOD controller */
# define S32K1XX_GPIOE_BASE 0x400ff100 /* GPIOE controller */
#if defined(CONFIG_ARCH_CHIP_S32K14X)
# define S32K1XX_ITM_BASE 0xe0000000 /* Instrumentation Trace Macrocell */