blob: c6edf624100f6e7b169ee5799489ee18392a9af1 [file] [log] [blame]
/****************************************************************************
* arch/arm/src/s32k3xx/hardware/s32k3xx_siul2.h
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership. The
* ASF licenses this file to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the
* License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
****************************************************************************/
/* Copyright 2022 NXP */
#ifndef __ARCH_ARM_SRC_S32K3XX_HARDWARE_S32K3XX_SIUL2_H
#define __ARCH_ARM_SRC_S32K3XX_HARDWARE_S32K3XX_SIUL2_H
/****************************************************************************
* Included Files
****************************************************************************/
#include <hardware/s32k3xx_memorymap.h>
/****************************************************************************
* Pre-processor Definitions
****************************************************************************/
#define S32K3XX_PORTA (0)
#define S32K3XX_PORTB (1)
#define S32K3XX_PORTC (2)
#define S32K3XX_PORTD (3)
#define S32K3XX_PORTE (4)
#define S32K3XX_PORTF (5)
#define S32K3XX_PORTG (6)
#define S32K3XX_NPORTS (7) /* Number of available ports */
#define S32K3XX_NPINS (32) /* Maximum amount of pins per port */
/* SIUL2 Register Offsets ***************************************************/
#define S32K3XX_SIUL2_MIDR1_OFFSET (0x0004) /* SIUL2 MCU ID Register #1 (MIDR1) */
#define S32K3XX_SIUL2_MIDR2_OFFSET (0x0008) /* SIUL2 MCU ID Register #2 (MIDR2) */
#define S32K3XX_SIUL2_DISR0_OFFSET (0x0010) /* SIUL2 DMA/Interrupt Status Flag Register 0 (DISR0) */
#define S32K3XX_SIUL2_DIRER0_OFFSET (0x0018) /* SIUL2 DMA/Interrupt Request Enable Register 0 (DIRER0) */
#define S32K3XX_SIUL2_DIRSR0_OFFSET (0x0020) /* SIUL2 DMA/Interrupt Request Select Register 0 (DIRSR0) */
#define S32K3XX_SIUL2_IREER0_OFFSET (0x0028) /* SIUL2 Interrupt Rising-Edge Event Enable Register 0 (IREER0) */
#define S32K3XX_SIUL2_IFEER0_OFFSET (0x0030) /* SIUL2 Interrupt Falling-Edge Event Enable Register 0 (IFEER0) */
#define S32K3XX_SIUL2_IFER0_OFFSET (0x0038) /* SIUL2 Interrupt Filter Enable Register 0 (IFER0) */
#define S32K3XX_SIUL2_IFMCR_OFFSET(n) (0x0040 + ((n) << 2)) /* SIUL2 Interrupt Filter Maximum Counter Register n=0..31 (IFMCRn) */
#define S32K3XX_SIUL2_IFCPR_OFFSET (0x00c0) /* SIUL2 Interrupt Filter Clock Prescaler Register */
#define S32K3XX_SIUL2_MIDR3_OFFSET (0x0200) /* SIUL2 MCU ID Register #3 (MIDR3) */
#define S32K3XX_SIUL2_MIDR4_OFFSET (0x0204) /* SIUL2 MCU ID Register #4 (MIDR4) */
#define S32K3XX_SIUL2_MSCR_OFFSET(n) (0x0240 + ((n) << 2)) /* SIUL2 Multiplexed Signal Configuration Register n=0..219 (MSCRn) */
#define S32K3XX_SIUL2_IMCR_OFFSET(n) (0x0a40 + ((n) << 2)) /* SIUL2 Input Multiplexed Signal Configuration Register n=0..378 (IMCRn) */
#define S32K3XX_SIUL2_GPDO_OFFSET(n) (0x1300 + ((n) + 3 - 2 * ((n) % 4))) /* SIUL2 GPIO Pad Data Output Register n=0..219 (GPDOn) */
#define S32K3XX_SIUL2_GPDI_OFFSET(n) (0x1500 + ((n) + 3 - 2 * ((n) % 4))) /* SIUL2 GPIO Pad Data Input Register n=0..219 (GPDIn) */
#define S32K3XX_SIUL2_PGPDO1_OFFSET (0x1700) /* SIUL2 Parallel GPIO Pad Data Out Register 1 (PGPDO1) */
#define S32K3XX_SIUL2_PGPDO0_OFFSET (0x1702) /* SIUL2 Parallel GPIO Pad Data Out Register 0 (PGPDO0) */
#define S32K3XX_SIUL2_PGPDO3_OFFSET (0x1704) /* SIUL2 Parallel GPIO Pad Data Out Register 3 (PGPDO3) */
#define S32K3XX_SIUL2_PGPDO2_OFFSET (0x1706) /* SIUL2 Parallel GPIO Pad Data Out Register 2 (PGPDO2) */
#define S32K3XX_SIUL2_PGPDO5_OFFSET (0x1708) /* SIUL2 Parallel GPIO Pad Data Out Register 5 (PGPDO5) */
#define S32K3XX_SIUL2_PGPDO4_OFFSET (0x170a) /* SIUL2 Parallel GPIO Pad Data Out Register 4 (PGPDO4) */
#define S32K3XX_SIUL2_PGPDO7_OFFSET (0x170c) /* SIUL2 Parallel GPIO Pad Data Out Register 7 (PGPDO7) */
#define S32K3XX_SIUL2_PGPDO6_OFFSET (0x170e) /* SIUL2 Parallel GPIO Pad Data Out Register 6 (PGPDO6) */
#define S32K3XX_SIUL2_PGPDO9_OFFSET (0x1710) /* SIUL2 Parallel GPIO Pad Data Out Register 9 (PGPDO9) */
#define S32K3XX_SIUL2_PGPDO8_OFFSET (0x1712) /* SIUL2 Parallel GPIO Pad Data Out Register 8 (PGPDO8) */
#define S32K3XX_SIUL2_PGPDO11_OFFSET (0x1714) /* SIUL2 Parallel GPIO Pad Data Out Register 11 (PGPDO11) */
#define S32K3XX_SIUL2_PGPDO10_OFFSET (0x1716) /* SIUL2 Parallel GPIO Pad Data Out Register 10 (PGPDO10) */
#define S32K3XX_SIUL2_PGPDO13_OFFSET (0x1718) /* SIUL2 Parallel GPIO Pad Data Out Register 13 (PGPDO13) */
#define S32K3XX_SIUL2_PGPDO12_OFFSET (0x171a) /* SIUL2 Parallel GPIO Pad Data Out Register 12 (PGPDO12) */
#define S32K3XX_SIUL2_PGPDI1_OFFSET (0x1740) /* SIUL2 Parallel GPIO Pad Data In Register 1 (PGPDI1) */
#define S32K3XX_SIUL2_PGPDI0_OFFSET (0x1742) /* SIUL2 Parallel GPIO Pad Data In Register 0 (PGPDI0) */
#define S32K3XX_SIUL2_PGPDI3_OFFSET (0x1744) /* SIUL2 Parallel GPIO Pad Data In Register 3 (PGPDI3) */
#define S32K3XX_SIUL2_PGPDI2_OFFSET (0x1746) /* SIUL2 Parallel GPIO Pad Data In Register 2 (PGPDI2) */
#define S32K3XX_SIUL2_PGPDI5_OFFSET (0x1748) /* SIUL2 Parallel GPIO Pad Data In Register 5 (PGPDI5) */
#define S32K3XX_SIUL2_PGPDI4_OFFSET (0x174a) /* SIUL2 Parallel GPIO Pad Data In Register 4 (PGPDI4) */
#define S32K3XX_SIUL2_PGPDI7_OFFSET (0x174c) /* SIUL2 Parallel GPIO Pad Data In Register 7 (PGPDI7) */
#define S32K3XX_SIUL2_PGPDI6_OFFSET (0x174e) /* SIUL2 Parallel GPIO Pad Data In Register 6 (PGPDI6) */
#define S32K3XX_SIUL2_PGPDI9_OFFSET (0x1750) /* SIUL2 Parallel GPIO Pad Data In Register 9 (PGPDI9) */
#define S32K3XX_SIUL2_PGPDI8_OFFSET (0x1752) /* SIUL2 Parallel GPIO Pad Data In Register 8 (PGPDI8) */
#define S32K3XX_SIUL2_PGPDI11_OFFSET (0x1754) /* SIUL2 Parallel GPIO Pad Data In Register 11 (PGPDI11) */
#define S32K3XX_SIUL2_PGPDI10_OFFSET (0x1756) /* SIUL2 Parallel GPIO Pad Data In Register 10 (PGPDI10) */
#define S32K3XX_SIUL2_PGPDI13_OFFSET (0x1758) /* SIUL2 Parallel GPIO Pad Data In Register 13 (PGPDI13) */
#define S32K3XX_SIUL2_PGPDI12_OFFSET (0x175a) /* SIUL2 Parallel GPIO Pad Data In Register 12 (PGPDI12) */
#define S32K3XX_SIUL2_MPGPDO_OFFSET(n) (0x1780 + ((n) << 2)) /* SIUL2 Masked Parallel GPIO Pad Data Out Register n=0..13 (MPGPDOn) */
/* SIUL2 Register Addresses *************************************************/
#define S32K3XX_SIUL2_MIDR1 (S32K3XX_SIUL2_BASE + S32K3XX_SIUL2_MIDR1_OFFSET)
#define S32K3XX_SIUL2_MIDR2 (S32K3XX_SIUL2_BASE + S32K3XX_SIUL2_MIDR2_OFFSET)
#define S32K3XX_SIUL2_DISR0 (S32K3XX_SIUL2_BASE + S32K3XX_SIUL2_DISR0_OFFSET)
# define S32K3XX_SIUL2_DISR0_IRQ0 (S32K3XX_SIUL2_BASE + S32K3XX_SIUL2_DISR0_OFFSET + 0x00)
# define S32K3XX_SIUL2_DISR0_IRQ1 (S32K3XX_SIUL2_BASE + S32K3XX_SIUL2_DISR0_OFFSET + 0x01)
# define S32K3XX_SIUL2_DISR0_IRQ2 (S32K3XX_SIUL2_BASE + S32K3XX_SIUL2_DISR0_OFFSET + 0x02)
# define S32K3XX_SIUL2_DISR0_IRQ3 (S32K3XX_SIUL2_BASE + S32K3XX_SIUL2_DISR0_OFFSET + 0x03)
#define S32K3XX_SIUL2_DIRER0 (S32K3XX_SIUL2_BASE + S32K3XX_SIUL2_DIRER0_OFFSET)
#define S32K3XX_SIUL2_DIRSR0 (S32K3XX_SIUL2_BASE + S32K3XX_SIUL2_DIRSR0_OFFSET)
#define S32K3XX_SIUL2_IREER0 (S32K3XX_SIUL2_BASE + S32K3XX_SIUL2_IREER0_OFFSET)
#define S32K3XX_SIUL2_IFEER0 (S32K3XX_SIUL2_BASE + S32K3XX_SIUL2_IFEER0_OFFSET)
#define S32K3XX_SIUL2_IFER0 (S32K3XX_SIUL2_BASE + S32K3XX_SIUL2_IFER0_OFFSET)
#define S32K3XX_SIUL2_IFMCR(n) (S32K3XX_SIUL2_BASE + S32K3XX_SIUL2_IFMCR_OFFSET(n))
#define S32K3XX_SIUL2_IFCPR (S32K3XX_SIUL2_BASE + S32K3XX_SIUL2_IFCPR_OFFSET)
#define S32K3XX_SIUL2_MIDR3 (S32K3XX_SIUL2_BASE + S32K3XX_SIUL2_MIDR3_OFFSET)
#define S32K3XX_SIUL2_MIDR4 (S32K3XX_SIUL2_BASE + S32K3XX_SIUL2_MIDR4_OFFSET)
#define S32K3XX_SIUL2_MSCR(n) (S32K3XX_SIUL2_BASE + S32K3XX_SIUL2_MSCR_OFFSET(n))
#define S32K3XX_SIUL2_IMCR(n) (S32K3XX_SIUL2_BASE + S32K3XX_SIUL2_IMCR_OFFSET(n))
#define S32K3XX_SIUL2_GPDO(n) (S32K3XX_SIUL2_BASE + S32K3XX_SIUL2_GPDO_OFFSET(n))
#define S32K3XX_SIUL2_GPDI(n) (S32K3XX_SIUL2_BASE + S32K3XX_SIUL2_GPDI_OFFSET(n))
#define S32K3XX_SIUL2_PGPDO1 (S32K3XX_SIUL2_BASE + S32K3XX_SIUL2_PGPDO1_OFFSET)
#define S32K3XX_SIUL2_PGPDO0 (S32K3XX_SIUL2_BASE + S32K3XX_SIUL2_PGPDO0_OFFSET)
#define S32K3XX_SIUL2_PGPDO3 (S32K3XX_SIUL2_BASE + S32K3XX_SIUL2_PGPDO3_OFFSET)
#define S32K3XX_SIUL2_PGPDO2 (S32K3XX_SIUL2_BASE + S32K3XX_SIUL2_PGPDO2_OFFSET)
#define S32K3XX_SIUL2_PGPDO5 (S32K3XX_SIUL2_BASE + S32K3XX_SIUL2_PGPDO5_OFFSET)
#define S32K3XX_SIUL2_PGPDO4 (S32K3XX_SIUL2_BASE + S32K3XX_SIUL2_PGPDO4_OFFSET)
#define S32K3XX_SIUL2_PGPDO7 (S32K3XX_SIUL2_BASE + S32K3XX_SIUL2_PGPDO7_OFFSET)
#define S32K3XX_SIUL2_PGPDO6 (S32K3XX_SIUL2_BASE + S32K3XX_SIUL2_PGPDO6_OFFSET)
#define S32K3XX_SIUL2_PGPDO9 (S32K3XX_SIUL2_BASE + S32K3XX_SIUL2_PGPDO9_OFFSET)
#define S32K3XX_SIUL2_PGPDO8 (S32K3XX_SIUL2_BASE + S32K3XX_SIUL2_PGPDO8_OFFSET)
#define S32K3XX_SIUL2_PGPDO11 (S32K3XX_SIUL2_BASE + S32K3XX_SIUL2_PGPDO11_OFFSET)
#define S32K3XX_SIUL2_PGPDO10 (S32K3XX_SIUL2_BASE + S32K3XX_SIUL2_PGPDO10_OFFSET)
#define S32K3XX_SIUL2_PGPDO13 (S32K3XX_SIUL2_BASE + S32K3XX_SIUL2_PGPDO13_OFFSET)
#define S32K3XX_SIUL2_PGPDO12 (S32K3XX_SIUL2_BASE + S32K3XX_SIUL2_PGPDO12_OFFSET)
#define S32K3XX_SIUL2_PGPDI1 (S32K3XX_SIUL2_BASE + S32K3XX_SIUL2_PGPDI1_OFFSET)
#define S32K3XX_SIUL2_PGPDI0 (S32K3XX_SIUL2_BASE + S32K3XX_SIUL2_PGPDI0_OFFSET)
#define S32K3XX_SIUL2_PGPDI3 (S32K3XX_SIUL2_BASE + S32K3XX_SIUL2_PGPDI3_OFFSET)
#define S32K3XX_SIUL2_PGPDI2 (S32K3XX_SIUL2_BASE + S32K3XX_SIUL2_PGPDI2_OFFSET)
#define S32K3XX_SIUL2_PGPDI5 (S32K3XX_SIUL2_BASE + S32K3XX_SIUL2_PGPDI5_OFFSET)
#define S32K3XX_SIUL2_PGPDI4 (S32K3XX_SIUL2_BASE + S32K3XX_SIUL2_PGPDI4_OFFSET)
#define S32K3XX_SIUL2_PGPDI7 (S32K3XX_SIUL2_BASE + S32K3XX_SIUL2_PGPDI7_OFFSET)
#define S32K3XX_SIUL2_PGPDI6 (S32K3XX_SIUL2_BASE + S32K3XX_SIUL2_PGPDI6_OFFSET)
#define S32K3XX_SIUL2_PGPDI9 (S32K3XX_SIUL2_BASE + S32K3XX_SIUL2_PGPDI9_OFFSET)
#define S32K3XX_SIUL2_PGPDI8 (S32K3XX_SIUL2_BASE + S32K3XX_SIUL2_PGPDI8_OFFSET)
#define S32K3XX_SIUL2_PGPDI11 (S32K3XX_SIUL2_BASE + S32K3XX_SIUL2_PGPDI11_OFFSET)
#define S32K3XX_SIUL2_PGPDI10 (S32K3XX_SIUL2_BASE + S32K3XX_SIUL2_PGPDI10_OFFSET)
#define S32K3XX_SIUL2_PGPDI13 (S32K3XX_SIUL2_BASE + S32K3XX_SIUL2_PGPDI13_OFFSET)
#define S32K3XX_SIUL2_PGPDI12 (S32K3XX_SIUL2_BASE + S32K3XX_SIUL2_PGPDI12_OFFSET)
#define S32K3XX_SIUL2_MPGPDO(n) (S32K3XX_SIUL2_BASE + S32K3XX_SIUL2_MPGPDO_OFFSET(n))
/* SIUL2 Register Bitfield Definitions **************************************/
/* SIUL2 MCU ID Register #1 (MIDR1) */
#define SIUL2_MIDR1_MINOR_SHIFT (0) /* Bits 0-3: Minor Mask Revision (MINOR_MASK) */
#define SIUL2_MIDR1_MINOR_MASK (0x0f << SIUL2_MIDR1_MINOR_SHIFT)
#define SIUL2_MIDR1_MAJOR_SHIFT (4) /* Bits 4-7: Major Mask Revision (MAJOR_MASK) */
#define SIUL2_MIDR1_MAJOR_MASK (0x0f << SIUL2_MIDR1_MAJOR_SHIFT)
/* Bits 8-15: Reserved */
#define SIUL2_MIDR1_PART_NO_SHIFT (16) /* Bits 16-25: MCU Part Number (PART_NO) */
#define SIUL2_MIDR1_PART_NO_MASK (0x03ff << SIUL2_MIDR1_PART_NO_SHIFT)
# define SIUL2_MIDR1_PART_NO_S32K311 (0x0137 << SIUL2_MIDR1_PART_NO_SHIFT) /* S32K311 */
# define SIUL2_MIDR1_PART_NO_S32K312 (0x0138 << SIUL2_MIDR1_PART_NO_SHIFT) /* S32K312 */
# define SIUL2_MIDR1_PART_NO_S32K314 (0x013a << SIUL2_MIDR1_PART_NO_SHIFT) /* S32K314 */
# define SIUL2_MIDR1_PART_NO_S32K322 (0x0142 << SIUL2_MIDR1_PART_NO_SHIFT) /* S32K322 */
# define SIUL2_MIDR1_PART_NO_S32K324 (0x0144 << SIUL2_MIDR1_PART_NO_SHIFT) /* S32K324 */
# define SIUL2_MIDR1_PART_NO_S32K328 (0x0148 << SIUL2_MIDR1_PART_NO_SHIFT) /* S32K328 */
# define SIUL2_MIDR1_PART_NO_S32K338 (0x0152 << SIUL2_MIDR1_PART_NO_SHIFT) /* S32K338 */
# define SIUL2_MIDR1_PART_NO_S32K342 (0x0156 << SIUL2_MIDR1_PART_NO_SHIFT) /* S32K342 */
# define SIUL2_MIDR1_PART_NO_S32K344 (0x0158 << SIUL2_MIDR1_PART_NO_SHIFT) /* S32K344 */
# define SIUL2_MIDR1_PART_NO_S32K348 (0x015c << SIUL2_MIDR1_PART_NO_SHIFT) /* S32K348 */
# define SIUL2_MIDR1_PART_NO_S32K358 (0x0166 << SIUL2_MIDR1_PART_NO_SHIFT) /* S32K358 */
#define SIUL2_MIDR1_PRODUCT_LINE_LETTER_SHIFT (26) /* Bits 26-31: Product Line Letter (PRODUCT_LINE_LETTER) */
#define SIUL2_MIDR1_PRODUCT_LINE_LETTER_MASK (0x3f << SIUL2_MIDR1_PRODUCT_LINE_LETTER_SHIFT)
/* SIUL2 MCU ID Register #2 (MIDR2) */
#define SIUL2_MIDR2_FLASH_SIZE_CODE_SHIFT (0) /* Bits 0-7: Code Flash Size (FLASH_SIZE_CODE) */
#define SIUL2_MIDR2_FLASH_SIZE_CODE_MASK (0xff << SIUL2_MIDR2_FLASH_SIZE_CODE_SHIFT)
#define SIUL2_MIDR2_FLASH_SIZE_DATA_SHIFT (8) /* Bits 8-11: Data Flash Size (FLASH_SIZE_DATA) */
#define SIUL2_MIDR2_FLASH_SIZE_DATA_MASK (0x0f << SIUL2_MIDR2_FLASH_SIZE_DATA_SHIFT)
#define SIUL2_MIDR2_FLASH_DATA_SHIFT (12) /* Bits 12-13: Data Flash Location (FLASH_DATA) */
#define SIUL2_MIDR2_FLASH_DATA_MASK (0x03 << SIUL2_MIDR2_FLASH_DATA_SHIFT)
#define SIUL2_MIDR2_FLASH_CODE_SHIFT (14) /* Bits 14-15: Code Flash Location (FLASH_CODE) */
#define SIUL2_MIDR2_FLASH_CODE_MASK (0x03 << SIUL2_MIDR2_FLASH_CODE_SHIFT)
#define SIUL2_MIDR2_FREQUENCY_SHIFT (16) /* Bits 16-19: Maximum Core Frequency (FREQUENCY) */
#define SIUL2_MIDR2_FREQUENCY_MASK (0x0f << SIUL2_MIDR2_FREQUENCY_SHIFT)
#define SIUL2_MIDR2_PACKAGE_SHIFT (20) /* Bits 20-25: Package Type (PACKAGE) */
#define SIUL2_MIDR2_PACKAGE_MASK (0x3f << SIUL2_MIDR2_PACKAGE_SHIFT)
#define SIUL2_MIDR2_TEMPERATURE_SHIFT (26) /* Bits 26-28: Ambient Temperature Range (TEMPERATURE) */
#define SIUL2_MIDR2_TEMPERATURE_MASK (0x07 << SIUL2_MIDR2_TEMPERATURE_SHIFT)
#define SIUL2_MIDR2_TECHNOLOGY_SHIFT (29) /* Bits 29-31: Silicon Technology (TECHNOLOGY) */
#define SIUL2_MIDR2_TECHNOLOGY_MASK (0x07 << SIUL2_MIDR2_TECHNOLOGY_SHIFT)
/* SIUL2 DMA/Interrupt Status Flag Register 0 (DISR0) */
#define SIUL2_DISR0_EIF(b) (1 << (b)) /* Bits 0-31: External Interrupt Status Flag 0-31 (EIF0-EIF31) */
/* SIUL2 DMA/Interrupt Request Enable Register 0 (DIRER0) */
#define SIUL2_DIRER0_EIRE(b) (1 << (b)) /* Bits 0-31: External Interrupt Request Enable 0-31 (EIRE0-EIRE31) */
/* SIUL2 DMA/Interrupt Request Select Register 0 (DIRSR0) */
#define SIUL2_DIRSR0_DIRSR(b) (1 << (b)) /* Bits 0-31: DMA/Interrupt Request Select Register 0-31 (DIRSR0-DIRSR31) */
/* SIUL2 Interrupt Rising-Edge Event Enable Register 0 (IREER0) */
#define SIUL2_IREER0_IREE(b) (1 << (b)) /* Bits 0-31: Interrupt Rising-Edge Event Enable 0-31 (IREE0-IREE31) */
/* SIUL2 Interrupt Falling-Edge Event Enable Register 0 (IFEER0) */
#define SIUL2_IFEER0_IFEE(b) (1 << (b)) /* Bits 0-31: Interrupt Falling-Edge Event Enable 0-31 (IFEE0-IFEE31) */
/* SIUL2 Interrupt Filter Enable Register 0 (IFER0) */
#define SIUL2_IFER0_IFE(b) (1 << (b)) /* Bits 0-31: Interrupt Filter Enable 0-31 (IFE0-IFE31) */
/* SIUL2 Interrupt Filter Maximum Counter Register n=0..31 (IFMCRn) */
#define SIUL2_IFMCR_MAXCNT_SHIFT (0) /* Bits 0-3: Maximum Interrupt Filter Counter Setting (MAXCNT) */
#define SIUL2_IFMCR_MAXCNT_MASK (0x0f << SIUL2_IFMCR_MAXCNT_SHIFT)
/* Bits 4-31: Reserved */
/* SIUL2 Interrupt Filter Clock Prescaler Register */
#define SIUL2_IFCPR_IFCP_SHIFT (0) /* Bits 0-3: Interrupt Filter Clock Prescaler Setting (IFCP) */
#define SIUL2_IFCPR_IFCP_MASK (0x0f << SIUL2_IFCPR_IFCP_SHIFT)
/* Bits 4-31: Reserved */
/* SIUL2 MCU ID Register #3 (MIDR3) */
#define SIUL2_MIDR3_SYS_RAM_SIZE_SHIFT (0) /* Bits 0-5: System RAM Size (SYS_RAM_SIZE) */
#define SIUL2_MIDR3_SYS_RAM_SIZE_MASK (0x3f << SIUL2_MIDR3_SYS_RAM_SIZE_SHIFT)
/* Bits 6-9: Reserved */
#define SIUL2_MIDR3_PART_NO_SUF_SHIFT (10) /* Bits 10-15: Part Number Suffix (PART_NO_SUFFIX) */
#define SIUL2_MIDR3_PART_NO_SUF_MASK (0x3f << SIUL2_MIDR3_PART_NO_SUF_SHIFT)
#define SIUL2_MIDR3_PROD_FAM_NO_SHIFT (16) /* Bits 16-25: Product Family Number (PROD_FAM_NO) */
#define SIUL2_MIDR3_PROD_FAM_NO_MASK (0x03ff << SIUL2_MIDR3_PROD_FAM_NO_SHIFT)
#define SIUL2_MIDR3_PROD_FAM_LET_SHIFT (26) /* Bits 26-31: Product Family Letter (PROD_FAM_LET) */
#define SIUL2_MIDR3_PROD_FAM_LET_MASK (0x3f << SIUL2_MIDR3_PROD_FAM_LET_SHIFT)
/* SIUL2 MCU ID Register #4 (MIDR4) */
#define SIUL2_MIDR4_CORE_PLAT_FET_SHIFT (0) /* Bits 0-2: Core Platform Options Feature (CORE_PLAT_FET) */
#define SIUL2_MIDR4_CORE_PLAT_FET_MASK (0x07 << SIUL2_MIDR4_CORE_PLAT_FET_SHIFT)
#define SIUL2_MIDR4_EMAC_FET_SHIFT (3) /* Bits 3-4: Ethernet Feature (EMAC_FET) */
#define SIUL2_MIDR4_EMAC_FET_MASK (0x03 << SIUL2_MIDR4_EMAC_FET_SHIFT)
#define SIUL2_MIDR4_SEC_FET_SHIFT (5) /* Bits 5-6: Security Feature (SEC_FET) */
#define SIUL2_MIDR4_SEC_FET_MASK (0x03 << SIUL2_MIDR4_SEC_FET_SHIFT)
/* Bits 7-31: Reserved */
/* SIUL2 Multiplexed Signal Configuration Register n=0..219 (MSCRn) */
#define SIUL2_MSCR_SSS_SHIFT (0) /* Bit 0: Source Signal Select (SSS) */
#define SIUL2_MSCR_SSS_MASK (0x07 << SIUL2_MSCR_SSS_SHIFT)
# define SIUL2_MSCR_SSS(n) (((n) << SIUL2_MSCR_SSS_SHIFT) & SIUL2_MSCR_SSS_MASK)
/* Bits 3-4: Reserved */
#define SIUL2_MSCR_SMC (1 << 5) /* Bit 5: Safe Mode Control (SMC) */
#define SIUL2_MSCR_IFE (1 << 6) /* Bit 6: Input Filter Enable (IFE) */
/* Bit 7: Reserved */
#define SIUL2_MSCR_DSE (1 << 8) /* Bit 8: Drive Strength Enable (DSE) */
/* Bits 9-10: Reserved */
#define SIUL2_MSCR_PUS (1 << 11) /* Bit 11: Pull Select (PUS) */
/* Bit 12: Reserved */
#define SIUL2_MSCR_PUE (1 << 13) /* Bit 13: Pull Enable (PUE) */
#define SIUL2_MSCR_SRC (1 << 14) /* Bit 14: Slew Rate Control (SRC) */
/* Bit 15: Reserved */
#define SIUL2_MSCR_PKE (1 << 16) /* Bit 16: Pad Keeping Enable (PKE) */
#define SIUL2_MSCR_INV (1 << 17) /* Bit 17: Invert (INV) */
/* Bit 18: Reserved */
#define SIUL2_MSCR_IBE (1 << 19) /* Bit 19: Input Buffer Enable (IBE) */
/* Bit 20: Reserved */
#define SIUL2_MSCR_OBE (1 << 21) /* Bit 21: GPIO Output Buffer Enable (OBE) */
/* Bits 22-31: Reserved */
/* SIUL2 Input Multiplexed Signal Configuration Register n=0..378 (IMCRn) */
#define SIUL2_IMCR_SSS_SHIFT (0) /* Bits 0-3: Source Signal Select (SSS) */
#define SIUL2_IMCR_SSS_MASK (0x0f << SIUL2_IMCR_SSS_SHIFT)
# define SIUL2_IMCR_SSS(n) (((n) << SIUL2_IMCR_SSS_SHIFT) & SIUL2_IMCR_SSS_MASK)
/* Bits 4-31: Reserved */
/* SIUL2 GPIO Pad Data Output Register n=0..219 (GPDOn) */
#define SIUL2_GPDO_PDO (1 << 0) /* Bit 0: Pad Data Out (PDO) */
/* Bits 1-7: Reserved */
/* SIUL2 GPIO Pad Data Input Register n=0..219 (GPDIn) */
#define SIUL2_GPDI_PDI (1 << 0) /* Bit 0: Pad Data In (PDI) */
/* Bits 1-7: Reserved */
/* SIUL2 Parallel GPIO Pad Data Out Register n=0..13 (PGPDOn) */
#define SIUL2_PGPDO_PPDO(b) (1 << (b)) /* Bits 0-15: Parallel Pad Data Out 0-15 (PPDO0-PPDO15) */
/* SIUL2 Parallel GPIO Pad Data In Register n=0..13 (PGPDIn) */
#define SIUL2_PGPDI_PPDI(b) (1 << (b)) /* Bits 0-15: Parallel Pad Data In 0-15 (PPDI0-PPDI15) */
/* SIUL2 Masked Parallel GPIO Pad Data Out Register n=0..13 (MPGPDOn) */
#define SIUL2_MPGPDO_MPPDO(b) (1 << (b)) /* Bits 0-15: Masked Parallel Pad Data Out 0-15 (MPPDO0-MPPDO15) */
#define SIUL2_MPGPDO_MPPDO_SHIFT (0)
#define SIUL2_MPGPDO_MPPDO_MASK (0xffff << SIUL2_MPGPDO_MPPDO_SHIFT)
#define SIUL2_MPGPDO_MASK(b) (1 << (b)) /* Bits 16-31: Mask Field 0-15 (MASK0-MASK15) */
#define SIUL2_MPGPDO_MASK_SHIFT (16)
#define SIUL2_MPGPDO_MASK_MASK (0xffff << SIUL2_MPGPDO_MASK_SHIFT)
#endif /* __ARCH_ARM_SRC_S32K3XX_HARDWARE_S32K3XX_SIUL2_H */