arch/arm: add support for imx95 m7 core
- Add support for i.MX95 M7 core - Interprocessor communication by RPMSG and SCMI - Drivers available for UART, SPI, I2C, CAN, IO and timers
This commit is contained in:
parent
5db6767f6f
commit
a84257c885
70 changed files with 34946 additions and 0 deletions
|
@ -183,6 +183,20 @@ config ARCH_CHIP_IMX6
|
|||
---help---
|
||||
Freescale iMX.6 architectures (Cortex-A9)
|
||||
|
||||
config ARCH_CHIP_IMX9_CORTEX_M
|
||||
bool "NXP iMX.9 Cortex-M7"
|
||||
select ARCH_CORTEXM7
|
||||
select ARCH_HAVE_MPU
|
||||
select ARCH_HAVE_FETCHADD
|
||||
select ARCH_HAVE_RAMFUNCS
|
||||
select ARCH_HAVE_TICKLESS
|
||||
select ARCH_HAVE_I2CRESET
|
||||
select ARCH_HAVE_SPI_CS_CONTROL
|
||||
select ARM_HAVE_MPU_UNIFIED
|
||||
select ARMV7M_HAVE_STACKCHECK
|
||||
---help---
|
||||
iMX.9 architectures (Cortex-M7)
|
||||
|
||||
config ARCH_CHIP_IMXRT
|
||||
bool "NXP/Freescale iMX.RT"
|
||||
select ARCH_CORTEXM7
|
||||
|
@ -1124,6 +1138,7 @@ config ARCH_CHIP
|
|||
default "gd32f4" if ARCH_CHIP_GD32F4
|
||||
default "imx1" if ARCH_CHIP_IMX1
|
||||
default "imx6" if ARCH_CHIP_IMX6
|
||||
default "imx9" if ARCH_CHIP_IMX9_CORTEX_M
|
||||
default "imxrt" if ARCH_CHIP_IMXRT
|
||||
default "kinetis" if ARCH_CHIP_KINETIS
|
||||
default "kl" if ARCH_CHIP_KL
|
||||
|
@ -1536,6 +1551,9 @@ endif
|
|||
if ARCH_CHIP_IMX6
|
||||
source "arch/arm/src/imx6/Kconfig"
|
||||
endif
|
||||
if ARCH_CHIP_IMX9_CORTEX_M
|
||||
source "arch/arm/src/imx9/Kconfig"
|
||||
endif
|
||||
if ARCH_CHIP_IMXRT
|
||||
source "arch/arm/src/imxrt/Kconfig"
|
||||
endif
|
||||
|
|
52
arch/arm/include/imx9/chip.h
Normal file
52
arch/arm/include/imx9/chip.h
Normal file
|
@ -0,0 +1,52 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/include/imx9/chip.h
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ARCH_ARM_INCLUDE_IMX9_CHIP_H
|
||||
#define __ARCH_ARM_INCLUDE_IMX9_CHIP_H
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/* NVIC priority levels *****************************************************/
|
||||
|
||||
/* Each priority field holds an 8-bit priority value, 0-15. The lower the
|
||||
* value, the greater the priority of the corresponding interrupt. The i.MX
|
||||
* RT processor implements only bits[7:4] of each field, bits[3:0] read as
|
||||
* zero and ignore writes.
|
||||
*/
|
||||
|
||||
#define NVIC_SYSH_PRIORITY_MIN 0xf0 /* All bits[7:4] set is min pri */
|
||||
#define NVIC_SYSH_PRIORITY_DEFAULT 0x80 /* Midpoint is the default */
|
||||
#define NVIC_SYSH_PRIORITY_MAX 0x00 /* Zero is maximum priority */
|
||||
#define NVIC_SYSH_PRIORITY_STEP 0x40 /* Two bits of interrupt pri used */
|
||||
|
||||
#define IMX9_GPIO_NPORTS 4
|
||||
|
||||
#endif /* __ARCH_ARM_INCLUDE_IMX9_CHIP_H */
|
420
arch/arm/include/imx9/imx95_irq.h
Normal file
420
arch/arm/include/imx9/imx95_irq.h
Normal file
|
@ -0,0 +1,420 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/include/imx9/imx95_irq.h
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ARCH_ARM_INCLUDE_IMX9_IMX95_IRQ_H
|
||||
#define __ARCH_ARM_INCLUDE_IMX9_IMX95_IRQ_H
|
||||
|
||||
#define IMX9_IRQ_RESERVED16 (IMX9_IRQ_EXTINT + 0) /* Reserved interrupt */
|
||||
#define IMX9_IRQ_RESERVED17 (IMX9_IRQ_EXTINT + 1) /* DAP interrupt */
|
||||
#define IMX9_IRQ_RESERVED18 (IMX9_IRQ_EXTINT + 2) /* CTI trigger outputs from CM7 platform */
|
||||
#define IMX9_IRQ_RESERVED19 (IMX9_IRQ_EXTINT + 3) /* CTI trigger outputs from CM33 platform */
|
||||
#define IMX9_IRQ_RESERVED20 (IMX9_IRQ_EXTINT + 4) /* CTI trigger outputs from CA55 platform */
|
||||
#define IMX9_IRQ_RESERVED21 (IMX9_IRQ_EXTINT + 5) /* Performance Unit Interrupts from CA55 platform */
|
||||
#define IMX9_IRQ_RESERVED22 (IMX9_IRQ_EXTINT + 6) /* ECC error from CA55 platform cache */
|
||||
#define IMX9_IRQ_RESERVED23 (IMX9_IRQ_EXTINT + 7) /* 1-bit or 2-bit ECC or Parity error from CA55 platform cache */
|
||||
#define IMX9_IRQ_CAN1 (IMX9_IRQ_EXTINT + 8) /* CAN1 interrupt */
|
||||
#define IMX9_IRQ_CAN1_ERROR (IMX9_IRQ_EXTINT + 9) /* CAN1 error interrupt */
|
||||
#define IMX9_IRQ_GPIO1_0 (IMX9_IRQ_EXTINT + 10) /* General Purpose Input/Output 1 interrupt 0 */
|
||||
#define IMX9_IRQ_GPIO1_1 (IMX9_IRQ_EXTINT + 11) /* General Purpose Input/Output 1 interrupt 1 */
|
||||
#define IMX9_IRQ_I3C1 (IMX9_IRQ_EXTINT + 12) /* Improved Inter-Integrated Circuit 1 interrupt */
|
||||
#define IMX9_IRQ_LPI2C1 (IMX9_IRQ_EXTINT + 13) /* Low Power Inter-Integrated Circuit module 1 */
|
||||
#define IMX9_IRQ_LPI2C2 (IMX9_IRQ_EXTINT + 14) /* Low Power Inter-Integrated Circuit module 2 */
|
||||
#define IMX9_IRQ_LPIT1 (IMX9_IRQ_EXTINT + 15) /* Low Power Periodic Interrupt Timer 1 */
|
||||
#define IMX9_IRQ_LPSPI1 (IMX9_IRQ_EXTINT + 16) /* Low Power Serial Peripheral Interface 1 */
|
||||
#define IMX9_IRQ_LPSPI2 (IMX9_IRQ_EXTINT + 17) /* Low Power Serial Peripheral Interface 2 */
|
||||
#define IMX9_IRQ_LPTMR1 (IMX9_IRQ_EXTINT + 18) /* Low Power Timer 1 */
|
||||
#define IMX9_IRQ_LPUART1 (IMX9_IRQ_EXTINT + 19) /* Low Power UART 1 */
|
||||
#define IMX9_IRQ_LPUART2 (IMX9_IRQ_EXTINT + 20) /* Low Power UART 2 */
|
||||
#define IMX9_IRQ_RESERVED37 (IMX9_IRQ_EXTINT + 21) /* AONMIX Sentinel MU0 SideA interrupt */
|
||||
#define IMX9_IRQ_RESERVED38 (IMX9_IRQ_EXTINT + 22) /* AONMIX Sentinel MU1 SideA interrupt */
|
||||
#define IMX9_IRQ_RESERVED39 (IMX9_IRQ_EXTINT + 23) /* AONMIX Sentinel MU2 SideA interrupt */
|
||||
#define IMX9_IRQ_RESERVED40 (IMX9_IRQ_EXTINT + 24) /* AONMIX Sentinel MU3 SideA interrupt */
|
||||
#define IMX9_IRQ_RESERVED41 (IMX9_IRQ_EXTINT + 25) /* AONMIX Sentinel MU4 SideA interrupt */
|
||||
#define IMX9_IRQ_RESERVED42 (IMX9_IRQ_EXTINT + 26) /* AONMIX Sentinel MU5 SideA interrupt */
|
||||
#define IMX9_IRQ_V2X_FH_APCH0 (IMX9_IRQ_EXTINT + 27) /* V2X-FH MU APCH0 (APP0) interrupt */
|
||||
#define IMX9_IRQ_V2X_FH_APHSM1 (IMX9_IRQ_EXTINT + 28) /* V2X-FH MU APHSM1 (HSM1) interrupt */
|
||||
#define IMX9_IRQ_TPM1 (IMX9_IRQ_EXTINT + 29) /* Timer PWM module 1 */
|
||||
#define IMX9_IRQ_TPM2 (IMX9_IRQ_EXTINT + 30) /* Timer PWM module 2 */
|
||||
#define IMX9_IRQ_WDOG1 (IMX9_IRQ_EXTINT + 31) /* Watchdog 1 Interrupt */
|
||||
#define IMX9_IRQ_WDOG2 (IMX9_IRQ_EXTINT + 32) /* Watchdog 2 Interrupt */
|
||||
#define IMX9_IRQ_TRDC_MGR_A (IMX9_IRQ_EXTINT + 33) /* AONMIX TRDC transfer error interrupt */
|
||||
#define IMX9_IRQ_SAI1 (IMX9_IRQ_EXTINT + 34) /* Serial Audio Interface 1 */
|
||||
#define IMX9_IRQ_RESERVED51 (IMX9_IRQ_EXTINT + 35) /* AONMIX M33 PS Error */
|
||||
#define IMX9_IRQ_RESERVED52 (IMX9_IRQ_EXTINT + 36) /* AONMIX M33 TCM Error interrupt */
|
||||
#define IMX9_IRQ_RESERVED53 (IMX9_IRQ_EXTINT + 37) /* M7MIX ECC Multi-bit error */
|
||||
#define IMX9_IRQ_CAN2 (IMX9_IRQ_EXTINT + 38) /* CAN2 interrupt */
|
||||
#define IMX9_IRQ_CAN2_ERROR (IMX9_IRQ_EXTINT + 39) /* CAN2 error interrupt */
|
||||
#define IMX9_IRQ_CAN3 (IMX9_IRQ_EXTINT + 40) /* CAN3 interrupt */
|
||||
#define IMX9_IRQ_CAN3_ERROR (IMX9_IRQ_EXTINT + 41) /* CAN3 error interrupt */
|
||||
#define IMX9_IRQ_CAN4 (IMX9_IRQ_EXTINT + 42) /* CAN4 interrupt */
|
||||
#define IMX9_IRQ_CAN4_ERROR (IMX9_IRQ_EXTINT + 43) /* CAN4 error interrupt */
|
||||
#define IMX9_IRQ_CAN5 (IMX9_IRQ_EXTINT + 44) /* CAN5 interrupt */
|
||||
#define IMX9_IRQ_CAN5_ERROR (IMX9_IRQ_EXTINT + 45) /* CAN5 error interrupt */
|
||||
#define IMX9_IRQ_FLEXIO1 (IMX9_IRQ_EXTINT + 46) /* Flexible IO 1 interrupt */
|
||||
#define IMX9_IRQ_FLEXIO2 (IMX9_IRQ_EXTINT + 47) /* Flexible IO 2 interrupt */
|
||||
#define IMX9_IRQ_FlexSPI1 (IMX9_IRQ_EXTINT + 48) /* FlexSPI controller interface interrupt 1 */
|
||||
#define IMX9_IRQ_GPIO2_0 (IMX9_IRQ_EXTINT + 49) /* General Purpose Input/Output 2 interrupt 0 */
|
||||
#define IMX9_IRQ_GPIO2_1 (IMX9_IRQ_EXTINT + 50) /* General Purpose Input/Output 2 interrupt 1 */
|
||||
#define IMX9_IRQ_GPIO3_0 (IMX9_IRQ_EXTINT + 51) /* General Purpose Input/Output 3 interrupt 0 */
|
||||
#define IMX9_IRQ_GPIO3_1 (IMX9_IRQ_EXTINT + 52) /* General Purpose Input/Output 3 interrupt 1 */
|
||||
#define IMX9_IRQ_GPIO4_0 (IMX9_IRQ_EXTINT + 53) /* General Purpose Input/Output 4 interrupt 0 */
|
||||
#define IMX9_IRQ_GPIO4_1 (IMX9_IRQ_EXTINT + 54) /* General Purpose Input/Output 4 interrupt 1 */
|
||||
#define IMX9_IRQ_GPIO5_0 (IMX9_IRQ_EXTINT + 55) /* General Purpose Input/Output 5 interrupt 0 */
|
||||
#define IMX9_IRQ_GPIO5_1 (IMX9_IRQ_EXTINT + 56) /* General Purpose Input/Output 5 interrupt 1 */
|
||||
#define IMX9_IRQ_I3C2 (IMX9_IRQ_EXTINT + 57) /* Improved Inter-Integrated Circuit 2 interrupt */
|
||||
#define IMX9_IRQ_LPI2C3 (IMX9_IRQ_EXTINT + 58) /* Low Power Inter-Integrated Circuit module 3 */
|
||||
#define IMX9_IRQ_LPI2C4 (IMX9_IRQ_EXTINT + 59) /* Low Power Inter-Integrated Circuit module 4 */
|
||||
#define IMX9_IRQ_LPIT2 (IMX9_IRQ_EXTINT + 60) /* Low Power Periodic Interrupt Timer 2 */
|
||||
#define IMX9_IRQ_LPSPI3 (IMX9_IRQ_EXTINT + 61) /* Low Power Serial Peripheral Interface 3 */
|
||||
#define IMX9_IRQ_LPSPI4 (IMX9_IRQ_EXTINT + 62) /* Low Power Serial Peripheral Interface 4 */
|
||||
#define IMX9_IRQ_LPTMR2 (IMX9_IRQ_EXTINT + 63) /* Low Power Timer 2 */
|
||||
#define IMX9_IRQ_LPUART3 (IMX9_IRQ_EXTINT + 64) /* Low Power UART 3 */
|
||||
#define IMX9_IRQ_LPUART4 (IMX9_IRQ_EXTINT + 65) /* Low Power UART 4 */
|
||||
#define IMX9_IRQ_LPUART5 (IMX9_IRQ_EXTINT + 66) /* Low Power UART 5 */
|
||||
#define IMX9_IRQ_LPUART6 (IMX9_IRQ_EXTINT + 67) /* Low Power UART 6 */
|
||||
#define IMX9_IRQ_LPUART7 (IMX9_IRQ_EXTINT + 68) /* Low Power UART 7 */
|
||||
#define IMX9_IRQ_LPUART8 (IMX9_IRQ_EXTINT + 69) /* Low Power UART 8 */
|
||||
#define IMX9_IRQ_RESERVED86 (IMX9_IRQ_EXTINT + 70) /* MTR Master error interrupt */
|
||||
#define IMX9_IRQ_RESERVED87 (IMX9_IRQ_EXTINT + 71) /* BBNSM Non-Secure interrupt */
|
||||
#define IMX9_IRQ_RESERVED88 (IMX9_IRQ_EXTINT + 72) /* System Counter compare interrupt */
|
||||
#define IMX9_IRQ_TPM3 (IMX9_IRQ_EXTINT + 73) /* Timer PWM module 3 */
|
||||
#define IMX9_IRQ_TPM4 (IMX9_IRQ_EXTINT + 74) /* Timer PWM module 4 */
|
||||
#define IMX9_IRQ_TPM5 (IMX9_IRQ_EXTINT + 75) /* Timer PWM module 5 */
|
||||
#define IMX9_IRQ_TPM6 (IMX9_IRQ_EXTINT + 76) /* Timer PWM module 6 */
|
||||
#define IMX9_IRQ_WDOG3 (IMX9_IRQ_EXTINT + 77) /* Watchdog 3 Interrupt */
|
||||
#define IMX9_IRQ_WDOG4 (IMX9_IRQ_EXTINT + 78) /* Watchdog 4 Interrupt */
|
||||
#define IMX9_IRQ_WDOG5 (IMX9_IRQ_EXTINT + 79) /* Watchdog 5 Interrupt */
|
||||
#define IMX9_IRQ_TMPSNS1_THR1 (IMX9_IRQ_EXTINT + 80) /* ANAMIX TempSensor non-secure interrupt from Threshold 1 */
|
||||
#define IMX9_IRQ_TMPSNS1_THR2 (IMX9_IRQ_EXTINT + 81) /* ANAMIX TempSensor non-secure interrupt from Threshold 2 */
|
||||
#define IMX9_IRQ_TMPSNS1_DRDY (IMX9_IRQ_EXTINT + 82) /* ANAMIX TempSensor non-secure data ready interrupt */
|
||||
#define IMX9_IRQ_TMPSNS2_THR1 (IMX9_IRQ_EXTINT + 83) /* CORTEXAMIX TempSensor non-secure interrupt from Threshold 1 */
|
||||
#define IMX9_IRQ_TMPSNS2_THR2 (IMX9_IRQ_EXTINT + 84) /* CORTEXAMIX TempSensor non-secure interrupt from Threshold 2 */
|
||||
#define IMX9_IRQ_TMPSNS2_DRDY (IMX9_IRQ_EXTINT + 85) /* CORTEXAMIX TempSensor non-secure data ready interrupt */
|
||||
#define IMX9_IRQ_uSDHC1 (IMX9_IRQ_EXTINT + 86) /* ultra Secure Digital Host Controller interrupt 1 */
|
||||
#define IMX9_IRQ_uSDHC2 (IMX9_IRQ_EXTINT + 87) /* ultra Secure Digital Host Controller interrupt 2 */
|
||||
#define IMX9_IRQ_RESERVED104 (IMX9_IRQ_EXTINT + 88) /* MEGAMIX TRDC transfer error interrupt */
|
||||
#define IMX9_IRQ_RESERVED105 (IMX9_IRQ_EXTINT + 89) /* NIC_WRAPPER TRDC transfer error interrupt */
|
||||
#define IMX9_IRQ_RESERVED106 (IMX9_IRQ_EXTINT + 90) /* NOCMIX TRDC transfer error interrupt */
|
||||
#define IMX9_IRQ_RESERVED107 (IMX9_IRQ_EXTINT + 91) /* DRAM controller Performance Monitor Interrupt */
|
||||
#define IMX9_IRQ_RESERVED108 (IMX9_IRQ_EXTINT + 92) /* DRAM controller Critical Interrupt */
|
||||
#define IMX9_IRQ_RESERVED109 (IMX9_IRQ_EXTINT + 93) /* DRAM Phy Critical Interrupt */
|
||||
#define IMX9_IRQ_RESERVED110 (IMX9_IRQ_EXTINT + 94) /* Reserved */
|
||||
#define IMX9_IRQ_DMA3_ERROR (IMX9_IRQ_EXTINT + 95) /* eDMA1 error interrupt */
|
||||
#define IMX9_IRQ_DMA3_0 (IMX9_IRQ_EXTINT + 96) /* eDMA1 channel 0 interrupt */
|
||||
#define IMX9_IRQ_DMA3_1 (IMX9_IRQ_EXTINT + 97) /* eDMA1 channel 1 interrupt */
|
||||
#define IMX9_IRQ_DMA3_2 (IMX9_IRQ_EXTINT + 98) /* eDMA1 channel 2 interrupt */
|
||||
#define IMX9_IRQ_DMA3_3 (IMX9_IRQ_EXTINT + 99) /* eDMA1 channel 3 interrupt */
|
||||
#define IMX9_IRQ_DMA3_4 (IMX9_IRQ_EXTINT + 100) /* eDMA1 channel 4 interrupt */
|
||||
#define IMX9_IRQ_DMA3_5 (IMX9_IRQ_EXTINT + 101) /* eDMA1 channel 5 interrupt */
|
||||
#define IMX9_IRQ_DMA3_6 (IMX9_IRQ_EXTINT + 102) /* eDMA1 channel 6 interrupt */
|
||||
#define IMX9_IRQ_DMA3_7 (IMX9_IRQ_EXTINT + 103) /* eDMA1 channel 7 interrupt */
|
||||
#define IMX9_IRQ_DMA3_8 (IMX9_IRQ_EXTINT + 104) /* eDMA1 channel 8 interrupt */
|
||||
#define IMX9_IRQ_DMA3_9 (IMX9_IRQ_EXTINT + 105) /* eDMA1 channel 9 interrupt */
|
||||
#define IMX9_IRQ_DMA3_10 (IMX9_IRQ_EXTINT + 106) /* eDMA1 channel 10 interrupt */
|
||||
#define IMX9_IRQ_DMA3_11 (IMX9_IRQ_EXTINT + 107) /* eDMA1 channel 11 interrupt */
|
||||
#define IMX9_IRQ_DMA3_12 (IMX9_IRQ_EXTINT + 108) /* eDMA1 channel 12 interrupt */
|
||||
#define IMX9_IRQ_DMA3_13 (IMX9_IRQ_EXTINT + 109) /* eDMA1 channel 13 interrupt */
|
||||
#define IMX9_IRQ_DMA3_14 (IMX9_IRQ_EXTINT + 110) /* eDMA1 channel 14 interrupt */
|
||||
#define IMX9_IRQ_DMA3_15 (IMX9_IRQ_EXTINT + 111) /* eDMA1 channel 15 interrupt */
|
||||
#define IMX9_IRQ_DMA3_16 (IMX9_IRQ_EXTINT + 112) /* eDMA1 channel 16 interrupt */
|
||||
#define IMX9_IRQ_DMA3_17 (IMX9_IRQ_EXTINT + 113) /* eDMA1 channel 17 interrupt */
|
||||
#define IMX9_IRQ_DMA3_18 (IMX9_IRQ_EXTINT + 114) /* eDMA1 channel 18 interrupt */
|
||||
#define IMX9_IRQ_DMA3_19 (IMX9_IRQ_EXTINT + 115) /* eDMA1 channel 19 interrupt */
|
||||
#define IMX9_IRQ_DMA3_20 (IMX9_IRQ_EXTINT + 116) /* eDMA1 channel 20 interrupt */
|
||||
#define IMX9_IRQ_DMA3_21 (IMX9_IRQ_EXTINT + 117) /* eDMA1 channel 21 interrupt */
|
||||
#define IMX9_IRQ_DMA3_22 (IMX9_IRQ_EXTINT + 118) /* eDMA1 channel 22 interrupt */
|
||||
#define IMX9_IRQ_DMA3_23 (IMX9_IRQ_EXTINT + 119) /* eDMA1 channel 23 interrupt */
|
||||
#define IMX9_IRQ_DMA3_24 (IMX9_IRQ_EXTINT + 120) /* eDMA1 channel 24 interrupt */
|
||||
#define IMX9_IRQ_DMA3_25 (IMX9_IRQ_EXTINT + 121) /* eDMA1 channel 25 interrupt */
|
||||
#define IMX9_IRQ_DMA3_26 (IMX9_IRQ_EXTINT + 122) /* eDMA1 channel 26 interrupt */
|
||||
#define IMX9_IRQ_DMA3_27 (IMX9_IRQ_EXTINT + 123) /* eDMA1 channel 27 interrupt */
|
||||
#define IMX9_IRQ_DMA3_28 (IMX9_IRQ_EXTINT + 124) /* eDMA1 channel 28 interrupt */
|
||||
#define IMX9_IRQ_DMA3_29 (IMX9_IRQ_EXTINT + 125) /* eDMA1 channel 29 interrupt */
|
||||
#define IMX9_IRQ_DMA3_30 (IMX9_IRQ_EXTINT + 126) /* eDMA1 channel 30 interrupt */
|
||||
#define IMX9_IRQ_DMA5_2_ERROR (IMX9_IRQ_EXTINT + 127) /* eDMA2 error interrupt */
|
||||
#define IMX9_IRQ_DMA5_2_0_1 (IMX9_IRQ_EXTINT + 128) /* eDMA2 channel 0/1 interrupt */
|
||||
#define IMX9_IRQ_DMA5_2_2_3 (IMX9_IRQ_EXTINT + 129) /* eDMA2 channel 2/3 interrupt */
|
||||
#define IMX9_IRQ_DMA5_2_4_5 (IMX9_IRQ_EXTINT + 130) /* eDMA2 channel 4/5 interrupt */
|
||||
#define IMX9_IRQ_DMA5_2_6_7 (IMX9_IRQ_EXTINT + 131) /* eDMA2 channel 6/7 interrupt */
|
||||
#define IMX9_IRQ_DMA5_2_8_9 (IMX9_IRQ_EXTINT + 132) /* eDMA2 channel 8/9 interrupt */
|
||||
#define IMX9_IRQ_DMA5_2_10_11 (IMX9_IRQ_EXTINT + 133) /* eDMA2 channel 10/11 interrupt */
|
||||
#define IMX9_IRQ_DMA5_2_12_13 (IMX9_IRQ_EXTINT + 134) /* eDMA2 channel 12/13 interrupt */
|
||||
#define IMX9_IRQ_DMA5_2_14_15 (IMX9_IRQ_EXTINT + 135) /* eDMA2 channel 14/15 interrupt */
|
||||
#define IMX9_IRQ_DMA5_2_16_17 (IMX9_IRQ_EXTINT + 136) /* eDMA2 channel 16/17 interrupt */
|
||||
#define IMX9_IRQ_DMA5_2_18_19 (IMX9_IRQ_EXTINT + 137) /* eDMA2 channel 18/19 interrupt */
|
||||
#define IMX9_IRQ_DMA5_2_20_21 (IMX9_IRQ_EXTINT + 138) /* eDMA2 channel 20/21 interrupt */
|
||||
#define IMX9_IRQ_DMA5_2_22_23 (IMX9_IRQ_EXTINT + 139) /* eDMA2 channel 22/23 interrupt */
|
||||
#define IMX9_IRQ_DMA5_2_24_25 (IMX9_IRQ_EXTINT + 140) /* eDMA2 channel 24/25 interrupt */
|
||||
#define IMX9_IRQ_DMA5_2_26_27 (IMX9_IRQ_EXTINT + 141) /* eDMA2 channel 26/27 interrupt */
|
||||
#define IMX9_IRQ_DMA5_2_28_29 (IMX9_IRQ_EXTINT + 142) /* eDMA2 channel 28/29 interrupt */
|
||||
#define IMX9_IRQ_DMA5_2_30_31 (IMX9_IRQ_EXTINT + 143) /* eDMA2 channel 30/31 interrupt */
|
||||
#define IMX9_IRQ_DMA5_2_32_33 (IMX9_IRQ_EXTINT + 144) /* eDMA2 channel 32/33 interrupt */
|
||||
#define IMX9_IRQ_DMA5_2_34_35 (IMX9_IRQ_EXTINT + 145) /* eDMA2 channel 34/35 interrupt */
|
||||
#define IMX9_IRQ_DMA5_2_36_37 (IMX9_IRQ_EXTINT + 146) /* eDMA2 channel 36/37 interrupt */
|
||||
#define IMX9_IRQ_DMA5_2_38_39 (IMX9_IRQ_EXTINT + 147) /* eDMA2 channel 38/39 interrupt */
|
||||
#define IMX9_IRQ_DMA5_2_40_41 (IMX9_IRQ_EXTINT + 148) /* eDMA2 channel 40/41 interrupt */
|
||||
#define IMX9_IRQ_DMA5_2_42_43 (IMX9_IRQ_EXTINT + 149) /* eDMA2 channel 42/43 interrupt */
|
||||
#define IMX9_IRQ_DMA5_2_44_45 (IMX9_IRQ_EXTINT + 150) /* eDMA2 channel 44/45 interrupt */
|
||||
#define IMX9_IRQ_DMA5_2_46_47 (IMX9_IRQ_EXTINT + 151) /* eDMA2 channel 46/47 interrupt */
|
||||
#define IMX9_IRQ_DMA5_2_48_49 (IMX9_IRQ_EXTINT + 152) /* eDMA2 channel 48/49 interrupt */
|
||||
#define IMX9_IRQ_DMA5_2_50_51 (IMX9_IRQ_EXTINT + 153) /* eDMA2 channel 50/51 interrupt */
|
||||
#define IMX9_IRQ_DMA5_2_52_53 (IMX9_IRQ_EXTINT + 154) /* eDMA2 channel 52/53 interrupt */
|
||||
#define IMX9_IRQ_DMA5_2_54_55 (IMX9_IRQ_EXTINT + 155) /* eDMA2 channel 54/55 interrupt */
|
||||
#define IMX9_IRQ_DMA5_2_56_57 (IMX9_IRQ_EXTINT + 156) /* eDMA2 channel 56/57 interrupt */
|
||||
#define IMX9_IRQ_DMA5_2_58_59 (IMX9_IRQ_EXTINT + 157) /* eDMA2 channel 58/59 interrupt */
|
||||
#define IMX9_IRQ_DMA5_2_60_61 (IMX9_IRQ_EXTINT + 158) /* eDMA2 channel 60/61 interrupt */
|
||||
#define IMX9_IRQ_DMA5_2_62_63 (IMX9_IRQ_EXTINT + 159) /* eDMA2 channel 62/63 interrupt */
|
||||
#define IMX9_IRQ_RESERVED176 (IMX9_IRQ_EXTINT + 160) /* Sentinel Group 1 reset source if no s500 reference clock is detected. Output synchronized to 32khz clk. */
|
||||
#define IMX9_IRQ_RESERVED177 (IMX9_IRQ_EXTINT + 161) /* Sentinel Group 2 reset source s500 reference clock is not detected or too slow. Output synchronized to ref1_clk. */
|
||||
#define IMX9_IRQ_RESERVED178 (IMX9_IRQ_EXTINT + 162) /* Sentinel Group 2 reset source s500 reference clock is not detected or too slow. Output synchronized to ref1_clk. */
|
||||
#define IMX9_IRQ_RESERVED179 (IMX9_IRQ_EXTINT + 163) /* JTAGSW DAP MDM-AP SRC reset source */
|
||||
#define IMX9_IRQ_RESERVED180 (IMX9_IRQ_EXTINT + 164) /* JTAGC SRC reset source */
|
||||
#define IMX9_IRQ_RESERVED181 (IMX9_IRQ_EXTINT + 165) /* CM33 SYSREQRST SRC reset source */
|
||||
#define IMX9_IRQ_RESERVED182 (IMX9_IRQ_EXTINT + 166) /* CM33 LOCKUP SRC reset source */
|
||||
#define IMX9_IRQ_RESERVED183 (IMX9_IRQ_EXTINT + 167) /* CM7 SYSREQRST SRC reset source */
|
||||
#define IMX9_IRQ_RESERVED184 (IMX9_IRQ_EXTINT + 168) /* CM7 LOCKUP SRC reset source */
|
||||
#define IMX9_IRQ_SAI2 (IMX9_IRQ_EXTINT + 169) /* Serial Audio Interface 2 */
|
||||
#define IMX9_IRQ_SAI3 (IMX9_IRQ_EXTINT + 170) /* Serial Audio Interface 3 */
|
||||
#define IMX9_IRQ_SAI4 (IMX9_IRQ_EXTINT + 171) /* Serial Audio Interface 4 */
|
||||
#define IMX9_IRQ_SAI5 (IMX9_IRQ_EXTINT + 172) /* Serial Audio Interface 5 */
|
||||
#define IMX9_IRQ_RESERVED189 (IMX9_IRQ_EXTINT + 173) /* USB-1 Wake-up Interrupt */
|
||||
#define IMX9_IRQ_RESERVED190 (IMX9_IRQ_EXTINT + 174) /* USB-2 Wake-up Interrupt */
|
||||
#define IMX9_IRQ_USB1 (IMX9_IRQ_EXTINT + 175) /* USB-1 Interrupt */
|
||||
#define IMX9_IRQ_USB2 (IMX9_IRQ_EXTINT + 176) /* USB-2 Interrupt */
|
||||
#define IMX9_IRQ_LPSPI5 (IMX9_IRQ_EXTINT + 177) /* Low Power Serial Peripheral Interface 5 */
|
||||
#define IMX9_IRQ_LPSPI6 (IMX9_IRQ_EXTINT + 178) /* Low Power Serial Peripheral Interface 6 */
|
||||
#define IMX9_IRQ_LPSPI7 (IMX9_IRQ_EXTINT + 179) /* Low Power Serial Peripheral Interface 7 */
|
||||
#define IMX9_IRQ_LPSPI8 (IMX9_IRQ_EXTINT + 180) /* Low Power Serial Peripheral Interface 8 */
|
||||
#define IMX9_IRQ_LPI2C5 (IMX9_IRQ_EXTINT + 181) /* Low Power Inter-Integrated Circuit module 5 */
|
||||
#define IMX9_IRQ_LPI2C6 (IMX9_IRQ_EXTINT + 182) /* Low Power Inter-Integrated Circuit module 6 */
|
||||
#define IMX9_IRQ_LPI2C7 (IMX9_IRQ_EXTINT + 183) /* Low Power Inter-Integrated Circuit module 7 */
|
||||
#define IMX9_IRQ_LPI2C8 (IMX9_IRQ_EXTINT + 184) /* Low Power Inter-Integrated Circuit module 8 */
|
||||
#define IMX9_IRQ_PDM_HWVAD_ERROR (IMX9_IRQ_EXTINT + 185) /* PDM interrupt */
|
||||
#define IMX9_IRQ_PDM_HWVAD_EVENT (IMX9_IRQ_EXTINT + 186) /* PDM interrupt */
|
||||
#define IMX9_IRQ_PDM_ERROR (IMX9_IRQ_EXTINT + 187) /* PDM interrupt */
|
||||
#define IMX9_IRQ_PDM_EVENT (IMX9_IRQ_EXTINT + 188) /* PDM interrupt */
|
||||
#define IMX9_IRQ_RESERVED205 (IMX9_IRQ_EXTINT + 189) /* AUDIO XCVR interrupt */
|
||||
#define IMX9_IRQ_RESERVED206 (IMX9_IRQ_EXTINT + 190) /* AUDIO XCVR interrupt */
|
||||
#define IMX9_IRQ_uSDHC3 (IMX9_IRQ_EXTINT + 191) /* ultra Secure Digital Host Controller interrupt 3 */
|
||||
#define IMX9_IRQ_RESERVED208 (IMX9_IRQ_EXTINT + 192) /* OCRAM MECC interrupt */
|
||||
#define IMX9_IRQ_RESERVED209 (IMX9_IRQ_EXTINT + 193) /* OCRAM MECC interrupt */
|
||||
#define IMX9_IRQ_RESERVED210 (IMX9_IRQ_EXTINT + 194) /* CM33 MCM interrupt */
|
||||
#define IMX9_IRQ_RESERVED211 (IMX9_IRQ_EXTINT + 195) /* ANAMIX SFA interrupt */
|
||||
#define IMX9_IRQ_RESERVED212 (IMX9_IRQ_EXTINT + 196) /* GIC700 Fault */
|
||||
#define IMX9_IRQ_RESERVED213 (IMX9_IRQ_EXTINT + 197) /* GIC700 Error */
|
||||
#define IMX9_IRQ_RESERVED214 (IMX9_IRQ_EXTINT + 198) /* GIC700 PMU Counter Overflow */
|
||||
#define IMX9_IRQ_ADC_ER (IMX9_IRQ_EXTINT + 199) /* ADC interrupt */
|
||||
#define IMX9_IRQ_ADC_WD (IMX9_IRQ_EXTINT + 200) /* ADC interrupt */
|
||||
#define IMX9_IRQ_ADC_EOC (IMX9_IRQ_EXTINT + 201) /* ADC interrupt */
|
||||
#define IMX9_IRQ_RESERVED218 (IMX9_IRQ_EXTINT + 202) /* s500 glue logic IRQ */
|
||||
#define IMX9_IRQ_RESERVED219 (IMX9_IRQ_EXTINT + 203) /* I3C1 wakeup irq after double sync */
|
||||
#define IMX9_IRQ_RESERVED220 (IMX9_IRQ_EXTINT + 204) /* I3C2 wakeup irq after double sync */
|
||||
#define IMX9_IRQ_MU5_A (IMX9_IRQ_EXTINT + 205) /* AONMIX MU Ored of all (tx,rx,gp,core,murip) interrupt to MUA */
|
||||
#define IMX9_IRQ_MU6_A (IMX9_IRQ_EXTINT + 206) /* AONMIX MU Ored of all (tx,rx,gp,core,murip) interrupt to MUA */
|
||||
#define IMX9_IRQ_MU7_B (IMX9_IRQ_EXTINT + 207) /* WAKEUPMIX MU Ored of all (tx,rx,gp,core,murip) interrupt to MUB */
|
||||
#define IMX9_IRQ_MU8_B (IMX9_IRQ_EXTINT + 208) /* WAKEUPMIX MU Ored of all (tx,rx,gp,core,murip) interrupt to MUB */
|
||||
#define IMX9_IRQ_RESERVED225 (IMX9_IRQ_EXTINT + 209) /* WAKEUPMIX XSPI Responder */
|
||||
#define IMX9_IRQ_RESERVED226 (IMX9_IRQ_EXTINT + 210) /* AONMIX FCCU Interrupt Reaction 0 */
|
||||
#define IMX9_IRQ_RESERVED227 (IMX9_IRQ_EXTINT + 211) /* AONMIX FCCU Interrupt Reaction 1 */
|
||||
#define IMX9_IRQ_RESERVED228 (IMX9_IRQ_EXTINT + 212) /* AONMIX FCCU Interrupt Reaction 2 */
|
||||
#define IMX9_IRQ_RESERVED229 (IMX9_IRQ_EXTINT + 213) /* AONMIX STCU Selftest end Interrupt */
|
||||
#define IMX9_IRQ_DISP_IRQSTEER0 (IMX9_IRQ_EXTINT + 214) /* DISPLAYMIX IRQSTEER 0 */
|
||||
#define IMX9_IRQ_DISP_IRQSTEER1 (IMX9_IRQ_EXTINT + 215) /* DISPLAYMIX IRQSTEER 1 */
|
||||
#define IMX9_IRQ_DISP_IRQSTEER2 (IMX9_IRQ_EXTINT + 216) /* DISPLAYMIX IRQSTEER 2 */
|
||||
#define IMX9_IRQ_DISP_IRQSTEER3 (IMX9_IRQ_EXTINT + 217) /* DISPLAYMIX IRQSTEER 3 */
|
||||
#define IMX9_IRQ_DISP_IRQSTEER4 (IMX9_IRQ_EXTINT + 218) /* DISPLAYMIX IRQSTEER 4 */
|
||||
#define IMX9_IRQ_DISP_IRQSTEER7 (IMX9_IRQ_EXTINT + 219) /* DISPLAYMIX IRQSTEER 7 */
|
||||
#define IMX9_IRQ_RESERVED236 (IMX9_IRQ_EXTINT + 220) /* CAMERAMIX MU Ored of all (tx,rx,gp,core,murip) interrupt to MUA */
|
||||
#define IMX9_IRQ_ISI (IMX9_IRQ_EXTINT + 221) /* CAMERAMIX ISI interrupt Channel 0 */
|
||||
#define IMX9_IRQ_RESERVED238 (IMX9_IRQ_EXTINT + 222) /* ISP Processing Interrupt - Context 0 */
|
||||
#define IMX9_IRQ_RESERVED239 (IMX9_IRQ_EXTINT + 223) /* M7MIX MCM interrupt */
|
||||
#define IMX9_IRQ_IRQSTEER_0 (IMX9_IRQ_EXTINT + 224) /* IRQSTEER0 interrupt */
|
||||
#define IMX9_IRQ_IRQSTEER_1 (IMX9_IRQ_EXTINT + 225) /* IRQSTEER1 interrupt */
|
||||
#define IMX9_IRQ_IRQSTEER_2 (IMX9_IRQ_EXTINT + 226) /* IRQSTEER2 interrupt */
|
||||
#define IMX9_IRQ_IRQSTEER_3 (IMX9_IRQ_EXTINT + 227) /* IRQSTEER3 interrupt */
|
||||
#define IMX9_IRQ_IRQSTEER_4 (IMX9_IRQ_EXTINT + 228) /* IRQSTEER4 interrupt */
|
||||
#define IMX9_IRQ_IRQSTEER_5 (IMX9_IRQ_EXTINT + 229) /* IRQSTEER5 interrupt */
|
||||
#define IMX9_IRQ_IRQSTEER_6 (IMX9_IRQ_EXTINT + 230) /* IRQSTEER6 interrupt */
|
||||
#define IMX9_IRQ_IRQSTEER_7 (IMX9_IRQ_EXTINT + 231) /* IRQSTEER7 interrupt */
|
||||
#define IMX9_IRQ_IRQSTEER_8 (IMX9_IRQ_EXTINT + 232) /* IRQSTEER8 interrupt */
|
||||
#define IMX9_IRQ_IRQSTEER_9 (IMX9_IRQ_EXTINT + 233) /* IRQSTEER9 interrupt */
|
||||
#define IMX9_IRQ_MU1_A (IMX9_IRQ_EXTINT + 234) /* AONMIX MU Ored of all (tx,rx,gp,core,murip) interrupt to MUA */
|
||||
#define IMX9_IRQ_MU1_B (IMX9_IRQ_EXTINT + 235) /* AONMIX MU Ored of all (tx,rx,gp,core,murip) interrupt to MUB */
|
||||
#define IMX9_IRQ_MU2_A (IMX9_IRQ_EXTINT + 236) /* AONMIX MU Ored of all (tx,rx,gp,core,murip) interrupt to MUA */
|
||||
#define IMX9_IRQ_MU2_B (IMX9_IRQ_EXTINT + 237) /* AONMIX MU Ored of all (tx,rx,gp,core,murip) interrupt to MUB */
|
||||
#define IMX9_IRQ_MU3_A (IMX9_IRQ_EXTINT + 238) /* AONMIX MU Ored of all (tx,rx,gp,core,murip) interrupt to MUA */
|
||||
#define IMX9_IRQ_MU3_B (IMX9_IRQ_EXTINT + 239) /* AONMIX MU Ored of all (tx,rx,gp,core,murip) interrupt to MUB */
|
||||
#define IMX9_IRQ_MU4_A (IMX9_IRQ_EXTINT + 240) /* AONMIX MU Ored of all (tx,rx,gp,core,murip) interrupt to MUA */
|
||||
#define IMX9_IRQ_MU4_B (IMX9_IRQ_EXTINT + 241) /* AONMIX MU Ored of all (tx,rx,gp,core,murip) interrupt to MUB */
|
||||
#define IMX9_IRQ_MU5_B (IMX9_IRQ_EXTINT + 242) /* AONMIX MU Ored of all (tx,rx,gp,core,murip) interrupt to MUB */
|
||||
#define IMX9_IRQ_MU6_B (IMX9_IRQ_EXTINT + 243) /* AONMIX MU Ored of all (tx,rx,gp,core,murip) interrupt to MUB */
|
||||
#define IMX9_IRQ_MU7_A (IMX9_IRQ_EXTINT + 244) /* WAKEUPMIX MU Ored of all (tx,rx,gp,core,murip) interrupt to MUA */
|
||||
#define IMX9_IRQ_MU8_A (IMX9_IRQ_EXTINT + 245) /* WAKEUPMIX MU Ored of all (tx,rx,gp,core,murip) interrupt to MUA */
|
||||
#define IMX9_IRQ_MSGINTR1 (IMX9_IRQ_EXTINT + 246) /* MSGINTR Instance 1, Interrupt */
|
||||
#define IMX9_IRQ_MSGINTR2 (IMX9_IRQ_EXTINT + 247) /* MSGINTR Instance 2, Interrupts */
|
||||
#define IMX9_IRQ_RESERVED264 (IMX9_IRQ_EXTINT + 248) /* V2X-FH MU APCH1 (APP1) interrupt */
|
||||
#define IMX9_IRQ_RESERVED265 (IMX9_IRQ_EXTINT + 249) /* V2X-FH MU APHSM2 (HSM2) interrupt */
|
||||
#define IMX9_IRQ_RESERVED266 (IMX9_IRQ_EXTINT + 250) /* CAMERAMIX TRDC transfer error interrupt */
|
||||
#define IMX9_IRQ_RESERVED267 (IMX9_IRQ_EXTINT + 251) /* DISPLAYMIX TRDC transfer error interrupt */
|
||||
#define IMX9_IRQ_RESERVED268 (IMX9_IRQ_EXTINT + 252) /* NETCMIX TRDC transfer error interrupt */
|
||||
#define IMX9_IRQ_RESERVED269 (IMX9_IRQ_EXTINT + 253) /* GPUMIX TRDC transfer error interrupt */
|
||||
#define IMX9_IRQ_RESERVED270 (IMX9_IRQ_EXTINT + 254) /* HSIOMIX TRDC transfer error interrupt */
|
||||
#define IMX9_IRQ_RESERVED271 (IMX9_IRQ_EXTINT + 255) /* VPUMIX TRDC transfer error interrupt */
|
||||
#define IMX9_IRQ_RESERVED272 (IMX9_IRQ_EXTINT + 256) /* AONMIX ERM Single bit corrected ECC Error */
|
||||
#define IMX9_IRQ_RESERVED273 (IMX9_IRQ_EXTINT + 257) /* M7MIX ERM Single bit corrected ECC Error */
|
||||
#define IMX9_IRQ_RESERVED274 (IMX9_IRQ_EXTINT + 258) /* WAKEUPMIX ERM Single bit corrected ECC Error */
|
||||
#define IMX9_IRQ_RESERVED275 (IMX9_IRQ_EXTINT + 259) /* NPUMIX ERM Single bit corrected ECC Error */
|
||||
#define IMX9_IRQ_RESERVED276 (IMX9_IRQ_EXTINT + 260) /* WAKEUPMIX ACP EDMA error interrupt */
|
||||
#define IMX9_IRQ_RESERVED277 (IMX9_IRQ_EXTINT + 261) /* OCRAM_C ECC multiple bit or address error */
|
||||
#define IMX9_IRQ_RESERVED278 (IMX9_IRQ_EXTINT + 262) /* CAMERAMIX Cortex-M0+ Cache write-buffer error */
|
||||
#define IMX9_IRQ_RESERVED279 (IMX9_IRQ_EXTINT + 263) /* CAMERAMIX Cortex-M0+ Cache data parity error */
|
||||
#define IMX9_IRQ_RESERVED280 (IMX9_IRQ_EXTINT + 264) /* V2X-FH MU APSHE (SHE) interrupt */
|
||||
#define IMX9_IRQ_RESERVED281 (IMX9_IRQ_EXTINT + 265) /* V2X-FH MU SCU/APDEBUG (DEBUG) interrupt */
|
||||
#define IMX9_IRQ_DMA5_3_0_1 (IMX9_IRQ_EXTINT + 266) /* eDMA3 channel 0/1 interrupt */
|
||||
#define IMX9_IRQ_DMA5_3_2_3 (IMX9_IRQ_EXTINT + 267) /* eDMA3 channel 2/3 interrupt */
|
||||
#define IMX9_IRQ_DMA5_3_4_5 (IMX9_IRQ_EXTINT + 268) /* eDMA3 channel 4/5 interrupt */
|
||||
#define IMX9_IRQ_DMA5_3_6_7 (IMX9_IRQ_EXTINT + 269) /* eDMA3 channel 6/7 interrupt */
|
||||
#define IMX9_IRQ_DMA5_3_8_9 (IMX9_IRQ_EXTINT + 270) /* eDMA3 channel 8/9 interrupt */
|
||||
#define IMX9_IRQ_DMA5_3_10_11 (IMX9_IRQ_EXTINT + 271) /* eDMA3 channel 10/11 interrupt */
|
||||
#define IMX9_IRQ_DMA5_3_12_13 (IMX9_IRQ_EXTINT + 272) /* eDMA3 channel 12/13 interrupt */
|
||||
#define IMX9_IRQ_DMA5_3_14_15 (IMX9_IRQ_EXTINT + 273) /* eDMA3 channel 14/15 interrupt */
|
||||
#define IMX9_IRQ_DMA5_3_16_17 (IMX9_IRQ_EXTINT + 274) /* eDMA3 channel 16/17 interrupt */
|
||||
#define IMX9_IRQ_DMA5_3_18_19 (IMX9_IRQ_EXTINT + 275) /* eDMA3 channel 18/19 interrupt */
|
||||
#define IMX9_IRQ_DMA5_3_20_21 (IMX9_IRQ_EXTINT + 276) /* eDMA3 channel 20/21 interrupt */
|
||||
#define IMX9_IRQ_DMA5_3_22_23 (IMX9_IRQ_EXTINT + 277) /* eDMA3 channel 22/23 interrupt */
|
||||
#define IMX9_IRQ_DMA5_3_24_25 (IMX9_IRQ_EXTINT + 278) /* eDMA3 channel 24/25 interrupt */
|
||||
#define IMX9_IRQ_DMA5_3_26_27 (IMX9_IRQ_EXTINT + 279) /* eDMA3 channel 26/27 interrupt */
|
||||
#define IMX9_IRQ_DMA5_3_28_29 (IMX9_IRQ_EXTINT + 280) /* eDMA3 channel 29/29 interrupt */
|
||||
#define IMX9_IRQ_DMA5_3_30_31 (IMX9_IRQ_EXTINT + 281) /* eDMA3 channel 30/31 interrupt */
|
||||
#define IMX9_IRQ_DMA5_3_32_33 (IMX9_IRQ_EXTINT + 282) /* eDMA3 channel 32/33 interrupt */
|
||||
#define IMX9_IRQ_DMA5_3_34_35 (IMX9_IRQ_EXTINT + 283) /* eDMA3 channel 34/35 interrupt */
|
||||
#define IMX9_IRQ_DMA5_3_36_37 (IMX9_IRQ_EXTINT + 284) /* eDMA3 channel 36/37 interrupt */
|
||||
#define IMX9_IRQ_DMA5_3_38_39 (IMX9_IRQ_EXTINT + 285) /* eDMA3 channel 38/39 interrupt */
|
||||
#define IMX9_IRQ_DMA5_3_40_41 (IMX9_IRQ_EXTINT + 286) /* eDMA3 channel 40/41 interrupt */
|
||||
#define IMX9_IRQ_DMA5_3_42_43 (IMX9_IRQ_EXTINT + 287) /* eDMA3 channel 42/43 interrupt */
|
||||
#define IMX9_IRQ_DMA5_3_44_45 (IMX9_IRQ_EXTINT + 288) /* eDMA3 channel 44/45 interrupt */
|
||||
#define IMX9_IRQ_DMA5_3_46_47 (IMX9_IRQ_EXTINT + 289) /* eDMA3 channel 46/47 interrupt */
|
||||
#define IMX9_IRQ_DMA5_3_48_49 (IMX9_IRQ_EXTINT + 290) /* eDMA3 channel 48/49 interrupt */
|
||||
#define IMX9_IRQ_DMA5_3_50_51 (IMX9_IRQ_EXTINT + 291) /* eDMA3 channel 50/51 interrupt */
|
||||
#define IMX9_IRQ_DMA5_3_52_53 (IMX9_IRQ_EXTINT + 292) /* eDMA3 channel 52/53 interrupt */
|
||||
#define IMX9_IRQ_DMA5_3_54_55 (IMX9_IRQ_EXTINT + 293) /* eDMA3 channel 54/55 interrupt */
|
||||
#define IMX9_IRQ_DMA5_3_56_57 (IMX9_IRQ_EXTINT + 294) /* eDMA3 channel 56/57 interrupt */
|
||||
#define IMX9_IRQ_DMA5_3_58_59 (IMX9_IRQ_EXTINT + 295) /* eDMA3 channel 58/59 interrupt */
|
||||
#define IMX9_IRQ_DMA5_3_60_61 (IMX9_IRQ_EXTINT + 296) /* eDMA3 channel 60/61 interrupt */
|
||||
#define IMX9_IRQ_DMA5_3_62_63 (IMX9_IRQ_EXTINT + 297) /* eDMA3 channel 62/63 interrupt */
|
||||
#define IMX9_IRQ_RESERVED314 (IMX9_IRQ_EXTINT + 298) /* GPUMIX GPU Interrupt */
|
||||
#define IMX9_IRQ_RESERVED315 (IMX9_IRQ_EXTINT + 299) /* GPUMIX Job Interrupt */
|
||||
#define IMX9_IRQ_RESERVED316 (IMX9_IRQ_EXTINT + 300) /* GPUMIX MMU Interrupt */
|
||||
#define IMX9_IRQ_RESERVED317 (IMX9_IRQ_EXTINT + 301) /* Reserved INTERRUPT */
|
||||
#define IMX9_IRQ_RESERVED318 (IMX9_IRQ_EXTINT + 302) /* Reserved interrupt */
|
||||
#define IMX9_IRQ_RESERVED319 (IMX9_IRQ_EXTINT + 303) /* Reserved interrupt */
|
||||
#define IMX9_IRQ_RESERVED320 (IMX9_IRQ_EXTINT + 304) /* Reserved interrupt */
|
||||
#define IMX9_IRQ_RESERVED321 (IMX9_IRQ_EXTINT + 305) /* Reserved interrupt */
|
||||
#define IMX9_IRQ_RESERVED322 (IMX9_IRQ_EXTINT + 306) /* Reserved interrupt */
|
||||
#define IMX9_IRQ_RESERVED323 (IMX9_IRQ_EXTINT + 307) /* Reserved interrupt */
|
||||
#define IMX9_IRQ_RESERVED324 (IMX9_IRQ_EXTINT + 308) /* Reserved interrupt */
|
||||
#define IMX9_IRQ_RESERVED325 (IMX9_IRQ_EXTINT + 309) /* Reserved interrupt */
|
||||
#define IMX9_IRQ_RESERVED326 (IMX9_IRQ_EXTINT + 310) /* Reserved interrupt */
|
||||
#define IMX9_IRQ_RESERVED327 (IMX9_IRQ_EXTINT + 311) /* Reserved interrupt */
|
||||
#define IMX9_IRQ_RESERVED328 (IMX9_IRQ_EXTINT + 312) /* Reserved interrupt */
|
||||
#define IMX9_IRQ_RESERVED329 (IMX9_IRQ_EXTINT + 313) /* Reserved interrupt */
|
||||
#define IMX9_IRQ_RESERVED330 (IMX9_IRQ_EXTINT + 314) /* NETC iEPRC PCI INT */
|
||||
#define IMX9_IRQ_RESERVED331 (IMX9_IRQ_EXTINT + 315) /* NETC iEPRC PCI INT */
|
||||
#define IMX9_IRQ_RESERVED332 (IMX9_IRQ_EXTINT + 316) /* PCIe Controller 1 INTA */
|
||||
#define IMX9_IRQ_RESERVED333 (IMX9_IRQ_EXTINT + 317) /* PCIe Controller 1 INTB */
|
||||
#define IMX9_IRQ_RESERVED334 (IMX9_IRQ_EXTINT + 318) /* PCIe Controller 1 INTC */
|
||||
#define IMX9_IRQ_RESERVED335 (IMX9_IRQ_EXTINT + 319) /* PCIe Controller 1 INTD */
|
||||
#define IMX9_IRQ_RESERVED336 (IMX9_IRQ_EXTINT + 320) /* PCIe interrupts */
|
||||
#define IMX9_IRQ_RESERVED337 (IMX9_IRQ_EXTINT + 321) /* PCIe Controller EDMA channel interrupt */
|
||||
#define IMX9_IRQ_RESERVED338 (IMX9_IRQ_EXTINT + 322) /* PCIe Controller 1 INTA */
|
||||
#define IMX9_IRQ_RESERVED339 (IMX9_IRQ_EXTINT + 323) /* PCIe Controller 1 INTB */
|
||||
#define IMX9_IRQ_RESERVED340 (IMX9_IRQ_EXTINT + 324) /* PCIe Controller 1 INTC */
|
||||
#define IMX9_IRQ_RESERVED341 (IMX9_IRQ_EXTINT + 325) /* PCIe Controller 1 INTD */
|
||||
#define IMX9_IRQ_RESERVED342 (IMX9_IRQ_EXTINT + 326) /* PCIe miscellaneous interrupts */
|
||||
#define IMX9_IRQ_RESERVED343 (IMX9_IRQ_EXTINT + 327) /* PCIe Controller EDMA channel interrupt */
|
||||
#define IMX9_IRQ_RESERVED344 (IMX9_IRQ_EXTINT + 328) /* Wakeup interrupt from CLKREQ#, WAKEUP#, BEACON_DET */
|
||||
#define IMX9_IRQ_RESERVED345 (IMX9_IRQ_EXTINT + 329) /* NPUMIX Functional interrupt */
|
||||
#define IMX9_IRQ_RESERVED346 (IMX9_IRQ_EXTINT + 330) /* DISPLAYMIX Real-time traffic TBU: Fault Handling RAS Interrupt for a contained error */
|
||||
#define IMX9_IRQ_RESERVED347 (IMX9_IRQ_EXTINT + 331) /* DISPLAYMIX Real-time traffic TBU: Error Handling RAS Interrupt for an uncontained error */
|
||||
#define IMX9_IRQ_RESERVED348 (IMX9_IRQ_EXTINT + 332) /* DISPLAYMIX Real-time traffic TBU: Critical Error Interrupt for an uncontainable error */
|
||||
#define IMX9_IRQ_RESERVED349 (IMX9_IRQ_EXTINT + 333) /* DISPLAYMIX Real-time traffic TBU: PMU Interrupt */
|
||||
#define IMX9_IRQ_RESERVED350 (IMX9_IRQ_EXTINT + 334) /* TCU Event queue, secure interrupt */
|
||||
#define IMX9_IRQ_RESERVED351 (IMX9_IRQ_EXTINT + 335) /* TCU Event queue, non-secure interrupt */
|
||||
#define IMX9_IRQ_RESERVED352 (IMX9_IRQ_EXTINT + 336) /* TCU SYNC complete, non-secure interrupt */
|
||||
#define IMX9_IRQ_RESERVED353 (IMX9_IRQ_EXTINT + 337) /* TCU SYNC complete, secure interrupt */
|
||||
#define IMX9_IRQ_RESERVED354 (IMX9_IRQ_EXTINT + 338) /* TCU global non-secure interrupt */
|
||||
#define IMX9_IRQ_RESERVED355 (IMX9_IRQ_EXTINT + 339) /* TCU global secure interrupt */
|
||||
#define IMX9_IRQ_RESERVED356 (IMX9_IRQ_EXTINT + 340) /* TCU fault handling RAS interrupt for a contained error */
|
||||
#define IMX9_IRQ_RESERVED357 (IMX9_IRQ_EXTINT + 341) /* TCU error recovery RAS interrupt for an uncontained error */
|
||||
#define IMX9_IRQ_RESERVED358 (IMX9_IRQ_EXTINT + 342) /* TCU critical error interrupt, for an uncontainable uncorrected error */
|
||||
#define IMX9_IRQ_RESERVED359 (IMX9_IRQ_EXTINT + 343) /* TCU PMU interrupt */
|
||||
#define IMX9_IRQ_RESERVED360 (IMX9_IRQ_EXTINT + 344) /* TCU Page Request Interface */
|
||||
#define IMX9_IRQ_RESERVED361 (IMX9_IRQ_EXTINT + 345) /* SRC GPC Low Power Handshake Gasket interrupt request for system management */
|
||||
#define IMX9_IRQ_RESERVED362 (IMX9_IRQ_EXTINT + 346) /* CAMERAMIX MU Ored of all */
|
||||
#define IMX9_IRQ_RESERVED363 (IMX9_IRQ_EXTINT + 347) /* CAMERAMIX MU Ored of all */
|
||||
#define IMX9_IRQ_RESERVED364 (IMX9_IRQ_EXTINT + 348) /* CAMERAMIX MU Ored of all */
|
||||
#define IMX9_IRQ_RESERVED365 (IMX9_IRQ_EXTINT + 349) /* CAMERAMIX MU Ored of all */
|
||||
#define IMX9_IRQ_RESERVED366 (IMX9_IRQ_EXTINT + 350) /* CAMERAMIX MU Ored of all */
|
||||
#define IMX9_IRQ_RESERVED367 (IMX9_IRQ_EXTINT + 351) /* CAMERAMIX MU Ored of all */
|
||||
#define IMX9_IRQ_RESERVED368 (IMX9_IRQ_EXTINT + 352) /* CAMERAMIX MU Ored of all */
|
||||
#define IMX9_IRQ_RESERVED369 (IMX9_IRQ_EXTINT + 353) /* CAMERAMIX MU Ored of all */
|
||||
#define IMX9_IRQ_RESERVED370 (IMX9_IRQ_EXTINT + 354) /* CAMERAMIX ISI interrupt Channel 1 */
|
||||
#define IMX9_IRQ_RESERVED371 (IMX9_IRQ_EXTINT + 355) /* CAMERAMIX ISI interrupt Channel 2 */
|
||||
#define IMX9_IRQ_RESERVED372 (IMX9_IRQ_EXTINT + 356) /* CAMERAMIX ISI interrupt Channel 3 */
|
||||
#define IMX9_IRQ_RESERVED373 (IMX9_IRQ_EXTINT + 357) /* CAMERAMIX ISI interrupt Channel 4 */
|
||||
#define IMX9_IRQ_RESERVED374 (IMX9_IRQ_EXTINT + 358) /* CAMERAMIX ISI interrupt Channel 5 */
|
||||
#define IMX9_IRQ_RESERVED375 (IMX9_IRQ_EXTINT + 359) /* CAMERAMIX ISI interrupt Channel 6 */
|
||||
#define IMX9_IRQ_RESERVED376 (IMX9_IRQ_EXTINT + 360) /* CAMERAMIX ISI interrupt Channel 7 */
|
||||
#define IMX9_IRQ_DMA5_4_ERROR (IMX9_IRQ_EXTINT + 361) /* CAMERAMIX EDMA error interrupt */
|
||||
#define IMX9_IRQ_DMA5_4_0_1 (IMX9_IRQ_EXTINT + 362) /* CAMERAMIX EDMA channel 0 interrupt */
|
||||
#define IMX9_IRQ_DMA5_4_2_3 (IMX9_IRQ_EXTINT + 363) /* CAMERAMIX EDMA channel 2 interrupt */
|
||||
#define IMX9_IRQ_DMA5_4_4_5 (IMX9_IRQ_EXTINT + 364) /* CAMERAMIX EDMA channel 4 interrupt */
|
||||
#define IMX9_IRQ_DMA5_4_6_7 (IMX9_IRQ_EXTINT + 365) /* CAMERAMIX EDMA channel 6 interrupt */
|
||||
#define IMX9_IRQ_DMA5_4_8_9 (IMX9_IRQ_EXTINT + 366) /* CAMERAMIX EDMA channel 8 interrupt */
|
||||
#define IMX9_IRQ_DMA5_4_10_11 (IMX9_IRQ_EXTINT + 367) /* CAMERAMIX EDMA channel 10 interrupt */
|
||||
#define IMX9_IRQ_DMA5_4_12_13 (IMX9_IRQ_EXTINT + 368) /* CAMERAMIX EDMA channel 12 interrupt */
|
||||
#define IMX9_IRQ_DMA5_4_14_15 (IMX9_IRQ_EXTINT + 369) /* CAMERAMIX EDMA channel 14 interrupt */
|
||||
#define IMX9_IRQ_DMA5_4_16_17 (IMX9_IRQ_EXTINT + 370) /* CAMERAMIX EDMA channel 16 interrupt */
|
||||
#define IMX9_IRQ_DMA5_4_18_19 (IMX9_IRQ_EXTINT + 371) /* CAMERAMIX EDMA channel 18 interrupt */
|
||||
#define IMX9_IRQ_DMA5_4_20_21 (IMX9_IRQ_EXTINT + 372) /* CAMERAMIX EDMA channel 20 interrupt */
|
||||
#define IMX9_IRQ_DMA5_4_22_23 (IMX9_IRQ_EXTINT + 373) /* CAMERAMIX EDMA channel 22 interrupt */
|
||||
#define IMX9_IRQ_DMA5_4_24_25 (IMX9_IRQ_EXTINT + 374) /* CAMERAMIX EDMA channel 24 interrupt */
|
||||
#define IMX9_IRQ_DMA5_4_26_27 (IMX9_IRQ_EXTINT + 375) /* CAMERAMIX EDMA channel 26 interrupt */
|
||||
#define IMX9_IRQ_DMA5_4_28_29 (IMX9_IRQ_EXTINT + 376) /* CAMERAMIX EDMA channel 28 interrupt */
|
||||
#define IMX9_IRQ_DMA5_4_30_31 (IMX9_IRQ_EXTINT + 377) /* CAMERAMIX EDMA channel 30 interrupt */
|
||||
#define IMX9_IRQ_RESERVED394 (IMX9_IRQ_EXTINT + 378) /* CAMERAMIX CSI Formatting Unit 1: Buffer overflow */
|
||||
#define IMX9_IRQ_RESERVED395 (IMX9_IRQ_EXTINT + 379) /* CAMERAMIX CSI Formatting Unit 1: Interlaced Error */
|
||||
#define IMX9_IRQ_RESERVED396 (IMX9_IRQ_EXTINT + 380) /* CAMERAMIX CSI Formatting Unit 1: Pixel Data Type Error */
|
||||
#define IMX9_IRQ_RESERVED397 (IMX9_IRQ_EXTINT + 381) /* CAMERAMIX CSI Formatting Unit 2: Buffer overflow */
|
||||
#define IMX9_IRQ_RESERVED398 (IMX9_IRQ_EXTINT + 382) /* CAMERAMIX CSI Formatting Unit 2: Interlaced Error */
|
||||
#define IMX9_IRQ_RESERVED399 (IMX9_IRQ_EXTINT + 383) /* CAMERAMIX CSI Formatting Unit 2: Pixel Data Type Error */
|
||||
#define IMX9_IRQ_RESERVED400 (IMX9_IRQ_EXTINT + 384) /* CAMERAMIX CSI1 */
|
||||
#define IMX9_IRQ_RESERVED401 (IMX9_IRQ_EXTINT + 385) /* CAMERAMIX CSI2 */
|
||||
|
||||
#define IMX9_IRQ_NEXTINT (218)
|
||||
|
||||
/* Total amount of entries in system vector table */
|
||||
|
||||
#define NR_IRQS (IMX9_IRQ_EXTINT + IMX9_IRQ_NEXTINT)
|
||||
|
||||
#endif /* __ARCH_ARM_INCLUDE_IMX9_IMX95_IRQ_H */
|
80
arch/arm/include/imx9/irq.h
Normal file
80
arch/arm/include/imx9/irq.h
Normal file
|
@ -0,0 +1,80 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/include/imx9/irq.h
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/* This file should never be included directly but, rather,
|
||||
* only indirectly through nuttx/irq.h
|
||||
*/
|
||||
|
||||
#ifndef __ARCH_ARM_INCLUDE_IMX9_IRQ_H
|
||||
#define __ARCH_ARM_INCLUDE_IMX9_IRQ_H
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#if defined(CONFIG_ARCH_CHIP_IMX95_M7)
|
||||
# include <arch/imx9/imx95_irq.h>
|
||||
#else
|
||||
# error "Unrecognized i.MX9 architecture"
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/* IRQ numbers. The IRQ number corresponds vector number and hence map
|
||||
* directly to bits in the NVIC. This does, however, waste several words
|
||||
* of memory in the IRQ to handle mapping tables.
|
||||
*/
|
||||
|
||||
/* Common Processor Exceptions (vectors 0-15) */
|
||||
|
||||
#define IMX9_IRQ_RESERVED (0) /* Reserved vector .. only used with
|
||||
* CONFIG_DEBUG_FEATURES */
|
||||
|
||||
/* Vector 0: Reset stack pointer value */
|
||||
|
||||
/* Vector 1: Reset(not handled by IRQ) */
|
||||
|
||||
#define IMX9_IRQ_NMI (2) /* Vector 2: Non-Maskable Int (NMI) */
|
||||
#define IMX9_IRQ_HARDFAULT (3) /* Vector 3: Hard fault */
|
||||
#define IMX9_IRQ_MEMFAULT (4) /* Vector 4: Memory management (MPU) */
|
||||
#define IMX9_IRQ_BUSFAULT (5) /* Vector 5: Bus fault */
|
||||
#define IMX9_IRQ_USAGEFAULT (6) /* Vector 6: Usage fault */
|
||||
/* Vectors 7-10: Reserved */
|
||||
|
||||
#define IMX9_IRQ_SVCALL (11) /* Vector 11: SVC call */
|
||||
#define IMX9_IRQ_DBGMONITOR (12) /* Vector 12: Debug Monitor */
|
||||
/* Vector 13: Reserved */
|
||||
|
||||
#define IMX9_IRQ_PENDSV (14) /* Vector 14: Pendable SSR */
|
||||
#define IMX9_IRQ_SYSTICK (15) /* Vector 15: System tick */
|
||||
|
||||
/* Chip-Specific External interrupts */
|
||||
|
||||
#define IMX9_IRQ_EXTINT (16) /* Vector number of the first ext int */
|
||||
#define ARMV7M_PERIPHERAL_INTERRUPTS IMX9_IRQ_NEXTINT
|
||||
|
||||
#endif /* __ARCH_ARM_INCLUDE_IMX9_IRQ_H */
|
86
arch/arm/src/imx9/CMakeLists.txt
Normal file
86
arch/arm/src/imx9/CMakeLists.txt
Normal file
|
@ -0,0 +1,86 @@
|
|||
# ##############################################################################
|
||||
# arch/arm/src/imx9/CMakeLists.txt
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
# ##############################################################################
|
||||
|
||||
set(SRCS
|
||||
imx9_allocateheap.c
|
||||
imx9_start.c
|
||||
imx9_clockconfig.c
|
||||
imx9_gpio.c
|
||||
imx9_iomuxc.c
|
||||
imx9_irq.c
|
||||
imx9_timerisr.c
|
||||
imx9_idle.c)
|
||||
|
||||
if(CONFIG_IMX9_SCMI)
|
||||
list(APPEND SRCS imx9_scmi.c)
|
||||
# NXP SDK SCMI interface for pinctrl and clocking
|
||||
endif()
|
||||
|
||||
if(CONFIG_RPTUN)
|
||||
list(APPEND SRCS imx9_rsctable.c imx9_rptun.c)
|
||||
endif()
|
||||
|
||||
if(CONFIG_IMX9_MU)
|
||||
list(APPEND SRCS imx9_mu.c)
|
||||
endif()
|
||||
|
||||
if(CONFIG_ARM_MPU)
|
||||
list(APPEND SRCS imx9_mpuinit.c)
|
||||
endif()
|
||||
|
||||
if(CONFIG_IMX9_FLEXCAN)
|
||||
list(APPEND SRCS imx9_flexcan.c)
|
||||
endif()
|
||||
|
||||
if(CONFIG_IMX9_LPUART)
|
||||
list(APPEND SRCS imx9_lpuart.c imx9_lowputc.c)
|
||||
endif()
|
||||
|
||||
if(CONFIG_IMX9_GPIO_IRQ)
|
||||
list(APPEND SRCS imx9_gpioirq.c)
|
||||
endif()
|
||||
|
||||
if(CONFIG_IMX9_FLEXIO_PWM)
|
||||
list(APPEND SRCS imx9_flexio_pwm.c)
|
||||
endif()
|
||||
|
||||
if(CONFIG_IMX9_TPM_PWM)
|
||||
list(APPEND SRCS imx9_tpm_pwm.c)
|
||||
endif()
|
||||
|
||||
if(CONFIG_IMX9_USBDEV)
|
||||
list(APPEND SRCS imx9_usbdev.c)
|
||||
endif()
|
||||
|
||||
if(CONFIG_IMX9_LPI2C)
|
||||
list(APPEND SRCS imx9_lpi2c.c)
|
||||
endif()
|
||||
|
||||
if(CONFIG_IMX9_LPSPI)
|
||||
list(APPEND SRCS imx9_lpspi.c)
|
||||
endif()
|
||||
|
||||
if(CONFIG_IMX9_EDMA)
|
||||
list(APPEND SRCS imx9_edma.c)
|
||||
endif()
|
||||
|
||||
target_sources(arch PRIVATE ${SRCS})
|
877
arch/arm/src/imx9/Kconfig
Normal file
877
arch/arm/src/imx9/Kconfig
Normal file
|
@ -0,0 +1,877 @@
|
|||
#
|
||||
# For a description of the syntax of this configuration file,
|
||||
# see the file kconfig-language.txt in the NuttX tools repository.
|
||||
#
|
||||
|
||||
if ARCH_CHIP_IMX9_CORTEX_M
|
||||
|
||||
menu "i.MX9 Chip Selection"
|
||||
|
||||
choice
|
||||
prompt "i.MX9 Core Configuration"
|
||||
default ARCH_CHIP_IMX95_M7
|
||||
|
||||
config ARCH_CHIP_IMX95_M7
|
||||
bool "i.MX95 Cortex-M7 Processor"
|
||||
select ARCH_HAVE_FPU
|
||||
select ARCH_HAVE_DPFPU
|
||||
select ARMV7M_HAVE_ICACHE
|
||||
select ARMV7M_HAVE_DCACHE
|
||||
select ARMV7M_HAVE_ITCM
|
||||
select ARMV7M_HAVE_DTCM
|
||||
select IMX9_HAVE_MU
|
||||
|
||||
endchoice # i.MX9 Chip Selection
|
||||
|
||||
endmenu # "i.MX9 Chip Selection"
|
||||
|
||||
config IMX9_HAVE_MU
|
||||
bool
|
||||
default n
|
||||
|
||||
config IMX9_SCMI
|
||||
bool "SCMI Interface"
|
||||
default y
|
||||
depends on IMX9_MU5
|
||||
|
||||
if IMX9_SCMI
|
||||
|
||||
config IMX9_CLK_OVER_SCMI
|
||||
bool "Configure CLK over SCMI"
|
||||
default y
|
||||
|
||||
config IMX9_IOMUX_OVER_SCMI
|
||||
bool "Configure IOMUX over SCMI"
|
||||
default n
|
||||
|
||||
endif
|
||||
|
||||
menu "i.MX9 Peripheral Selection"
|
||||
|
||||
config IMX9_EDMA
|
||||
bool "eDMA"
|
||||
default n
|
||||
select ARCH_DMA
|
||||
|
||||
menu "FLEXCAN Peripherals"
|
||||
|
||||
config IMX9_FLEXCAN
|
||||
bool
|
||||
default n
|
||||
select NET_CAN_HAVE_TX_DEADLINE
|
||||
select NET_CAN_HAVE_CANFD
|
||||
|
||||
config IMX9_FLEXCAN1
|
||||
bool "FLEXCAN1"
|
||||
default n
|
||||
select IMX9_FLEXCAN
|
||||
|
||||
config IMX9_FLEXCAN2
|
||||
bool "FLEXCAN2"
|
||||
default n
|
||||
select IMX9_FLEXCAN
|
||||
|
||||
config IMX9_FLEXCAN3
|
||||
bool "FLEXCAN3"
|
||||
default n
|
||||
select IMX9_FLEXCAN
|
||||
|
||||
config IMX9_FLEXCAN4
|
||||
bool "FLEXCAN4"
|
||||
default n
|
||||
select IMX9_FLEXCAN
|
||||
|
||||
config IMX9_FLEXCAN5
|
||||
bool "FLEXCAN5"
|
||||
default n
|
||||
select IMX9_FLEXCAN
|
||||
|
||||
if IMX9_FLEXCAN
|
||||
|
||||
config IMX9_FLEXCAN_TXMB
|
||||
int "Number of TX message buffers"
|
||||
default 5
|
||||
---help---
|
||||
This defines number of TX messages buffers. Please note that
|
||||
maximum number of all message buffers is 20
|
||||
|
||||
config IMX9_FLEXCAN_RXMB
|
||||
int "Number of RX message buffers"
|
||||
default 15
|
||||
---help---
|
||||
This defines number of RX messages buffers. Please note that
|
||||
maximum number of all message buffers is 20
|
||||
|
||||
endif
|
||||
|
||||
endmenu # FLEXCAN Peripherals
|
||||
|
||||
menu "FLEXCAN1 Configuration"
|
||||
depends on IMX9_FLEXCAN1
|
||||
|
||||
config FLEXCAN1_BITRATE
|
||||
int "CAN bitrate"
|
||||
depends on !(NET_CAN_CANFD)
|
||||
default 1000000
|
||||
|
||||
config FLEXCAN1_SAMPLEP
|
||||
int "CAN sample point"
|
||||
depends on !(NET_CAN_CANFD)
|
||||
default 80
|
||||
|
||||
config FLEXCAN1_ARBI_BITRATE
|
||||
int "CAN FD Arbitration phase bitrate"
|
||||
depends on NET_CAN_CANFD
|
||||
default 1000000
|
||||
|
||||
config FLEXCAN1_ARBI_SAMPLEP
|
||||
int "CAN FD Arbitration phase sample point"
|
||||
depends on NET_CAN_CANFD
|
||||
default 80
|
||||
|
||||
config FLEXCAN1_DATA_BITRATE
|
||||
int "CAN FD Data phase bitrate"
|
||||
depends on NET_CAN_CANFD
|
||||
default 4000000
|
||||
|
||||
config FLEXCAN1_DATA_SAMPLEP
|
||||
int "CAN FD Data phase sample point"
|
||||
depends on NET_CAN_CANFD
|
||||
default 90
|
||||
|
||||
endmenu # IMX9_FLEXCAN1
|
||||
|
||||
menu "FLEXCAN2 Configuration"
|
||||
depends on IMX9_FLEXCAN2
|
||||
|
||||
config FLEXCAN2_BITRATE
|
||||
int "CAN bitrate"
|
||||
depends on !(NET_CAN_CANFD && IMX9_FLEXCAN2_FD)
|
||||
default 1000000
|
||||
|
||||
config FLEXCAN2_SAMPLEP
|
||||
int "CAN sample point"
|
||||
depends on !(NET_CAN_CANFD && IMX9_FLEXCAN2_FD)
|
||||
default 80
|
||||
|
||||
config FLEXCAN2_ARBI_BITRATE
|
||||
int "CAN FD Arbitration phase bitrate"
|
||||
depends on NET_CAN_CANFD && IMX9_FLEXCAN2_FD
|
||||
default 1000000
|
||||
|
||||
config FLEXCAN2_ARBI_SAMPLEP
|
||||
int "CAN FD Arbitration phase sample point"
|
||||
depends on NET_CAN_CANFD && IMX9_FLEXCAN2_FD
|
||||
default 80
|
||||
|
||||
config FLEXCAN2_DATA_BITRATE
|
||||
int "CAN FD Data phase bitrate"
|
||||
depends on NET_CAN_CANFD && IMX9_FLEXCAN2_FD
|
||||
default 4000000
|
||||
|
||||
config FLEXCAN2_DATA_SAMPLEP
|
||||
int "CAN FD Data phase sample point"
|
||||
depends on NET_CAN_CANFD && IMX9_FLEXCAN2_FD
|
||||
default 90
|
||||
|
||||
endmenu # IMX9_FLEXCAN2
|
||||
|
||||
menu "FLEXCAN3 Configuration"
|
||||
depends on IMX9_FLEXCAN3
|
||||
|
||||
config FLEXCAN3_BITRATE
|
||||
int "CAN bitrate"
|
||||
depends on !NET_CAN_CANFD
|
||||
default 1000000
|
||||
|
||||
config FLEXCAN3_SAMPLEP
|
||||
int "CAN sample point"
|
||||
depends on !NET_CAN_CANFD
|
||||
default 80
|
||||
|
||||
config FLEXCAN3_ARBI_BITRATE
|
||||
int "CAN FD Arbitration phase bitrate"
|
||||
depends on NET_CAN_CANFD
|
||||
default 1000000
|
||||
|
||||
config FLEXCAN3_ARBI_SAMPLEP
|
||||
int "CAN FD Arbitration phase sample point"
|
||||
depends on NET_CAN_CANFD
|
||||
default 80
|
||||
|
||||
config FLEXCAN3_DATA_BITRATE
|
||||
int "CAN FD Data phase bitrate"
|
||||
depends on NET_CAN_CANFD
|
||||
default 4000000
|
||||
|
||||
config FLEXCAN3_DATA_SAMPLEP
|
||||
int "CAN FD Data phase sample point"
|
||||
depends on NET_CAN_CANFD
|
||||
default 90
|
||||
|
||||
endmenu # IMX9_FLEXCAN3
|
||||
|
||||
menu "FLEXCAN4 Configuration"
|
||||
depends on IMX9_FLEXCAN4
|
||||
|
||||
config FLEXCAN4_BITRATE
|
||||
int "CAN bitrate"
|
||||
depends on !(NET_CAN_CANFD)
|
||||
default 4000000
|
||||
|
||||
config FLEXCAN4_SAMPLEP
|
||||
int "CAN sample point"
|
||||
depends on !(NET_CAN_CANFD)
|
||||
default 80
|
||||
|
||||
config FLEXCAN4_ARBI_BITRATE
|
||||
int "CAN FD Arbitration phase bitrate"
|
||||
depends on NET_CAN_CANFD
|
||||
default 4000000
|
||||
|
||||
config FLEXCAN4_ARBI_SAMPLEP
|
||||
int "CAN FD Arbitration phase sample point"
|
||||
depends on NET_CAN_CANFD
|
||||
default 80
|
||||
|
||||
config FLEXCAN4_DATA_BITRATE
|
||||
int "CAN FD Data phase bitrate"
|
||||
depends on NET_CAN_CANFD
|
||||
default 4000000
|
||||
|
||||
config FLEXCAN4_DATA_SAMPLEP
|
||||
int "CAN FD Data phase sample point"
|
||||
depends on NET_CAN_CANFD
|
||||
default 90
|
||||
|
||||
endmenu # IMX9_FLEXCAN4
|
||||
|
||||
menu "FLEXCAN5 Configuration"
|
||||
depends on IMX9_FLEXCAN5
|
||||
|
||||
config FLEXCAN5_BITRATE
|
||||
int "CAN bitrate"
|
||||
depends on !(NET_CAN_CANFD)
|
||||
default 5000000
|
||||
|
||||
config FLEXCAN5_SAMPLEP
|
||||
int "CAN sample point"
|
||||
depends on !(NET_CAN_CANFD)
|
||||
default 80
|
||||
|
||||
config FLEXCAN5_ARBI_BITRATE
|
||||
int "CAN FD Arbitration phase bitrate"
|
||||
depends on NET_CAN_CANFD
|
||||
default 5000000
|
||||
|
||||
config FLEXCAN5_ARBI_SAMPLEP
|
||||
int "CAN FD Arbitration phase sample point"
|
||||
depends on NET_CAN_CANFD
|
||||
default 80
|
||||
|
||||
config FLEXCAN5_DATA_BITRATE
|
||||
int "CAN FD Data phase bitrate"
|
||||
depends on NET_CAN_CANFD
|
||||
default 4000000
|
||||
|
||||
config FLEXCAN5_DATA_SAMPLEP
|
||||
int "CAN FD Data phase sample point"
|
||||
depends on NET_CAN_CANFD
|
||||
default 90
|
||||
|
||||
endmenu # IMX9_FLEXCAN5
|
||||
|
||||
menu "LPUART"
|
||||
|
||||
config IMX9_LPUART
|
||||
bool
|
||||
default n
|
||||
select ARCH_HAVE_SERIAL_TERMIOS
|
||||
|
||||
config IMX9_LPUART1
|
||||
bool "LPUART1"
|
||||
default n
|
||||
select IMX9_LPUART
|
||||
select LPUART1_SERIALDRIVER
|
||||
|
||||
config IMX9_LPUART2
|
||||
bool "LPUART2"
|
||||
default n
|
||||
select IMX9_LPUART
|
||||
select LPUART2_SERIALDRIVER
|
||||
|
||||
config IMX9_LPUART3
|
||||
bool "LPUART3"
|
||||
default n
|
||||
select IMX9_LPUART
|
||||
select LPUART3_SERIALDRIVER
|
||||
|
||||
config IMX9_LPUART4
|
||||
bool "LPUART4"
|
||||
default n
|
||||
select IMX9_LPUART
|
||||
select LPUART4_SERIALDRIVER
|
||||
|
||||
config IMX9_LPUART5
|
||||
bool "LPUART5"
|
||||
default n
|
||||
select IMX9_LPUART
|
||||
select LPUART5_SERIALDRIVER
|
||||
|
||||
config IMX9_LPUART6
|
||||
bool "LPUART6"
|
||||
default n
|
||||
select IMX9_LPUART
|
||||
select LPUART6_SERIALDRIVER
|
||||
|
||||
config IMX9_LPUART7
|
||||
bool "LPUART7"
|
||||
default n
|
||||
select IMX9_LPUART
|
||||
select LPUART7_SERIALDRIVER
|
||||
|
||||
config IMX9_LPUART8
|
||||
bool "LPUART8"
|
||||
default n
|
||||
select IMX9_LPUART
|
||||
select LPUART8_SERIALDRIVER
|
||||
|
||||
menu "LPUART Configuration"
|
||||
depends on IMX9_LPUART
|
||||
|
||||
config IMX9_LPUART_INVERT
|
||||
bool "Signal Invert Support"
|
||||
default n
|
||||
|
||||
config IMX9_LPUART_SINGLEWIRE
|
||||
bool "Signal Wire Support"
|
||||
default n
|
||||
|
||||
config IMX9_SERIAL_RXDMA_BUFFER_SIZE
|
||||
int "RX DMA buffer size"
|
||||
default 64
|
||||
depends on LPUART1_RXDMA || LPUART2_RXDMA || LPUART3_RXDMA || LPUART4_RXDMA || \
|
||||
LPUART5_RXDMA || LPUART6_RXDMA || LPUART7_RXDMA || LPUART8_RXDMA
|
||||
---help---
|
||||
The DMA buffer size when using RX DMA to emulate a FIFO.
|
||||
|
||||
When streaming data, the generic serial layer will be called
|
||||
every time the FIFO receives half this number of bytes.
|
||||
|
||||
Value given here will be rounded up to next multiple of 64 bytes.
|
||||
|
||||
endmenu # LPUART Configuration
|
||||
|
||||
endmenu # LPUART
|
||||
|
||||
config IMX9_GPIO_IRQ
|
||||
bool "GPIO Interrupt Support"
|
||||
default n
|
||||
|
||||
config IMX9_LPI2C
|
||||
bool "LPI2C support"
|
||||
default n
|
||||
|
||||
config IMX9_LPSPI
|
||||
bool "LPSPI support"
|
||||
default n
|
||||
|
||||
menu "LPI2C Peripherals"
|
||||
|
||||
menuconfig IMX9_LPI2C1
|
||||
bool "LPI2C1"
|
||||
default n
|
||||
select IMX9_LPI2C
|
||||
|
||||
if IMX9_LPI2C1
|
||||
|
||||
config IMX9_LPI2C1_BUSYIDLE
|
||||
int "Bus idle timeout period in clock cycles"
|
||||
default 0
|
||||
|
||||
config IMX9_LPI2C1_DMA
|
||||
bool "Enable DMA for I2C1"
|
||||
default n
|
||||
depends on IMX9_LPI2C_DMA
|
||||
|
||||
config IMX9_LPI2C1_FILTSCL
|
||||
int "I2C master digital glitch filters for SCL input in clock cycles"
|
||||
default 0
|
||||
|
||||
config IMX9_LPI2C1_FILTSDA
|
||||
int "I2C master digital glitch filters for SDA input in clock cycles"
|
||||
default 0
|
||||
|
||||
endif # IMX9_LPI2C1
|
||||
|
||||
menuconfig IMX9_LPI2C2
|
||||
bool "LPI2C2"
|
||||
default n
|
||||
select IMX9_LPI2C
|
||||
|
||||
if IMX9_LPI2C2
|
||||
|
||||
config IMX9_LPI2C2_BUSYIDLE
|
||||
int "Bus idle timeout period in clock cycles"
|
||||
default 0
|
||||
|
||||
config IMX9_LPI2C2_DMA
|
||||
bool "Enable DMA for I2C2"
|
||||
default n
|
||||
depends on IMX9_LPI2C_DMA
|
||||
|
||||
config IMX9_LPI2C2_FILTSCL
|
||||
int "I2C master digital glitch filters for SCL input in clock cycles"
|
||||
default 0
|
||||
|
||||
config IMX9_LPI2C2_FILTSDA
|
||||
int "I2C master digital glitch filters for SDA input in clock cycles"
|
||||
default 0
|
||||
|
||||
endif # IMX9_LPI2C2
|
||||
|
||||
menuconfig IMX9_LPI2C3
|
||||
bool "LPI2C3"
|
||||
default n
|
||||
select IMX9_LPI2C
|
||||
|
||||
if IMX9_LPI2C3
|
||||
|
||||
config IMX9_LPI2C3_BUSYIDLE
|
||||
int "Bus idle timeout period in clock cycles"
|
||||
default 0
|
||||
|
||||
config IMX9_LPI2C3_DMA
|
||||
bool "Enable DMA for I2C3"
|
||||
default n
|
||||
depends on IMX9_LPI2C_DMA
|
||||
|
||||
config IMX9_LPI2C3_FILTSCL
|
||||
int "I2C master digital glitch filters for SCL input in clock cycles"
|
||||
default 0
|
||||
|
||||
config IMX9_LPI2C3_FILTSDA
|
||||
int "I2C master digital glitch filters for SDA input in clock cycles"
|
||||
default 0
|
||||
|
||||
endif # IMX9_LPI2C3
|
||||
|
||||
menuconfig IMX9_LPI2C4
|
||||
bool "LPI2C4"
|
||||
default n
|
||||
select IMX9_LPI2C
|
||||
|
||||
if IMX9_LPI2C4
|
||||
|
||||
config IMX9_LPI2C4_BUSYIDLE
|
||||
int "Bus idle timeout period in clock cycles"
|
||||
default 0
|
||||
|
||||
config IMX9_LPI2C4_DMA
|
||||
bool "Enable DMA for I2C4"
|
||||
default n
|
||||
depends on IMX9_LPI2C_DMA
|
||||
|
||||
config IMX9_LPI2C4_FILTSCL
|
||||
int "I2C master digital glitch filters for SCL input in clock cycles"
|
||||
default 0
|
||||
|
||||
config IMX9_LPI2C4_FILTSDA
|
||||
int "I2C master digital glitch filters for SDA input in clock cycles"
|
||||
default 0
|
||||
|
||||
endif # IMX9_LPI2C4
|
||||
|
||||
menuconfig IMX9_LPI2C5
|
||||
bool "LPI2C5"
|
||||
default n
|
||||
select IMX9_LPI2C
|
||||
|
||||
if IMX9_LPI2C5
|
||||
|
||||
config IMX9_LPI2C5_BUSYIDLE
|
||||
int "Bus idle timeout period in clock cycles"
|
||||
default 0
|
||||
|
||||
config IMX9_LPI2C5_FILTSCL
|
||||
int "I2C master digital glitch filters for SCL input in clock cycles"
|
||||
default 0
|
||||
|
||||
config IMX9_LPI2C5_FILTSDA
|
||||
int "I2C master digital glitch filters for SDA input in clock cycles"
|
||||
default 0
|
||||
|
||||
endif # IMX9_LPI2C5
|
||||
|
||||
menuconfig IMX9_LPI2C6
|
||||
bool "LPI2C6"
|
||||
default n
|
||||
select IMX9_LPI2C
|
||||
|
||||
if IMX9_LPI2C6
|
||||
|
||||
config IMX9_LPI2C6_BUSYIDLE
|
||||
int "Bus idle timeout period in clock cycles"
|
||||
default 0
|
||||
|
||||
config IMX9_LPI2C6_FILTSCL
|
||||
int "I2C master digital glitch filters for SCL input in clock cycles"
|
||||
default 0
|
||||
|
||||
config IMX9_LPI2C6_FILTSDA
|
||||
int "I2C master digital glitch filters for SDA input in clock cycles"
|
||||
default 0
|
||||
|
||||
endif # IMX9_LPI2C6
|
||||
|
||||
menuconfig IMX9_LPI2C7
|
||||
bool "LPI2C7"
|
||||
default n
|
||||
select IMX9_LPI2C
|
||||
|
||||
if IMX9_LPI2C7
|
||||
|
||||
config IMX9_LPI2C7_BUSYIDLE
|
||||
int "Bus idle timeout period in clock cycles"
|
||||
default 0
|
||||
|
||||
config IMX9_LPI2C7_FILTSCL
|
||||
int "I2C master digital glitch filters for SCL input in clock cycles"
|
||||
default 0
|
||||
|
||||
config IMX9_LPI2C7_FILTSDA
|
||||
int "I2C master digital glitch filters for SDA input in clock cycles"
|
||||
default 0
|
||||
|
||||
endif # IMX9_LPI2C7
|
||||
|
||||
menuconfig IMX9_LPI2C8
|
||||
bool "LPI2C8"
|
||||
default n
|
||||
select IMX9_LPI2C
|
||||
|
||||
if IMX9_LPI2C8
|
||||
|
||||
config IMX9_LPI2C8_BUSYIDLE
|
||||
int "Bus idle timeout period in clock cycles"
|
||||
default 0
|
||||
|
||||
config IMX9_LPI2C8_FILTSCL
|
||||
int "I2C master digital glitch filters for SCL input in clock cycles"
|
||||
default 0
|
||||
|
||||
config IMX9_LPI2C8_FILTSDA
|
||||
int "I2C master digital glitch filters for SDA input in clock cycles"
|
||||
default 0
|
||||
|
||||
endif # IMX9_LPI2C8
|
||||
|
||||
endmenu # LPI2C Peripherals
|
||||
|
||||
menu "LPSPI Peripherals"
|
||||
|
||||
menuconfig IMX9_LPSPI1
|
||||
bool "LPSPI1"
|
||||
default n
|
||||
select IMX9_LPSPI
|
||||
|
||||
menuconfig IMX9_LPSPI2
|
||||
bool "LPSPI2"
|
||||
default n
|
||||
select IMX9_LPSPI
|
||||
|
||||
menuconfig IMX9_LPSPI3
|
||||
bool "LPSPI3"
|
||||
default n
|
||||
select IMX9_LPSPI
|
||||
|
||||
menuconfig IMX9_LPSPI4
|
||||
bool "LPSPI4"
|
||||
default n
|
||||
select IMX9_LPSPI
|
||||
|
||||
menuconfig IMX9_LPSPI5
|
||||
bool "LPSPI5"
|
||||
default n
|
||||
select IMX9_LPSPI
|
||||
|
||||
menuconfig IMX9_LPSPI6
|
||||
bool "LPSPI6"
|
||||
default n
|
||||
select IMX9_LPSPI
|
||||
|
||||
menuconfig IMX9_LPSPI7
|
||||
bool "LPSPI7"
|
||||
default n
|
||||
select IMX9_LPSPI
|
||||
|
||||
menuconfig IMX9_LPSPI8
|
||||
bool "LPSPI8"
|
||||
default n
|
||||
select IMX9_LPSPI
|
||||
|
||||
endmenu # LPSPI Peripherals
|
||||
|
||||
menu "eDMA Configuration"
|
||||
depends on IMX9_EDMA
|
||||
|
||||
config IMX9_EDMA_NTCD
|
||||
int "Number of transfer descriptors"
|
||||
default 0
|
||||
---help---
|
||||
Number of pre-allocated transfer descriptors. Needed for scatter-
|
||||
gather DMA. Make to be set to zero to disable in-memory TCDs in
|
||||
which case only the TCD channel registers will be used and scatter-
|
||||
will not be supported.
|
||||
|
||||
config IMX9_EDMA_ELINK
|
||||
bool "Channeling Linking"
|
||||
default n
|
||||
---help---
|
||||
This option enables optional minor or major loop channel linking:
|
||||
|
||||
Minor loop channel linking: As the channel completes the minor
|
||||
loop, this flag enables linking to another channel. The link target
|
||||
channel initiates a channel service request via an internal
|
||||
mechanism that sets the TCDn_CSR[START] bit of the specified
|
||||
channel.
|
||||
|
||||
If minor loop channel linking is disabled, this link mechanism is
|
||||
suppressed in favor of the major loop channel linking.
|
||||
|
||||
Major loop channel linking: As the channel completes the minor
|
||||
loop, this option enables the linking to another channel. The link
|
||||
target channel initiates a channel service request via an internal
|
||||
mechanism that sets the TCDn_CSR[START] bit of the linked channel.
|
||||
|
||||
config IMX9_EDMA_ERCA
|
||||
bool "Round Robin Channel Arbitration"
|
||||
default n
|
||||
---help---
|
||||
Normally, a fixed priority arbitration is used for channel
|
||||
selection. If this option is selected, round robin arbitration is
|
||||
used for channel selection.
|
||||
|
||||
config IMX9_EDMA_HOE
|
||||
bool "Halt On Error"
|
||||
default y
|
||||
---help---
|
||||
Any error causes the HALT bit to set. Subsequently, all service
|
||||
requests are ignored until the HALT bit is cleared.
|
||||
|
||||
config IMX9_EDMA_CLM
|
||||
bool "Continuous Link Mode"
|
||||
default n
|
||||
---help---
|
||||
By default, A minor loop channel link made to itself goes through
|
||||
channel arbitration before being activated again. If this option is
|
||||
selected, a minor loop channel link made to itself does not go
|
||||
through channel arbitration before being activated again. Upon minor
|
||||
loop completion, the channel activates again if that channel has a
|
||||
minor loop channel link enabled and the link channel is itself. This
|
||||
effectively applies the minor loop offsets and restarts the next
|
||||
minor loop.
|
||||
|
||||
config IMX9_EDMA_EMLIM
|
||||
bool "Minor Loop Mapping"
|
||||
default n
|
||||
---help---
|
||||
Normally TCD word 2 is a 32-bit NBYTES field. When this option is
|
||||
enabled, TCD word 2 is redefined to include individual enable fields,
|
||||
an offset field, and the NBYTES field. The individual enable fields
|
||||
allow the minor loop offset to be applied to the source address, the
|
||||
destination address, or both. The NBYTES field is reduced when either
|
||||
offset is enabled.
|
||||
|
||||
config IMX9_EDMA_EDBG
|
||||
bool "Enable Debug"
|
||||
default n
|
||||
---help---
|
||||
When in debug mode, the DMA stalls the start of a new channel. Executing
|
||||
channels are allowed to complete. Channel execution resumes when the
|
||||
system exits debug mode or the EDBG bit is cleared
|
||||
|
||||
endmenu # eDMA Global Configuration
|
||||
|
||||
menu "i.MX 95 Memory Configuration"
|
||||
|
||||
config IMX9_OCRAM_HEAP
|
||||
bool "Add OCRAM to heap"
|
||||
depends on !IMX9_OCRAM_PRIMARY
|
||||
---help---
|
||||
Select to add the entire OCRAM to the heap
|
||||
|
||||
config IMX9_INIT_ISRAM
|
||||
bool "Calls out to the board code to set instruction RAM"
|
||||
---help---
|
||||
Some configuration will need to map instruction ram (ITCM)
|
||||
this must be done prior to data/bss etc init.
|
||||
|
||||
endmenu # i.MX 95 Heap Configuration
|
||||
|
||||
menu "LPI2C Configuration"
|
||||
depends on IMX9_LPI2C
|
||||
|
||||
config IMX9_LPI2C_DMA
|
||||
bool "I2C DMA Support"
|
||||
default n
|
||||
depends on IMX9_LPI2C && IMX9_EDMA && !I2C_POLLED
|
||||
---help---
|
||||
This option enables the DMA for I2C transfers.
|
||||
Note: The user can define CONFIG_I2C_DMAPRIO: a custom priority value
|
||||
for the I2C dma streams, else the default priority level is set to
|
||||
medium.
|
||||
|
||||
config IMX9_LPI2C_DMA_MAXMSG
|
||||
int "Maximum number messages that will be DMAed"
|
||||
default 8
|
||||
depends on IMX9_LPI2C_DMA
|
||||
---help---
|
||||
This option set the mumber of mesg that can be in a transfer.
|
||||
It is used to allocate space for the 16 bit LPI2C commands
|
||||
that will be DMA-ed to the LPI2C device.
|
||||
|
||||
config IMX9_LPI2C_DYNTIMEO
|
||||
bool "Use dynamic timeouts"
|
||||
default n
|
||||
depends on IMX9_LPI2C
|
||||
|
||||
config IMX9_LPI2C_DYNTIMEO_USECPERBYTE
|
||||
int "Timeout Microseconds per Byte"
|
||||
default 500
|
||||
depends on IMX9_LPI2C_DYNTIMEO
|
||||
|
||||
config IMX9_LPI2C_DYNTIMEO_STARTSTOP
|
||||
int "Timeout for Start/Stop (Milliseconds)"
|
||||
default 1000
|
||||
depends on IMX9_LPI2C_DYNTIMEO
|
||||
|
||||
config IMX9_LPI2C_TIMEOSEC
|
||||
int "Timeout seconds"
|
||||
default 0
|
||||
depends on IMX9_LPI2C
|
||||
|
||||
config IMX9_LPI2C_TIMEOMS
|
||||
int "Timeout Milliseconds"
|
||||
default 500
|
||||
depends on IMX9_LPI2C && !IMX9_LPI2C_DYNTIMEO
|
||||
|
||||
config IMX9_LPI2C_TIMEOTICKS
|
||||
int "Timeout for Done and Stop (ticks)"
|
||||
default 500
|
||||
depends on IMX9_LPI2C && !IMX9_LPI2C_DYNTIMEO
|
||||
|
||||
endmenu # LPI2C Configuration
|
||||
|
||||
menu "LPSPI Configuration"
|
||||
depends on IMX9_LPSPI
|
||||
|
||||
config IMX9_LPSPI_DMA
|
||||
bool "LPSPI DMA"
|
||||
depends on IMX9_EDMA
|
||||
default n
|
||||
---help---
|
||||
Use DMA to improve LPSPI transfer performance.
|
||||
|
||||
config IMX9_LPSPI_DMATHRESHOLD
|
||||
int "LPSPI DMA threshold"
|
||||
default 4
|
||||
depends on IMX9_LPSPI_DMA
|
||||
---help---
|
||||
When SPI DMA is enabled, small DMA transfers will still be performed
|
||||
by polling logic. But we need a threshold value to determine what
|
||||
is small.
|
||||
|
||||
config IMX9_LPSPI_HWPCS
|
||||
bool "Use native hardware peripheral chip selects instead of GPIO pins"
|
||||
default n
|
||||
|
||||
config IMX9_LPSPI1_DMA
|
||||
bool "LPSPI1 DMA"
|
||||
default n
|
||||
depends on IMX9_LPSPI1 && IMX9_LPSPI_DMA
|
||||
---help---
|
||||
Use DMA to improve LPSPI1 transfer performance.
|
||||
|
||||
config IMX9_LPSPI2_DMA
|
||||
bool "LPSPI2 DMA"
|
||||
default n
|
||||
depends on IMX9_LPSPI2 && IMX9_LPSPI_DMA
|
||||
---help---
|
||||
Use DMA to improve LPSPI2 transfer performance.
|
||||
|
||||
config IMX9_LPSPI3_DMA
|
||||
bool "LPSPI3 DMA"
|
||||
default n
|
||||
depends on IMX9_LPSPI3 && IMX9_LPSPI_DMA
|
||||
---help---
|
||||
Use DMA to improve LPSPI3 transfer performance.
|
||||
|
||||
config IMX9_LPSPI4_DMA
|
||||
bool "LPSPI4 DMA"
|
||||
default n
|
||||
depends on IMX9_LPSPI4 && IMX9_LPSPI_DMA
|
||||
---help---
|
||||
Use DMA to improve SPI4 transfer performance.
|
||||
|
||||
config IMX9_LPSPI5_DMA
|
||||
bool "LPSPI5 DMA"
|
||||
default n
|
||||
depends on IMX9_LPSPI5 && IMX9_LPSPI_DMA
|
||||
---help---
|
||||
Use DMA to improve SPI5 transfer performance.
|
||||
|
||||
config IMX9_LPSPI6_DMA
|
||||
bool "LPSPI6 DMA"
|
||||
default n
|
||||
depends on IMX9_LPSPI6 && IMX9_LPSPI_DMA
|
||||
---help---
|
||||
Use DMA to improve SPI6 transfer performance.
|
||||
|
||||
config IMX9_LPSPI7_DMA
|
||||
bool "LPSPI7 DMA"
|
||||
default n
|
||||
depends on IMX9_LPSPI7 && IMX9_LPSPI_DMA
|
||||
---help---
|
||||
Use DMA to improve SPI7 transfer performance.
|
||||
|
||||
config IMX9_LPSPI8_DMA
|
||||
bool "LPSPI8 DMA"
|
||||
default n
|
||||
depends on IMX9_LPSPI8 && IMX9_LPSPI_DMA
|
||||
---help---
|
||||
Use DMA to improve SPI8 transfer performance.
|
||||
|
||||
endmenu # LPSPI Configuration
|
||||
|
||||
menuconfig IMX9_MU
|
||||
bool "Mailbox support"
|
||||
default y
|
||||
depends on IMX9_HAVE_MU
|
||||
|
||||
if IMX9_MU
|
||||
|
||||
config IMX9_MU5
|
||||
bool "MU5 M7 <-> M33"
|
||||
default y
|
||||
---help---
|
||||
Enable mailbox 5 that operates between M7 and M33 cores
|
||||
|
||||
config IMX9_MU7
|
||||
bool "MU7 M7 <-> A55"
|
||||
default n
|
||||
---help---
|
||||
Enable mailbox 7 that operates between M7 and A55 cores
|
||||
|
||||
config IMX9_MU8
|
||||
bool "MU8 M7 <-> A55"
|
||||
default n
|
||||
---help---
|
||||
Enable mailbox 5 that operates between M7 and A55 cores
|
||||
|
||||
endif # IMX9_MU Configuration
|
||||
|
||||
endmenu # iMX Peripheral Selection
|
||||
|
||||
endif # ARCH_CHIP_IMX9
|
||||
|
81
arch/arm/src/imx9/Make.defs
Normal file
81
arch/arm/src/imx9/Make.defs
Normal file
|
@ -0,0 +1,81 @@
|
|||
############################################################################
|
||||
# arch/arm/src/imx9/Make.defs
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# SPDX-FileCopyrightText: 2024 NXP
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
############################################################################
|
||||
|
||||
include armv7-m/Make.defs
|
||||
|
||||
# i.MX9-specific C source files
|
||||
|
||||
CHIP_CSRCS = imx9_allocateheap.c imx9_start.c imx9_clockconfig.c imx9_gpio.c imx9_iomuxc.c imx9_irq.c imx9_timerisr.c imx9_idle.c
|
||||
|
||||
ifeq ($(CONFIG_IMX9_SCMI),y)
|
||||
CHIP_CSRCS += imx9_scmi.c
|
||||
# NXP SDK SCMI interface for pinctrl and clocking
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_RPTUN),y)
|
||||
CHIP_CSRCS += imx9_rsctable.c imx9_rptun.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_IMX9_MU),y)
|
||||
CHIP_CSRCS += imx9_mu.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_ARM_MPU),y)
|
||||
CHIP_CSRCS += imx9_mpuinit.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_IMX9_FLEXCAN),y)
|
||||
CHIP_CSRCS += imx9_flexcan.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_IMX9_LPUART),y)
|
||||
CHIP_CSRCS += imx9_lpuart.c imx9_lowputc.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_IMX9_GPIO_IRQ),y)
|
||||
CHIP_CSRCS += imx9_gpioirq.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_IMX9_FLEXIO_PWM),y)
|
||||
CHIP_CSRCS += imx9_flexio_pwm.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_IMX9_TPM_PWM),y)
|
||||
CHIP_CSRCS += imx9_tpm_pwm.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_IMX9_USBDEV),y)
|
||||
CHIP_CSRCS += imx9_usbdev.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_IMX9_LPI2C),y)
|
||||
CHIP_CSRCS += imx9_lpi2c.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_IMX9_LPSPI), y)
|
||||
CHIP_CSRCS += imx9_lpspi.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_IMX9_EDMA), y)
|
||||
CHIP_CSRCS += imx9_edma.c
|
||||
endif
|
52
arch/arm/src/imx9/chip.h
Normal file
52
arch/arm/src/imx9/chip.h
Normal file
|
@ -0,0 +1,52 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/chip.h
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ARCH_ARM_SRC_IMX9_CHIP_H
|
||||
#define __ARCH_ARM_SRC_IMX9_CHIP_H
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
# include <nuttx/arch.h>
|
||||
# include <arch/irq.h>
|
||||
# include <arch/imx9/chip.h>
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/* Cache line sizes (in bytes) for the i.MX 9 M7 Core */
|
||||
|
||||
#define ARMV7M_DCACHE_LINESIZE 32 /* 32 bytes (8 words) */
|
||||
#define ARMV7M_ICACHE_LINESIZE 32 /* 32 bytes (8 words) */
|
||||
|
||||
/****************************************************************************
|
||||
* Macro Definitions
|
||||
****************************************************************************/
|
||||
|
||||
#endif /* __ARCH_ARM_SRC_IMX9_CHIP_H */
|
827
arch/arm/src/imx9/hardware/imx95/imx95_clock.h
Normal file
827
arch/arm/src/imx9/hardware/imx95/imx95_clock.h
Normal file
|
@ -0,0 +1,827 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/hardware/imx95/imx95_clock.h
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ARCH_ARM_SRC_IMX9_HARDWARE_IMX95_IMX95_CLOCK_H
|
||||
#define __ARCH_ARM_SRC_IMX9_HARDWARE_IMX95_IMX95_CLOCK_H
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stdint.h>
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
typedef enum
|
||||
{
|
||||
EXT_CLK = 0,
|
||||
OSC_32K_CLK = 1,
|
||||
OSC_24M_CLK = 2,
|
||||
FRO_CLK = 3,
|
||||
SYS_PLL1_CTL = 4,
|
||||
SYS_PLL1_DFS0_CTL = 5,
|
||||
SYS_PLL1_DFS0_CLK = 6,
|
||||
SYS_PLL1_DFS0_DIV2_CLK = 7,
|
||||
SYS_PLL1_DFS1_CTL = 8,
|
||||
SYS_PLL1_DFS1_CLK = 9,
|
||||
SYS_PLL1_DFS1_DIV2_CLK = 10,
|
||||
SYS_PLL1_DFS2_CTL = 11,
|
||||
SYS_PLL1_DFS2_CLK = 12,
|
||||
SYS_PLL1_DFS2_DIV2_CLK = 13,
|
||||
AUDIO_PLL1_CTL = 14,
|
||||
AUDIO_PLL1_CLK = 15,
|
||||
AUDIO_PLL2_CTL = 16,
|
||||
AUDIO_PLL2_CLK = 17,
|
||||
VIDEO_PLL1_CTL = 18,
|
||||
VIDEO_PLL1_CLK = 19,
|
||||
VIDEO_PLL2_CTL = 20,
|
||||
VIDEO_PLL2_CLK = 21,
|
||||
VIDEO_PLL3_CTL = 22,
|
||||
VIDEO_PLL3_CLK = 23,
|
||||
ARM_PLL_CTL = 24,
|
||||
ARM_PLL_DFS0_CTL = 25,
|
||||
ARM_PLL_DFS0_CLK = 26,
|
||||
ARM_PLL_DFS1_CTL = 27,
|
||||
ARM_PLL_DFS1_CLK = 28,
|
||||
ARM_PLL_DFS2_CTL = 29,
|
||||
ARM_PLL_DFS2_CLK = 30,
|
||||
ARM_PLL_DFS3_CTL = 31,
|
||||
ARM_PLL_DFS3_CLK = 32,
|
||||
DRAM_PLL_CTL = 33,
|
||||
DRAM_PLL_CLK = 34,
|
||||
HSIO_PLL_CTL = 35,
|
||||
HSIO_PLL_CLK = 36,
|
||||
LDB_PLL_CTL = 37,
|
||||
LDB_PLL_CLK = 38,
|
||||
} clock_id_e;
|
||||
|
||||
#define CCM_CR_COUNT 122
|
||||
|
||||
typedef uint32_t clock_config_t;
|
||||
|
||||
#define CLOCK_DIV_SHIFT (16)
|
||||
#define CLOCK_DIV_MASK (0xff << CLOCK_DIV_SHIFT)
|
||||
#define CLOCK_DIV(n) (((n) << CLOCK_DIV_SHIFT) & CLOCK_DIV_MASK)
|
||||
#define GET_CLOCK_DIV(n) (((n) & CLOCK_DIV_MASK) >> CLOCK_DIV_SHIFT)
|
||||
|
||||
#define CLOCK_ROOT_SHIFT (8)
|
||||
#define CLOCK_ROOT_MASK (0x7f << CLOCK_ROOT_SHIFT)
|
||||
#define CLOCK_ROOT(n) (((n) << CLOCK_ROOT_SHIFT) & CLOCK_ROOT_MASK)
|
||||
#define GET_CLOCK_ROOT(n) (((n) & CLOCK_ROOT_MASK) >> CLOCK_ROOT_SHIFT)
|
||||
|
||||
#define CLOCK_ID_SHIFT (3)
|
||||
#define CLOCK_ID_MASK (0x1f << CLOCK_ID_SHIFT)
|
||||
#define CLOCK_ID(n) (((n) << CLOCK_ID_SHIFT) & CLOCK_ID_MASK)
|
||||
#define GET_CLOCK_ID(n) (((n) & CLOCK_ID_MASK) >> CLOCK_ID_SHIFT)
|
||||
|
||||
#define ROOT_MUX_SHIFT (0)
|
||||
#define ROOT_MUX_MASK (0x07 << ROOT_MUX_SHIFT)
|
||||
#define ROOT_MUX(n) (((n) << ROOT_MUX_SHIFT) & ROOT_MUX_MASK)
|
||||
|
||||
/* ADC_CLK_ROOT */
|
||||
#define ADC_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(0U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define ADC_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(0U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define ADC_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(0U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define ADC_CLK_ROOT_FRO_CLK CLOCK_ROOT(0U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* TMU_CLK_ROOT */
|
||||
#define TMU_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(1U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define TMU_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(1U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define TMU_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(1U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define TMU_CLK_ROOT_FRO_CLK CLOCK_ROOT(1U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* BUS_AON_CLK_ROOT */
|
||||
#define BUS_AON_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(2U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define BUS_AON_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(2U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define BUS_AON_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(2U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define BUS_AON_CLK_ROOT_FRO_CLK CLOCK_ROOT(2U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* CAN1_CLK_ROOT */
|
||||
#define CAN1_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(3U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define CAN1_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(3U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define CAN1_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(3U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define CAN1_CLK_ROOT_FRO_CLK CLOCK_ROOT(3U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* I3C1_CLK_ROOT */
|
||||
#define I3C1_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(4U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define I3C1_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(4U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define I3C1_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(4U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define I3C1_CLK_ROOT_FRO_CLK CLOCK_ROOT(4U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* I3C1_SLOW_CLK_ROOT */
|
||||
#define I3C1_SLOW_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(5U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define I3C1_SLOW_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(5U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define I3C1_SLOW_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(5U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define I3C1_SLOW_CLK_ROOT_FRO_CLK CLOCK_ROOT(5U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* LPI2C1_CLK_ROOT */
|
||||
#define LPI2C1_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(6U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define LPI2C1_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(6U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define LPI2C1_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(6U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define LPI2C1_CLK_ROOT_FRO_CLK CLOCK_ROOT(6U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* LPI2C2_CLK_ROOT */
|
||||
#define LPI2C2_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(7U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define LPI2C2_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(7U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define LPI2C2_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(7U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define LPI2C2_CLK_ROOT_FRO_CLK CLOCK_ROOT(7U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* LPSPI1_CLK_ROOT */
|
||||
#define LPSPI1_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(8U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define LPSPI1_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(8U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define LPSPI1_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(8U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define LPSPI1_CLK_ROOT_FRO_CLK CLOCK_ROOT(8U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* LPSPI2_CLK_ROOT */
|
||||
#define LPSPI2_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(9U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define LPSPI2_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(9U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define LPSPI2_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(9U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define LPSPI2_CLK_ROOT_FRO_CLK CLOCK_ROOT(9U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* LPTMR1_CLK_ROOT */
|
||||
#define LPTMR1_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(10U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define LPTMR1_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(10U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define LPTMR1_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(10U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define LPTMR1_CLK_ROOT_FRO_CLK CLOCK_ROOT(10U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* LPUART1_CLK_ROOT */
|
||||
#define LPUART1_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(11U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define LPUART1_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(11U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define LPUART1_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(11U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define LPUART1_CLK_ROOT_FRO_CLK CLOCK_ROOT(11U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* LPUART2_CLK_ROOT */
|
||||
#define LPUART2_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(12U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define LPUART2_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(12U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define LPUART2_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(12U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define LPUART2_CLK_ROOT_FRO_CLK CLOCK_ROOT(12U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* M33_CLK_ROOT */
|
||||
#define M33_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(13U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define M33_CLK_ROOT_SYS_PLL1_DFS0_CLK CLOCK_ROOT(13U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_CLK)
|
||||
#define M33_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(13U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define M33_CLK_ROOT_FRO_CLK CLOCK_ROOT(13U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* M33_SYSTICK_CLK_ROOT */
|
||||
#define M33_SYSTICK_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(14U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define M33_SYSTICK_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(14U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define M33_SYSTICK_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(14U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define M33_SYSTICK_CLK_ROOT_FRO_CLK CLOCK_ROOT(14U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* MQS1_CLK_ROOT */
|
||||
#define MQS1_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(15U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define MQS1_CLK_ROOT_AUDIO_PLL1_CLK CLOCK_ROOT(15U) | ROOT_MUX(1U) | CLOCK_ID(AUDIO_PLL1_CLK)
|
||||
#define MQS1_CLK_ROOT_AUDIO_PLL2_CLK CLOCK_ROOT(15U) | ROOT_MUX(2U) | CLOCK_ID(AUDIO_PLL2_CLK)
|
||||
#define MQS1_CLK_ROOT_EXT_CLK CLOCK_ROOT(15U) | ROOT_MUX(3U) | CLOCK_ID(EXT_CLK)
|
||||
|
||||
/* PDM_CLK_ROOT */
|
||||
#define PDM_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(16U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define PDM_CLK_ROOT_AUDIO_PLL1_CLK CLOCK_ROOT(16U) | ROOT_MUX(1U) | CLOCK_ID(AUDIO_PLL1_CLK)
|
||||
#define PDM_CLK_ROOT_AUDIO_PLL2_CLK CLOCK_ROOT(16U) | ROOT_MUX(2U) | CLOCK_ID(AUDIO_PLL2_CLK)
|
||||
#define PDM_CLK_ROOT_EXT_CLK CLOCK_ROOT(16U) | ROOT_MUX(3U) | CLOCK_ID(EXT_CLK)
|
||||
|
||||
/* SAI1_CLK_ROOT */
|
||||
#define SAI1_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(17U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define SAI1_CLK_ROOT_AUDIO_PLL1_CLK CLOCK_ROOT(17U) | ROOT_MUX(1U) | CLOCK_ID(AUDIO_PLL1_CLK)
|
||||
#define SAI1_CLK_ROOT_AUDIO_PLL2_CLK CLOCK_ROOT(17U) | ROOT_MUX(2U) | CLOCK_ID(AUDIO_PLL2_CLK)
|
||||
#define SAI1_CLK_ROOT_EXT_CLK CLOCK_ROOT(17U) | ROOT_MUX(3U) | CLOCK_ID(EXT_CLK)
|
||||
|
||||
/* SENTINEL_CLK_ROOT */
|
||||
#define SENTINEL_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(18U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define SENTINEL_CLK_ROOT_SYS_PLL1_DFS0_CLK CLOCK_ROOT(18U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_CLK)
|
||||
#define SENTINEL_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(18U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define SENTINEL_CLK_ROOT_FRO_CLK CLOCK_ROOT(18U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* TPM2_CLK_ROOT */
|
||||
#define TPM2_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(19U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define TPM2_CLK_ROOT_SYS_PLL1_DFS0_CLK CLOCK_ROOT(19U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_CLK)
|
||||
#define TPM2_CLK_ROOT_AUDIO_PLL1_CLK CLOCK_ROOT(19U) | ROOT_MUX(2U) | CLOCK_ID(AUDIO_PLL1_CLK)
|
||||
#define TPM2_CLK_ROOT_EXT_CLK CLOCK_ROOT(19U) | ROOT_MUX(3U) | CLOCK_ID(EXT_CLK)
|
||||
|
||||
/* TSTMR1_CLK_ROOT */
|
||||
#define TSTMR1_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(20U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define TSTMR1_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(20U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define TSTMR1_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(20U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define TSTMR1_CLK_ROOT_FRO_CLK CLOCK_ROOT(20U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* CAM_APB_CLK_ROOT */
|
||||
#define CAM_APB_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(21U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define CAM_APB_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(21U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define CAM_APB_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(21U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define CAM_APB_CLK_ROOT_FRO_CLK CLOCK_ROOT(21U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* CAM_AXI_CLK_ROOT */
|
||||
#define CAM_AXI_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(22U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define CAM_AXI_CLK_ROOT_SYS_PLL1_DFS0_CLK CLOCK_ROOT(22U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_CLK)
|
||||
#define CAM_AXI_CLK_ROOT_SYS_PLL1_DFS1_CLK CLOCK_ROOT(22U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_CLK)
|
||||
#define CAM_AXI_CLK_ROOT_SYS_PLL1_DFS2_CLK CLOCK_ROOT(22U) | ROOT_MUX(3U) | CLOCK_ID(SYS_PLL1_DFS2_CLK)
|
||||
|
||||
/* CAM_CM0_CLK_ROOT */
|
||||
#define CAM_CM0_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(23U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define CAM_CM0_CLK_ROOT_SYS_PLL1_DFS0_CLK CLOCK_ROOT(23U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_CLK)
|
||||
#define CAM_CM0_CLK_ROOT_SYS_PLL1_DFS1_CLK CLOCK_ROOT(23U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_CLK)
|
||||
#define CAM_CM0_CLK_ROOT_SYS_PLL1_DFS2_CLK CLOCK_ROOT(23U) | ROOT_MUX(3U) | CLOCK_ID(SYS_PLL1_DFS2_CLK)
|
||||
|
||||
/* CAM_ISI_CLK_ROOT */
|
||||
#define CAM_ISI_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(24U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define CAM_ISI_CLK_ROOT_SYS_PLL1_DFS0_CLK CLOCK_ROOT(24U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_CLK)
|
||||
#define CAM_ISI_CLK_ROOT_SYS_PLL1_DFS1_CLK CLOCK_ROOT(24U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_CLK)
|
||||
#define CAM_ISI_CLK_ROOT_SYS_PLL1_DFS2_CLK CLOCK_ROOT(24U) | ROOT_MUX(3U) | CLOCK_ID(SYS_PLL1_DFS2_CLK)
|
||||
|
||||
/* MIPI_PHY_CFG_CLK_ROOT */
|
||||
#define MIPI_PHY_CFG_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(25U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define MIPI_PHY_CFG_CLK_ROOT_AUDIO_PLL1_CLK CLOCK_ROOT(25U) | ROOT_MUX(1U) | CLOCK_ID(AUDIO_PLL1_CLK)
|
||||
#define MIPI_PHY_CFG_CLK_ROOT_VIDEO_PLL1_CLK CLOCK_ROOT(25U) | ROOT_MUX(2U) | CLOCK_ID(VIDEO_PLL1_CLK)
|
||||
|
||||
/* MIPI_PHY_PLL_BYPASS_CLK_ROOT */
|
||||
#define MIPI_PHY_PLL_BYPASS_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(26U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define MIPI_PHY_PLL_BYPASS_CLK_ROOT_AUDIO_PLL1_CLK CLOCK_ROOT(26U) | ROOT_MUX(1U) | CLOCK_ID(AUDIO_PLL1_CLK)
|
||||
#define MIPI_PHY_PLL_BYPASS_CLK_ROOT_VIDEO_PLL1_CLK CLOCK_ROOT(26U) | ROOT_MUX(2U) | CLOCK_ID(VIDEO_PLL1_CLK)
|
||||
|
||||
/* MIPI_PHY_PLL_REF_CLK_ROOT */
|
||||
#define MIPI_PHY_PLL_REF_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(27U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define MIPI_PHY_PLL_REF_CLK_ROOT_AUDIO_PLL1_CLK CLOCK_ROOT(27U) | ROOT_MUX(1U) | CLOCK_ID(AUDIO_PLL1_CLK)
|
||||
#define MIPI_PHY_PLL_REF_CLK_ROOT_VIDEO_PLL1_CLK CLOCK_ROOT(27U) | ROOT_MUX(2U) | CLOCK_ID(VIDEO_PLL1_CLK)
|
||||
|
||||
/* MIPI_TEST_BYTE_CLK_ROOT */
|
||||
#define MIPI_TEST_BYTE_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(28U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define MIPI_TEST_BYTE_CLK_ROOT_AUDIO_PLL1_CLK CLOCK_ROOT(28U) | ROOT_MUX(1U) | CLOCK_ID(AUDIO_PLL1_CLK)
|
||||
#define MIPI_TEST_BYTE_CLK_ROOT_VIDEO_PLL1_CLK CLOCK_ROOT(28U) | ROOT_MUX(2U) | CLOCK_ID(VIDEO_PLL1_CLK)
|
||||
|
||||
/* ARM_A55_CLK_ROOT */
|
||||
#define ARM_A55_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(29U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define ARM_A55_CLK_ROOT_SYS_PLL1_DFS0_CLK CLOCK_ROOT(29U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_CLK)
|
||||
#define ARM_A55_CLK_ROOT_SYS_PLL1_DFS1_CLK CLOCK_ROOT(29U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_CLK)
|
||||
#define ARM_A55_CLK_ROOT_SYS_PLL1_DFS2_CLK CLOCK_ROOT(29U) | ROOT_MUX(3U) | CLOCK_ID(SYS_PLL1_DFS2_CLK)
|
||||
|
||||
/* ARM_A55_MTR_BUS_CLK_ROOT */
|
||||
#define ARM_A55_MTR_BUS_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(30U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define ARM_A55_MTR_BUS_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(30U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define ARM_A55_MTR_BUS_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(30U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define ARM_A55_MTR_BUS_CLK_ROOT_FRO_CLK CLOCK_ROOT(30U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* ARM_A55_PERIPH_CLK_ROOT */
|
||||
#define ARM_A55_PERIPH_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(31U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define ARM_A55_PERIPH_CLK_ROOT_SYS_PLL1_DFS0_CLK CLOCK_ROOT(31U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_CLK)
|
||||
#define ARM_A55_PERIPH_CLK_ROOT_SYS_PLL1_DFS1_CLK CLOCK_ROOT(31U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_CLK)
|
||||
#define ARM_A55_PERIPH_CLK_ROOT_SYS_PLL1_DFS2_CLK CLOCK_ROOT(31U) | ROOT_MUX(3U) | CLOCK_ID(SYS_PLL1_DFS2_CLK)
|
||||
|
||||
/* DRAM_ALT_CLK_ROOT */
|
||||
#define DRAM_ALT_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(32U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define DRAM_ALT_CLK_ROOT_SYS_PLL1_DFS0_CLK CLOCK_ROOT(32U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_CLK)
|
||||
#define DRAM_ALT_CLK_ROOT_SYS_PLL1_DFS1_CLK CLOCK_ROOT(32U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_CLK)
|
||||
#define DRAM_ALT_CLK_ROOT_SYS_PLL1_DFS2_CLK CLOCK_ROOT(32U) | ROOT_MUX(3U) | CLOCK_ID(SYS_PLL1_DFS2_CLK)
|
||||
|
||||
/* DRAM_APB_CLK_ROOT */
|
||||
#define DRAM_APB_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(33U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define DRAM_APB_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(33U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define DRAM_APB_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(33U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define DRAM_APB_CLK_ROOT_FRO_CLK CLOCK_ROOT(33U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* DISP_APB_CLK_ROOT */
|
||||
#define DISP_APB_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(34U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define DISP_APB_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(34U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define DISP_APB_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(34U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define DISP_APB_CLK_ROOT_FRO_CLK CLOCK_ROOT(34U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* DISP_AXI_CLK_ROOT */
|
||||
#define DISP_AXI_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(35U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define DISP_AXI_CLK_ROOT_SYS_PLL1_DFS0_CLK CLOCK_ROOT(35U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_CLK)
|
||||
#define DISP_AXI_CLK_ROOT_SYS_PLL1_DFS1_CLK CLOCK_ROOT(35U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_CLK)
|
||||
#define DISP_AXI_CLK_ROOT_SYS_PLL1_DFS2_CLK CLOCK_ROOT(35U) | ROOT_MUX(3U) | CLOCK_ID(SYS_PLL1_DFS2_CLK)
|
||||
|
||||
/* DISP_DP_CLK_ROOT */
|
||||
#define DISP_DP_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(36U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define DISP_DP_CLK_ROOT_SYS_PLL1_DFS0_CLK CLOCK_ROOT(36U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_CLK)
|
||||
#define DISP_DP_CLK_ROOT_SYS_PLL1_DFS1_CLK CLOCK_ROOT(36U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_CLK)
|
||||
#define DISP_DP_CLK_ROOT_SYS_PLL1_DFS2_CLK CLOCK_ROOT(36U) | ROOT_MUX(3U) | CLOCK_ID(SYS_PLL1_DFS2_CLK)
|
||||
|
||||
/* DISP_OCRAM_CLK_ROOT */
|
||||
#define DISP_OCRAM_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(37U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define DISP_OCRAM_CLK_ROOT_SYS_PLL1_DFS0_CLK CLOCK_ROOT(37U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_CLK)
|
||||
#define DISP_OCRAM_CLK_ROOT_SYS_PLL1_DFS1_CLK CLOCK_ROOT(37U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_CLK)
|
||||
#define DISP_OCRAM_CLK_ROOT_SYS_PLL1_DFS2_CLK CLOCK_ROOT(37U) | ROOT_MUX(3U) | CLOCK_ID(SYS_PLL1_DFS2_CLK)
|
||||
|
||||
/* DISP_USB31_CLK_ROOT */
|
||||
#define DISP_USB31_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(38U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define DISP_USB31_CLK_ROOT_SYS_PLL1_DFS0_CLK CLOCK_ROOT(38U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_CLK)
|
||||
#define DISP_USB31_CLK_ROOT_SYS_PLL1_DFS1_CLK CLOCK_ROOT(38U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_CLK)
|
||||
#define DISP_USB31_CLK_ROOT_SYS_PLL1_DFS2_CLK CLOCK_ROOT(38U) | ROOT_MUX(3U) | CLOCK_ID(SYS_PLL1_DFS2_CLK)
|
||||
|
||||
/* DISP1_PIX_CLK_ROOT */
|
||||
#define DISP1_PIX_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(39U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define DISP1_PIX_CLK_ROOT_AUDIO_PLL1_CLK CLOCK_ROOT(39U) | ROOT_MUX(1U) | CLOCK_ID(AUDIO_PLL1_CLK)
|
||||
#define DISP1_PIX_CLK_ROOT_VIDEO_PLL1_CLK CLOCK_ROOT(39U) | ROOT_MUX(2U) | CLOCK_ID(VIDEO_PLL1_CLK)
|
||||
|
||||
/* GPU_APB_CLK_ROOT */
|
||||
#define GPU_APB_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(42U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define GPU_APB_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(42U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define GPU_APB_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(42U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define GPU_APB_CLK_ROOT_FRO_CLK CLOCK_ROOT(42U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* GPU_CLK_ROOT */
|
||||
#define GPU_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(43U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define GPU_CLK_ROOT_SYS_PLL1_DFS0_CLK CLOCK_ROOT(43U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_CLK)
|
||||
#define GPU_CLK_ROOT_SYS_PLL1_DFS1_CLK CLOCK_ROOT(43U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_CLK)
|
||||
#define GPU_CLK_ROOT_SYS_PLL1_DFS2_CLK CLOCK_ROOT(43U) | ROOT_MUX(3U) | CLOCK_ID(SYS_PLL1_DFS2_CLK)
|
||||
|
||||
/* HSIO_ACSCAN_480M_CLK_ROOT */
|
||||
#define HSIO_ACSCAN_480M_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(44U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define HSIO_ACSCAN_480M_CLK_ROOT_AUDIO_PLL1_CLK CLOCK_ROOT(44U) | ROOT_MUX(1U) | CLOCK_ID(AUDIO_PLL1_CLK)
|
||||
#define HSIO_ACSCAN_480M_CLK_ROOT_VIDEO_PLL1_CLK CLOCK_ROOT(44U) | ROOT_MUX(2U) | CLOCK_ID(VIDEO_PLL1_CLK)
|
||||
#define HSIO_ACSCAN_480M_CLK_ROOT_SYS_PLL1_DFS2_CLK CLOCK_ROOT(44U) | ROOT_MUX(3U) | CLOCK_ID(SYS_PLL1_DFS2_CLK)
|
||||
|
||||
/* HSIO_ACSCAN_80M_CLK_ROOT */
|
||||
#define HSIO_ACSCAN_80M_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(45U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define HSIO_ACSCAN_80M_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(45U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define HSIO_ACSCAN_80M_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(45U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define HSIO_ACSCAN_80M_CLK_ROOT_FRO_CLK CLOCK_ROOT(45U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* HSIO_CLK_ROOT */
|
||||
#define HSIO_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(46U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define HSIO_CLK_ROOT_SYS_PLL1_DFS0_CLK CLOCK_ROOT(46U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_CLK)
|
||||
#define HSIO_CLK_ROOT_SYS_PLL1_DFS1_CLK CLOCK_ROOT(46U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_CLK)
|
||||
#define HSIO_CLK_ROOT_SYS_PLL1_DFS2_CLK CLOCK_ROOT(46U) | ROOT_MUX(3U) | CLOCK_ID(SYS_PLL1_DFS2_CLK)
|
||||
|
||||
/* HSIO_PCIE_AUX_CLK_ROOT */
|
||||
#define HSIO_PCIE_AUX_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(47U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define HSIO_PCIE_AUX_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(47U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define HSIO_PCIE_AUX_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(47U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define HSIO_PCIE_AUX_CLK_ROOT_FRO_CLK CLOCK_ROOT(47U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* HSIO_PCIE_TEST_160M_CLK_ROOT */
|
||||
#define HSIO_PCIE_TEST_160M_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(48U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define HSIO_PCIE_TEST_160M_CLK_ROOT_SYS_PLL1_DFS0_CLK CLOCK_ROOT(48U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_CLK)
|
||||
#define HSIO_PCIE_TEST_160M_CLK_ROOT_SYS_PLL1_DFS1_CLK CLOCK_ROOT(48U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_CLK)
|
||||
#define HSIO_PCIE_TEST_160M_CLK_ROOT_SYS_PLL1_DFS2_CLK CLOCK_ROOT(48U) | ROOT_MUX(3U) | CLOCK_ID(SYS_PLL1_DFS2_CLK)
|
||||
|
||||
/* HSIO_PCIE_TEST_400M_CLK_ROOT */
|
||||
#define HSIO_PCIE_TEST_400M_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(49U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define HSIO_PCIE_TEST_400M_CLK_ROOT_SYS_PLL1_DFS0_CLK CLOCK_ROOT(49U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_CLK)
|
||||
#define HSIO_PCIE_TEST_400M_CLK_ROOT_SYS_PLL1_DFS1_CLK CLOCK_ROOT(49U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_CLK)
|
||||
#define HSIO_PCIE_TEST_400M_CLK_ROOT_SYS_PLL1_DFS2_CLK CLOCK_ROOT(49U) | ROOT_MUX(3U) | CLOCK_ID(SYS_PLL1_DFS2_CLK)
|
||||
|
||||
/* HSIO_PCIE_TEST_500M_CLK_ROOT */
|
||||
#define HSIO_PCIE_TEST_500M_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(50U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define HSIO_PCIE_TEST_500M_CLK_ROOT_SYS_PLL1_DFS0_CLK CLOCK_ROOT(50U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_CLK)
|
||||
#define HSIO_PCIE_TEST_500M_CLK_ROOT_SYS_PLL1_DFS1_CLK CLOCK_ROOT(50U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_CLK)
|
||||
#define HSIO_PCIE_TEST_500M_CLK_ROOT_SYS_PLL1_DFS2_CLK CLOCK_ROOT(50U) | ROOT_MUX(3U) | CLOCK_ID(SYS_PLL1_DFS2_CLK)
|
||||
|
||||
/* HSIO_USB_TEST_50M_CLK_ROOT */
|
||||
#define HSIO_USB_TEST_50M_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(51U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define HSIO_USB_TEST_50M_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(51U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define HSIO_USB_TEST_50M_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(51U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define HSIO_USB_TEST_50M_CLK_ROOT_FRO_CLK CLOCK_ROOT(51U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* HSIO_USB_TEST_60M_CLK_ROOT */
|
||||
#define HSIO_USB_TEST_60M_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(52U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define HSIO_USB_TEST_60M_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(52U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define HSIO_USB_TEST_60M_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(52U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define HSIO_USB_TEST_60M_CLK_ROOT_FRO_CLK CLOCK_ROOT(52U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* BUS_M7_CLK_ROOT */
|
||||
#define BUS_M7_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(53U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define BUS_M7_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(53U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define BUS_M7_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(53U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define BUS_M7_CLK_ROOT_FRO_CLK CLOCK_ROOT(53U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* M7_CLK_ROOT */
|
||||
#define M7_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(54U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define M7_CLK_ROOT_SYS_PLL1_DFS0_CLK CLOCK_ROOT(54U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_CLK)
|
||||
#define M7_CLK_ROOT_SYS_PLL1_DFS1_CLK CLOCK_ROOT(54U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_CLK)
|
||||
#define M7_CLK_ROOT_SYS_PLL1_DFS2_CLK CLOCK_ROOT(54U) | ROOT_MUX(3U) | CLOCK_ID(SYS_PLL1_DFS2_CLK)
|
||||
|
||||
/* M7_SYSTICK_CLK_ROOT */
|
||||
#define M7_SYSTICK_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(55U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define M7_SYSTICK_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(55U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define M7_SYSTICK_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(55U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define M7_SYSTICK_CLK_ROOT_FRO_CLK CLOCK_ROOT(55U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* BUS_NETCMIX_CLK_ROOT */
|
||||
#define BUS_NETCMIX_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(56U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define BUS_NETCMIX_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(56U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define BUS_NETCMIX_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(56U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define BUS_NETCMIX_CLK_ROOT_FRO_CLK CLOCK_ROOT(56U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* ENET_CLK_ROOT */
|
||||
#define ENET_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(57U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define ENET_CLK_ROOT_SYS_PLL1_DFS0_CLK CLOCK_ROOT(57U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_CLK)
|
||||
#define ENET_CLK_ROOT_SYS_PLL1_DFS1_CLK CLOCK_ROOT(57U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_CLK)
|
||||
#define ENET_CLK_ROOT_SYS_PLL1_DFS2_CLK CLOCK_ROOT(57U) | ROOT_MUX(3U) | CLOCK_ID(SYS_PLL1_DFS2_CLK)
|
||||
|
||||
/* ENET_PHY_TEST_200M_CLK_ROOT */
|
||||
#define ENET_PHY_TEST_200M_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(58U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define ENET_PHY_TEST_200M_CLK_ROOT_SYS_PLL1_DFS0_CLK CLOCK_ROOT(58U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_CLK)
|
||||
#define ENET_PHY_TEST_200M_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(58U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define ENET_PHY_TEST_200M_CLK_ROOT_FRO_CLK CLOCK_ROOT(58U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* ENET_PHY_TEST_500M_CLK_ROOT */
|
||||
#define ENET_PHY_TEST_500M_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(59U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define ENET_PHY_TEST_500M_CLK_ROOT_SYS_PLL1_DFS0_CLK CLOCK_ROOT(59U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_CLK)
|
||||
#define ENET_PHY_TEST_500M_CLK_ROOT_SYS_PLL1_DFS1_CLK CLOCK_ROOT(59U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_CLK)
|
||||
#define ENET_PHY_TEST_500M_CLK_ROOT_SYS_PLL1_DFS2_CLK CLOCK_ROOT(59U) | ROOT_MUX(3U) | CLOCK_ID(SYS_PLL1_DFS2_CLK)
|
||||
|
||||
/* ENET_PHY_TEST_667M_CLK_ROOT */
|
||||
#define ENET_PHY_TEST_667M_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(60U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define ENET_PHY_TEST_667M_CLK_ROOT_SYS_PLL1_DFS0_CLK CLOCK_ROOT(60U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_CLK)
|
||||
#define ENET_PHY_TEST_667M_CLK_ROOT_SYS_PLL1_DFS1_CLK CLOCK_ROOT(60U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_CLK)
|
||||
#define ENET_PHY_TEST_667M_CLK_ROOT_SYS_PLL1_DFS2_CLK CLOCK_ROOT(60U) | ROOT_MUX(3U) | CLOCK_ID(SYS_PLL1_DFS2_CLK)
|
||||
|
||||
/* ENET_REF_CLK_ROOT */
|
||||
#define ENET_REF_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(61U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define ENET_REF_CLK_ROOT_SYS_PLL1_DFS0_CLK CLOCK_ROOT(61U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_CLK)
|
||||
#define ENET_REF_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(61U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define ENET_REF_CLK_ROOT_FRO_CLK CLOCK_ROOT(61U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* ENET_TIMER1_CLK_ROOT */
|
||||
#define ENET_TIMER1_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(62U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define ENET_TIMER1_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(62U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define ENET_TIMER1_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(62U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define ENET_TIMER1_CLK_ROOT_FRO_CLK CLOCK_ROOT(62U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* MQS2_CLK_ROOT */
|
||||
#define MQS2_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(63U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define MQS2_CLK_ROOT_AUDIO_PLL1_CLK CLOCK_ROOT(63U) | ROOT_MUX(1U) | CLOCK_ID(AUDIO_PLL1_CLK)
|
||||
#define MQS2_CLK_ROOT_AUDIO_PLL2_CLK CLOCK_ROOT(63U) | ROOT_MUX(2U) | CLOCK_ID(AUDIO_PLL2_CLK)
|
||||
#define MQS2_CLK_ROOT_EXT_CLK CLOCK_ROOT(63U) | ROOT_MUX(3U) | CLOCK_ID(EXT_CLK)
|
||||
|
||||
/* SAI2_CLK_ROOT */
|
||||
#define SAI2_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(64U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define SAI2_CLK_ROOT_AUDIO_PLL1_CLK CLOCK_ROOT(64U) | ROOT_MUX(1U) | CLOCK_ID(AUDIO_PLL1_CLK)
|
||||
#define SAI2_CLK_ROOT_AUDIO_PLL2_CLK CLOCK_ROOT(64U) | ROOT_MUX(2U) | CLOCK_ID(AUDIO_PLL2_CLK)
|
||||
#define SAI2_CLK_ROOT_EXT_CLK CLOCK_ROOT(64U) | ROOT_MUX(3U) | CLOCK_ID(EXT_CLK)
|
||||
|
||||
/* NOC_APB_CLK_ROOT */
|
||||
#define NOC_APB_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(65U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define NOC_APB_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(65U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define NOC_APB_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(65U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define NOC_APB_CLK_ROOT_FRO_CLK CLOCK_ROOT(65U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* NOC_CLK_ROOT */
|
||||
#define NOC_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(66U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define NOC_CLK_ROOT_SYS_PLL1_DFS0_CLK CLOCK_ROOT(66U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_CLK)
|
||||
#define NOC_CLK_ROOT_SYS_PLL1_DFS1_CLK CLOCK_ROOT(66U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_CLK)
|
||||
#define NOC_CLK_ROOT_SYS_PLL1_DFS2_CLK CLOCK_ROOT(66U) | ROOT_MUX(3U) | CLOCK_ID(SYS_PLL1_DFS2_CLK)
|
||||
|
||||
/* NPU_APB_CLK_ROOT */
|
||||
#define NPU_APB_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(67U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define NPU_APB_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(67U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define NPU_APB_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(67U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define NPU_APB_CLK_ROOT_FRO_CLK CLOCK_ROOT(67U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* NPU_CLK_ROOT */
|
||||
#define NPU_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(68U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define NPU_CLK_ROOT_SYS_PLL1_DFS0_CLK CLOCK_ROOT(68U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_CLK)
|
||||
#define NPU_CLK_ROOT_SYS_PLL1_DFS1_CLK CLOCK_ROOT(68U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_CLK)
|
||||
#define NPU_CLK_ROOT_SYS_PLL1_DFS2_CLK CLOCK_ROOT(68U) | ROOT_MUX(3U) | CLOCK_ID(SYS_PLL1_DFS2_CLK)
|
||||
|
||||
/* CCM_CKO1_CLK_ROOT */
|
||||
#define CCM_CKO1_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(69U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define CCM_CKO1_CLK_ROOT_SYS_PLL1_DFS0_CLK CLOCK_ROOT(69U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_CLK)
|
||||
#define CCM_CKO1_CLK_ROOT_OSC_32K_CLK CLOCK_ROOT(69U) | ROOT_MUX(2U) | CLOCK_ID(OSC_32K_CLK)
|
||||
#define CCM_CKO1_CLK_ROOT_AUDIO_PLL1_CLK CLOCK_ROOT(69U) | ROOT_MUX(3U) | CLOCK_ID(AUDIO_PLL1_CLK)
|
||||
|
||||
/* CCM_CKO2_CLK_ROOT */
|
||||
#define CCM_CKO2_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(70U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define CCM_CKO2_CLK_ROOT_SYS_PLL1_DFS0_CLK CLOCK_ROOT(70U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_CLK)
|
||||
#define CCM_CKO2_CLK_ROOT_OSC_32K_CLK CLOCK_ROOT(70U) | ROOT_MUX(2U) | CLOCK_ID(OSC_32K_CLK)
|
||||
#define CCM_CKO2_CLK_ROOT_VIDEO_PLL1_CLK CLOCK_ROOT(70U) | ROOT_MUX(3U) | CLOCK_ID(VIDEO_PLL1_CLK)
|
||||
|
||||
/* CCM_CKO3_CLK_ROOT */
|
||||
#define CCM_CKO3_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(71U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define CCM_CKO3_CLK_ROOT_SYS_PLL1_DFS0_CLK CLOCK_ROOT(71U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_CLK)
|
||||
#define CCM_CKO3_CLK_ROOT_OSC_32K_CLK CLOCK_ROOT(71U) | ROOT_MUX(2U) | CLOCK_ID(OSC_32K_CLK)
|
||||
#define CCM_CKO3_CLK_ROOT_AUDIO_PLL2_CLK CLOCK_ROOT(71U) | ROOT_MUX(3U) | CLOCK_ID(AUDIO_PLL2_CLK)
|
||||
|
||||
/* CCM_CKO4_CLK_ROOT */
|
||||
#define CCM_CKO4_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(72U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define CCM_CKO4_CLK_ROOT_SYS_PLL1_DFS0_CLK CLOCK_ROOT(72U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_CLK)
|
||||
#define CCM_CKO4_CLK_ROOT_OSC_32K_CLK CLOCK_ROOT(72U) | ROOT_MUX(2U) | CLOCK_ID(OSC_32K_CLK)
|
||||
#define CCM_CKO4_CLK_ROOT_VIDEO_PLL1_CLK CLOCK_ROOT(72U) | ROOT_MUX(3U) | CLOCK_ID(VIDEO_PLL1_CLK)
|
||||
|
||||
/* VPU_APB_CLK_ROOT */
|
||||
#define VPU_APB_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(73U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define VPU_APB_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(73U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define VPU_APB_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(73U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define VPU_APB_CLK_ROOT_FRO_CLK CLOCK_ROOT(73U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* VPU_CLK_ROOT */
|
||||
#define VPU_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(74U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define VPU_CLK_ROOT_SYS_PLL1_DFS0_CLK CLOCK_ROOT(74U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_CLK)
|
||||
#define VPU_CLK_ROOT_SYS_PLL1_DFS1_CLK CLOCK_ROOT(74U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_CLK)
|
||||
#define VPU_CLK_ROOT_SYS_PLL1_DFS2_CLK CLOCK_ROOT(74U) | ROOT_MUX(3U) | CLOCK_ID(SYS_PLL1_DFS2_CLK)
|
||||
|
||||
/* VPU_DSP_CLK_ROOT */
|
||||
#define VPU_DSP_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(75U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define VPU_DSP_CLK_ROOT_SYS_PLL1_DFS0_CLK CLOCK_ROOT(75U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_CLK)
|
||||
#define VPU_DSP_CLK_ROOT_SYS_PLL1_DFS1_CLK CLOCK_ROOT(75U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_CLK)
|
||||
#define VPU_DSP_CLK_ROOT_SYS_PLL1_DFS2_CLK CLOCK_ROOT(75U) | ROOT_MUX(3U) | CLOCK_ID(SYS_PLL1_DFS2_CLK)
|
||||
|
||||
/* VPU_JPEG_CLK_ROOT */
|
||||
#define VPU_JPEG_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(76U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define VPU_JPEG_CLK_ROOT_SYS_PLL1_DFS0_CLK CLOCK_ROOT(76U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_CLK)
|
||||
#define VPU_JPEG_CLK_ROOT_SYS_PLL1_DFS1_CLK CLOCK_ROOT(76U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_CLK)
|
||||
#define VPU_JPEG_CLK_ROOT_SYS_PLL1_DFS2_CLK CLOCK_ROOT(76U) | ROOT_MUX(3U) | CLOCK_ID(SYS_PLL1_DFS2_CLK)
|
||||
|
||||
/* AUDIO_XCVR_CLK_ROOT */
|
||||
#define AUDIO_XCVR_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(77U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define AUDIO_XCVR_CLK_ROOT_SYS_PLL1_DFS0_CLK CLOCK_ROOT(77U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_CLK)
|
||||
#define AUDIO_XCVR_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(77U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define AUDIO_XCVR_CLK_ROOT_FRO_CLK CLOCK_ROOT(77U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* BUS_WAKEUP_CLK_ROOT */
|
||||
#define BUS_WAKEUP_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(78U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define BUS_WAKEUP_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(78U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define BUS_WAKEUP_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(78U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define BUS_WAKEUP_CLK_ROOT_FRO_CLK CLOCK_ROOT(78U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* CAN2_CLK_ROOT */
|
||||
#define CAN2_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(79U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define CAN2_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(79U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define CAN2_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(79U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define CAN2_CLK_ROOT_FRO_CLK CLOCK_ROOT(79U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* CAN3_CLK_ROOT */
|
||||
#define CAN3_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(80U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define CAN3_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(80U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define CAN3_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(80U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define CAN3_CLK_ROOT_FRO_CLK CLOCK_ROOT(80U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* CAN4_CLK_ROOT */
|
||||
#define CAN4_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(81U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define CAN4_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(81U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define CAN4_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(81U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define CAN4_CLK_ROOT_FRO_CLK CLOCK_ROOT(81U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* CAN5_CLK_ROOT */
|
||||
#define CAN5_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(82U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define CAN5_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(82U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define CAN5_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(82U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define CAN5_CLK_ROOT_FRO_CLK CLOCK_ROOT(82U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* FLEXIO1_CLK_ROOT */
|
||||
#define FLEXIO1_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(83U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define FLEXIO1_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(83U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define FLEXIO1_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(83U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define FLEXIO1_CLK_ROOT_FRO_CLK CLOCK_ROOT(83U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* FLEXIO2_CLK_ROOT */
|
||||
#define FLEXIO2_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(84U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define FLEXIO2_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(84U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define FLEXIO2_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(84U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define FLEXIO2_CLK_ROOT_FRO_CLK CLOCK_ROOT(84U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* FLEXSPI1_CLK_ROOT */
|
||||
#define FLEXSPI1_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(85U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define FLEXSPI1_CLK_ROOT_SYS_PLL1_DFS0_CLK CLOCK_ROOT(85U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_CLK)
|
||||
#define FLEXSPI1_CLK_ROOT_SYS_PLL1_DFS1_CLK CLOCK_ROOT(85U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_CLK)
|
||||
#define FLEXSPI1_CLK_ROOT_SYS_PLL1_DFS2_CLK CLOCK_ROOT(85U) | ROOT_MUX(3U) | CLOCK_ID(SYS_PLL1_DFS2_CLK)
|
||||
|
||||
/* I3C2_CLK_ROOT */
|
||||
#define I3C2_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(86U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define I3C2_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(86U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define I3C2_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(86U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define I3C2_CLK_ROOT_FRO_CLK CLOCK_ROOT(86U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* I3C2_SLOW_CLK_ROOT */
|
||||
#define I3C2_SLOW_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(87U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define I3C2_SLOW_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(87U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define I3C2_SLOW_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(87U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define I3C2_SLOW_CLK_ROOT_FRO_CLK CLOCK_ROOT(87U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* LPI2C3_CLK_ROOT */
|
||||
#define LPI2C3_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(88U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define LPI2C3_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(88U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define LPI2C3_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(88U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define LPI2C3_CLK_ROOT_FRO_CLK CLOCK_ROOT(88U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* LPI2C4_CLK_ROOT */
|
||||
#define LPI2C4_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(89U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define LPI2C4_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(89U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define LPI2C4_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(89U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define LPI2C4_CLK_ROOT_FRO_CLK CLOCK_ROOT(89U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* LPI2C5_CLK_ROOT */
|
||||
#define LPI2C5_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(90U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define LPI2C5_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(90U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define LPI2C5_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(90U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define LPI2C5_CLK_ROOT_FRO_CLK CLOCK_ROOT(90U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* LPI2C6_CLK_ROOT */
|
||||
#define LPI2C6_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(91U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define LPI2C6_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(91U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define LPI2C6_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(91U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define LPI2C6_CLK_ROOT_FRO_CLK CLOCK_ROOT(91U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* LPI2C7_CLK_ROOT */
|
||||
#define LPI2C7_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(92U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define LPI2C7_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(92U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define LPI2C7_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(92U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define LPI2C7_CLK_ROOT_FRO_CLK CLOCK_ROOT(92U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* LPI2C8_CLK_ROOT */
|
||||
#define LPI2C8_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(93U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define LPI2C8_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(93U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define LPI2C8_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(93U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define LPI2C8_CLK_ROOT_FRO_CLK CLOCK_ROOT(93U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* LPSPI3_CLK_ROOT */
|
||||
#define LPSPI3_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(94U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define LPSPI3_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(94U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define LPSPI3_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(94U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define LPSPI3_CLK_ROOT_FRO_CLK CLOCK_ROOT(94U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* LPSPI4_CLK_ROOT */
|
||||
#define LPSPI4_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(95U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define LPSPI4_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(95U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define LPSPI4_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(95U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define LPSPI4_CLK_ROOT_FRO_CLK CLOCK_ROOT(95U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* LPSPI5_CLK_ROOT */
|
||||
#define LPSPI5_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(96U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define LPSPI5_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(96U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define LPSPI5_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(96U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define LPSPI5_CLK_ROOT_FRO_CLK CLOCK_ROOT(96U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* LPSPI6_CLK_ROOT */
|
||||
#define LPSPI6_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(97U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define LPSPI6_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(97U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define LPSPI6_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(97U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define LPSPI6_CLK_ROOT_FRO_CLK CLOCK_ROOT(97U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* LPSPI7_CLK_ROOT */
|
||||
#define LPSPI7_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(98U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define LPSPI7_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(98U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define LPSPI7_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(98U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define LPSPI7_CLK_ROOT_FRO_CLK CLOCK_ROOT(98U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* LPSPI8_CLK_ROOT */
|
||||
#define LPSPI8_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(99U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define LPSPI8_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(99U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define LPSPI8_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(99U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define LPSPI8_CLK_ROOT_FRO_CLK CLOCK_ROOT(99U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* LPTMR2_CLK_ROOT */
|
||||
#define LPTMR2_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(100U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define LPTMR2_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(100U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define LPTMR2_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(100U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define LPTMR2_CLK_ROOT_FRO_CLK CLOCK_ROOT(100U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* LPUART3_CLK_ROOT */
|
||||
#define LPUART3_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(101U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define LPUART3_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(101U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define LPUART3_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(101U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define LPUART3_CLK_ROOT_FRO_CLK CLOCK_ROOT(101U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* LPUART4_CLK_ROOT */
|
||||
#define LPUART4_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(102U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define LPUART4_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(102U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define LPUART4_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(102U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define LPUART4_CLK_ROOT_FRO_CLK CLOCK_ROOT(102U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* LPUART5_CLK_ROOT */
|
||||
#define LPUART5_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(103U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define LPUART5_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(103U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define LPUART5_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(103U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define LPUART5_CLK_ROOT_FRO_CLK CLOCK_ROOT(103U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* LPUART6_CLK_ROOT */
|
||||
#define LPUART6_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(104U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define LPUART6_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(104U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define LPUART6_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(104U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define LPUART6_CLK_ROOT_FRO_CLK CLOCK_ROOT(104U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* LPUART7_CLK_ROOT */
|
||||
#define LPUART7_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(105U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define LPUART7_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(105U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define LPUART7_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(105U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define LPUART7_CLK_ROOT_FRO_CLK CLOCK_ROOT(105U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* LPUART8_CLK_ROOT */
|
||||
#define LPUART8_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(106U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define LPUART8_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(106U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define LPUART8_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(106U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define LPUART8_CLK_ROOT_FRO_CLK CLOCK_ROOT(106U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* SAI3_CLK_ROOT */
|
||||
#define SAI3_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(107U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define SAI3_CLK_ROOT_AUDIO_PLL1_CLK CLOCK_ROOT(107U) | ROOT_MUX(1U) | CLOCK_ID(AUDIO_PLL1_CLK)
|
||||
#define SAI3_CLK_ROOT_AUDIO_PLL2_CLK CLOCK_ROOT(107U) | ROOT_MUX(2U) | CLOCK_ID(AUDIO_PLL2_CLK)
|
||||
#define SAI3_CLK_ROOT_EXT_CLK CLOCK_ROOT(107U) | ROOT_MUX(3U) | CLOCK_ID(EXT_CLK)
|
||||
|
||||
/* SAI4_CLK_ROOT */
|
||||
#define SAI4_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(108U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define SAI4_CLK_ROOT_AUDIO_PLL1_CLK CLOCK_ROOT(108U) | ROOT_MUX(1U) | CLOCK_ID(AUDIO_PLL1_CLK)
|
||||
#define SAI4_CLK_ROOT_AUDIO_PLL2_CLK CLOCK_ROOT(108U) | ROOT_MUX(2U) | CLOCK_ID(AUDIO_PLL2_CLK)
|
||||
#define SAI4_CLK_ROOT_EXT_CLK CLOCK_ROOT(108U) | ROOT_MUX(3U) | CLOCK_ID(EXT_CLK)
|
||||
|
||||
/* SAI5_CLK_ROOT */
|
||||
#define SAI5_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(109U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define SAI5_CLK_ROOT_AUDIO_PLL1_CLK CLOCK_ROOT(109U) | ROOT_MUX(1U) | CLOCK_ID(AUDIO_PLL1_CLK)
|
||||
#define SAI5_CLK_ROOT_AUDIO_PLL2_CLK CLOCK_ROOT(109U) | ROOT_MUX(2U) | CLOCK_ID(AUDIO_PLL2_CLK)
|
||||
#define SAI5_CLK_ROOT_EXT_CLK CLOCK_ROOT(109U) | ROOT_MUX(3U) | CLOCK_ID(EXT_CLK)
|
||||
|
||||
/* SPDIF_CLK_ROOT */
|
||||
#define SPDIF_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(110U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define SPDIF_CLK_ROOT_AUDIO_PLL1_CLK CLOCK_ROOT(110U) | ROOT_MUX(1U) | CLOCK_ID(AUDIO_PLL1_CLK)
|
||||
#define SPDIF_CLK_ROOT_AUDIO_PLL2_CLK CLOCK_ROOT(110U) | ROOT_MUX(2U) | CLOCK_ID(AUDIO_PLL2_CLK)
|
||||
#define SPDIF_CLK_ROOT_EXT_CLK CLOCK_ROOT(110U) | ROOT_MUX(3U) | CLOCK_ID(EXT_CLK)
|
||||
|
||||
/* SWO_TRACE_CLK_ROOT */
|
||||
#define SWO_TRACE_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(111U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define SWO_TRACE_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(111U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define SWO_TRACE_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(111U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define SWO_TRACE_CLK_ROOT_FRO_CLK CLOCK_ROOT(111U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* TPM4_CLK_ROOT */
|
||||
#define TPM4_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(112U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define TPM4_CLK_ROOT_SYS_PLL1_DFS0_CLK CLOCK_ROOT(112U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_CLK)
|
||||
#define TPM4_CLK_ROOT_AUDIO_PLL1_CLK CLOCK_ROOT(112U) | ROOT_MUX(2U) | CLOCK_ID(AUDIO_PLL1_CLK)
|
||||
#define TPM4_CLK_ROOT_EXT_CLK CLOCK_ROOT(112U) | ROOT_MUX(3U) | CLOCK_ID(EXT_CLK)
|
||||
|
||||
/* TPM5_CLK_ROOT */
|
||||
#define TPM5_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(113U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define TPM5_CLK_ROOT_SYS_PLL1_DFS0_CLK CLOCK_ROOT(113U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_CLK)
|
||||
#define TPM5_CLK_ROOT_AUDIO_PLL1_CLK CLOCK_ROOT(113U) | ROOT_MUX(2U) | CLOCK_ID(AUDIO_PLL1_CLK)
|
||||
#define TPM5_CLK_ROOT_EXT_CLK CLOCK_ROOT(113U) | ROOT_MUX(3U) | CLOCK_ID(EXT_CLK)
|
||||
|
||||
/* TPM6_CLK_ROOT */
|
||||
#define TPM6_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(114U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define TPM6_CLK_ROOT_SYS_PLL1_DFS0_CLK CLOCK_ROOT(114U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_CLK)
|
||||
#define TPM6_CLK_ROOT_AUDIO_PLL1_CLK CLOCK_ROOT(114U) | ROOT_MUX(2U) | CLOCK_ID(AUDIO_PLL1_CLK)
|
||||
#define TPM6_CLK_ROOT_EXT_CLK CLOCK_ROOT(114U) | ROOT_MUX(3U) | CLOCK_ID(EXT_CLK)
|
||||
|
||||
/* TSTMR2_CLK_ROOT */
|
||||
#define TSTMR2_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(115U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define TSTMR2_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(115U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define TSTMR2_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(115U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define TSTMR2_CLK_ROOT_FRO_CLK CLOCK_ROOT(115U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* USB_PHY_BURUNIN_CLK_ROOT */
|
||||
#define USB_PHY_BURUNIN_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(116U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define USB_PHY_BURUNIN_CLK_ROOT_SYS_PLL1_DFS0_DIV2_CLK CLOCK_ROOT(116U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_DIV2_CLK)
|
||||
#define USB_PHY_BURUNIN_CLK_ROOT_SYS_PLL1_DFS1_DIV2_CLK CLOCK_ROOT(116U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_DIV2_CLK)
|
||||
#define USB_PHY_BURUNIN_CLK_ROOT_FRO_CLK CLOCK_ROOT(116U) | ROOT_MUX(3U) | CLOCK_ID(FRO_CLK)
|
||||
|
||||
/* USDHC1_CLK_ROOT */
|
||||
#define USDHC1_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(117U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define USDHC1_CLK_ROOT_SYS_PLL1_DFS0_CLK CLOCK_ROOT(117U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_CLK)
|
||||
#define USDHC1_CLK_ROOT_SYS_PLL1_DFS1_CLK CLOCK_ROOT(117U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_CLK)
|
||||
#define USDHC1_CLK_ROOT_SYS_PLL1_DFS2_CLK CLOCK_ROOT(117U) | ROOT_MUX(3U) | CLOCK_ID(SYS_PLL1_DFS2_CLK)
|
||||
|
||||
/* USDHC2_CLK_ROOT */
|
||||
#define USDHC2_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(118U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define USDHC2_CLK_ROOT_SYS_PLL1_DFS0_CLK CLOCK_ROOT(118U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_CLK)
|
||||
#define USDHC2_CLK_ROOT_SYS_PLL1_DFS1_CLK CLOCK_ROOT(118U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_CLK)
|
||||
#define USDHC2_CLK_ROOT_SYS_PLL1_DFS2_CLK CLOCK_ROOT(118U) | ROOT_MUX(3U) | CLOCK_ID(SYS_PLL1_DFS2_CLK)
|
||||
|
||||
/* USDHC3_CLK_ROOT */
|
||||
#define USDHC3_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(119U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define USDHC3_CLK_ROOT_SYS_PLL1_DFS0_CLK CLOCK_ROOT(119U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_CLK)
|
||||
#define USDHC3_CLK_ROOT_SYS_PLL1_DFS1_CLK CLOCK_ROOT(119U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_CLK)
|
||||
#define USDHC3_CLK_ROOT_SYS_PLL1_DFS2_CLK CLOCK_ROOT(119U) | ROOT_MUX(3U) | CLOCK_ID(SYS_PLL1_DFS2_CLK)
|
||||
|
||||
/* V2X_PK_CLK_ROOT */
|
||||
#define V2X_PK_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(120U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define V2X_PK_CLK_ROOT_SYS_PLL1_DFS0_CLK CLOCK_ROOT(120U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_CLK)
|
||||
#define V2X_PK_CLK_ROOT_SYS_PLL1_DFS1_CLK CLOCK_ROOT(120U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_CLK)
|
||||
#define V2X_PK_CLK_ROOT_SYS_PLL1_DFS2_CLK CLOCK_ROOT(120U) | ROOT_MUX(3U) | CLOCK_ID(SYS_PLL1_DFS2_CLK)
|
||||
|
||||
/* WAKEUP_AXI_CLK_ROOT */
|
||||
#define WAKEUP_AXI_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(121U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define WAKEUP_AXI_CLK_ROOT_SYS_PLL1_DFS0_CLK CLOCK_ROOT(121U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_CLK)
|
||||
#define WAKEUP_AXI_CLK_ROOT_SYS_PLL1_DFS1_CLK CLOCK_ROOT(121U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_CLK)
|
||||
#define WAKEUP_AXI_CLK_ROOT_SYS_PLL1_DFS2_CLK CLOCK_ROOT(121U) | ROOT_MUX(3U) | CLOCK_ID(SYS_PLL1_DFS2_CLK)
|
||||
|
||||
/* XSPI_SLV_ROOT_CLK_ROOT */
|
||||
#define XSPI_SLV_ROOT_CLK_ROOT_OSC_24M_CLK CLOCK_ROOT(122U) | ROOT_MUX(0U) | CLOCK_ID(OSC_24M_CLK)
|
||||
#define XSPI_SLV_ROOT_CLK_ROOT_SYS_PLL1_DFS0_CLK CLOCK_ROOT(122U) | ROOT_MUX(1U) | CLOCK_ID(SYS_PLL1_DFS0_CLK)
|
||||
#define XSPI_SLV_ROOT_CLK_ROOT_SYS_PLL1_DFS1_CLK CLOCK_ROOT(122U) | ROOT_MUX(2U) | CLOCK_ID(SYS_PLL1_DFS1_CLK)
|
||||
#define XSPI_SLV_ROOT_CLK_ROOT_SYS_PLL1_DFS2_CLK CLOCK_ROOT(122U) | ROOT_MUX(3U) | CLOCK_ID(SYS_PLL1_DFS2_CLK)
|
||||
|
||||
#endif /* __ARCH_ARM_SRC_IMX9_HARDWARE_IMX93_IMX93_EDMA_H */
|
212
arch/arm/src/imx9/hardware/imx95/imx95_dmamux.h
Normal file
212
arch/arm/src/imx9/hardware/imx95/imx95_dmamux.h
Normal file
|
@ -0,0 +1,212 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/hardware/imx95/imx95_dmamux.h
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ARCH_ARM_SRC_IMX9_HARDWARE_IMX95_IMX95_DMAMUX_H
|
||||
#define __ARCH_ARM_SRC_IMX9_HARDWARE_IMX95_IMX95_DMAMUX_H
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "imx95_memorymap.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/* Identify channel MUX from 9th bit */
|
||||
|
||||
#define EDMA3_MUX_ID 0x0000
|
||||
#define EDMA4_MUX_ID 0x0100
|
||||
#define EDMA_MUX_ID_MASK 0xff00
|
||||
#define EDMA_MUX_MASK 0x00ff
|
||||
|
||||
/* eDMA3 MUXs */
|
||||
|
||||
#define DMA_REQUEST_DISABLED (0 | EDMA3_MUX_ID) /**< DSisabled*/
|
||||
#define DMA_REQUEST_MUXCAN1 (1 | EDMA3_MUX_ID) /**< CAN1 */
|
||||
#define DMA_REQUEST_MUXLPTMR1REQUEST (2 | EDMA3_MUX_ID) /**< LPTMR1 Request */
|
||||
#define DMA_REQUEST_MUXELEREQUEST (3 | EDMA3_MUX_ID) /**< ELE Request */
|
||||
#define DMA_REQUEST_MUXTPM1OVERFLOWREQUEST (4 | EDMA3_MUX_ID) /**< TPM1 Overflow Request */
|
||||
#define DMA_REQUEST_MUXTPM2OVERFLOWREQUEST (5 | EDMA3_MUX_ID) /**< TPM2 Overflow Request */
|
||||
#define DMA_REQUEST_MUXPDMREQUEST (6 | EDMA3_MUX_ID) /**< PDM */
|
||||
#define DMA_REQUEST_MUXADC1REQUEST (7 | EDMA3_MUX_ID) /**< ADC1 */
|
||||
#define DMA_REQUEST_MUXGPIO1REQUEST0 (8 | EDMA3_MUX_ID) /**< GPIO1 channel 0 */
|
||||
#define DMA_REQUEST_MUXGPIO1REQUEST1 (9 | EDMA3_MUX_ID) /**< GPIO1 channel 1 */
|
||||
#define DMA_REQUEST_MUXI3C1TOBUSREQUEST (10 | EDMA3_MUX_ID) /**< I3C1 To-bus Request */
|
||||
#define DMA_REQUEST_MUXI3C1FROMBUSREQUEST (11 | EDMA3_MUX_ID) /**< I3C1 From-bus Request */
|
||||
#define DMA_REQUEST_MUXLPI2C1TX (12 | EDMA3_MUX_ID) /**< LPI2C1 */
|
||||
#define DMA_REQUEST_MUXLPI2C1RX (13 | EDMA3_MUX_ID) /**< LPI2C1 */
|
||||
#define DMA_REQUEST_MUXLPI2C2TX (14 | EDMA3_MUX_ID) /**< LPI2C2 */
|
||||
#define DMA_REQUEST_MUXLPI2C2RX (15 | EDMA3_MUX_ID) /**< LPI2C2 */
|
||||
#define DMA_REQUEST_MUXLPSPI1TX (16 | EDMA3_MUX_ID) /**< LPSPI1 Transmit */
|
||||
#define DMA_REQUEST_MUXLPSPI1RX (17 | EDMA3_MUX_ID) /**< LPSPI1 Receive */
|
||||
#define DMA_REQUEST_MUXLPSPI2TX (18 | EDMA3_MUX_ID) /**< LPSPI2 Transmit */
|
||||
#define DMA_REQUEST_MUXLPSPI2RX (19 | EDMA3_MUX_ID) /**< LPSPI2 Receive */
|
||||
#define DMA_REQUEST_MUXLPUART1TX (20 | EDMA3_MUX_ID) /**< LPUART1 Transmit */
|
||||
#define DMA_REQUEST_MUXLPUART1RX (21 | EDMA3_MUX_ID) /**< LPUART1 Receive */
|
||||
#define DMA_REQUEST_MUXLPUART2TX (22 | EDMA3_MUX_ID) /**< LPUART2 Transmit */
|
||||
#define DMA_REQUEST_MUXLPUART2RX (23 | EDMA3_MUX_ID) /**< LPUART2 Receive */
|
||||
#define DMA_REQUEST_MUXSAI1TX (24 | EDMA3_MUX_ID) /**< SAI1 Transmit */
|
||||
#define DMA_REQUEST_MUXSAI1RX (25 | EDMA3_MUX_ID) /**< SAI1 Receive */
|
||||
#define DMA_REQUEST_MUXTPM1REQUEST0REQUEST2 (26 | EDMA3_MUX_ID) /**< TPM1 request 0 and request 2 */
|
||||
#define DMA_REQUEST_MUXTPM1REQUEST1REQUEST3 (27 | EDMA3_MUX_ID) /**< TPM1 request 1 and request 3 */
|
||||
#define DMA_REQUEST_MUXTPM2REQUEST0REQUEST2 (28 | EDMA3_MUX_ID) /**< TPM2 request 0 and request 2 */
|
||||
#define DMA_REQUEST_MUXTPM2REQUEST1REQUEST3 (29 | EDMA3_MUX_ID) /**< TPM2 request 1 and request 3 */
|
||||
#define DMA3_REQUEST_MUX_COUNT (30)
|
||||
|
||||
/* eDMA4 MUXs */
|
||||
|
||||
#define DMA_REQUEST_MUXCAN2 (1U | EDMA4_MUX_ID) /**< CAN2 */
|
||||
#define DMA_REQUEST_MUXGPIO2REQUEST0 (2U | EDMA4_MUX_ID) /**< GPIO2 channel 0 */
|
||||
#define DMA_REQUEST_MUXGPIO2REQUEST1 (3U | EDMA4_MUX_ID) /**< GPIO2 channel 1 */
|
||||
#define DMA_REQUEST_MUXGPIO3REQUEST0 (4U | EDMA4_MUX_ID) /**< GPIO3 channel 0 */
|
||||
#define DMA_REQUEST_MUXGPIO3REQUEST1 (5U | EDMA4_MUX_ID) /**< GPIO3 channel 1 */
|
||||
#define DMA_REQUEST_MUXI3C2TOBUSREQUEST (6U | EDMA4_MUX_ID) /**< I3C2 To-bus Request */
|
||||
#define DMA_REQUEST_MUXI3C2FROMBUSREQUEST (7U | EDMA4_MUX_ID) /**< I3C2 From-bus Request */
|
||||
#define DMA_REQUEST_MUXLPI2C3TX (8U | EDMA4_MUX_ID) /**< LPI2C3 */
|
||||
#define DMA_REQUEST_MUXLPI2C3RX (9U | EDMA4_MUX_ID) /**< LPI2C3 */
|
||||
#define DMA_REQUEST_MUXLPI2C4TX (10U | EDMA4_MUX_ID) /**< LPI2C4 */
|
||||
#define DMA_REQUEST_MUXLPI2C4RX (11U | EDMA4_MUX_ID) /**< LPI2C2 */
|
||||
#define DMA_REQUEST_MUXLPSPI3TX (12U | EDMA4_MUX_ID) /**< LPSPI3 Transmit */
|
||||
#define DMA_REQUEST_MUXLPSPI3RX (13U | EDMA4_MUX_ID) /**< LPSPI3 Receive */
|
||||
#define DMA_REQUEST_MUXLPSPI4TX (14U | EDMA4_MUX_ID) /**< LPSPI4 Transmit */
|
||||
#define DMA_REQUEST_MUXLPSPI4RX (15U | EDMA4_MUX_ID) /**< LPSPI4 Receive */
|
||||
#define DMA_REQUEST_MUXLPTMR2REQUEST (16U | EDMA4_MUX_ID) /**< LPTMR2 Request */
|
||||
#define DMA_REQUEST_MUXLPUART3TX (17U | EDMA4_MUX_ID) /**< LPUART3 Transmit */
|
||||
#define DMA_REQUEST_MUXLPUART3RX (18U | EDMA4_MUX_ID) /**< LPUART3 Receive */
|
||||
#define DMA_REQUEST_MUXLPUART4TX (19U | EDMA4_MUX_ID) /**< LPUART4 Transmit */
|
||||
#define DMA_REQUEST_MUXLPUART4RX (20U | EDMA4_MUX_ID) /**< LPUART4 Receive */
|
||||
#define DMA_REQUEST_MUXLPUART5TX (21U | EDMA4_MUX_ID) /**< LPUART5 Transmit */
|
||||
#define DMA_REQUEST_MUXLPUART5RX (22U | EDMA4_MUX_ID) /**< LPUART5 Receive */
|
||||
#define DMA_REQUEST_MUXLPUART6TX (23U | EDMA4_MUX_ID) /**< LPUART6 Transmit */
|
||||
#define DMA_REQUEST_MUXLPUART6RX (24U | EDMA4_MUX_ID) /**< LPUART6 Receive */
|
||||
#define DMA_REQUEST_MUXTPM3REQUEST0REQUEST2 (25U | EDMA4_MUX_ID) /**< TPM3 request 0 and request 2 */
|
||||
#define DMA_REQUEST_MUXTPM3REQUEST1REQUEST3 (26U | EDMA4_MUX_ID) /**< TPM3 request 1 and request 3 */
|
||||
#define DMA_REQUEST_MUXTPM3OVERFLOWREQUEST (27U | EDMA4_MUX_ID) /**< TPM3 Overflow request */
|
||||
#define DMA_REQUEST_MUXTPM4REQUEST0REQUEST2 (28U | EDMA4_MUX_ID) /**< TPM4 request 0 and request 2 */
|
||||
#define DMA_REQUEST_MUXTPM4REQUEST1REQUEST3 (29U | EDMA4_MUX_ID) /**< TPM4 request 1 and request 3 */
|
||||
#define DMA_REQUEST_MUXTPM4OVERFLOWREQUEST (30U | EDMA4_MUX_ID) /**< TPM4 Overflow request */
|
||||
#define DMA_REQUEST_MUXTPM5REQUEST0REQUEST2 (31U | EDMA4_MUX_ID) /**< TPM5 request 0 and request 2 */
|
||||
#define DMA_REQUEST_MUXTPM5REQUEST1REQUEST3 (32U | EDMA4_MUX_ID) /**< TPM5 request 1 and request 3 */
|
||||
#define DMA_REQUEST_MUXTPM5OVERFLOWREQUEST (33U | EDMA4_MUX_ID) /**< TPM5 Overflow request */
|
||||
#define DMA_REQUEST_MUXTPM6REQUEST0REQUEST2 (34U | EDMA4_MUX_ID) /**< TPM6 request 0 and request 2 */
|
||||
#define DMA_REQUEST_MUXTPM6REQUEST1REQUEST3 (35U | EDMA4_MUX_ID) /**< TPM6 request 1 and request 3 */
|
||||
#define DMA_REQUEST_MUXTPM6OVERFLOWREQUEST (36U | EDMA4_MUX_ID) /**< TPM6 Overflow request */
|
||||
#define DMA_REQUEST_MUXFLEXIO1REQUEST0 (37U | EDMA4_MUX_ID) /**< FlexIO1 Request0 */
|
||||
#define DMA_REQUEST_MUXFLEXIO1REQUEST1 (38U | EDMA4_MUX_ID) /**< FlexIO1 Request1 */
|
||||
#define DMA_REQUEST_MUXFLEXIO1REQUEST2 (39U | EDMA4_MUX_ID) /**< FlexIO1 Request2 */
|
||||
#define DMA_REQUEST_MUXFLEXIO1REQUEST3 (40U | EDMA4_MUX_ID) /**< FlexIO1 Request3 */
|
||||
#define DMA_REQUEST_MUXFLEXIO1REQUEST4 (41U | EDMA4_MUX_ID) /**< FlexIO1 Request4 */
|
||||
#define DMA_REQUEST_MUXFLEXIO1REQUEST5 (42U | EDMA4_MUX_ID) /**< FlexIO1 Request5 */
|
||||
#define DMA_REQUEST_MUXFLEXIO1REQUEST6 (43U | EDMA4_MUX_ID) /**< FlexIO1 Request6 */
|
||||
#define DMA_REQUEST_MUXFLEXIO1REQUEST7 (44U | EDMA4_MUX_ID) /**< FlexIO1 Request7 */
|
||||
#define DMA_REQUEST_MUXFLEXIO2REQUEST0 (45U | EDMA4_MUX_ID) /**< FlexIO2 Request0 */
|
||||
#define DMA_REQUEST_MUXFLEXIO2REQUEST1 (46U | EDMA4_MUX_ID) /**< FlexIO2 Request1 */
|
||||
#define DMA_REQUEST_MUXFLEXIO2REQUEST2 (47U | EDMA4_MUX_ID) /**< FlexIO2 Request2 */
|
||||
#define DMA_REQUEST_MUXFLEXIO2REQUEST3 (48U | EDMA4_MUX_ID) /**< FlexIO2 Request3 */
|
||||
#define DMA_REQUEST_MUXFLEXIO2REQUEST4 (49U | EDMA4_MUX_ID) /**< FlexIO2 Request4 */
|
||||
#define DMA_REQUEST_MUXFLEXIO2REQUEST5 (50U | EDMA4_MUX_ID) /**< FlexIO2 Request5 */
|
||||
#define DMA_REQUEST_MUXFLEXIO2REQUEST6 (51U | EDMA4_MUX_ID) /**< FlexIO2 Request6 */
|
||||
#define DMA_REQUEST_MUXFLEXIO2REQUEST7 (52U | EDMA4_MUX_ID) /**< FlexIO2 Request7 */
|
||||
#define DMA_REQUEST_MUXFLEXSPI1TX (53U | EDMA4_MUX_ID) /**< FlexSPI1 Transmit */
|
||||
#define DMA_REQUEST_MUXFLEXSPI1RX (54U | EDMA4_MUX_ID) /**< FlexSPI1 Receive */
|
||||
#define DMA_REQUEST_MUXGPIO5REQUEST0 (53U | EDMA4_MUX_ID) /**< GPIO5 Request0 */
|
||||
#define DMA_REQUEST_MUXGPIO5REQUEST1 (54U | EDMA4_MUX_ID) /**< GPIO5 Request1 */
|
||||
#define DMA_REQUEST_MUXCAN3 (57U | EDMA4_MUX_ID) /**< CAN3 */
|
||||
#define DMA_REQUEST_MUXSAI2TX (58U | EDMA4_MUX_ID) /**< SAI2 Transmit */
|
||||
#define DMA_REQUEST_MUXSAI2RX (59U | EDMA4_MUX_ID) /**< SAI2 Receive */
|
||||
#define DMA_REQUEST_MUXSAI3TX (60U | EDMA4_MUX_ID) /**< SAI3 Transmit */
|
||||
#define DMA_REQUEST_MUXSAI3RX (61U | EDMA4_MUX_ID) /**< SAI3 Receive */
|
||||
#define DMA_REQUEST_MUXGPIO4REQUEST0 (62U | EDMA4_MUX_ID) /**< GPIO4 Request0 */
|
||||
#define DMA_REQUEST_MUXGPIO4REQUEST1 (63U | EDMA4_MUX_ID) /**< GPIO4 Request1 */
|
||||
#define DMA_REQUEST_MUXEARCREQUEST0 (65U | EDMA4_MUX_ID) /**< eARC enhanced Audio Return Channel */
|
||||
#define DMA_REQUEST_MUXEARCREQUEST1 (66U | EDMA4_MUX_ID) /**< eARC enhanced Audio Return Channel */
|
||||
#define DMA_REQUEST_MUXSAI4TX (67U | EDMA4_MUX_ID) /**< SAI4 Transmit */
|
||||
#define DMA_REQUEST_MUXSAI4RX (68U | EDMA4_MUX_ID) /**< SAI4 Receive */
|
||||
#define DMA_REQUEST_MUXSAI5TX (69U | EDMA4_MUX_ID) /**< SAI5 Transmit */
|
||||
#define DMA_REQUEST_MUXSAI5RX (70U | EDMA4_MUX_ID) /**< SAI5 Receive */
|
||||
#define DMA_REQUEST_MUXLPI2C5TX (71U | EDMA4_MUX_ID) /**< LPI2C5 */
|
||||
#define DMA_REQUEST_MUXLPI2C5RX (72U | EDMA4_MUX_ID) /**< LPI2C5 */
|
||||
#define DMA_REQUEST_MUXLPI2C6TX (73U | EDMA4_MUX_ID) /**< LPI2C6 */
|
||||
#define DMA_REQUEST_MUXLPI2C6RX (74U | EDMA4_MUX_ID) /**< LPI2C6 */
|
||||
#define DMA_REQUEST_MUXLPI2C7TX (75U | EDMA4_MUX_ID) /**< LPI2C7 */
|
||||
#define DMA_REQUEST_MUXLPI2C7RX (76U | EDMA4_MUX_ID) /**< LPI2C7 */
|
||||
#define DMA_REQUEST_MUXLPI2C8TX (77U | EDMA4_MUX_ID) /**< LPI2C8 */
|
||||
#define DMA_REQUEST_MUXLPI2C8RX (78U | EDMA4_MUX_ID) /**< LPI2C8 */
|
||||
#define DMA_REQUEST_MUXLPSPI5TX (79U | EDMA4_MUX_ID) /**< LPSPI5 Transmit */
|
||||
#define DMA_REQUEST_MUXLPSPI5RX (80U | EDMA4_MUX_ID) /**< LPSPI5 Receive */
|
||||
#define DMA_REQUEST_MUXLPSPI6TX (81U | EDMA4_MUX_ID) /**< LPSPI6 Transmit */
|
||||
#define DMA_REQUEST_MUXLPSPI6RX (82U | EDMA4_MUX_ID) /**< LPSPI6 Receive */
|
||||
#define DMA_REQUEST_MUXLPSPI7TX (83U | EDMA4_MUX_ID) /**< LPSPI7 Transmit */
|
||||
#define DMA_REQUEST_MUXLPSPI7RX (84U | EDMA4_MUX_ID) /**< LPSPI7 Receive */
|
||||
#define DMA_REQUEST_MUXLPSPI8TX (85U | EDMA4_MUX_ID) /**< LPSPI8 Transmit */
|
||||
#define DMA_REQUEST_MUXLPSPI8RX (86U | EDMA4_MUX_ID) /**< LPSPI8 Receive */
|
||||
#define DMA_REQUEST_MUXLPUART7TX (87U | EDMA4_MUX_ID) /**< LPUART7 Transmit */
|
||||
#define DMA_REQUEST_MUXLPUART7RX (88U | EDMA4_MUX_ID) /**< LPUART7 Receive */
|
||||
#define DMA_REQUEST_MUXLPUART8TX (89U | EDMA4_MUX_ID) /**< LPUART8 Transmit */
|
||||
#define DMA_REQUEST_MUXLPUART8RX (90U | EDMA4_MUX_ID) /**< LPUART8 Receive */
|
||||
#define DMA_REQUEST_MUXCAN4 (91U | EDMA4_MUX_ID) /**< CAN4 */
|
||||
#define DMA_REQUEST_MUXCAN5 (92U | EDMA4_MUX_ID) /**< CAN5 */
|
||||
|
||||
#define DMA4_REQUEST_MUX_COUNT (95)
|
||||
|
||||
/* Combined MUX count (eDMA3 and eDMA4) */
|
||||
|
||||
#define DMA_REQUEST_MUX_COUNT (DMA3_REQUEST_MUX_COUNT + DMA4_REQUEST_MUX_COUNT)
|
||||
|
||||
/****************************************************************************
|
||||
* Inline Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_dmamux_get_dmabase
|
||||
*
|
||||
* Description:
|
||||
* Get DMA engine base address from MUX identifier.
|
||||
*
|
||||
* Input Parameters:
|
||||
* dmamux - The DMA MUX identifier.
|
||||
*
|
||||
* Returned Value:
|
||||
* Base address of the associated DMA engine.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static inline uintptr_t imx9_dmamux_get_dmabase(uint16_t dmamux)
|
||||
{
|
||||
if ((dmamux & EDMA_MUX_ID_MASK) == EDMA3_MUX_ID)
|
||||
{
|
||||
return IMX9_DMA3_BASE;
|
||||
}
|
||||
else
|
||||
{
|
||||
return IMX9_EDMA5_2_BASE;
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* __ARCH_ARM_SRC_IMX9_HARDWARE_IMX95_IMX95_DMAMUX_H */
|
445
arch/arm/src/imx9/hardware/imx95/imx95_edma.h
Normal file
445
arch/arm/src/imx9/hardware/imx95/imx95_edma.h
Normal file
|
@ -0,0 +1,445 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/hardware/imx95/imx95_edma.h
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ARCH_ARM_SRC_IMX9_HARDWARE_IMX95_IMX95_EDMA_H
|
||||
#define __ARCH_ARM_SRC_IMX9_HARDWARE_IMX95_IMX95_EDMA_H
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#include "imx95_memorymap.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/* eDMA3 / eDMA4 Register Offsets */
|
||||
|
||||
#define IMX9_EDMA_CSR_OFFSET (0x000000) /* Management Page Control Register (CSR) */
|
||||
#define IMX9_EDMA_ES_OFFSET (0x000004) /* Management Page Error Status Register (ES) */
|
||||
#define IMX9_EDMA_CH_GRPRI_OFFSET(n) (0x000100 + ((n) << 2)) /* Channel n Arbitration Group Register (CHn_GRPRI) */
|
||||
|
||||
/* eDMA3 only */
|
||||
|
||||
#define IMX9_EDMA_INT_OFFSET (0x000008) /* Management Page Interrupt Request Status Register (INT) */
|
||||
#define IMX9_EDMA_HRS_OFFSET (0x00000c) /* Management Page Hardware Request Status Register (HRS) */
|
||||
|
||||
/* eDMA4 only */
|
||||
|
||||
#define IMX9_EDMA_INT_LOW_OFFSET (0x000008) /* Management Page Interrupt Request Status Register (INT_LOW) */
|
||||
#define IMX9_EDMA_INT_HIGH_OFFSET (0x00000c) /* Management Page Interrupt Request Status Register (INT_HIGH) */
|
||||
#define IMX9_EDMA_HRS_LOW_OFFSET (0x000010) /* Management Page Hardware Request Status Register (HRS_LOW) */
|
||||
#define IMX9_EDMA_HRS_HIGH_OFFSET (0x000014) /* Management Page Hardware Request Status Register (HRS_HIGH) */
|
||||
|
||||
/* eDNA5 only */
|
||||
#define IMX9_EDMA_MP_CH_MUX_OFFSET(n) (0x000200 + ((n) << 2)) /* Channel Multiplexor Configuration (CH_MUX) */
|
||||
|
||||
/* eDMA3 / eDMA4 Register Addresses */
|
||||
|
||||
#define IMX9_EDMA_CSR(n) ((n) + IMX9_EDMA_CSR_OFFSET)
|
||||
#define IMX9_EDMA_ES(n) ((n) + IMX9_EDMA_ES_OFFSET)
|
||||
#define IMX9_EDMA_CH_GRPRI(n,c) ((n) + IMX9_EDMA_CH_GRPRI_OFFSET(n))
|
||||
|
||||
/* eDMA3 only */
|
||||
|
||||
#define IMX9_EDMA_INT (IMX9_DMA3_BASE + IMX9_EDMA_INT_OFFSET)
|
||||
#define IMX9_EDMA_HRS (IMX9_DMA3_BASE + IMX9_EDMA_HRS_OFFSET)
|
||||
|
||||
/* eDMA5 only */
|
||||
|
||||
#define IMX9_EDMA_INT_LOW (IMX9_EDMA5_2_BASE + IMX9_EDMA_INT_LOW_OFFSET)
|
||||
#define IMX9_EDMA_INT_HIGH (IMX9_EDMA5_2_BASE + IMX9_EDMA_INT_HIGH_OFFSET)
|
||||
#define IMX9_EDMA_HRS_LOW (IMX9_EDMA5_2_BASE + IMX9_EDMA_HRS_LOW_OFFSET)
|
||||
#define IMX9_EDMA_HRS_HIGH (IMX9_EDMA5_2_BASE + IMX9_EDMA_HRS_HIGH_OFFSET)
|
||||
|
||||
/* eDMA Transfer Control Descriptor (TCD) Register Offsets */
|
||||
|
||||
#define IMX9_EDMA_CH_CSR_OFFSET (0x000000) /* Channel Control and Status Register (CH0_CSR) */
|
||||
#define IMX9_EDMA_CH_ES_OFFSET (0x000004) /* Channel Error Status Register (CH0_ES) */
|
||||
#define IMX9_EDMA_CH_INT_OFFSET (0x000008) /* Channel Interrupt Status Register (CH0_INT) */
|
||||
#define IMX9_EDMA_CH_SBR_OFFSET (0x00000c) /* Channel System Bus Register (CH0_SBR) */
|
||||
#define IMX9_EDMA_CH_PRI_OFFSET (0x000010) /* Channel Priority Register (CH0_PRI) */
|
||||
#define IMX9_EDMA_CH_MUX_OFFSET (0x000014) /* Channel Multiplexor Configuration (CH0_MUX) (eDMA4 only) */
|
||||
#define IMX9_EDMA_CH_MATTR_OFFSET (0x000018) /* Memory Attributes Register (CH0_MATTR) (eDMA4 only) */
|
||||
#define IMX9_EDMA_TCD_SADDR_OFFSET (0x000020) /* TCD Source Address Register (TCD0_SADDR) */
|
||||
#define IMX9_EDMA_TCD_SOFF_OFFSET (0x000024) /* TCD Signed Source Address Offset Register (TCD0_SOFF) */
|
||||
#define IMX9_EDMA_TCD_ATTR_OFFSET (0x000026) /* TCD Transfer Attributes (TCD0_ATTR) */
|
||||
#define IMX9_EDMA_TCD_NBYTES_OFFSET (0x000028) /* TCD Transfer Size (TCD0_NBYTES) */
|
||||
#define IMX9_EDMA_TCD_SLAST_SDA_OFFSET (0x00002c) /* TCD Last Source Address Adjustment / Store DADDR Address Register (TCD0_SLAST_SDA) */
|
||||
#define IMX9_EDMA_TCD_DADDR_OFFSET (0x000030) /* TCD Destination Address Register (TCD0_DADDR) */
|
||||
#define IMX9_EDMA_TCD_DOFF_OFFSET (0x000034) /* TCD Signed Destination Address Offset Register (TCD0_DOFF) */
|
||||
#define IMX9_EDMA_TCD_CITER_OFFSET (0x000036) /* TCD Current Major Loop Count Register (TCD0_CITER) */
|
||||
#define IMX9_EDMA_TCD_DLAST_SGA_OFFSET (0x000038) /* TCD Last Destination Address Adjustment / Scatter Gather Address Register (TCD0_DLAST_SGA)*/
|
||||
#define IMX9_EDMA_TCD_CSR_OFFSET (0x00003c) /* TCD Control and Status Register (TCD0_CSR) */
|
||||
#define IMX9_EDMA_TCD_BITER_OFFSET (0x00003e) /* TCD Beginning Major Loop Count Register (TCD0_BITER) */
|
||||
|
||||
/* eDMA 3 and eDMA 4 have TCD instance offsets, but same base offset */
|
||||
|
||||
#define IMX9_EDMA_TCD_BASE_OFFSET (0x10000) /* Offset to TCD for both eDMA3/4 */
|
||||
#define IMX9_EDMA3_TCD_INST_OFFSET (0x10000) /* Per instance TCD offset for eDMA3 */
|
||||
#define IMX9_EDMA4_TCD_INST_OFFSET (0x8000) /* Per instance TCD offset for eDMA4 */
|
||||
#define IMX9_EDMA_TCD_BASE(n) ((n) + IMX9_EDMA_TCD_BASE_OFFSET)
|
||||
#define IMX9_EDMA_TCD_INST_OFFSET(n) ((n) == IMX9_DMA3_BASE ? IMX9_EDMA3_TCD_INST_OFFSET : IMX9_EDMA4_TCD_INST_OFFSET)
|
||||
#define IMX9_EDMA_TCD(n,t) (IMX9_EDMA_TCD_BASE(n) + (t) * IMX9_EDMA_TCD_INST_OFFSET(n))
|
||||
|
||||
/* eDMA Transfer Control Descriptor (TCD) Register Addresses ****************/
|
||||
|
||||
#define IMX9_EDMA_CH_CSR(n,t) (IMX9_EDMA_TCD(n,t) + IMX9_EDMA_CH_CSR_OFFSET)
|
||||
#define IMX9_EDMA_CH_ES(n,t) (IMX9_EDMA_TCD(n,t) + IMX9_EDMA_CH_ES_OFFSET)
|
||||
#define IMX9_EDMA_CH_INT(n,t) (IMX9_EDMA_TCD(n,t) + IMX9_EDMA_CH_INT_OFFSET)
|
||||
#define IMX9_EDMA_CH_SBR(n,t) (IMX9_EDMA_TCD(n,t) + IMX9_EDMA_CH_SBR_OFFSET)
|
||||
#define IMX9_EDMA_CH_PRI(n,t) (IMX9_EDMA_TCD(n,t) + IMX9_EDMA_CH_PRI_OFFSET)
|
||||
#define IMX9_EDMA_CH_MUX(n,t) (IMX9_EDMA_TCD(n,t) + IMX9_EDMA_CH_MUX_OFFSET)
|
||||
#define IMX9_EDMA_TCD_SADDR(n,t) (IMX9_EDMA_TCD(n,t) + IMX9_EDMA_TCD_SADDR_OFFSET)
|
||||
#define IMX9_EDMA_TCD_SOFF(n,t) (IMX9_EDMA_TCD(n,t) + IMX9_EDMA_TCD_SOFF_OFFSET)
|
||||
#define IMX9_EDMA_TCD_ATTR(n,t) (IMX9_EDMA_TCD(n,t) + IMX9_EDMA_TCD_ATTR_OFFSET)
|
||||
#define IMX9_EDMA_TCD_NBYTES(n,t) (IMX9_EDMA_TCD(n,t) + IMX9_EDMA_TCD_NBYTES_OFFSET)
|
||||
#define IMX9_EDMA_TCD_SLAST_SDA(n,t) (IMX9_EDMA_TCD(n,t) + IMX9_EDMA_TCD_SLAST_SDA_OFFSET)
|
||||
#define IMX9_EDMA_TCD_DADDR(n,t) (IMX9_EDMA_TCD(n,t) + IMX9_EDMA_TCD_DADDR_OFFSET)
|
||||
#define IMX9_EDMA_TCD_DOFF(n,t) (IMX9_EDMA_TCD(n,t) + IMX9_EDMA_TCD_DOFF_OFFSET)
|
||||
#define IMX9_EDMA_TCD_CITER(n,t) (IMX9_EDMA_TCD(n,t) + IMX9_EDMA_TCD_CITER_OFFSET)
|
||||
#define IMX9_EDMA_TCD_DLAST_SGA(n,t) (IMX9_EDMA_TCD(n,t) + IMX9_EDMA_TCD_DLAST_SGA_OFFSET)
|
||||
#define IMX9_EDMA_TCD_CSR(n,t) (IMX9_EDMA_TCD(n,t) + IMX9_EDMA_TCD_CSR_OFFSET)
|
||||
#define IMX9_EDMA_TCD_BITER(n,t) (IMX9_EDMA_TCD(n,t) + IMX9_EDMA_TCD_BITER_OFFSET)
|
||||
|
||||
/* eDMA Register Bitfield Definitions ***************************************/
|
||||
|
||||
/* Management Page Control Register (CSR) */
|
||||
|
||||
/* Bit 0: Reserved */
|
||||
#define EDMA_CSR_EDBG (1 << 1) /* Bit 1: Enable Debug (EDBG) */
|
||||
#define EDMA_CSR_ERCA (1 << 2) /* Bit 2: Enable Round Robin Channel Arbitration (ERCA) */
|
||||
/* Bit 3: Reserved */
|
||||
#define EDMA_CSR_HAE (1 << 4) /* Bit 4: Halt After Error (HAE) */
|
||||
#define EDMA_CSR_HALT (1 << 5) /* Bit 5: Halt DMA Operations (HALT) */
|
||||
#define EDMA_CSR_GCLC (1 << 6) /* Bit 6: Global Channel Linking Control (GCLC) */
|
||||
#define EDMA_CSR_GMRC (1 << 7) /* Bit 7: Global Master ID Replication Control (GMRC) */
|
||||
#define EDMA_CSR_ECX (1 << 8) /* Bit 8: Cancel Transfer With Error (ECX) */
|
||||
#define EDMA_CSR_CX (1 << 9) /* Bit 9: Cancel Transfer (CX) */
|
||||
/* Bits 10-23: Reserved */
|
||||
#define EDMA_CSR_ACTIVE_ID_SHIFT (24) /* Bits 24-28: Active Channel ID (ACTIVE_ID) */
|
||||
#define EDMA_CSR_ACTIVE_ID_MASK (0x1f << EDMA_CSR_ACTIVE_ID_SHIFT)
|
||||
/* Bits 29-30: Reserved */
|
||||
#define EDMA_CSR_ACTIVE (1 << 31) /* Bit 31: DMA Active Status (ACTIVE) */
|
||||
|
||||
/* Management Page Error Status Register (ES) */
|
||||
|
||||
#define EDMA_ES_DBE (1 << 0) /* Bit 0: Destination Bus Error (DBE) */
|
||||
#define EDMA_ES_SBE (1 << 1) /* Bit 1: Source Bus Error (SBE) */
|
||||
#define EDMA_ES_SGE (1 << 2) /* Bit 2: Scatter/Gather Configuration Error (SGE) */
|
||||
#define EDMA_ES_NCE (1 << 3) /* Bit 3: NBYTES/CITER Configuration Error (NCE) */
|
||||
#define EDMA_ES_DOE (1 << 4) /* Bit 4: Destination Offset Error (DOE) */
|
||||
#define EDMA_ES_DAE (1 << 5) /* Bit 5: Destination Address Error (DAE) */
|
||||
#define EDMA_ES_SOE (1 << 6) /* Bit 6: Source Offset Error (SOE) */
|
||||
#define EDMA_ES_SAE (1 << 7) /* Bit 7: Source Address Error (SAE) */
|
||||
#define EDMA_ES_ECX (1 << 8) /* Bit 8: Transfer Canceled (ECX) */
|
||||
/* Bits 9-23: Reserved */
|
||||
#define EDMA_ES_ERRCHN_SHIFT (24) /* Bits 24-28: Error Channel Number or Canceled Channel Number (ERRCHN) */
|
||||
#define EDMA_ES_ERRCHN_MASK (0x1f << EDMA_ES_ERRCHN_SHIFT)
|
||||
/* Bits 29-30: Reserved */
|
||||
#define EDMA_ES_VLD (1 << 31) /* Bit 31: Logical OR of all ERR status fields (VALID) */
|
||||
|
||||
/* Management Page Interrupt Request Status Register (INT) */
|
||||
|
||||
#define EDMA_INT(n) (1 << (n)) /* Bit n: Interrupt Request Status (INT) */
|
||||
|
||||
/* Management Page Hardware Request Status Register (HRS) */
|
||||
|
||||
#define EDMA_HRS(n) (1 << (n)) /* Bit n: Hardware Request Status (HRS) */
|
||||
|
||||
/* Channel n Arbitration Group Register (CHn_GRPRI) */
|
||||
|
||||
#define EDMA_CH_GRPRI_SHIFT (0) /* Bits 0-4: Arbitration Group For Channel n (GRPRI) */
|
||||
#define EDMA_CH_GRPRI_MASK (0x1f << EDMA_CH_GRPRI_SHIFT)
|
||||
/* Bits 5-31: Reserved */
|
||||
|
||||
/* eDMA Transfer Control Descriptor (TCD) Bitfield Definitions **************/
|
||||
|
||||
/* Channel n Control and Status Register (CHn_CSR) */
|
||||
|
||||
#define EDMA_CH_CSR_ERQ (1 << 0) /* Bit 0: Enable DMA Request (ERQ) */
|
||||
#define EDMA_CH_CSR_EARQ (1 << 1) /* Bit 1: Enable Asynchronous DMA Request in Stop Mode for Channel (EARQ) */
|
||||
#define EDMA_CH_CSR_EEI (1 << 2) /* Bit 2: Enable Error Interrupt (EEI) */
|
||||
#define EDMA_CH_CSR_EBW (1 << 3) /* Bit 3: Enable Buffered Writes (EBW) */
|
||||
/* Bit 4-29: Reserved */
|
||||
#define EDMA_CH_CSR_DONE (1 << 30) /* Bit 30: Channel Done (DONE) */
|
||||
#define EDMA_CH_CSR_ACTIVE (1 << 31) /* Bit 31: CHannel Active (ACTIVE) */
|
||||
|
||||
/* Channel n Error Status Register (CHn_ES) */
|
||||
|
||||
#define EDMA_CH_ES_DBE (1 << 0) /* Bit 0: Destination Bus Error (DBE) */
|
||||
#define EDMA_CH_ES_SBE (1 << 1) /* Bit 1: Source Bus Error (SBE) */
|
||||
#define EDMA_CH_ES_SGE (1 << 2) /* Bit 2: Scatter/Gather Configuration Error (SGE) */
|
||||
#define EDMA_CH_ES_NCE (1 << 3) /* Bit 3: NBYTES/CITER Configuration Error (NCE) */
|
||||
#define EDMA_CH_ES_DOE (1 << 4) /* Bit 4: Destination Offset Error (DOE) */
|
||||
#define EDMA_CH_ES_DAE (1 << 5) /* Bit 5: Destination Address Error (DAE) */
|
||||
#define EDMA_CH_ES_SOE (1 << 6) /* Bit 6: Source Offset Error (SOE) */
|
||||
#define EDMA_CH_ES_SAE (1 << 7) /* Bit 7: Source Address Error (SAE) */
|
||||
/* Bit 8-30: Reserved */
|
||||
#define EDMA_CH_ES_ERR (1 << 31) /* Bit 31: Error in this channel (ERR) */
|
||||
|
||||
/* Channel n Interrupt Status Register (CHn_INT) */
|
||||
|
||||
#define EDMA_CH_INT (1 << 0) /* Bit 0: Interrupt Request (INT) */
|
||||
/* Bits 1-31: Reserved */
|
||||
|
||||
/* Channel n System Bus Register (CHn_SBR) */
|
||||
|
||||
#define EDMA_CH_SBR_MID_SHIFT (0) /* Bits 0-3: Master ID (MID) */
|
||||
#define EDMA_CH_SBR_MID_MASK (0x0f << EDMA_CH_SBR_MID_SHIFT)
|
||||
/* Bits 4-13: Reserved */
|
||||
#define EDMA_CH_SBR_SEC (1 << 14) /* Bit 14: Security Level (SEC) */
|
||||
#define EDMA_CH_SBR_PAL (1 << 15) /* Bit 15: Privileged Access Level (PAL) */
|
||||
#define EDMA_CH_SBR_EMI (1 << 16) /* Bit 16: Enable Master ID Replication (EMI) */
|
||||
#define EDMA_CH_SBR_ATTR_SHIFT (17) /* Bits 17-19: Attribute Output (ATTR) */
|
||||
#define EDMA_CH_SBR_ATTR_MASK (0x07 << EDMA_CH_SBR_ATTR_SHIFT)
|
||||
/* Bits 20-31: Reserved */
|
||||
|
||||
/* Channel n Priority Register (CHn_PRI) */
|
||||
|
||||
#define EDMA_CH_PRI_APL_SHIFT (0) /* Bits 0-2: Arbitration Priority Level (APL) */
|
||||
#define EDMA_CH_PRI_APL_MASK (0x07 << EDMA_CH_PRI_APL_SHIFT)
|
||||
/* Bits 3-29: Reserved */
|
||||
#define EDMA_CH_PRI_DPA (1 << 30) /* Bit 30: Disable Preempt Ability (DPA) */
|
||||
#define EDMA_CH_PRI_ECP (1 << 31) /* Bit 31: Enable Channel Preemption (ECP) */
|
||||
|
||||
/* Channel Multiplexor Configuration (CHn_MUX) */
|
||||
|
||||
#define EDMA_CH_SRC_SHIFT (0) /* Bits 0-6: Service Request Source */
|
||||
#define EDMA_CH_SRC_MASK (0x7f << EDMA_CH_SRC_SHIFT)
|
||||
|
||||
/* TCDn Source Address Register (TCDn_SADDR) */
|
||||
|
||||
#define EDMA_TCD_SADDR_SHIFT (0) /* Bits 0-31: Source Address (SADDR) */
|
||||
#define EDMA_TCD_SADDR_MASK (0xffffffff << EDMA_TCD_SADDR_SHIFT)
|
||||
|
||||
/* TCDn Signed Source Address Offset Register (TCDn_SOFF) */
|
||||
|
||||
#define EDMA_TCD_SOFF_SHIFT (0) /* Bits 0-31: Source Address Signed Offset (SOFF) */
|
||||
#define EDMA_TCD_SOFF_MASK (0xffffffff << EDMA_TCD_SOFF_SHIFT)
|
||||
|
||||
/* TCDn Transfer Attributes (TCDn_ATTR) */
|
||||
|
||||
#define EDMA_TCD_ATTR_DSIZE_SHIFT (0) /* Bits 0-2: Destination Data Transfer Size (DSIZE) */
|
||||
#define EDMA_TCD_ATTR_DSIZE_MASK (0x07 << EDMA_TCD_ATTR_DSIZE_SHIFT)
|
||||
#define EDMA_TCD_ATTR_DSIZE(n) (((n) << EDMA_TCD_ATTR_DSIZE_SHIFT) & EDMA_TCD_ATTR_DSIZE_MASK)
|
||||
#define EDMA_TCD_ATTR_DMOD_SHIFT (3) /* Bits 3-7: Destination Address Modulo (DMOD) */
|
||||
#define EDMA_TCD_ATTR_DMOD_MASK (0x1f << EDMA_TCD_ATTR_DMOD_SHIFT)
|
||||
#define EDMA_TCD_ATTR_DMOD(n) (((n) << EDMA_TCD_ATTR_DMOD_SHIFT) & EDMA_TCD_ATTR_DMOD_MASK)
|
||||
#define EDMA_TCD_ATTR_SSIZE_SHIFT (8) /* Bits 8-10: Source Data Transfer Size (SSIZE) */
|
||||
#define EDMA_TCD_ATTR_SSIZE_MASK (0x07 << EDMA_TCD_ATTR_SSIZE_SHIFT)
|
||||
#define EDMA_TCD_ATTR_SSIZE(n) (((n) << EDMA_TCD_ATTR_SSIZE_SHIFT) & EDMA_TCD_ATTR_SSIZE_MASK)
|
||||
# define EDMA_TCD_ATTR_SSIZE_8BIT (0x00 << EDMA_TCD_ATTR_SSIZE_SHIFT) /* 8-bit */
|
||||
# define EDMA_TCD_ATTR_SSIZE_16BIT (0x01 << EDMA_TCD_ATTR_SSIZE_SHIFT) /* 16-bit */
|
||||
# define EDMA_TCD_ATTR_SSIZE_32BIT (0x02 << EDMA_TCD_ATTR_SSIZE_SHIFT) /* 32-bit */
|
||||
# define EDMA_TCD_ATTR_SSIZE_64BIT (0x03 << EDMA_TCD_ATTR_SSIZE_SHIFT) /* 64-bit */
|
||||
# define EDMA_TCD_ATTR_SSIZE_16BYTE (0x04 << EDMA_TCD_ATTR_SSIZE_SHIFT) /* 16-byte */
|
||||
# define EDMA_TCD_ATTR_SSIZE_32BYTE (0x05 << EDMA_TCD_ATTR_SSIZE_SHIFT) /* 32-byte */
|
||||
# define EDMA_TCD_ATTR_SSIZE_64BYTE (0x06 << EDMA_TCD_ATTR_SSIZE_SHIFT) /* 64-byte */
|
||||
|
||||
#define EDMA_TCD_ATTR_SMOD_SHIFT (11) /* Bits 11-15: Source Address Modulo (SMOD) */
|
||||
#define EDMA_TCD_ATTR_SMOD_MASK (0x1f << EDMA_TCD_ATTR_SMOD_SHIFT)
|
||||
#define EDMA_TCD_ATTR_SMOD(n) (((n) << EDMA_TCD_ATTR_SMOD_SHIFT) & EDMA_TCD_ATTR_SMOD_MASK)
|
||||
|
||||
/* TCDn Transfer Size (TCDn_NBYTES) */
|
||||
|
||||
#define EDMA_TCD_NBYTES_SHIFT (0) /* Bits 0-29: Number of Bytes to Transfer per Service Request (NBYTES) */
|
||||
#define EDMA_TCD_NBYTES_MASK (0x3fffffff << EDMA_TCD_NBYTES_SHIFT)
|
||||
#define EDMA_TCD_NBYTES_MASK_MLOFF (0x03ff << EDMA_TCD_NBYTES_SHIFT)
|
||||
#define EDMA_TCD_NBYTES_MLOFF_SHIFT (10) /* Bits 10-29: Minor Loop Offset (MLOFF) */
|
||||
#define EDMA_TCD_NBYTES_MLOFF_MASK (0x0fffff << EDMA_TCD_NBYTES_MLOFF_SHIFT)
|
||||
#define EDMA_TCD_NBYTES_DMLOE (1 << 30) /* Bit 30: Destination Minor Loop Offset Enable (DMLOE) */
|
||||
#define EDMA_TCD_NBYTES_SMLOE (1 << 31) /* Bit 31: Source Minor Loop Offset Enable (SMLOE) */
|
||||
|
||||
/* TCDn Last Source Address Adjustment / Store DADDR Address Register
|
||||
* (TCDn_SLAST_SDA)
|
||||
*/
|
||||
|
||||
#define EDMA_TCD_SLAST_SDA_SHIFT (0) /* Bits 0-31: Last Source Address Adjustment / Store DADDR Address (SLAST_SDA) */
|
||||
#define EDMA_TCD_SLAST_SDA_MASK (0xffffffff << EDMA_TCD_SLAST_SDA_SHIFT)
|
||||
|
||||
/* TCDn Destination Address Register (TCDn_DADDR) */
|
||||
|
||||
#define EDMA_TCD_DADDR_SHIFT (0) /* Bits 0-31: Destination Address (DADDR) */
|
||||
#define EDMA_TCD_DADDR_MASK (0xffffffff << EDMA_TCD_DADDR_SHIFT)
|
||||
|
||||
/* TCDn Signed Destination Address Offset Register (TCDn_DOFF) */
|
||||
|
||||
#define EDMA_TCD_DOFF_SHIFT (0) /* Bits 0-15: Destination Address Signed Offset (DOFF) */
|
||||
#define EDMA_TCD_DOFF_MASK (0xffff << EDMA_TCD_DOFF_SHIFT)
|
||||
|
||||
/* TCDn Current Major Loop Count Register (TCDn_CITER) */
|
||||
|
||||
#define EDMA_TCD_CITER_SHIFT (0) /* Bits 0-14: Current Major Iteration Count (CITER) */
|
||||
#define EDMA_TCD_CITER_MASK (0x7fff << EDMA_TCD_CITER_SHIFT)
|
||||
#define EDMA_TCD_CITER_MASK_ELINK (0x01ff << EDMA_TCD_CITER_SHIFT)
|
||||
#define EDMA_TCD_CITER_LINKCH_SHIFT (9) /* Bits 9-13: Minor Loop Link Channel Number (LINKCH) */
|
||||
#define EDMA_TCD_CITER_LINKCH_MASK (0x1f << EDMA_TCD_CITER_LINKCH_SHIFT)
|
||||
#define EDMA_TCD_CITER_LINKCH(n) (((n) << EDMA_TCD_CITER_LINKCH_SHIFT) & EDMA_TCD_CITER_LINKCH_SHIFT)
|
||||
#define EDMA_TCD_CITER_ELINK (1 << 15) /* Bit 15: Enable Link (ELINK) */
|
||||
|
||||
/* TCDn Last Destination Address Adjustment / Scatter Gather Address Register
|
||||
* (TCDn_DLAST_SGA)
|
||||
*/
|
||||
|
||||
#define EDMA_TCD_DLAST_SGA_SHIFT (0) /* Bits 0-31: Last Destination Address Adjustment / Scatter Gather Address (DLAST_SGA) */
|
||||
#define EDMA_TCD_DLAST_SGA_MASK (0xffffffff << EDMA_TCD_DLAST_SGA_SHIFT)
|
||||
|
||||
/* TCDn Control and Status Register (TCDn_CSR) */
|
||||
|
||||
#define EDMA_TCD_CSR_START (1 << 0) /* Bit 0: Channel Start (START) */
|
||||
#define EDMA_TCD_CSR_INTMAJOR (1 << 1) /* Bit 1: Enable Interrupt if Major count complete (INTMAJOR) */
|
||||
#define EDMA_TCD_CSR_INTHALF (1 << 2) /* Bit 2: Enable Interrupt if Major Count Half-complete (INTHALF) */
|
||||
#define EDMA_TCD_CSR_DREQ (1 << 3) /* Bit 3: Disable Request (DREQ) */
|
||||
#define EDMA_TCD_CSR_ESG (1 << 4) /* Bit 4: Enable Scatter/Gather Processing (ESG) */
|
||||
#define EDMA_TCD_CSR_MAJORELINK (1 << 5) /* Bit 5: Enable Link When Major Loop Complete (MAJORELINK) */
|
||||
#define EDMA_TCD_CSR_EEOP (1 << 6) /* Bit 6: Enable End-Of-Packet Processing (EEOP) */
|
||||
#define EDMA_TCD_CSR_ESDA (1 << 7) /* Bit 7: Enable Store Destination Address (ESDA) */
|
||||
#define EDMA_TCD_CSR_MAJORLINKCH_SHIFT (8) /* Bits 8-12: Major Loop Link Channel Number (MAJORLINKCH) */
|
||||
#define EDMA_TCD_CSR_MAJORLINKCH_MASK (0x1f << EDMA_TCD_CSR_MAJORLINKCH_SHIFT)
|
||||
#define EDMA_TCD_CSR_MAJORLINKCH(n) (((n) << EDMA_TCD_CSR_MAJORLINKCH_SHIFT) & EDMA_TCD_CSR_MAJORLINKCH_MASK)
|
||||
/* Bit 13: Reserved */
|
||||
#define EDMA_TCD_CSR_BWC_SHIFT (14) /* Bits 14-15: Bandwidth Control (BWC) */
|
||||
#define EDMA_TCD_CSR_BWC_MASK (0x03 << EDMA_TCD_CSR_BWC_SHIFT)
|
||||
# define EDMA_TCD_CSR_BWC_NOSTALL (0x00 << EDMA_TCD_CSR_BWC_SHIFT) /* No eDMA engine stalls */
|
||||
# define EDMA_TCD_CSR_BWC_HPE (0x01 << EDMA_TCD_CSR_BWC_SHIFT) /* Enable eDMA master high-priority elevation (HPE) mode */
|
||||
# define EDMA_TCD_CSR_BWC_4CYCLES (0x02 << EDMA_TCD_CSR_BWC_SHIFT) /* eDMA engine stalls for 4 cycles after each R/W */
|
||||
# define EDMA_TCD_CSR_BWC_8CYCLES (0x03 << EDMA_TCD_CSR_BWC_SHIFT) /* eDMA engine stalls for 8 cycles after each R/W */
|
||||
|
||||
/* TCDn Beginning Major Loop Count Register (TCDn_BITER) */
|
||||
|
||||
#define EDMA_TCD_BITER_SHIFT (0) /* Bits 0-14: Starting Major Iteration Count (BITER) */
|
||||
#define EDMA_TCD_BITER_MASK (0x7fff << EDMA_TCD_BITER_SHIFT)
|
||||
#define EDMA_TCD_BITER_MASK_ELINK (0x01ff << EDMA_TCD_BITER_SHIFT)
|
||||
#define EDMA_TCD_BITER_LINKCH_SHIFT (9) /* Bits 9-13: Link Channel Number (LINKCH) */
|
||||
#define EDMA_TCD_BITER_LINKCH_MASK (0x1f << EDMA_TCD_BITER_LINKCH_SHIFT)
|
||||
#define EDMA_TCD_BITER_LINKCH(n) (((n) << EDMA_TCD_BITER_LINKCH_SHIFT) & EDMA_TCD_BITER_LINKCH_MASK)
|
||||
#define EDMA_TCD_BITER_ELINK (1 << 15) /* Bit 15: Enable Link (ELINK) */
|
||||
|
||||
/* Amount of channels */
|
||||
|
||||
#define DMA3_CHANNEL_COUNT (31)
|
||||
#define DMA4_CHANNEL_COUNT (64)
|
||||
#define IMX9_EDMA_NCHANNELS (DMA3_CHANNEL_COUNT + DMA4_CHANNEL_COUNT)
|
||||
|
||||
/* Amount of interrupt sources */
|
||||
#ifdef CONFIG_ARCH_CHIP_IMX95_M7
|
||||
#define DMA3_IRQ_COUNT (31) /* Error interrupt not counted */
|
||||
#else
|
||||
#define DMA3_IRQ_COUNT (32) /* Error interrupt not counted */
|
||||
#endif
|
||||
#define DMA4_IRQ_COUNT (32) /* Error interrupt not counted */
|
||||
|
||||
/****************************************************************************
|
||||
* Public Types
|
||||
****************************************************************************/
|
||||
|
||||
/* In-memory representation of the 32-byte Transfer Control Descriptor
|
||||
* (TCD)
|
||||
*/
|
||||
|
||||
struct imx9_edmatcd_s
|
||||
{
|
||||
uint32_t saddr; /* Offset: 0x0000 TCD Source Address */
|
||||
uint16_t soff; /* Offset: 0x0004 TCD Signed Source Address Offset */
|
||||
uint16_t attr; /* Offset: 0x0006 TCD Transfer Attributes */
|
||||
uint32_t nbytes; /* Offset: 0x0008 TCD Signed Minor Loop Offset / Byte Count */
|
||||
uint32_t slast; /* Offset: 0x000c TCD Last Source Address Adjustment */
|
||||
uint32_t daddr; /* Offset: 0x0010 TCD Destination Address */
|
||||
uint16_t doff; /* Offset: 0x0014 TCD Signed Destination Address Offset */
|
||||
uint16_t citer; /* Offset: 0x0016 TCD Current Minor Loop Link, Major Loop Count */
|
||||
uint32_t dlastsga; /* Offset: 0x0018 TCD Last Destination Address Adjustment/Scatter Gather Address */
|
||||
uint16_t csr; /* Offset: 0x001c TCD Control and Status */
|
||||
uint16_t biter; /* Offset: 0x001e TCD Beginning Minor Loop Link, Major Loop Count */
|
||||
};
|
||||
|
||||
/****************************************************************************
|
||||
* Inline Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_edma_tcdhasmux
|
||||
*
|
||||
* Description:
|
||||
* Check if DMA TCD has TCD.MUX register.
|
||||
*
|
||||
* Input Parameters:
|
||||
* dmabase - The eDMA base.
|
||||
*
|
||||
* Returned Value:
|
||||
* true if TCD.MUX exists; false if not.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static inline bool imx9_edma_tcdhasmux(uintptr_t dmabase)
|
||||
{
|
||||
/* Only eDMA5 has TCD.MUX register */
|
||||
|
||||
return dmabase == IMX9_EDMA5_2_BASE ? true : false;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_edma_choffset
|
||||
*
|
||||
* Description:
|
||||
* Channel offset in global channel list for dma base.
|
||||
*
|
||||
* Input Parameters:
|
||||
* base - The eDMA base.
|
||||
*
|
||||
* Returned Value:
|
||||
* Channel offset.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static inline uint32_t imx9_edma_choffset(uintptr_t base)
|
||||
{
|
||||
return base == IMX9_DMA3_BASE ? 0 : DMA3_CHANNEL_COUNT;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_edma_chmax
|
||||
*
|
||||
* Description:
|
||||
* Max channel in global channel list for dma base.
|
||||
*
|
||||
* Input Parameters:
|
||||
* base - The eDMA base.
|
||||
*
|
||||
* Returned Value:
|
||||
* Channel max.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static inline uint32_t imx9_edma_chmax(uintptr_t base)
|
||||
{
|
||||
return base == IMX9_DMA3_BASE ? DMA3_CHANNEL_COUNT : IMX9_EDMA_NCHANNELS;
|
||||
}
|
||||
|
||||
#endif /* __ARCH_ARM_SRC_IMX9_HARDWARE_IMX95_IMX95_EDMA_H */
|
62
arch/arm/src/imx9/hardware/imx95/imx95_gpio.h
Normal file
62
arch/arm/src/imx9/hardware/imx95/imx95_gpio.h
Normal file
|
@ -0,0 +1,62 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/hardware/imx95/imx95_gpio.h
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ARCH_ARM_SRC_IMX9_HARDWARE_IMX95_IMX95_GPIO_H
|
||||
#define __ARCH_ARM_SRC_IMX9_HARDWARE_IMX95_IMX95_GPIO_H
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "imx95_memorymap.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
#define IMX9_GPIO_VERID_OFFSET (0x0000) /* Version ID */
|
||||
#define IMX9_GPIO_PARAM_OFFSET (0x0004) /* Parameter */
|
||||
#define IMX9_GPIO_LOCK_OFFSET (0x000c) /* Lock */
|
||||
#define IMX9_GPIO_PCNS_OFFSET (0x0010) /* Pin Control Nonsecure */
|
||||
#define IMX9_GPIO_ICNS_OFFSET (0x0014) /* Interrupt Control Nonsecure */
|
||||
#define IMX9_GPIO_PCNP_OFFSET (0x0018) /* Pin Control Nonprivilege */
|
||||
#define IMX9_GPIO_ICNP_OFFSET (0x001c) /* Interrupt Control Nonprivilege */
|
||||
#define IMX9_GPIO_PDOR_OFFSET (0x0040) /* Port Data Output */
|
||||
#define IMX9_GPIO_PSOR_OFFSET (0x0044) /* Port Set Output */
|
||||
#define IMX9_GPIO_PCOR_OFFSET (0x0048) /* Port Clear Output */
|
||||
#define IMX9_GPIO_PTOR_OFFSET (0x004c) /* Port Toggle Output */
|
||||
#define IMX9_GPIO_PDIR_OFFSET (0x0050) /* Port Data Input */
|
||||
#define IMX9_GPIO_PDDR_OFFSET (0x0054) /* Port Data Direction */
|
||||
#define IMX9_GPIO_PIDR_OFFSET (0x0058) /* Port Input Disable */
|
||||
#define IMX9_GPIO_P0DR_OFFSET (0x0060) /* Pin Data (0-31 at offsets of n * 4h) */
|
||||
#define IMX9_GPIO_ICR0_OFFSET (0x0080) /* Interrupt Control (0-31 at offsets of n * 4h) */
|
||||
#define IMX9_GPIO_GICLR_OFFSET (0x0100) /* Global Interrupt Control Low */
|
||||
#define IMX9_GPIO_GICHR_OFFSET (0x0104) /* Global Interrupt Control High */
|
||||
#define IMX9_GPIO_ISFR0_OFFSET (0x0120) /* Interrupt Status Flag */
|
||||
#define IMX9_GPIO_ISFR1_OFFSET (0x0124) /* Interrupt Status Flag */
|
||||
|
||||
#endif /* __ARCH_ARM_SRC_IMX9_HARDWARE_IMX95_IMX95_GPIO_H */
|
810
arch/arm/src/imx9/hardware/imx95/imx95_iomuxc.h
Normal file
810
arch/arm/src/imx9/hardware/imx95/imx95_iomuxc.h
Normal file
|
@ -0,0 +1,810 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/hardware/imx95/imx95_iomuxc.h
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
#define IOMUXC_MUX_CTL_DAP_TDI_OFFSET (0x0000)
|
||||
#define IOMUXC_MUX_CTL_DAP_TMS_SWDIO_OFFSET (0x0004)
|
||||
#define IOMUXC_MUX_CTL_DAP_TCLK_SWCLK_OFFSET (0x0008)
|
||||
#define IOMUXC_MUX_CTL_DAP_TDO_TRACESWO_OFFSET (0x000c)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO00_OFFSET (0x0010)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO01_OFFSET (0x0014)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO02_OFFSET (0x0018)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO03_OFFSET (0x001c)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO04_OFFSET (0x0020)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO05_OFFSET (0x0024)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO06_OFFSET (0x0028)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO07_OFFSET (0x002c)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO08_OFFSET (0x0030)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO09_OFFSET (0x0034)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO10_OFFSET (0x0038)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO11_OFFSET (0x003c)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO12_OFFSET (0x0040)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO13_OFFSET (0x0044)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO14_OFFSET (0x0048)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO15_OFFSET (0x004c)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO16_OFFSET (0x0050)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO17_OFFSET (0x0054)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO18_OFFSET (0x0058)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO19_OFFSET (0x005c)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO20_OFFSET (0x0060)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO21_OFFSET (0x0064)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO22_OFFSET (0x0068)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO23_OFFSET (0x006c)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO24_OFFSET (0x0070)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO25_OFFSET (0x0074)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO26_OFFSET (0x0078)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO27_OFFSET (0x007c)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO28_OFFSET (0x0080)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO29_OFFSET (0x0084)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO30_OFFSET (0x0088)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO31_OFFSET (0x008c)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO32_OFFSET (0x0090)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO33_OFFSET (0x0094)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO34_OFFSET (0x0098)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO35_OFFSET (0x009c)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO36_OFFSET (0x00a0)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO37_OFFSET (0x00a4)
|
||||
#define IOMUXC_MUX_CTL_CCM_CLKO1_OFFSET (0x00a8)
|
||||
#define IOMUXC_MUX_CTL_CCM_CLKO2_OFFSET (0x00ac)
|
||||
#define IOMUXC_MUX_CTL_CCM_CLKO3_OFFSET (0x00b0)
|
||||
#define IOMUXC_MUX_CTL_CCM_CLKO4_OFFSET (0x00b4)
|
||||
#define IOMUXC_MUX_CTL_ENET1_MDC_OFFSET (0x00b8)
|
||||
#define IOMUXC_MUX_CTL_ENET1_MDIO_OFFSET (0x00bc)
|
||||
#define IOMUXC_MUX_CTL_ENET1_TD3_OFFSET (0x00c0)
|
||||
#define IOMUXC_MUX_CTL_ENET1_TD2_OFFSET (0x00c4)
|
||||
#define IOMUXC_MUX_CTL_ENET1_TD1_OFFSET (0x00c8)
|
||||
#define IOMUXC_MUX_CTL_ENET1_TD0_OFFSET (0x00cc)
|
||||
#define IOMUXC_MUX_CTL_ENET1_TX_CTL_OFFSET (0x00d0)
|
||||
#define IOMUXC_MUX_CTL_ENET1_TXC_OFFSET (0x00d4)
|
||||
#define IOMUXC_MUX_CTL_ENET1_RX_CTL_OFFSET (0x00d8)
|
||||
#define IOMUXC_MUX_CTL_ENET1_RXC_OFFSET (0x00dc)
|
||||
#define IOMUXC_MUX_CTL_ENET1_RD0_OFFSET (0x00e0)
|
||||
#define IOMUXC_MUX_CTL_ENET1_RD1_OFFSET (0x00e4)
|
||||
#define IOMUXC_MUX_CTL_ENET1_RD2_OFFSET (0x00e8)
|
||||
#define IOMUXC_MUX_CTL_ENET1_RD3_OFFSET (0x00ec)
|
||||
#define IOMUXC_MUX_CTL_ENET2_MDC_OFFSET (0x00f0)
|
||||
#define IOMUXC_MUX_CTL_ENET2_MDIO_OFFSET (0x00f4)
|
||||
#define IOMUXC_MUX_CTL_ENET2_TD3_OFFSET (0x00f8)
|
||||
#define IOMUXC_MUX_CTL_ENET2_TD2_OFFSET (0x00fc)
|
||||
#define IOMUXC_MUX_CTL_ENET2_TD1_OFFSET (0x0100)
|
||||
#define IOMUXC_MUX_CTL_ENET2_TD0_OFFSET (0x0104)
|
||||
#define IOMUXC_MUX_CTL_ENET2_TX_CTL_OFFSET (0x0108)
|
||||
#define IOMUXC_MUX_CTL_ENET2_TXC_OFFSET (0x010c)
|
||||
#define IOMUXC_MUX_CTL_ENET2_RX_CTL_OFFSET (0x0110)
|
||||
#define IOMUXC_MUX_CTL_ENET2_RXC_OFFSET (0x0114)
|
||||
#define IOMUXC_MUX_CTL_ENET2_RD0_OFFSET (0x0118)
|
||||
#define IOMUXC_MUX_CTL_ENET2_RD1_OFFSET (0x011c)
|
||||
#define IOMUXC_MUX_CTL_ENET2_RD2_OFFSET (0x0120)
|
||||
#define IOMUXC_MUX_CTL_ENET2_RD3_OFFSET (0x0124)
|
||||
#define IOMUXC_MUX_CTL_SD1_CLK_OFFSET (0x0128)
|
||||
#define IOMUXC_MUX_CTL_SD1_CMD_OFFSET (0x012c)
|
||||
#define IOMUXC_MUX_CTL_SD1_DATA0_OFFSET (0x0130)
|
||||
#define IOMUXC_MUX_CTL_SD1_DATA1_OFFSET (0x0134)
|
||||
#define IOMUXC_MUX_CTL_SD1_DATA2_OFFSET (0x0138)
|
||||
#define IOMUXC_MUX_CTL_SD1_DATA3_OFFSET (0x013c)
|
||||
#define IOMUXC_MUX_CTL_SD1_DATA4_OFFSET (0x0140)
|
||||
#define IOMUXC_MUX_CTL_SD1_DATA5_OFFSET (0x0144)
|
||||
#define IOMUXC_MUX_CTL_SD1_DATA6_OFFSET (0x0148)
|
||||
#define IOMUXC_MUX_CTL_SD1_DATA7_OFFSET (0x014c)
|
||||
#define IOMUXC_MUX_CTL_SD1_STROBE_OFFSET (0x0150)
|
||||
#define IOMUXC_MUX_CTL_SD2_VSELECT_OFFSET (0x0154)
|
||||
#define IOMUXC_MUX_CTL_SD3_CLK_OFFSET (0x0158)
|
||||
#define IOMUXC_MUX_CTL_SD3_CMD_OFFSET (0x015c)
|
||||
#define IOMUXC_MUX_CTL_SD3_DATA0_OFFSET (0x0160)
|
||||
#define IOMUXC_MUX_CTL_SD3_DATA1_OFFSET (0x0164)
|
||||
#define IOMUXC_MUX_CTL_SD3_DATA2_OFFSET (0x0168)
|
||||
#define IOMUXC_MUX_CTL_SD3_DATA3_OFFSET (0x016c)
|
||||
#define IOMUXC_MUX_CTL_XSPI1_DATA0_OFFSET (0x0170)
|
||||
#define IOMUXC_MUX_CTL_XSPI1_DATA1_OFFSET (0x0174)
|
||||
#define IOMUXC_MUX_CTL_XSPI1_DATA2_OFFSET (0x0178)
|
||||
#define IOMUXC_MUX_CTL_XSPI1_DATA3_OFFSET (0x017c)
|
||||
#define IOMUXC_MUX_CTL_XSPI1_DATA4_OFFSET (0x0180)
|
||||
#define IOMUXC_MUX_CTL_XSPI1_DATA5_OFFSET (0x0184)
|
||||
#define IOMUXC_MUX_CTL_XSPI1_DATA6_OFFSET (0x0188)
|
||||
#define IOMUXC_MUX_CTL_XSPI1_DATA7_OFFSET (0x018c)
|
||||
#define IOMUXC_MUX_CTL_XSPI1_DQS_OFFSET (0x0190)
|
||||
#define IOMUXC_MUX_CTL_XSPI1_SCLK_OFFSET (0x0194)
|
||||
#define IOMUXC_MUX_CTL_XSPI1_SS0_B_OFFSET (0x0198)
|
||||
#define IOMUXC_MUX_CTL_XSPI1_SS1_B_OFFSET (0x019c)
|
||||
#define IOMUXC_MUX_CTL_SD2_CD_B_OFFSET (0x01a0)
|
||||
#define IOMUXC_MUX_CTL_SD2_CLK_OFFSET (0x01a4)
|
||||
#define IOMUXC_MUX_CTL_SD2_CMD_OFFSET (0x01a8)
|
||||
#define IOMUXC_MUX_CTL_SD2_DATA0_OFFSET (0x01ac)
|
||||
#define IOMUXC_MUX_CTL_SD2_DATA1_OFFSET (0x01b0)
|
||||
#define IOMUXC_MUX_CTL_SD2_DATA2_OFFSET (0x01b4)
|
||||
#define IOMUXC_MUX_CTL_SD2_DATA3_OFFSET (0x01b8)
|
||||
#define IOMUXC_MUX_CTL_SD2_RESET_B_OFFSET (0x01bc)
|
||||
#define IOMUXC_MUX_CTL_I2C1_SCL_OFFSET (0x01c0)
|
||||
#define IOMUXC_MUX_CTL_I2C1_SDA_OFFSET (0x01c4)
|
||||
#define IOMUXC_MUX_CTL_I2C2_SCL_OFFSET (0x01c8)
|
||||
#define IOMUXC_MUX_CTL_I2C2_SDA_OFFSET (0x01cc)
|
||||
#define IOMUXC_MUX_CTL_UART1_RXD_OFFSET (0x01d0)
|
||||
#define IOMUXC_MUX_CTL_UART1_TXD_OFFSET (0x01d4)
|
||||
#define IOMUXC_MUX_CTL_UART2_RXD_OFFSET (0x01d8)
|
||||
#define IOMUXC_MUX_CTL_UART2_TXD_OFFSET (0x01dc)
|
||||
#define IOMUXC_MUX_CTL_PDM_CLK_OFFSET (0x01e0)
|
||||
#define IOMUXC_MUX_CTL_PDM_BIT_STREAM0_OFFSET (0x01e4)
|
||||
#define IOMUXC_MUX_CTL_PDM_BIT_STREAM1_OFFSET (0x01e8)
|
||||
#define IOMUXC_MUX_CTL_SAI1_TXFS_OFFSET (0x01ec)
|
||||
#define IOMUXC_MUX_CTL_SAI1_TXC_OFFSET (0x01f0)
|
||||
#define IOMUXC_MUX_CTL_SAI1_TXD0_OFFSET (0x01f4)
|
||||
#define IOMUXC_MUX_CTL_SAI1_RXD0_OFFSET (0x01f8)
|
||||
#define IOMUXC_MUX_CTL_WDOG_ANY_OFFSET (0x01fc)
|
||||
|
||||
#define IOMUXC_PAD_CTL_DAP_TDI_OFFSET (0x0204)
|
||||
#define IOMUXC_PAD_CTL_DAP_TMS_SWDIO_OFFSET (0x0208)
|
||||
#define IOMUXC_PAD_CTL_DAP_TCLK_SWCLK_OFFSET (0x020c)
|
||||
#define IOMUXC_PAD_CTL_DAP_TDO_TRACESWO_OFFSET (0x0210)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO00_OFFSET (0x0214)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO01_OFFSET (0x0218)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO02_OFFSET (0x021c)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO03_OFFSET (0x0220)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO04_OFFSET (0x0224)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO05_OFFSET (0x0228)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO06_OFFSET (0x022c)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO07_OFFSET (0x0230)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO08_OFFSET (0x0234)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO09_OFFSET (0x0238)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO10_OFFSET (0x023c)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO11_OFFSET (0x0240)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO12_OFFSET (0x0244)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO13_OFFSET (0x0248)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO14_OFFSET (0x024c)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO15_OFFSET (0x0250)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO16_OFFSET (0x0254)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO17_OFFSET (0x0258)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO18_OFFSET (0x025c)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO19_OFFSET (0x0260)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO20_OFFSET (0x0264)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO21_OFFSET (0x0268)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO22_OFFSET (0x026c)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO23_OFFSET (0x0270)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO24_OFFSET (0x0274)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO25_OFFSET (0x0278)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO26_OFFSET (0x027c)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO27_OFFSET (0x0280)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO28_OFFSET (0x0284)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO29_OFFSET (0x0288)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO30_OFFSET (0x028c)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO31_OFFSET (0x0290)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO32_OFFSET (0x0294)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO33_OFFSET (0x0298)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO34_OFFSET (0x029c)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO35_OFFSET (0x02a0)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO36_OFFSET (0x02a4)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO37_OFFSET (0x02a8)
|
||||
#define IOMUXC_PAD_CTL_CCM_CLKO1_OFFSET (0x02ac)
|
||||
#define IOMUXC_PAD_CTL_CCM_CLKO2_OFFSET (0x02b0)
|
||||
#define IOMUXC_PAD_CTL_CCM_CLKO3_OFFSET (0x02b4)
|
||||
#define IOMUXC_PAD_CTL_CCM_CLKO4_OFFSET (0x02b8)
|
||||
#define IOMUXC_PAD_CTL_ENET1_MDC_OFFSET (0x02bc)
|
||||
#define IOMUXC_PAD_CTL_ENET1_MDIO_OFFSET (0x02c0)
|
||||
#define IOMUXC_PAD_CTL_ENET1_TD3_OFFSET (0x02c4)
|
||||
#define IOMUXC_PAD_CTL_ENET1_TD2_OFFSET (0x02c8)
|
||||
#define IOMUXC_PAD_CTL_ENET1_TD1_OFFSET (0x02cc)
|
||||
#define IOMUXC_PAD_CTL_ENET1_TD0_OFFSET (0x02d0)
|
||||
#define IOMUXC_PAD_CTL_ENET1_TX_CTL_OFFSET (0x02d4)
|
||||
#define IOMUXC_PAD_CTL_ENET1_TXC_OFFSET (0x02d8)
|
||||
#define IOMUXC_PAD_CTL_ENET1_RX_CTL_OFFSET (0x02dc)
|
||||
#define IOMUXC_PAD_CTL_ENET1_RXC_OFFSET (0x02e0)
|
||||
#define IOMUXC_PAD_CTL_ENET1_RD0_OFFSET (0x02e4)
|
||||
#define IOMUXC_PAD_CTL_ENET1_RD1_OFFSET (0x02e8)
|
||||
#define IOMUXC_PAD_CTL_ENET1_RD2_OFFSET (0x02ec)
|
||||
#define IOMUXC_PAD_CTL_ENET1_RD3_OFFSET (0x02f0)
|
||||
#define IOMUXC_PAD_CTL_ENET2_MDC_OFFSET (0x02f4)
|
||||
#define IOMUXC_PAD_CTL_ENET2_MDIO_OFFSET (0x02f8)
|
||||
#define IOMUXC_PAD_CTL_ENET2_TD3_OFFSET (0x02fc)
|
||||
#define IOMUXC_PAD_CTL_ENET2_TD2_OFFSET (0x0300)
|
||||
#define IOMUXC_PAD_CTL_ENET2_TD1_OFFSET (0x0304)
|
||||
#define IOMUXC_PAD_CTL_ENET2_TD0_OFFSET (0x0308)
|
||||
#define IOMUXC_PAD_CTL_ENET2_TX_CTL_OFFSET (0x030c)
|
||||
#define IOMUXC_PAD_CTL_ENET2_TXC_OFFSET (0x0310)
|
||||
#define IOMUXC_PAD_CTL_ENET2_RX_CTL_OFFSET (0x0314)
|
||||
#define IOMUXC_PAD_CTL_ENET2_RXC_OFFSET (0x0318)
|
||||
#define IOMUXC_PAD_CTL_ENET2_RD0_OFFSET (0x031c)
|
||||
#define IOMUXC_PAD_CTL_ENET2_RD1_OFFSET (0x0320)
|
||||
#define IOMUXC_PAD_CTL_ENET2_RD2_OFFSET (0x0324)
|
||||
#define IOMUXC_PAD_CTL_ENET2_RD3_OFFSET (0x0328)
|
||||
#define IOMUXC_PAD_CTL_SD1_CLK_OFFSET (0x032c)
|
||||
#define IOMUXC_PAD_CTL_SD1_CMD_OFFSET (0x0330)
|
||||
#define IOMUXC_PAD_CTL_SD1_DATA0_OFFSET (0x0334)
|
||||
#define IOMUXC_PAD_CTL_SD1_DATA1_OFFSET (0x0338)
|
||||
#define IOMUXC_PAD_CTL_SD1_DATA2_OFFSET (0x033c)
|
||||
#define IOMUXC_PAD_CTL_SD1_DATA3_OFFSET (0x0340)
|
||||
#define IOMUXC_PAD_CTL_SD1_DATA4_OFFSET (0x0344)
|
||||
#define IOMUXC_PAD_CTL_SD1_DATA5_OFFSET (0x0348)
|
||||
#define IOMUXC_PAD_CTL_SD1_DATA6_OFFSET (0x034c)
|
||||
#define IOMUXC_PAD_CTL_SD1_DATA7_OFFSET (0x0350)
|
||||
#define IOMUXC_PAD_CTL_SD1_STROBE_OFFSET (0x0354)
|
||||
#define IOMUXC_PAD_CTL_SD2_VSELECT_OFFSET (0x0358)
|
||||
#define IOMUXC_PAD_CTL_SD3_CLK_OFFSET (0x035c)
|
||||
#define IOMUXC_PAD_CTL_SD3_CMD_OFFSET (0x0360)
|
||||
#define IOMUXC_PAD_CTL_SD3_DATA0_OFFSET (0x0364)
|
||||
#define IOMUXC_PAD_CTL_SD3_DATA1_OFFSET (0x0368)
|
||||
#define IOMUXC_PAD_CTL_SD3_DATA2_OFFSET (0x036c)
|
||||
#define IOMUXC_PAD_CTL_SD3_DATA3_OFFSET (0x0370)
|
||||
#define IOMUXC_PAD_CTL_XSPI1_DATA0_OFFSET (0x0374)
|
||||
#define IOMUXC_PAD_CTL_XSPI1_DATA1_OFFSET (0x0378)
|
||||
#define IOMUXC_PAD_CTL_XSPI1_DATA2_OFFSET (0x037c)
|
||||
#define IOMUXC_PAD_CTL_XSPI1_DATA3_OFFSET (0x0380)
|
||||
#define IOMUXC_PAD_CTL_XSPI1_DATA4_OFFSET (0x0384)
|
||||
#define IOMUXC_PAD_CTL_XSPI1_DATA5_OFFSET (0x0388)
|
||||
#define IOMUXC_PAD_CTL_XSPI1_DATA6_OFFSET (0x038c)
|
||||
#define IOMUXC_PAD_CTL_XSPI1_DATA7_OFFSET (0x0390)
|
||||
#define IOMUXC_PAD_CTL_XSPI1_DQS_OFFSET (0x0394)
|
||||
#define IOMUXC_PAD_CTL_XSPI1_SCLK_OFFSET (0x0398)
|
||||
#define IOMUXC_PAD_CTL_XSPI1_SS0_B_OFFSET (0x039c)
|
||||
#define IOMUXC_PAD_CTL_XSPI1_SS1_B_OFFSET (0x03a0)
|
||||
#define IOMUXC_PAD_CTL_SD2_CD_B_OFFSET (0x03a4)
|
||||
#define IOMUXC_PAD_CTL_SD2_CLK_OFFSET (0x03a8)
|
||||
#define IOMUXC_PAD_CTL_SD2_CMD_OFFSET (0x03ac)
|
||||
#define IOMUXC_PAD_CTL_SD2_DATA0_OFFSET (0x03b0)
|
||||
#define IOMUXC_PAD_CTL_SD2_DATA1_OFFSET (0x03b4)
|
||||
#define IOMUXC_PAD_CTL_SD2_DATA2_OFFSET (0x03b8)
|
||||
#define IOMUXC_PAD_CTL_SD2_DATA3_OFFSET (0x03bc)
|
||||
#define IOMUXC_PAD_CTL_SD2_RESET_B_OFFSET (0x03c0)
|
||||
#define IOMUXC_PAD_CTL_I2C1_SCL_OFFSET (0x03c4)
|
||||
#define IOMUXC_PAD_CTL_I2C1_SDA_OFFSET (0x03c8)
|
||||
#define IOMUXC_PAD_CTL_I2C2_SCL_OFFSET (0x03cc)
|
||||
#define IOMUXC_PAD_CTL_I2C2_SDA_OFFSET (0x03d0)
|
||||
#define IOMUXC_PAD_CTL_UART1_RXD_OFFSET (0x03d4)
|
||||
#define IOMUXC_PAD_CTL_UART1_TXD_OFFSET (0x03d8)
|
||||
#define IOMUXC_PAD_CTL_UART2_RXD_OFFSET (0x03dc)
|
||||
#define IOMUXC_PAD_CTL_UART2_TXD_OFFSET (0x03e0)
|
||||
#define IOMUXC_PAD_CTL_PDM_CLK_OFFSET (0x03e4)
|
||||
#define IOMUXC_PAD_CTL_PDM_BIT_STREAM0_OFFSET (0x03e8)
|
||||
#define IOMUXC_PAD_CTL_PDM_BIT_STREAM1_OFFSET (0x03ec)
|
||||
#define IOMUXC_PAD_CTL_SAI1_TXFS_OFFSET (0x03f0)
|
||||
#define IOMUXC_PAD_CTL_SAI1_TXC_OFFSET (0x03f4)
|
||||
#define IOMUXC_PAD_CTL_SAI1_TXD0_OFFSET (0x03f8)
|
||||
#define IOMUXC_PAD_CTL_SAI1_RXD0_OFFSET (0x03fc)
|
||||
#define IOMUXC_PAD_CTL_WDOG_ANY_OFFSET (0x0400)
|
||||
#define IOMUXC_PAD_CTL_FCCU_ERR0_OFFSET (0x0404)
|
||||
|
||||
#define IOMUXC_CAN1_IPP_IND_CANRX_SELECT_INPUT_OFFSET (0x0408)
|
||||
#define IOMUXC_PDM_IPP_IND_MIC_PDM_BITSTREAM_SELECT_INPUT_0_OFFSET (0x040c)
|
||||
#define IOMUXC_PDM_IPP_IND_MIC_PDM_BITSTREAM_SELECT_INPUT_1_OFFSET (0x0410)
|
||||
#define IOMUXC_PDM_IPP_IND_MIC_PDM_BITSTREAM_SELECT_INPUT_2_OFFSET (0x0414)
|
||||
#define IOMUXC_PDM_IPP_IND_MIC_PDM_BITSTREAM_SELECT_INPUT_3_OFFSET (0x0418)
|
||||
#define IOMUXC_SAI1_IPP_IND_SAI_MCLK_SELECT_INPUT_OFFSET (0x041c)
|
||||
#define IOMUXC_EXT1_CLK_SELECT_INPUT_OFFSET (0x0420)
|
||||
#define IOMUXC_NETC_CMPLX_EMDC_IN_SELECT_INPUT_OFFSET (0x0424)
|
||||
#define IOMUXC_NETC_CMPLX_EMDIO_IN_SELECT_INPUT_OFFSET (0x0428)
|
||||
#define IOMUXC_NETC_CMPLX_ETH0_RMII_RX_ER_SELECT_INPUT_OFFSET (0x042c)
|
||||
#define IOMUXC_NETC_CMPLX_ETH1_RMII_RX_ER_SELECT_INPUT_OFFSET (0x0430)
|
||||
#define IOMUXC_NETC_CMPLX_TMR_1588_TRIG1_SELECT_INPUT_OFFSET (0x0434)
|
||||
#define IOMUXC_NETC_CMPLX_TMR_1588_TRIG2_SELECT_INPUT_OFFSET (0x0438)
|
||||
#define IOMUXC_SAI2_IPP_IND_SAI_RXDATA_SELECT_INPUT_6_OFFSET (0x043c)
|
||||
#define IOMUXC_SAI2_IPP_IND_SAI_RXDATA_SELECT_INPUT_7_OFFSET (0x0440)
|
||||
#define IOMUXC_CAN2_IPP_IND_CANRX_SELECT_INPUT_OFFSET (0x0444)
|
||||
#define IOMUXC_CAN3_IPP_IND_CANRX_SELECT_INPUT_OFFSET (0x0448)
|
||||
#define IOMUXC_CAN4_IPP_IND_CANRX_SELECT_INPUT_OFFSET (0x044c)
|
||||
#define IOMUXC_CAN5_IPP_IND_CANRX_SELECT_INPUT_OFFSET (0x0450)
|
||||
#define IOMUXC_EARC_PHY_SPDIF_IN_SELECT_INPUT_OFFSET (0x0454)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_26_OFFSET (0x0458)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_27_OFFSET (0x045c)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_30_OFFSET (0x0460)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_31_OFFSET (0x0464)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_0_OFFSET (0x0468)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_1_OFFSET (0x046c)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_2_OFFSET (0x0470)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_3_OFFSET (0x0474)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_4_OFFSET (0x0478)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_5_OFFSET (0x047c)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_6_OFFSET (0x0480)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_7_OFFSET (0x0484)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_8_OFFSET (0x0488)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_9_OFFSET (0x048c)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_10_OFFSET (0x0490)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_11_OFFSET (0x0494)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_12_OFFSET (0x0498)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_13_OFFSET (0x049c)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_14_OFFSET (0x04a0)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_15_OFFSET (0x04a4)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_16_OFFSET (0x04a8)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_17_OFFSET (0x04ac)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_18_OFFSET (0x04b0)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_19_OFFSET (0x04b4)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_20_OFFSET (0x04b8)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_21_OFFSET (0x04bc)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_22_OFFSET (0x04c0)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_23_OFFSET (0x04c4)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_24_OFFSET (0x04c8)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_25_OFFSET (0x04cc)
|
||||
#define IOMUXC_FLEXSPI1_I_IPP_IND_DQS_FA_SELECT_INPUT_OFFSET (0x04d0)
|
||||
#define IOMUXC_FLEXSPI1_I_IPP_IND_IO_FA_SELECT_INPUT_0_OFFSET (0x04d4)
|
||||
#define IOMUXC_FLEXSPI1_I_IPP_IND_IO_FA_SELECT_INPUT_1_OFFSET (0x04d8)
|
||||
#define IOMUXC_FLEXSPI1_I_IPP_IND_IO_FA_SELECT_INPUT_2_OFFSET (0x04dc)
|
||||
#define IOMUXC_FLEXSPI1_I_IPP_IND_IO_FA_SELECT_INPUT_3_OFFSET (0x04e0)
|
||||
#define IOMUXC_FLEXSPI1_I_IPP_IND_IO_FA_SELECT_INPUT_4_OFFSET (0x04e4)
|
||||
#define IOMUXC_FLEXSPI1_I_IPP_IND_IO_FA_SELECT_INPUT_5_OFFSET (0x04e8)
|
||||
#define IOMUXC_FLEXSPI1_I_IPP_IND_IO_FA_SELECT_INPUT_6_OFFSET (0x04ec)
|
||||
#define IOMUXC_FLEXSPI1_I_IPP_IND_IO_FA_SELECT_INPUT_7_OFFSET (0x04f0)
|
||||
#define IOMUXC_FLEXSPI1_I_IPP_IND_SCK_FA_SELECT_INPUT_OFFSET (0x04f4)
|
||||
#define IOMUXC_I3C2_PIN_SCL_IN_SELECT_INPUT_OFFSET (0x04f8)
|
||||
#define IOMUXC_I3C2_PIN_SDA_IN_SELECT_INPUT_OFFSET (0x04fc)
|
||||
#define IOMUXC_LPI2C3_IPP_IND_LPI2C_SCL_SELECT_INPUT_OFFSET (0x0500)
|
||||
#define IOMUXC_LPI2C3_IPP_IND_LPI2C_SDA_SELECT_INPUT_OFFSET (0x0504)
|
||||
#define IOMUXC_LPI2C4_IPP_IND_LPI2C_SCL_SELECT_INPUT_OFFSET (0x0508)
|
||||
#define IOMUXC_LPI2C4_IPP_IND_LPI2C_SDA_SELECT_INPUT_OFFSET (0x050c)
|
||||
#define IOMUXC_LPI2C5_IPP_IND_LPI2C_SCL_SELECT_INPUT_OFFSET (0x0510)
|
||||
#define IOMUXC_LPI2C5_IPP_IND_LPI2C_SDA_SELECT_INPUT_OFFSET (0x0514)
|
||||
#define IOMUXC_LPI2C6_IPP_IND_LPI2C_SCL_SELECT_INPUT_OFFSET (0x0518)
|
||||
#define IOMUXC_LPI2C6_IPP_IND_LPI2C_SDA_SELECT_INPUT_OFFSET (0x051c)
|
||||
#define IOMUXC_LPI2C7_IPP_IND_LPI2C_SCL_SELECT_INPUT_OFFSET (0x0520)
|
||||
#define IOMUXC_LPI2C7_IPP_IND_LPI2C_SDA_SELECT_INPUT_OFFSET (0x0524)
|
||||
#define IOMUXC_LPI2C8_IPP_IND_LPI2C_SCL_SELECT_INPUT_OFFSET (0x0528)
|
||||
#define IOMUXC_LPI2C8_IPP_IND_LPI2C_SDA_SELECT_INPUT_OFFSET (0x052c)
|
||||
#define IOMUXC_LPSPI4_IPP_IND_LPSPI_PCS_SELECT_INPUT_0_OFFSET (0x0530)
|
||||
#define IOMUXC_LPSPI4_IPP_IND_LPSPI_PCS_SELECT_INPUT_1_OFFSET (0x0534)
|
||||
#define IOMUXC_LPSPI4_IPP_IND_LPSPI_PCS_SELECT_INPUT_2_OFFSET (0x0538)
|
||||
#define IOMUXC_LPSPI4_IPP_IND_LPSPI_SCK_SELECT_INPUT_OFFSET (0x053c)
|
||||
#define IOMUXC_LPSPI4_IPP_IND_LPSPI_SDI_SELECT_INPUT_OFFSET (0x0540)
|
||||
#define IOMUXC_LPSPI4_IPP_IND_LPSPI_SDO_SELECT_INPUT_OFFSET (0x0544)
|
||||
#define IOMUXC_LPTMR2_IPP_IND_LPTIMER_SELECT_INPUT_0_OFFSET (0x0548)
|
||||
#define IOMUXC_LPTMR2_IPP_IND_LPTIMER_SELECT_INPUT_1_OFFSET (0x054c)
|
||||
#define IOMUXC_LPTMR2_IPP_IND_LPTIMER_SELECT_INPUT_2_OFFSET (0x0550)
|
||||
#define IOMUXC_LPUART3_IPP_IND_LPUART_CTS_N_SELECT_INPUT_OFFSET (0x0554)
|
||||
#define IOMUXC_LPUART3_IPP_IND_LPUART_RXD_SELECT_INPUT_OFFSET (0x0558)
|
||||
#define IOMUXC_LPUART3_IPP_IND_LPUART_TXD_SELECT_INPUT_OFFSET (0x055c)
|
||||
#define IOMUXC_LPUART4_IPP_IND_LPUART_CTS_N_SELECT_INPUT_OFFSET (0x0560)
|
||||
#define IOMUXC_LPUART4_IPP_IND_LPUART_RXD_SELECT_INPUT_OFFSET (0x0564)
|
||||
#define IOMUXC_LPUART4_IPP_IND_LPUART_TXD_SELECT_INPUT_OFFSET (0x0568)
|
||||
#define IOMUXC_LPUART5_IPP_IND_LPUART_CTS_N_SELECT_INPUT_OFFSET (0x056c)
|
||||
#define IOMUXC_LPUART5_IPP_IND_LPUART_RXD_SELECT_INPUT_OFFSET (0x0570)
|
||||
#define IOMUXC_LPUART5_IPP_IND_LPUART_TXD_SELECT_INPUT_OFFSET (0x0574)
|
||||
#define IOMUXC_LPUART6_IPP_IND_LPUART_CTS_N_SELECT_INPUT_OFFSET (0x0578)
|
||||
#define IOMUXC_LPUART6_IPP_IND_LPUART_RXD_SELECT_INPUT_OFFSET (0x057c)
|
||||
#define IOMUXC_LPUART6_IPP_IND_LPUART_TXD_SELECT_INPUT_OFFSET (0x0580)
|
||||
#define IOMUXC_LPUART7_IPP_IND_LPUART_RXD_SELECT_INPUT_OFFSET (0x0584)
|
||||
#define IOMUXC_LPUART7_IPP_IND_LPUART_TXD_SELECT_INPUT_OFFSET (0x0588)
|
||||
#define IOMUXC_SAI3_IPP_IND_SAI_RXBCLK_SELECT_INPUT_OFFSET (0x058c)
|
||||
#define IOMUXC_SAI3_IPP_IND_SAI_RXSYNC_SELECT_INPUT_OFFSET (0x0590)
|
||||
#define IOMUXC_SAI4_IPP_IND_SAI_RXBCLK_SELECT_INPUT_OFFSET (0x0594)
|
||||
#define IOMUXC_SAI4_IPP_IND_SAI_RXDATA_SELECT_INPUT_0_OFFSET (0x0598)
|
||||
#define IOMUXC_SAI4_IPP_IND_SAI_RXSYNC_SELECT_INPUT_OFFSET (0x059c)
|
||||
#define IOMUXC_SAI4_IPP_IND_SAI_TXBCLK_SELECT_INPUT_OFFSET (0x05a0)
|
||||
#define IOMUXC_SAI4_IPP_IND_SAI_TXSYNC_SELECT_INPUT_OFFSET (0x05a4)
|
||||
#define IOMUXC_SAI5_IPP_IND_SAI_RXBCLK_SELECT_INPUT_OFFSET (0x05a8)
|
||||
#define IOMUXC_SAI5_IPP_IND_SAI_RXDATA_SELECT_INPUT_0_OFFSET (0x05ac)
|
||||
#define IOMUXC_SAI5_IPP_IND_SAI_RXDATA_SELECT_INPUT_1_OFFSET (0x05b0)
|
||||
#define IOMUXC_SAI5_IPP_IND_SAI_RXDATA_SELECT_INPUT_2_OFFSET (0x05b4)
|
||||
#define IOMUXC_SAI5_IPP_IND_SAI_RXDATA_SELECT_INPUT_3_OFFSET (0x05b8)
|
||||
#define IOMUXC_SAI5_IPP_IND_SAI_RXSYNC_SELECT_INPUT_OFFSET (0x05bc)
|
||||
#define IOMUXC_SAI5_IPP_IND_SAI_TXBCLK_SELECT_INPUT_OFFSET (0x05c0)
|
||||
#define IOMUXC_SAI5_IPP_IND_SAI_TXSYNC_SELECT_INPUT_OFFSET (0x05c4)
|
||||
#define IOMUXC_USDHC3_IPP_CARD_CLK_IN_SELECT_INPUT_OFFSET (0x05c8)
|
||||
#define IOMUXC_USDHC3_IPP_CMD_IN_SELECT_INPUT_OFFSET (0x05cc)
|
||||
#define IOMUXC_USDHC3_IPP_DAT0_IN_SELECT_INPUT_OFFSET (0x05d0)
|
||||
#define IOMUXC_USDHC3_IPP_DAT1_IN_SELECT_INPUT_OFFSET (0x05d4)
|
||||
#define IOMUXC_USDHC3_IPP_DAT2_IN_SELECT_INPUT_OFFSET (0x05d8)
|
||||
#define IOMUXC_USDHC3_IPP_DAT3_IN_SELECT_INPUT_OFFSET (0x05dc)
|
||||
#define IOMUXC_XSPI_IPP_IND_CS_SELECT_INPUT_OFFSET (0x05e0)
|
||||
#define IOMUXC_XSPI_IPP_IND_DQS_SELECT_INPUT_OFFSET (0x05e4)
|
||||
#define IOMUXC_XSPI_IPP_IND_SCK_SELECT_INPUT_OFFSET (0x05e8)
|
||||
#define IOMUXC_XSPI_SLV_IPP_IND_IO_SELECT_INPUT_0_OFFSET (0x05ec)
|
||||
#define IOMUXC_XSPI_SLV_IPP_IND_IO_SELECT_INPUT_1_OFFSET (0x05f0)
|
||||
#define IOMUXC_XSPI_SLV_IPP_IND_IO_SELECT_INPUT_2_OFFSET (0x05f4)
|
||||
#define IOMUXC_XSPI_SLV_IPP_IND_IO_SELECT_INPUT_3_OFFSET (0x05f8)
|
||||
#define IOMUXC_XSPI_SLV_IPP_IND_IO_SELECT_INPUT_4_OFFSET (0x05fc)
|
||||
#define IOMUXC_XSPI_SLV_IPP_IND_IO_SELECT_INPUT_5_OFFSET (0x0600)
|
||||
#define IOMUXC_XSPI_SLV_IPP_IND_IO_SELECT_INPUT_6_OFFSET (0x0604)
|
||||
#define IOMUXC_XSPI_SLV_IPP_IND_IO_SELECT_INPUT_7_OFFSET (0x0608)
|
||||
#define IOMUXC_JTAG_MUX_TCK_SELECT_INPUT_OFFSET (0x060c)
|
||||
#define IOMUXC_JTAG_MUX_TDI_SELECT_INPUT_OFFSET (0x0610)
|
||||
#define IOMUXC_JTAG_MUX_TMS_SELECT_INPUT_OFFSET (0x0614)
|
||||
|
||||
#define IOMUXC_MUX_CTL_DAP_TDI (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_DAP_TDI_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_DAP_TMS_SWDIO (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_DAP_TMS_SWDIO_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_DAP_TCLK_SWCLK (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_DAP_TCLK_SWCLK_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_DAP_TDO_TRACESWO (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_DAP_TDO_TRACESWO_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO00 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_GPIO_IO00_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO01 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_GPIO_IO01_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO02 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_GPIO_IO02_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO03 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_GPIO_IO03_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO04 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_GPIO_IO04_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO05 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_GPIO_IO05_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO06 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_GPIO_IO06_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO07 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_GPIO_IO07_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO08 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_GPIO_IO08_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO09 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_GPIO_IO09_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO10 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_GPIO_IO10_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO11 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_GPIO_IO11_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO12 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_GPIO_IO12_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO13 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_GPIO_IO13_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO14 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_GPIO_IO14_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO15 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_GPIO_IO15_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO16 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_GPIO_IO16_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO17 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_GPIO_IO17_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO18 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_GPIO_IO18_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO19 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_GPIO_IO19_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO20 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_GPIO_IO20_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO21 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_GPIO_IO21_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO22 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_GPIO_IO22_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO23 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_GPIO_IO23_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO24 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_GPIO_IO24_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO25 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_GPIO_IO25_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO26 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_GPIO_IO26_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO27 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_GPIO_IO27_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO28 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_GPIO_IO28_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO29 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_GPIO_IO29_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO30 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_GPIO_IO30_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO31 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_GPIO_IO31_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO32 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_GPIO_IO32_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO33 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_GPIO_IO33_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO34 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_GPIO_IO34_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO35 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_GPIO_IO35_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO36 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_GPIO_IO36_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_GPIO_IO37 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_GPIO_IO37_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_CCM_CLKO1 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_CCM_CLKO1_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_CCM_CLKO2 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_CCM_CLKO2_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_CCM_CLKO3 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_CCM_CLKO3_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_CCM_CLKO4 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_CCM_CLKO4_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_ENET1_MDC (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_ENET1_MDC_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_ENET1_MDIO (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_ENET1_MDIO_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_ENET1_TD3 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_ENET1_TD3_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_ENET1_TD2 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_ENET1_TD2_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_ENET1_TD1 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_ENET1_TD1_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_ENET1_TD0 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_ENET1_TD0_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_ENET1_TX_CTL (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_ENET1_TX_CTL_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_ENET1_TXC (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_ENET1_TXC_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_ENET1_RX_CTL (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_ENET1_RX_CTL_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_ENET1_RXC (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_ENET1_RXC_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_ENET1_RD0 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_ENET1_RD0_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_ENET1_RD1 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_ENET1_RD1_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_ENET1_RD2 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_ENET1_RD2_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_ENET1_RD3 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_ENET1_RD3_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_ENET2_MDC (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_ENET2_MDC_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_ENET2_MDIO (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_ENET2_MDIO_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_ENET2_TD3 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_ENET2_TD3_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_ENET2_TD2 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_ENET2_TD2_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_ENET2_TD1 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_ENET2_TD1_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_ENET2_TD0 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_ENET2_TD0_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_ENET2_TX_CTL (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_ENET2_TX_CTL_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_ENET2_TXC (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_ENET2_TXC_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_ENET2_RX_CTL (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_ENET2_RX_CTL_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_ENET2_RXC (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_ENET2_RXC_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_ENET2_RD0 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_ENET2_RD0_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_ENET2_RD1 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_ENET2_RD1_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_ENET2_RD2 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_ENET2_RD2_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_ENET2_RD3 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_ENET2_RD3_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_SD1_CLK (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_SD1_CLK_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_SD1_CMD (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_SD1_CMD_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_SD1_DATA0 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_SD1_DATA0_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_SD1_DATA1 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_SD1_DATA1_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_SD1_DATA2 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_SD1_DATA2_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_SD1_DATA3 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_SD1_DATA3_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_SD1_DATA4 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_SD1_DATA4_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_SD1_DATA5 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_SD1_DATA5_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_SD1_DATA6 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_SD1_DATA6_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_SD1_DATA7 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_SD1_DATA7_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_SD1_STROBE (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_SD1_STROBE_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_SD2_VSELECT (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_SD2_VSELECT_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_SD3_CLK (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_SD3_CLK_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_SD3_CMD (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_SD3_CMD_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_SD3_DATA0 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_SD3_DATA0_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_SD3_DATA1 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_SD3_DATA1_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_SD3_DATA2 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_SD3_DATA2_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_SD3_DATA3 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_SD3_DATA3_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_XSPI1_DATA0 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_XSPI1_DATA0_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_XSPI1_DATA1 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_XSPI1_DATA1_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_XSPI1_DATA2 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_XSPI1_DATA2_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_XSPI1_DATA3 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_XSPI1_DATA3_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_XSPI1_DATA4 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_XSPI1_DATA4_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_XSPI1_DATA5 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_XSPI1_DATA5_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_XSPI1_DATA6 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_XSPI1_DATA6_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_XSPI1_DATA7 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_XSPI1_DATA7_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_XSPI1_DQS (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_XSPI1_DQS_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_XSPI1_SCLK (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_XSPI1_SCLK_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_XSPI1_SS0_B (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_XSPI1_SS0_B_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_XSPI1_SS1_B (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_XSPI1_SS1_B_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_SD2_CD_B (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_SD2_CD_B_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_SD2_CLK (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_SD2_CLK_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_SD2_CMD (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_SD2_CMD_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_SD2_DATA0 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_SD2_DATA0_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_SD2_DATA1 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_SD2_DATA1_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_SD2_DATA2 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_SD2_DATA2_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_SD2_DATA3 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_SD2_DATA3_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_SD2_RESET_B (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_SD2_RESET_B_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_I2C1_SCL (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_I2C1_SCL_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_I2C1_SDA (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_I2C1_SDA_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_I2C2_SCL (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_I2C2_SCL_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_I2C2_SDA (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_I2C2_SDA_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_UART1_RXD (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_UART1_RXD_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_UART1_TXD (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_UART1_TXD_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_UART2_RXD (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_UART2_RXD_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_UART2_TXD (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_UART2_TXD_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_PDM_CLK (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_PDM_CLK_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_PDM_BIT_STREAM0 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_PDM_BIT_STREAM0_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_PDM_BIT_STREAM1 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_PDM_BIT_STREAM1_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_SAI1_TXFS (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_SAI1_TXFS_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_SAI1_TXC (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_SAI1_TXC_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_SAI1_TXD0 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_SAI1_TXD0_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_SAI1_RXD0 (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_SAI1_RXD0_OFFSET)
|
||||
#define IOMUXC_MUX_CTL_WDOG_ANY (IMX9_IOMUXC1_BASE + IOMUXC_MUX_CTL_WDOG_ANY_OFFSET)
|
||||
|
||||
#define IOMUXC_PAD_CTL_DAP_TDI (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_DAP_TDI_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_DAP_TMS_SWDIO (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_DAP_TMS_SWDIO_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_DAP_TCLK_SWCLK (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_DAP_TCLK_SWCLK_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_DAP_TDO_TRACESWO (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_DAP_TDO_TRACESWO_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO00 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_GPIO_IO00_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO01 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_GPIO_IO01_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO02 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_GPIO_IO02_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO03 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_GPIO_IO03_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO04 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_GPIO_IO04_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO05 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_GPIO_IO05_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO06 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_GPIO_IO06_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO07 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_GPIO_IO07_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO08 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_GPIO_IO08_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO09 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_GPIO_IO09_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO10 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_GPIO_IO10_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO11 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_GPIO_IO11_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO12 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_GPIO_IO12_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO13 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_GPIO_IO13_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO14 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_GPIO_IO14_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO15 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_GPIO_IO15_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO16 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_GPIO_IO16_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO17 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_GPIO_IO17_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO18 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_GPIO_IO18_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO19 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_GPIO_IO19_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO20 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_GPIO_IO20_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO21 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_GPIO_IO21_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO22 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_GPIO_IO22_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO23 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_GPIO_IO23_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO24 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_GPIO_IO24_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO25 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_GPIO_IO25_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO26 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_GPIO_IO26_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO27 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_GPIO_IO27_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO28 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_GPIO_IO28_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO29 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_GPIO_IO29_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO30 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_GPIO_IO30_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO31 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_GPIO_IO31_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO32 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_GPIO_IO32_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO33 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_GPIO_IO33_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO34 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_GPIO_IO34_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO35 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_GPIO_IO35_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO36 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_GPIO_IO36_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_GPIO_IO37 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_GPIO_IO37_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_CCM_CLKO1 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_CCM_CLKO1_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_CCM_CLKO2 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_CCM_CLKO2_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_CCM_CLKO3 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_CCM_CLKO3_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_CCM_CLKO4 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_CCM_CLKO4_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_ENET1_MDC (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_ENET1_MDC_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_ENET1_MDIO (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_ENET1_MDIO_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_ENET1_TD3 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_ENET1_TD3_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_ENET1_TD2 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_ENET1_TD2_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_ENET1_TD1 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_ENET1_TD1_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_ENET1_TD0 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_ENET1_TD0_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_ENET1_TX_CTL (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_ENET1_TX_CTL_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_ENET1_TXC (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_ENET1_TXC_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_ENET1_RX_CTL (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_ENET1_RX_CTL_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_ENET1_RXC (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_ENET1_RXC_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_ENET1_RD0 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_ENET1_RD0_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_ENET1_RD1 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_ENET1_RD1_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_ENET1_RD2 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_ENET1_RD2_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_ENET1_RD3 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_ENET1_RD3_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_ENET2_MDC (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_ENET2_MDC_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_ENET2_MDIO (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_ENET2_MDIO_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_ENET2_TD3 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_ENET2_TD3_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_ENET2_TD2 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_ENET2_TD2_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_ENET2_TD1 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_ENET2_TD1_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_ENET2_TD0 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_ENET2_TD0_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_ENET2_TX_CTL (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_ENET2_TX_CTL_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_ENET2_TXC (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_ENET2_TXC_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_ENET2_RX_CTL (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_ENET2_RX_CTL_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_ENET2_RXC (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_ENET2_RXC_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_ENET2_RD0 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_ENET2_RD0_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_ENET2_RD1 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_ENET2_RD1_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_ENET2_RD2 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_ENET2_RD2_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_ENET2_RD3 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_ENET2_RD3_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_SD1_CLK (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_SD1_CLK_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_SD1_CMD (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_SD1_CMD_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_SD1_DATA0 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_SD1_DATA0_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_SD1_DATA1 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_SD1_DATA1_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_SD1_DATA2 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_SD1_DATA2_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_SD1_DATA3 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_SD1_DATA3_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_SD1_DATA4 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_SD1_DATA4_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_SD1_DATA5 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_SD1_DATA5_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_SD1_DATA6 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_SD1_DATA6_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_SD1_DATA7 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_SD1_DATA7_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_SD1_STROBE (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_SD1_STROBE_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_SD2_VSELECT (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_SD2_VSELECT_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_SD3_CLK (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_SD3_CLK_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_SD3_CMD (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_SD3_CMD_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_SD3_DATA0 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_SD3_DATA0_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_SD3_DATA1 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_SD3_DATA1_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_SD3_DATA2 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_SD3_DATA2_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_SD3_DATA3 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_SD3_DATA3_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_XSPI1_DATA0 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_XSPI1_DATA0_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_XSPI1_DATA1 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_XSPI1_DATA1_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_XSPI1_DATA2 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_XSPI1_DATA2_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_XSPI1_DATA3 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_XSPI1_DATA3_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_XSPI1_DATA4 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_XSPI1_DATA4_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_XSPI1_DATA5 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_XSPI1_DATA5_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_XSPI1_DATA6 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_XSPI1_DATA6_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_XSPI1_DATA7 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_XSPI1_DATA7_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_XSPI1_DQS (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_XSPI1_DQS_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_XSPI1_SCLK (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_XSPI1_SCLK_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_XSPI1_SS0_B (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_XSPI1_SS0_B_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_XSPI1_SS1_B (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_XSPI1_SS1_B_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_SD2_CD_B (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_SD2_CD_B_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_SD2_CLK (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_SD2_CLK_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_SD2_CMD (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_SD2_CMD_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_SD2_DATA0 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_SD2_DATA0_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_SD2_DATA1 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_SD2_DATA1_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_SD2_DATA2 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_SD2_DATA2_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_SD2_DATA3 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_SD2_DATA3_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_SD2_RESET_B (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_SD2_RESET_B_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_I2C1_SCL (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_I2C1_SCL_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_I2C1_SDA (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_I2C1_SDA_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_I2C2_SCL (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_I2C2_SCL_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_I2C2_SDA (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_I2C2_SDA_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_UART1_RXD (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_UART1_RXD_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_UART1_TXD (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_UART1_TXD_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_UART2_RXD (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_UART2_RXD_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_UART2_TXD (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_UART2_TXD_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_PDM_CLK (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_PDM_CLK_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_PDM_BIT_STREAM0 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_PDM_BIT_STREAM0_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_PDM_BIT_STREAM1 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_PDM_BIT_STREAM1_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_SAI1_TXFS (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_SAI1_TXFS_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_SAI1_TXC (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_SAI1_TXC_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_SAI1_TXD0 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_SAI1_TXD0_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_SAI1_RXD0 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_SAI1_RXD0_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_WDOG_ANY (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_WDOG_ANY_OFFSET)
|
||||
#define IOMUXC_PAD_CTL_FCCU_ERR0 (IMX9_IOMUXC1_BASE + IOMUXC_PAD_CTL_FCCU_ERR0_OFFSET)
|
||||
|
||||
#define IOMUXC_CAN1_IPP_IND_CANRX_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_CAN1_IPP_IND_CANRX_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_PDM_IPP_IND_MIC_PDM_BITSTREAM_SELECT_INPUT_0 (IMX9_IOMUXC1_BASE + IOMUXC_PDM_IPP_IND_MIC_PDM_BITSTREAM_SELECT_INPUT_0_OFFSET)
|
||||
#define IOMUXC_PDM_IPP_IND_MIC_PDM_BITSTREAM_SELECT_INPUT_1 (IMX9_IOMUXC1_BASE + IOMUXC_PDM_IPP_IND_MIC_PDM_BITSTREAM_SELECT_INPUT_1_OFFSET)
|
||||
#define IOMUXC_PDM_IPP_IND_MIC_PDM_BITSTREAM_SELECT_INPUT_2 (IMX9_IOMUXC1_BASE + IOMUXC_PDM_IPP_IND_MIC_PDM_BITSTREAM_SELECT_INPUT_2_OFFSET)
|
||||
#define IOMUXC_PDM_IPP_IND_MIC_PDM_BITSTREAM_SELECT_INPUT_3 (IMX9_IOMUXC1_BASE + IOMUXC_PDM_IPP_IND_MIC_PDM_BITSTREAM_SELECT_INPUT_3_OFFSET)
|
||||
#define IOMUXC_SAI1_IPP_IND_SAI_MCLK_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_SAI1_IPP_IND_SAI_MCLK_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_EXT1_CLK_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_EXT1_CLK_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_NETC_CMPLX_EMDC_IN_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_NETC_CMPLX_EMDC_IN_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_NETC_CMPLX_EMDIO_IN_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_NETC_CMPLX_EMDIO_IN_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_NETC_CMPLX_ETH0_RMII_RX_ER_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_NETC_CMPLX_ETH0_RMII_RX_ER_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_NETC_CMPLX_ETH1_RMII_RX_ER_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_NETC_CMPLX_ETH1_RMII_RX_ER_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_NETC_CMPLX_TMR_1588_TRIG1_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_NETC_CMPLX_TMR_1588_TRIG1_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_NETC_CMPLX_TMR_1588_TRIG2_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_NETC_CMPLX_TMR_1588_TRIG2_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_SAI2_IPP_IND_SAI_RXDATA_SELECT_INPUT_6 (IMX9_IOMUXC1_BASE + IOMUXC_SAI2_IPP_IND_SAI_RXDATA_SELECT_INPUT_6_OFFSET)
|
||||
#define IOMUXC_SAI2_IPP_IND_SAI_RXDATA_SELECT_INPUT_7 (IMX9_IOMUXC1_BASE + IOMUXC_SAI2_IPP_IND_SAI_RXDATA_SELECT_INPUT_7_OFFSET)
|
||||
#define IOMUXC_CAN2_IPP_IND_CANRX_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_CAN2_IPP_IND_CANRX_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_CAN3_IPP_IND_CANRX_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_CAN3_IPP_IND_CANRX_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_CAN4_IPP_IND_CANRX_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_CAN4_IPP_IND_CANRX_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_CAN5_IPP_IND_CANRX_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_CAN5_IPP_IND_CANRX_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_EARC_PHY_SPDIF_IN_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_EARC_PHY_SPDIF_IN_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_26 (IMX9_IOMUXC1_BASE + IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_26_OFFSET)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_27 (IMX9_IOMUXC1_BASE + IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_27_OFFSET)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_30 (IMX9_IOMUXC1_BASE + IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_30_OFFSET)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_31 (IMX9_IOMUXC1_BASE + IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_31_OFFSET)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_0 (IMX9_IOMUXC1_BASE + IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_0_OFFSET)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_1 (IMX9_IOMUXC1_BASE + IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_1_OFFSET)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_2 (IMX9_IOMUXC1_BASE + IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_2_OFFSET)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_3 (IMX9_IOMUXC1_BASE + IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_3_OFFSET)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_4 (IMX9_IOMUXC1_BASE + IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_4_OFFSET)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_5 (IMX9_IOMUXC1_BASE + IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_5_OFFSET)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_6 (IMX9_IOMUXC1_BASE + IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_6_OFFSET)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_7 (IMX9_IOMUXC1_BASE + IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_7_OFFSET)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_8 (IMX9_IOMUXC1_BASE + IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_8_OFFSET)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_9 (IMX9_IOMUXC1_BASE + IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_9_OFFSET)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_10 (IMX9_IOMUXC1_BASE + IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_10_OFFSET)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_11 (IMX9_IOMUXC1_BASE + IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_11_OFFSET)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_12 (IMX9_IOMUXC1_BASE + IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_12_OFFSET)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_13 (IMX9_IOMUXC1_BASE + IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_13_OFFSET)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_14 (IMX9_IOMUXC1_BASE + IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_14_OFFSET)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_15 (IMX9_IOMUXC1_BASE + IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_15_OFFSET)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_16 (IMX9_IOMUXC1_BASE + IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_16_OFFSET)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_17 (IMX9_IOMUXC1_BASE + IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_17_OFFSET)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_18 (IMX9_IOMUXC1_BASE + IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_18_OFFSET)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_19 (IMX9_IOMUXC1_BASE + IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_19_OFFSET)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_20 (IMX9_IOMUXC1_BASE + IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_20_OFFSET)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_21 (IMX9_IOMUXC1_BASE + IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_21_OFFSET)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_22 (IMX9_IOMUXC1_BASE + IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_22_OFFSET)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_23 (IMX9_IOMUXC1_BASE + IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_23_OFFSET)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_24 (IMX9_IOMUXC1_BASE + IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_24_OFFSET)
|
||||
#define IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_25 (IMX9_IOMUXC1_BASE + IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_25_OFFSET)
|
||||
#define IOMUXC_FLEXSPI1_I_IPP_IND_DQS_FA_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_FLEXSPI1_I_IPP_IND_DQS_FA_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_FLEXSPI1_I_IPP_IND_IO_FA_SELECT_INPUT_0 (IMX9_IOMUXC1_BASE + IOMUXC_FLEXSPI1_I_IPP_IND_IO_FA_SELECT_INPUT_0_OFFSET)
|
||||
#define IOMUXC_FLEXSPI1_I_IPP_IND_IO_FA_SELECT_INPUT_1 (IMX9_IOMUXC1_BASE + IOMUXC_FLEXSPI1_I_IPP_IND_IO_FA_SELECT_INPUT_1_OFFSET)
|
||||
#define IOMUXC_FLEXSPI1_I_IPP_IND_IO_FA_SELECT_INPUT_2 (IMX9_IOMUXC1_BASE + IOMUXC_FLEXSPI1_I_IPP_IND_IO_FA_SELECT_INPUT_2_OFFSET)
|
||||
#define IOMUXC_FLEXSPI1_I_IPP_IND_IO_FA_SELECT_INPUT_3 (IMX9_IOMUXC1_BASE + IOMUXC_FLEXSPI1_I_IPP_IND_IO_FA_SELECT_INPUT_3_OFFSET)
|
||||
#define IOMUXC_FLEXSPI1_I_IPP_IND_IO_FA_SELECT_INPUT_4 (IMX9_IOMUXC1_BASE + IOMUXC_FLEXSPI1_I_IPP_IND_IO_FA_SELECT_INPUT_4_OFFSET)
|
||||
#define IOMUXC_FLEXSPI1_I_IPP_IND_IO_FA_SELECT_INPUT_5 (IMX9_IOMUXC1_BASE + IOMUXC_FLEXSPI1_I_IPP_IND_IO_FA_SELECT_INPUT_5_OFFSET)
|
||||
#define IOMUXC_FLEXSPI1_I_IPP_IND_IO_FA_SELECT_INPUT_6 (IMX9_IOMUXC1_BASE + IOMUXC_FLEXSPI1_I_IPP_IND_IO_FA_SELECT_INPUT_6_OFFSET)
|
||||
#define IOMUXC_FLEXSPI1_I_IPP_IND_IO_FA_SELECT_INPUT_7 (IMX9_IOMUXC1_BASE + IOMUXC_FLEXSPI1_I_IPP_IND_IO_FA_SELECT_INPUT_7_OFFSET)
|
||||
#define IOMUXC_FLEXSPI1_I_IPP_IND_SCK_FA_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_FLEXSPI1_I_IPP_IND_SCK_FA_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_I3C2_PIN_SCL_IN_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_I3C2_PIN_SCL_IN_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_I3C2_PIN_SDA_IN_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_I3C2_PIN_SDA_IN_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_LPI2C3_IPP_IND_LPI2C_SCL_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_LPI2C3_IPP_IND_LPI2C_SCL_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_LPI2C3_IPP_IND_LPI2C_SDA_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_LPI2C3_IPP_IND_LPI2C_SDA_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_LPI2C4_IPP_IND_LPI2C_SCL_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_LPI2C4_IPP_IND_LPI2C_SCL_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_LPI2C4_IPP_IND_LPI2C_SDA_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_LPI2C4_IPP_IND_LPI2C_SDA_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_LPI2C5_IPP_IND_LPI2C_SCL_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_LPI2C5_IPP_IND_LPI2C_SCL_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_LPI2C5_IPP_IND_LPI2C_SDA_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_LPI2C5_IPP_IND_LPI2C_SDA_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_LPI2C6_IPP_IND_LPI2C_SCL_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_LPI2C6_IPP_IND_LPI2C_SCL_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_LPI2C6_IPP_IND_LPI2C_SDA_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_LPI2C6_IPP_IND_LPI2C_SDA_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_LPI2C7_IPP_IND_LPI2C_SCL_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_LPI2C7_IPP_IND_LPI2C_SCL_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_LPI2C7_IPP_IND_LPI2C_SDA_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_LPI2C7_IPP_IND_LPI2C_SDA_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_LPI2C8_IPP_IND_LPI2C_SCL_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_LPI2C8_IPP_IND_LPI2C_SCL_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_LPI2C8_IPP_IND_LPI2C_SDA_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_LPI2C8_IPP_IND_LPI2C_SDA_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_LPSPI4_IPP_IND_LPSPI_PCS_SELECT_INPUT_0 (IMX9_IOMUXC1_BASE + IOMUXC_LPSPI4_IPP_IND_LPSPI_PCS_SELECT_INPUT_0_OFFSET)
|
||||
#define IOMUXC_LPSPI4_IPP_IND_LPSPI_PCS_SELECT_INPUT_1 (IMX9_IOMUXC1_BASE + IOMUXC_LPSPI4_IPP_IND_LPSPI_PCS_SELECT_INPUT_1_OFFSET)
|
||||
#define IOMUXC_LPSPI4_IPP_IND_LPSPI_PCS_SELECT_INPUT_2 (IMX9_IOMUXC1_BASE + IOMUXC_LPSPI4_IPP_IND_LPSPI_PCS_SELECT_INPUT_2_OFFSET)
|
||||
#define IOMUXC_LPSPI4_IPP_IND_LPSPI_SCK_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_LPSPI4_IPP_IND_LPSPI_SCK_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_LPSPI4_IPP_IND_LPSPI_SDI_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_LPSPI4_IPP_IND_LPSPI_SDI_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_LPSPI4_IPP_IND_LPSPI_SDO_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_LPSPI4_IPP_IND_LPSPI_SDO_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_LPTMR2_IPP_IND_LPTIMER_SELECT_INPUT_0 (IMX9_IOMUXC1_BASE + IOMUXC_LPTMR2_IPP_IND_LPTIMER_SELECT_INPUT_0_OFFSET)
|
||||
#define IOMUXC_LPTMR2_IPP_IND_LPTIMER_SELECT_INPUT_1 (IMX9_IOMUXC1_BASE + IOMUXC_LPTMR2_IPP_IND_LPTIMER_SELECT_INPUT_1_OFFSET)
|
||||
#define IOMUXC_LPTMR2_IPP_IND_LPTIMER_SELECT_INPUT_2 (IMX9_IOMUXC1_BASE + IOMUXC_LPTMR2_IPP_IND_LPTIMER_SELECT_INPUT_2_OFFSET)
|
||||
#define IOMUXC_LPUART3_IPP_IND_LPUART_CTS_N_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_LPUART3_IPP_IND_LPUART_CTS_N_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_LPUART3_IPP_IND_LPUART_RXD_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_LPUART3_IPP_IND_LPUART_RXD_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_LPUART3_IPP_IND_LPUART_TXD_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_LPUART3_IPP_IND_LPUART_TXD_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_LPUART4_IPP_IND_LPUART_CTS_N_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_LPUART4_IPP_IND_LPUART_CTS_N_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_LPUART4_IPP_IND_LPUART_RXD_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_LPUART4_IPP_IND_LPUART_RXD_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_LPUART4_IPP_IND_LPUART_TXD_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_LPUART4_IPP_IND_LPUART_TXD_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_LPUART5_IPP_IND_LPUART_CTS_N_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_LPUART5_IPP_IND_LPUART_CTS_N_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_LPUART5_IPP_IND_LPUART_RXD_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_LPUART5_IPP_IND_LPUART_RXD_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_LPUART5_IPP_IND_LPUART_TXD_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_LPUART5_IPP_IND_LPUART_TXD_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_LPUART6_IPP_IND_LPUART_CTS_N_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_LPUART6_IPP_IND_LPUART_CTS_N_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_LPUART6_IPP_IND_LPUART_RXD_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_LPUART6_IPP_IND_LPUART_RXD_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_LPUART6_IPP_IND_LPUART_TXD_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_LPUART6_IPP_IND_LPUART_TXD_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_LPUART7_IPP_IND_LPUART_RXD_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_LPUART7_IPP_IND_LPUART_RXD_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_LPUART7_IPP_IND_LPUART_TXD_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_LPUART7_IPP_IND_LPUART_TXD_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_SAI3_IPP_IND_SAI_RXBCLK_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_SAI3_IPP_IND_SAI_RXBCLK_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_SAI3_IPP_IND_SAI_RXSYNC_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_SAI3_IPP_IND_SAI_RXSYNC_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_SAI4_IPP_IND_SAI_RXBCLK_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_SAI4_IPP_IND_SAI_RXBCLK_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_SAI4_IPP_IND_SAI_RXDATA_SELECT_INPUT_0 (IMX9_IOMUXC1_BASE + IOMUXC_SAI4_IPP_IND_SAI_RXDATA_SELECT_INPUT_0_OFFSET)
|
||||
#define IOMUXC_SAI4_IPP_IND_SAI_RXSYNC_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_SAI4_IPP_IND_SAI_RXSYNC_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_SAI4_IPP_IND_SAI_TXBCLK_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_SAI4_IPP_IND_SAI_TXBCLK_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_SAI4_IPP_IND_SAI_TXSYNC_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_SAI4_IPP_IND_SAI_TXSYNC_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_SAI5_IPP_IND_SAI_RXBCLK_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_SAI5_IPP_IND_SAI_RXBCLK_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_SAI5_IPP_IND_SAI_RXDATA_SELECT_INPUT_0 (IMX9_IOMUXC1_BASE + IOMUXC_SAI5_IPP_IND_SAI_RXDATA_SELECT_INPUT_0_OFFSET)
|
||||
#define IOMUXC_SAI5_IPP_IND_SAI_RXDATA_SELECT_INPUT_1 (IMX9_IOMUXC1_BASE + IOMUXC_SAI5_IPP_IND_SAI_RXDATA_SELECT_INPUT_1_OFFSET)
|
||||
#define IOMUXC_SAI5_IPP_IND_SAI_RXDATA_SELECT_INPUT_2 (IMX9_IOMUXC1_BASE + IOMUXC_SAI5_IPP_IND_SAI_RXDATA_SELECT_INPUT_2_OFFSET)
|
||||
#define IOMUXC_SAI5_IPP_IND_SAI_RXDATA_SELECT_INPUT_3 (IMX9_IOMUXC1_BASE + IOMUXC_SAI5_IPP_IND_SAI_RXDATA_SELECT_INPUT_3_OFFSET)
|
||||
#define IOMUXC_SAI5_IPP_IND_SAI_RXSYNC_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_SAI5_IPP_IND_SAI_RXSYNC_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_SAI5_IPP_IND_SAI_TXBCLK_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_SAI5_IPP_IND_SAI_TXBCLK_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_SAI5_IPP_IND_SAI_TXSYNC_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_SAI5_IPP_IND_SAI_TXSYNC_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_USDHC3_IPP_CARD_CLK_IN_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_USDHC3_IPP_CARD_CLK_IN_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_USDHC3_IPP_CMD_IN_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_USDHC3_IPP_CMD_IN_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_USDHC3_IPP_DAT0_IN_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_USDHC3_IPP_DAT0_IN_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_USDHC3_IPP_DAT1_IN_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_USDHC3_IPP_DAT1_IN_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_USDHC3_IPP_DAT2_IN_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_USDHC3_IPP_DAT2_IN_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_USDHC3_IPP_DAT3_IN_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_USDHC3_IPP_DAT3_IN_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_XSPI_IPP_IND_CS_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_XSPI_IPP_IND_CS_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_XSPI_IPP_IND_DQS_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_XSPI_IPP_IND_DQS_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_XSPI_IPP_IND_SCK_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_XSPI_IPP_IND_SCK_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_XSPI_SLV_IPP_IND_IO_SELECT_INPUT_0 (IMX9_IOMUXC1_BASE + IOMUXC_XSPI_SLV_IPP_IND_IO_SELECT_INPUT_0_OFFSET)
|
||||
#define IOMUXC_XSPI_SLV_IPP_IND_IO_SELECT_INPUT_1 (IMX9_IOMUXC1_BASE + IOMUXC_XSPI_SLV_IPP_IND_IO_SELECT_INPUT_1_OFFSET)
|
||||
#define IOMUXC_XSPI_SLV_IPP_IND_IO_SELECT_INPUT_2 (IMX9_IOMUXC1_BASE + IOMUXC_XSPI_SLV_IPP_IND_IO_SELECT_INPUT_2_OFFSET)
|
||||
#define IOMUXC_XSPI_SLV_IPP_IND_IO_SELECT_INPUT_3 (IMX9_IOMUXC1_BASE + IOMUXC_XSPI_SLV_IPP_IND_IO_SELECT_INPUT_3_OFFSET)
|
||||
#define IOMUXC_XSPI_SLV_IPP_IND_IO_SELECT_INPUT_4 (IMX9_IOMUXC1_BASE + IOMUXC_XSPI_SLV_IPP_IND_IO_SELECT_INPUT_4_OFFSET)
|
||||
#define IOMUXC_XSPI_SLV_IPP_IND_IO_SELECT_INPUT_5 (IMX9_IOMUXC1_BASE + IOMUXC_XSPI_SLV_IPP_IND_IO_SELECT_INPUT_5_OFFSET)
|
||||
#define IOMUXC_XSPI_SLV_IPP_IND_IO_SELECT_INPUT_6 (IMX9_IOMUXC1_BASE + IOMUXC_XSPI_SLV_IPP_IND_IO_SELECT_INPUT_6_OFFSET)
|
||||
#define IOMUXC_XSPI_SLV_IPP_IND_IO_SELECT_INPUT_7 (IMX9_IOMUXC1_BASE + IOMUXC_XSPI_SLV_IPP_IND_IO_SELECT_INPUT_7_OFFSET)
|
||||
#define IOMUXC_JTAG_MUX_TCK_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_JTAG_MUX_TCK_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_JTAG_MUX_TDI_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_JTAG_MUX_TDI_SELECT_INPUT_OFFSET)
|
||||
#define IOMUXC_JTAG_MUX_TMS_SELECT_INPUT (IMX9_IOMUXC1_BASE + IOMUXC_JTAG_MUX_TMS_SELECT_INPUT_OFFSET)
|
765
arch/arm/src/imx9/hardware/imx95/imx95_memorymap.h
Normal file
765
arch/arm/src/imx9/hardware/imx95/imx95_memorymap.h
Normal file
|
@ -0,0 +1,765 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/hardware/imx95/imx95_memorymap.h
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
#define IMX9_ITCM_BASE (0x00000000) /* 512 KB ITCM (FlexRAM) */
|
||||
#define IMX9_FLEXSPI1_ALIAS_BASE (0x02000000) /* 32 MB FlexSPI1 (alias) */
|
||||
#define IMX9_DTCM_BASE (0x20000000) /* 512 KB DTCM (FlexRAM) */
|
||||
#define IMX9_OCRAM_BASE (0x20480000) /* 352 KB, OCRAM */
|
||||
#define IMX9_FLEXSPI1_BASE (0x28000000) /* 128 MB FlexSPI1 */
|
||||
#define IMX9_AIPS1_BASE (0x42000000) /* AIPS 8192KB */
|
||||
#define IMX9_AIPS2_BASE (0x42800000) /* AIPS 8192KB */
|
||||
#define IMX9_AIPS3_BASE (0x44000000) /* AIPS 8192KB */
|
||||
#define IMX9_AIPS4_BASE (0x49000000) /* AIPS 8192KB */
|
||||
#define IMX9_GPIO_MEM_BASE (0x43810000) /* GPIO 2-3-4-5 320KB region */
|
||||
#define IMX9_GPIO1_BASE (0x47400000) /* GPIO 1 64KB region */
|
||||
#define IMX9_DRAM_BASE (0x80000000) /* DRAM */
|
||||
#define IMX9_DRAM_XIP_BASE (0x90000800) /* DRAM XIP */
|
||||
#define IMX9_RPMSG_BASE (0x88000000) /* DRAM for VRING and RSC */
|
||||
|
||||
#define IMX9_ADC_BASE (0x44530000)
|
||||
#define IMX9_ANALOG__AGDET_BASE (0x44487000)
|
||||
#define IMX9_ANALOG__AUDIO_FRACT_PLL1_BASE (0x44481100)
|
||||
#define IMX9_ANALOG__AUDIO_FRACT_PLL2_BASE (0x44481200)
|
||||
#define IMX9_ANALOG__CMU0_BASE (0x44670000)
|
||||
#define IMX9_ANALOG__FRO_BASE (0x44485000)
|
||||
#define IMX9_ANALOG__OSC24M_BASE (0x44480000)
|
||||
#define IMX9_ANALOG__PMRO_BASE (0x44484000)
|
||||
#define IMX9_ANALOG__SFA_BASE (0x44483000)
|
||||
#define IMX9_ANALOG__SYS_FRACT_PLL1_BASE (0x44481000)
|
||||
#define IMX9_ANALOG__TCU_BASE (0x444C0000)
|
||||
#define IMX9_ANALOG__TRGMUX_BASE (0x44531000)
|
||||
#define IMX9_ANALOG__VDET_BASE (0x44486000)
|
||||
#define IMX9_ANALOG__VIDEO_FRACT_PLL1_BASE (0x44481300)
|
||||
#define IMX9_AON__AXBS_BASE (0x44510000)
|
||||
#define IMX9_AON__BLK_CTRL_NS_AONMIX1_BASE (0x44210000)
|
||||
#define IMX9_AON__BLK_CTRL_S_AONMIX2_BASE (0x444F0000)
|
||||
#define IMX9_AON__CMUA1_BASE (0x44540000)
|
||||
#define IMX9_AON__CMUA2_BASE (0x44650000)
|
||||
#define IMX9_AON__CRCA_BASE (0x44660000)
|
||||
#define IMX9_AON__CSTCU_BASE (0x44590000)
|
||||
#define IMX9_AON__EDMA3_TCD1_BASE (0x44010000)
|
||||
#define IMX9_AON__EIMA_BASE (0x44550000)
|
||||
#define IMX9_AON__FCCU_BASE (0x44570000)
|
||||
#define IMX9_AON__INTM_BASE (0x44580000)
|
||||
#define IMX9_AON__IOMUXC0__IOMUXC_GPR_BASE (0x443D0000)
|
||||
#define IMX9_AON__LSTCUA_BASE (0x445A0000)
|
||||
#define IMX9_AON__M33_CACHE_CTRL_ECC0__CM33_CACHE_ECC_MCM_BASE (0x44401000)
|
||||
#define IMX9_AON__M33_CACHE_CTRL_ECC0__CM33_TCM_MCM_BASE (0x44420000)
|
||||
#define IMX9_AON__M33_PCF1_BASE (0x443E0000)
|
||||
#define IMX9_AON__M33_PSF1_BASE (0x443F0000)
|
||||
#define IMX9_AON__MCM_BASE (0xE0080000)
|
||||
#define IMX9_AON__ROMCP1_BASE (0x44430000)
|
||||
#define IMX9_AON__SYS_CTR1__SYS_CTR_COMPARE_BASE (0x442A0000)
|
||||
#define IMX9_AON__SYS_CTR1__SYS_CTR_CONTROL_BASE (0x44290000)
|
||||
#define IMX9_AON__SYS_CTR1__SYS_CTR_READ_BASE (0x442B0000)
|
||||
#define IMX9_AON__TCU_BASE (0x444B0000)
|
||||
#define IMX9_BBSM__BBNSM_BASE (0x44440000)
|
||||
#define IMX9_BBSM__BLK_CTRL_BBSMMIX_BBSMMIX1_BASE (0x44410000)
|
||||
#define IMX9_BBSM__TCU_BBSMMIX_BASE (0x444E0000)
|
||||
#define IMX9_BLK_CTRL_CAMERAMIX_BASE (0x4AC10000)
|
||||
#define IMX9_BLK_CTRL_NETCMIX_BASE (0x4C810000)
|
||||
#define IMX9_CAMERA__DSI_CAMID_CSR_BASE (0x4ADE0000)
|
||||
#define IMX9_CAMERA__DSI_CSI_COMBO_COMPLEX_CSI1__CSI_BASE (0x4AD40000)
|
||||
#define IMX9_CAMERA__DSI_MASTER_CSR_BASE (0x4AD10000)
|
||||
#define IMX9_CAMERA__DSI_OR_CSI_PHY_CSR_BASE (0x4AD20000)
|
||||
#define IMX9_CAMERA__DSI_PIXEL_FORMATTING_BASE (0x4AC00000)
|
||||
#define IMX9_CAMERA__DSI_STREAM_CSR_BASE (0x4AD00000)
|
||||
#define IMX9_CAMERA__EDMA5_TCDC_BASE (0x4AE20000)
|
||||
#define IMX9_CAMERA__GPV__ISI_RD_I_MAIN_QOSGENERATOR_BASE (0x4AFF0C00)
|
||||
#define IMX9_CAMERA__GPV__ISI_RD_I_MAIN_TRANSACTIONSTATFILTER_BASE (0x4AFF1000)
|
||||
#define IMX9_CAMERA__GPV__ISI_WR_U_I_MAIN_QOSGENERATOR_BASE (0x4AFF0C80)
|
||||
#define IMX9_CAMERA__GPV__ISI_WR_U_I_MAIN_TRANSACTIONSTATFILTER_BASE (0x4AFF1080)
|
||||
#define IMX9_CAMERA__GPV__ISI_WR_V_I_MAIN_QOSGENERATOR_BASE (0x4AFF0D00)
|
||||
#define IMX9_CAMERA__GPV__ISI_WR_V_I_MAIN_TRANSACTIONSTATFILTER_BASE (0x4AFF1100)
|
||||
#define IMX9_CAMERA__GPV__ISI_WR_Y_I_MAIN_QOSGENERATOR_BASE (0x4AFF0D80)
|
||||
#define IMX9_CAMERA__GPV__ISI_WR_Y_I_MAIN_TRANSACTIONSTATFILTER_BASE (0x4AFF1180)
|
||||
#define IMX9_CAMERA__GPV__ISP_RD_0_I_MAIN_QOSGENERATOR_BASE (0x4AFF0E00)
|
||||
#define IMX9_CAMERA__GPV__ISP_RD_0_I_MAIN_TRANSACTIONSTATFILTER_BASE (0x4AFF1200)
|
||||
#define IMX9_CAMERA__GPV__ISP_RD_1_I_MAIN_QOSGENERATOR_BASE (0x4AFF0E80)
|
||||
#define IMX9_CAMERA__GPV__ISP_RD_1_I_MAIN_TRANSACTIONSTATFILTER_BASE (0x4AFF1280)
|
||||
#define IMX9_CAMERA__GPV__ISP_WR_0_I_MAIN_QOSGENERATOR_BASE (0x4AFF0F00)
|
||||
#define IMX9_CAMERA__GPV__ISP_WR_0_I_MAIN_TRANSACTIONSTATFILTER_BASE (0x4AFF1300)
|
||||
#define IMX9_CAMERA__GPV__ISP_WR_1_I_MAIN_QOSGENERATOR_BASE (0x4AFF0F80)
|
||||
#define IMX9_CAMERA__GPV__ISP_WR_1_I_MAIN_TRANSACTIONSTATFILTER_BASE (0x4AFF1380)
|
||||
#define IMX9_CAMERA__GPV__PROBE_ISI_MAIN_PROBE_BASE (0x4AFF0000)
|
||||
#define IMX9_CAMERA__GPV__PROBE_ISI_MAIN_TRANSACTIONSTATPROFILER_BASE (0x4AFF1400)
|
||||
#define IMX9_CAMERA__GPV__PROBE_ISP_MAIN_PROBE_BASE (0x4AFF0400)
|
||||
#define IMX9_CAMERA__GPV__PROBE_ISP_MAIN_TRANSACTIONSTATPROFILER_BASE (0x4AFF1480)
|
||||
#define IMX9_CAMERA__GPV__PROBE_SSI_FWD_MAIN_PROBE_BASE (0x4AFF0800)
|
||||
#define IMX9_CAMERA__ISI_BASE (0x4AD50000)
|
||||
#define IMX9_CAMERA__ISP__ALIAS_BASE (0x4AE02000)
|
||||
#define IMX9_CAMERA__ISP__AUTOFOCUS_BASE (0x4AE01700)
|
||||
#define IMX9_CAMERA__ISP__BNR_BASE (0x4AE00800)
|
||||
#define IMX9_CAMERA__ISP__CAS_BASE (0x4AE01500)
|
||||
#define IMX9_CAMERA__ISP__CCONVMED_BASE (0x4AE014C0)
|
||||
#define IMX9_CAMERA__ISP__COLOR_TEMP_BASE (0x4AE00400)
|
||||
#define IMX9_CAMERA__ISP__DEMOSAIC_BASE (0x4AE01180)
|
||||
#define IMX9_CAMERA__ISP__DF_BASE (0x4AE01440)
|
||||
#define IMX9_CAMERA__ISP__DRC_BASE (0x4AE01300)
|
||||
#define IMX9_CAMERA__ISP__EE_BASE (0x4AE01480)
|
||||
#define IMX9_CAMERA__ISP__GCM_BASE (0x4AE01600)
|
||||
#define IMX9_CAMERA__ISP__HC_BASE (0x4AE000C0)
|
||||
#define IMX9_CAMERA__ISP__HDR_DECOMPRESS0_BASE (0x4AE00100)
|
||||
#define IMX9_CAMERA__ISP__HDR_DECOMPRESS1_BASE (0x4AE00180)
|
||||
#define IMX9_CAMERA__ISP__HDR_MERGE_BASE (0x4AE00300)
|
||||
#define IMX9_CAMERA__ISP__IDBG1_BASE (0x4AE00FC0)
|
||||
#define IMX9_CAMERA__ISP__IDBG2_BASE (0x4AE01FC0)
|
||||
#define IMX9_CAMERA__ISP__IR_COMPRESS_BASE (0x4AE00780)
|
||||
#define IMX9_CAMERA__ISP__NR_BASE (0x4AE01400)
|
||||
#define IMX9_CAMERA__ISP__OB_WB0_BASE (0x4AE00200)
|
||||
#define IMX9_CAMERA__ISP__OB_WB1_BASE (0x4AE00240)
|
||||
#define IMX9_CAMERA__ISP__OB_WB2_BASE (0x4AE00280)
|
||||
#define IMX9_CAMERA__ISP__PACKETIZER_BASE (0x4AE01580)
|
||||
#define IMX9_CAMERA__ISP__PIPE_CONF_BASE (0x4AE00000)
|
||||
#define IMX9_CAMERA__ISP__RGBIR_BASE (0x4AE00600)
|
||||
#define IMX9_CAMERA__ISP__RGB_TO_YUV_BASE (0x4AE011C0)
|
||||
#define IMX9_CAMERA__ISP__STAT_BASE (0x4AE00700)
|
||||
#define IMX9_CAMERA__ISP__VIGNETTING_BASE (0x4AE00900)
|
||||
#define IMX9_CAMERA__MUI_A1__MUA_BASE (0x4AC60000)
|
||||
#define IMX9_CAMERA__MUI_A2__MUA_BASE (0x4AC70000)
|
||||
#define IMX9_CAMERA__MUI_A3__MUA_BASE (0x4AC80000)
|
||||
#define IMX9_CAMERA__MUI_A4__MUA_BASE (0x4AC90000)
|
||||
#define IMX9_CAMERA__MUI_A5__MUA_BASE (0x4ACA0000)
|
||||
#define IMX9_CAMERA__MUI_A6__MUA_BASE (0x4ACB0000)
|
||||
#define IMX9_CAMERA__MUI_A7__MUA_BASE (0x4ACC0000)
|
||||
#define IMX9_CAMERA__MUI_A8__MUA_BASE (0x4ACD0000)
|
||||
#define IMX9_CAMERA__MUI_A9__MUA_BASE (0x4ACE0000)
|
||||
#define IMX9_CAMERA__OCRAM_MECC_BASE (0x4ADD0000)
|
||||
#define IMX9_CAMERA__TCU_BASE (0x4AC00000)
|
||||
#define IMX9_CAN1_BASE (0x443A0000)
|
||||
#define IMX9_CAN2_BASE (0x425B0000)
|
||||
#define IMX9_CAN3_BASE (0x42600000)
|
||||
#define IMX9_CAN4_BASE (0x427C0000)
|
||||
#define IMX9_CAN5_BASE (0x427D0000)
|
||||
#define IMX9_CCM_CTRL_BASE (0x44450000)
|
||||
#define IMX9_CCMSRCGPC__GPC__GPC_GLOBAL_BASE (0x44474800)
|
||||
#define IMX9_CCMSRCGPC__SRC__SRC_CENTRAL_REG_BASE (0x44460000)
|
||||
#define IMX9_CCMSRCGPC__SRC__XSPR_ANAMIX_BASE (0x44460400)
|
||||
#define IMX9_CCMSRCGPC__SRC__XSPR_AONMIX_BASE (0x44460800)
|
||||
#define IMX9_CCMSRCGPC__SRC__XSPR_AONMIX_MEM_BASE (0x44460900)
|
||||
#define IMX9_CCMSRCGPC__SRC__XSPR_BBSMMIX_BASE (0x44460C00)
|
||||
#define IMX9_CCMSRCGPC__SRC__XSPR_CAMERAMIX_BASE (0x44461000)
|
||||
#define IMX9_CCMSRCGPC__SRC__XSPR_CAMERAMIX_MEM_BASE (0x44461100)
|
||||
#define IMX9_CCMSRCGPC__SRC__XSPR_CCMSRCGPCMIX_BASE (0x44461400)
|
||||
#define IMX9_CCMSRCGPC__SRC__XSPR_CORTEXMIX_CORE0_BASE (0x44461800)
|
||||
#define IMX9_CCMSRCGPC__SRC__XSPR_CORTEXMIX_CORE0_MEM_BASE (0x44461900)
|
||||
#define IMX9_CCMSRCGPC__SRC__XSPR_CORTEXMIX_CORE1_BASE (0x44461C00)
|
||||
#define IMX9_CCMSRCGPC__SRC__XSPR_CORTEXMIX_CORE1_MEM_BASE (0x44461D00)
|
||||
#define IMX9_CCMSRCGPC__SRC__XSPR_CORTEXMIX_CORE2_BASE (0x44462000)
|
||||
#define IMX9_CCMSRCGPC__SRC__XSPR_CORTEXMIX_CORE2_MEM_BASE (0x44462100)
|
||||
#define IMX9_CCMSRCGPC__SRC__XSPR_CORTEXMIX_CORE3_BASE (0x44462400)
|
||||
#define IMX9_CCMSRCGPC__SRC__XSPR_CORTEXMIX_CORE3_MEM_BASE (0x44462500)
|
||||
#define IMX9_CCMSRCGPC__SRC__XSPR_CORTEXMIX_CORE4_BASE (0x44462800)
|
||||
#define IMX9_CCMSRCGPC__SRC__XSPR_CORTEXMIX_CORE4_MEM_BASE (0x44462900)
|
||||
#define IMX9_CCMSRCGPC__SRC__XSPR_CORTEXMIX_CORE5_BASE (0x44462C00)
|
||||
#define IMX9_CCMSRCGPC__SRC__XSPR_CORTEXMIX_CORE5_MEM_BASE (0x44462D00)
|
||||
#define IMX9_CCMSRCGPC__SRC__XSPR_CORTEXMIX_PLATFORM_BASE (0x44463000)
|
||||
#define IMX9_CCMSRCGPC__SRC__XSPR_CORTEXMIX_PLATFORM_MEM0_BASE (0x44463100)
|
||||
#define IMX9_CCMSRCGPC__SRC__XSPR_CORTEXMIX_PLATFORM_MEM1_BASE (0x44463120)
|
||||
#define IMX9_CCMSRCGPC__SRC__XSPR_DDRMIX_BASE (0x44463400)
|
||||
#define IMX9_CCMSRCGPC__SRC__XSPR_DDRMIX_MEM_BASE (0x44463500)
|
||||
#define IMX9_CCMSRCGPC__SRC__XSPR_DISPLAYMIX_BASE (0x44463800)
|
||||
#define IMX9_CCMSRCGPC__SRC__XSPR_DISPLAYMIX_MEM_BASE (0x44463900)
|
||||
#define IMX9_CCMSRCGPC__SRC__XSPR_GPUMIX_BASE (0x44463C00)
|
||||
#define IMX9_CCMSRCGPC__SRC__XSPR_GPUMIX_MEM_BASE (0x44463D00)
|
||||
#define IMX9_CCMSRCGPC__SRC__XSPR_HSIOMIX_MEM_BASE (0x44464100)
|
||||
#define IMX9_CCMSRCGPC__SRC__XSPR_HSIOMIX_TOP_BASE (0x44464000)
|
||||
#define IMX9_CCMSRCGPC__SRC__XSPR_HSIOMIX_WAON_BASE (0x44464400)
|
||||
#define IMX9_CCMSRCGPC__SRC__XSPR_M7MIX_BASE (0x44464800)
|
||||
#define IMX9_CCMSRCGPC__SRC__XSPR_M7MIX_MEM_BASE (0x44464900)
|
||||
#define IMX9_CCMSRCGPC__SRC__XSPR_NETCMIX_BASE (0x44464C00)
|
||||
#define IMX9_CCMSRCGPC__SRC__XSPR_NETCMIX_MEM_BASE (0x44464D00)
|
||||
#define IMX9_CCMSRCGPC__SRC__XSPR_NOCMIX_BASE (0x44465000)
|
||||
#define IMX9_CCMSRCGPC__SRC__XSPR_NOCMIX_MEM0_BASE (0x44465100)
|
||||
#define IMX9_CCMSRCGPC__SRC__XSPR_NOCMIX_MEM1_BASE (0x44465120)
|
||||
#define IMX9_CCMSRCGPC__SRC__XSPR_NPUMIX_BASE (0x44465400)
|
||||
#define IMX9_CCMSRCGPC__SRC__XSPR_NPUMIX_MEM_BASE (0x44465500)
|
||||
#define IMX9_CCMSRCGPC__SRC__XSPR_VPUMIX_BASE (0x44465800)
|
||||
#define IMX9_CCMSRCGPC__SRC__XSPR_VPUMIX_MEM_BASE (0x44465900)
|
||||
#define IMX9_CCMSRCGPC__SRC__XSPR_WAKEUPMIX_BASE (0x44465C00)
|
||||
#define IMX9_CCMSRCGPC__SRC__XSPR_WAKEUPMIX_MEM_BASE (0x44465D00)
|
||||
#define IMX9_CCMSRCGPC__TCU_BASE (0x444D0000)
|
||||
#define IMX9_CORTEXA__FRACT_PLL_ARMPLL_BASE (0x44481600)
|
||||
#define IMX9_CORTEXA__TCU_BASE (0x4A400000)
|
||||
#define IMX9_DDRC_BASE (0x4E080000)
|
||||
#define IMX9_DDRC__BLK_CTRL_DDRMIX_BASE (0x4E010000)
|
||||
#define IMX9_DDRC__CMU_1_BASE (0x4E060000)
|
||||
#define IMX9_DDRC__CMU_2_BASE (0x4E070000)
|
||||
#define IMX9_DDRC__FRACT_PLL_BASE (0x44481700)
|
||||
#define IMX9_DDRC__LSTCU_BASE (0x4E050000)
|
||||
#define IMX9_DDRC__TCU_BASE (0x4E000000)
|
||||
#define IMX9_DISPLAY__BLK_CTRL_DISPLAYMIX_BASE (0x4B010000)
|
||||
#define IMX9_DISPLAY__FRACT_PLL_BASE (0x44481900)
|
||||
#define IMX9_DISPLAY__GPV__I_SEERIS_2D_BLITTER_FU_RD_0_I_MAIN_QOSGENERATOR_BASE (0x4B7E0800)
|
||||
#define IMX9_DISPLAY__GPV__I_SEERIS_2D_BLITTER_FU_RD_0_I_MAIN_TRANSACTIONSTATFILTER_BASE (0x4B7E0A00)
|
||||
#define IMX9_DISPLAY__GPV__I_SEERIS_2D_BLITTER_FU_RD_1_I_MAIN_QOSGENERATOR_BASE (0x4B7E0880)
|
||||
#define IMX9_DISPLAY__GPV__I_SEERIS_2D_BLITTER_FU_RD_1_I_MAIN_TRANSACTIONSTATFILTER_BASE (0x4B7E0A80)
|
||||
#define IMX9_DISPLAY__GPV__I_SEERIS_2D_BLITTER_FU_RD_2_I_MAIN_QOSGENERATOR_BASE (0x4B7E0900)
|
||||
#define IMX9_DISPLAY__GPV__I_SEERIS_2D_BLITTER_FU_RD_2_I_MAIN_TRANSACTIONSTATFILTER_BASE (0x4B7E0B00)
|
||||
#define IMX9_DISPLAY__GPV__I_SEERIS_2D_BLITTER_STORE_WR_I_MAIN_QOSGENERATOR_BASE (0x4B7E0980)
|
||||
#define IMX9_DISPLAY__GPV__I_SEERIS_2D_BLITTER_STORE_WR_I_MAIN_TRANSACTIONSTATFILTER_BASE (0x4B7E0B80)
|
||||
#define IMX9_DISPLAY__GPV__I_SEERIS_CMD_SEQ_RD_I_MAIN_TRANSACTIONSTATFILTER_BASE (0x4B7E0C00)
|
||||
#define IMX9_DISPLAY__GPV__I_SEERIS_CMD_SEQ_WR_I_MAIN_TRANSACTIONSTATFILTER_BASE (0x4B7E0C80)
|
||||
#define IMX9_DISPLAY__GPV__I_SEERIS_DISPLAY_CTRL_FU_RD_0_I_MAIN_TRANSACTIONSTATFILTER_BASE (0x4B7E0D00)
|
||||
#define IMX9_DISPLAY__GPV__I_SEERIS_DISPLAY_CTRL_FU_RD_1_I_MAIN_TRANSACTIONSTATFILTER_BASE (0x4B7E0D80)
|
||||
#define IMX9_DISPLAY__GPV__I_SEERIS_DISPLAY_CTRL_FU_RD_2_I_MAIN_TRANSACTIONSTATFILTER_BASE (0x4B7E0E00)
|
||||
#define IMX9_DISPLAY__GPV__I_SEERIS_DISPLAY_CTRL_FU_RD_3_I_MAIN_TRANSACTIONSTATFILTER_BASE (0x4B7E0E80)
|
||||
#define IMX9_DISPLAY__GPV__I_SEERIS_DISPLAY_CTRL_FU_RD_4_I_MAIN_TRANSACTIONSTATFILTER_BASE (0x4B7E0F00)
|
||||
#define IMX9_DISPLAY__GPV__I_SEERIS_DISPLAY_CTRL_FU_RD_5_I_MAIN_TRANSACTIONSTATFILTER_BASE (0x4B7E0F80)
|
||||
#define IMX9_DISPLAY__GPV__I_SEERIS_DISPLAY_CTRL_FU_RD_6_I_MAIN_TRANSACTIONSTATFILTER_BASE (0x4B7E1000)
|
||||
#define IMX9_DISPLAY__GPV__I_SEERIS_DISPLAY_CTRL_FU_RD_7_I_MAIN_TRANSACTIONSTATFILTER_BASE (0x4B7E1080)
|
||||
#define IMX9_DISPLAY__GPV__I_SEERIS_DISPLAY_CTRL_FU_RD_8_I_MAIN_TRANSACTIONSTATFILTER_BASE (0x4B7E1100)
|
||||
#define IMX9_DISPLAY__GPV__PROBE1_MAIN_PROBE_BASE (0x4B7E0000)
|
||||
#define IMX9_DISPLAY__GPV__PROBE1_MAIN_TRANSACTIONSTATPROFILER_BASE (0x4B7E1180)
|
||||
#define IMX9_DISPLAY__GPV__PROBE_MAIN_PROBE_BASE (0x4B7E0400)
|
||||
#define IMX9_DISPLAY__OCRAM_MECC_BASE (0x4B0F0000)
|
||||
#define IMX9_DISPLAY__PIXEL_INTERLEAVER1_BASE (0x4B0D0000)
|
||||
#define IMX9_DISPLAY__PIXEL_MAPPER_BASE (0x4B000000)
|
||||
#define IMX9_DISPLAY_SEERIS_BASE (0x4B400000)
|
||||
#define IMX9_DISPLAY__SEERIS__BLITBLEND_BASE (0x4B470000)
|
||||
#define IMX9_DISPLAY__SEERIS__CLUT_clut_1_BASE (0x4B450400)
|
||||
#define IMX9_DISPLAY__SEERIS__CLUT_clut_BASE (0x4B450000)
|
||||
#define IMX9_DISPLAY__SEERIS__CMDSEQ_cmdseq_1_BASE (0x4B410100)
|
||||
#define IMX9_DISPLAY__SEERIS__CMDSEQ_cmdseq_2_BASE (0x4B410180)
|
||||
#define IMX9_DISPLAY__SEERIS__CMDSEQ_cmdseq_BASE (0x4B410000)
|
||||
#define IMX9_DISPLAY__SEERIS__CONSTFRAME_1_BASE (0x4B500000)
|
||||
#define IMX9_DISPLAY__SEERIS__CONSTFRAME_2_BASE (0x4B530000)
|
||||
#define IMX9_DISPLAY__SEERIS__CONSTFRAME_3_BASE (0x4B540000)
|
||||
#define IMX9_DISPLAY__SEERIS__CONSTFRAME_BASE (0x4B4F0000)
|
||||
#define IMX9_DISPLAY__SEERIS__DITHER_1_BASE (0x4B770000)
|
||||
#define IMX9_DISPLAY__SEERIS__DITHER_BASE (0x4B710000)
|
||||
#define IMX9_DISPLAY__SEERIS__DOMAINBLEND_1_BASE (0x4B720000)
|
||||
#define IMX9_DISPLAY__SEERIS__DOMAINBLEND_BASE (0x4B6A0000)
|
||||
#define IMX9_DISPLAY__SEERIS__EXTDST_1_BASE (0x4B520000)
|
||||
#define IMX9_DISPLAY__SEERIS__EXTDST_2_BASE (0x4B550000)
|
||||
#define IMX9_DISPLAY__SEERIS__EXTDST_3_BASE (0x4B560000)
|
||||
#define IMX9_DISPLAY__SEERIS__EXTDST_BASE (0x4B510000)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHDECODE_1_BASE (0x4B490028)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHDECODE_2_BASE (0x4B490060)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHDECODE_3_BASE (0x4B490088)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHDECODE_4_BASE (0x4B490098)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHDECODE_5_BASE (0x4B490400)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHDECODE_BASE (0x4B490000)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHECO_10_BASE (0x4B630000)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHECO_11_BASE (0x4B630010)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHECO_12_BASE (0x4B630048)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHECO_13_BASE (0x4B630060)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHECO_14_BASE (0x4B630068)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHECO_15_BASE (0x4B650000)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHECO_16_BASE (0x4B650010)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHECO_17_BASE (0x4B650048)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHECO_18_BASE (0x4B650060)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHECO_19_BASE (0x4B650068)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHECO_1_BASE (0x4B4A0010)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHECO_2_BASE (0x4B4A0048)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHECO_3_BASE (0x4B4A0060)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHECO_4_BASE (0x4B4A0068)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHECO_5_BASE (0x4B610000)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHECO_6_BASE (0x4B610010)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHECO_7_BASE (0x4B610048)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHECO_8_BASE (0x4B610060)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHECO_9_BASE (0x4B610068)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHECO_BASE (0x4B4A0000)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHLAYER_10_BASE (0x4B5D01F8)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHLAYER_11_BASE (0x4B5D0200)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHLAYER_12_BASE (0x4B5D0400)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHLAYER_13_BASE (0x4B5E0000)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHLAYER_14_BASE (0x4B5E0018)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHLAYER_15_BASE (0x4B5E0050)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHLAYER_16_BASE (0x4B5E0088)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHLAYER_17_BASE (0x4B5E00C0)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHLAYER_18_BASE (0x4B5E00F8)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHLAYER_19_BASE (0x4B5E0130)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHLAYER_1_BASE (0x4B5D0018)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHLAYER_20_BASE (0x4B5E0168)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHLAYER_21_BASE (0x4B5E01A0)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHLAYER_22_BASE (0x4B5E01D8)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHLAYER_23_BASE (0x4B5E01F8)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHLAYER_24_BASE (0x4B5E0200)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHLAYER_25_BASE (0x4B5E0400)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHLAYER_2_BASE (0x4B5D0050)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHLAYER_3_BASE (0x4B5D0088)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHLAYER_4_BASE (0x4B5D00C0)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHLAYER_5_BASE (0x4B5D00F8)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHLAYER_6_BASE (0x4B5D0130)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHLAYER_7_BASE (0x4B5D0168)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHLAYER_8_BASE (0x4B5D01A0)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHLAYER_9_BASE (0x4B5D01D8)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHLAYER_BASE (0x4B5D0000)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHROT_fetchrot_10_BASE (0x4B484000)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHROT_fetchrot_1_BASE (0x4B480020)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHROT_fetchrot_2_BASE (0x4B480058)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHROT_fetchrot_3_BASE (0x4B4800A0)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHROT_fetchrot_4_BASE (0x4B4800B0)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHROT_fetchrot_5_BASE (0x4B480100)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHROT_fetchrot_6_BASE (0x4B480200)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHROT_fetchrot_7_BASE (0x4B480400)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHROT_fetchrot_8_BASE (0x4B480600)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHROT_fetchrot_9_BASE (0x4B482000)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHROT_fetchrot_BASE (0x4B480000)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHYUV_10_BASE (0x4B620000)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHYUV_11_BASE (0x4B620028)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHYUV_12_BASE (0x4B620060)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHYUV_13_BASE (0x4B620078)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHYUV_14_BASE (0x4B620088)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHYUV_15_BASE (0x4B640000)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHYUV_16_BASE (0x4B640028)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHYUV_17_BASE (0x4B640060)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHYUV_18_BASE (0x4B640078)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHYUV_19_BASE (0x4B640088)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHYUV_1_BASE (0x4B5F0028)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHYUV_2_BASE (0x4B5F0060)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHYUV_3_BASE (0x4B5F0078)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHYUV_4_BASE (0x4B5F0088)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHYUV_5_BASE (0x4B600000)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHYUV_6_BASE (0x4B600028)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHYUV_7_BASE (0x4B600060)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHYUV_8_BASE (0x4B600078)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHYUV_9_BASE (0x4B600088)
|
||||
#define IMX9_DISPLAY__SEERIS__FETCHYUV_BASE (0x4B5F0000)
|
||||
#define IMX9_DISPLAY__SEERIS__FILTER_BASE (0x4B4D0000)
|
||||
#define IMX9_DISPLAY__SEERIS__FRAMEGEN_1_BASE (0x4B730000)
|
||||
#define IMX9_DISPLAY__SEERIS__FRAMEGEN_BASE (0x4B6B0000)
|
||||
#define IMX9_DISPLAY__SEERIS__HSCALER_1_BASE (0x4B670000)
|
||||
#define IMX9_DISPLAY__SEERIS__HSCALER_BASE (0x4B4B0000)
|
||||
#define IMX9_DISPLAY__SEERIS__IDHASH_1_BASE (0x4B6C1000)
|
||||
#define IMX9_DISPLAY__SEERIS__IDHASH_BASE (0x4B6C0000)
|
||||
#define IMX9_DISPLAY__SEERIS__LAYERBLEND_1_BASE (0x4B580000)
|
||||
#define IMX9_DISPLAY__SEERIS__LAYERBLEND_2_BASE (0x4B590000)
|
||||
#define IMX9_DISPLAY__SEERIS__LAYERBLEND_3_BASE (0x4B5A0000)
|
||||
#define IMX9_DISPLAY__SEERIS__LAYERBLEND_4_BASE (0x4B5B0000)
|
||||
#define IMX9_DISPLAY__SEERIS__LAYERBLEND_5_BASE (0x4B5C0000)
|
||||
#define IMX9_DISPLAY__SEERIS__LAYERBLEND_BASE (0x4B570000)
|
||||
#define IMX9_DISPLAY__SEERIS__LUT3D_1_BASE (0x4B702000)
|
||||
#define IMX9_DISPLAY__SEERIS__LUT3D_2_BASE (0x4B750000)
|
||||
#define IMX9_DISPLAY__SEERIS__LUT3D_3_BASE (0x4B752000)
|
||||
#define IMX9_DISPLAY__SEERIS__LUT3D_BASE (0x4B700000)
|
||||
#define IMX9_DISPLAY__SEERIS__MATRIX_1_BASE (0x4B660000)
|
||||
#define IMX9_DISPLAY__SEERIS__MATRIX_BASE (0x4B460000)
|
||||
#define IMX9_DISPLAY__SEERIS__MATRIXL_1_BASE (0x4B6F0030)
|
||||
#define IMX9_DISPLAY__SEERIS__MATRIXL_2_BASE (0x4B760000)
|
||||
#define IMX9_DISPLAY__SEERIS__MATRIXL_3_BASE (0x4B760030)
|
||||
#define IMX9_DISPLAY__SEERIS__MATRIXL_BASE (0x4B6F0000)
|
||||
#define IMX9_DISPLAY__SEERIS__ROP_BASE (0x4B440000)
|
||||
#define IMX9_DISPLAY__SEERIS__SEERIS_MDR5_BLITBLEND9CFG_BASE (0x4B471000)
|
||||
#define IMX9_DISPLAY__SEERIS__SEERIS_MDR5_CLUT9CFG_BASE (0x4B451000)
|
||||
#define IMX9_DISPLAY__SEERIS__SEERIS_MDR5_CMDSEQMASK_BASE (0x4B403000)
|
||||
#define IMX9_DISPLAY__SEERIS__SEERIS_MDR5_CONSTFRAME0CFG_BASE (0x4B4F1000)
|
||||
#define IMX9_DISPLAY__SEERIS__SEERIS_MDR5_CONSTFRAME1CFG_BASE (0x4B531000)
|
||||
#define IMX9_DISPLAY__SEERIS__SEERIS_MDR5_CONSTFRAME4CFG_BASE (0x4B501000)
|
||||
#define IMX9_DISPLAY__SEERIS__SEERIS_MDR5_CONSTFRAME5CFG_BASE (0x4B541000)
|
||||
#define IMX9_DISPLAY__SEERIS__SEERIS_MDR5_DITHER0CFG_BASE (0x4B711000)
|
||||
#define IMX9_DISPLAY__SEERIS__SEERIS_MDR5_DITHER1CFG_BASE (0x4B771020)
|
||||
#define IMX9_DISPLAY__SEERIS__SEERIS_MDR5_DOMAINMASK_BASE (0x4B402000)
|
||||
#define IMX9_DISPLAY__SEERIS__SEERIS_MDR5_EXTDST0CFG_BASE (0x4B511000)
|
||||
#define IMX9_DISPLAY__SEERIS__SEERIS_MDR5_EXTDST1CFG_BASE (0x4B551000)
|
||||
#define IMX9_DISPLAY__SEERIS__SEERIS_MDR5_EXTDST4CFG_BASE (0x4B521000)
|
||||
#define IMX9_DISPLAY__SEERIS__SEERIS_MDR5_EXTDST5CFG_BASE (0x4B561000)
|
||||
#define IMX9_DISPLAY__SEERIS__SEERIS_MDR5_FETCHDECODE9CFG_BASE (0x4B491000)
|
||||
#define IMX9_DISPLAY__SEERIS__SEERIS_MDR5_FETCHECO0CFG_BASE (0x4B611000)
|
||||
#define IMX9_DISPLAY__SEERIS__SEERIS_MDR5_FETCHECO1CFG_BASE (0x4B631000)
|
||||
#define IMX9_DISPLAY__SEERIS__SEERIS_MDR5_FETCHECO2CFG_BASE (0x4B651000)
|
||||
#define IMX9_DISPLAY__SEERIS__SEERIS_MDR5_FETCHECO9CFG_BASE (0x4B4A1000)
|
||||
#define IMX9_DISPLAY__SEERIS__SEERIS_MDR5_FETCHLAYER0CFG_BASE (0x4B5D1000)
|
||||
#define IMX9_DISPLAY__SEERIS__SEERIS_MDR5_FETCHLAYER1CFG_BASE (0x4B5E1000)
|
||||
#define IMX9_DISPLAY__SEERIS__SEERIS_MDR5_FETCHROT9CFG_BASE (0x4B486000)
|
||||
#define IMX9_DISPLAY__SEERIS__SEERIS_MDR5_FETCHYUV0CFG_BASE (0x4B601000)
|
||||
#define IMX9_DISPLAY__SEERIS__SEERIS_MDR5_FETCHYUV1CFG_BASE (0x4B621000)
|
||||
#define IMX9_DISPLAY__SEERIS__SEERIS_MDR5_FETCHYUV2CFG_BASE (0x4B641000)
|
||||
#define IMX9_DISPLAY__SEERIS__SEERIS_MDR5_FETCHYUV3CFG_BASE (0x4B5F1000)
|
||||
#define IMX9_DISPLAY__SEERIS__SEERIS_MDR5_FILTER9CFG_BASE (0x4B4D1000)
|
||||
#define IMX9_DISPLAY__SEERIS__SEERIS_MDR5_GENERALPURPOSE_BASE (0x4B412000)
|
||||
#define IMX9_DISPLAY__SEERIS__SEERIS_MDR5_HSCALER4CFG_BASE (0x4B671000)
|
||||
#define IMX9_DISPLAY__SEERIS__SEERIS_MDR5_HSCALER9CFG_BASE (0x4B4B1000)
|
||||
#define IMX9_DISPLAY__SEERIS__SEERIS_MDR5_IDHASH0CFG_BASE (0x4B6C3000)
|
||||
#define IMX9_DISPLAY__SEERIS__SEERIS_MDR5_IRQ_1_BASE (0x4B411000)
|
||||
#define IMX9_DISPLAY__SEERIS__SEERIS_MDR5_IRQ_2_BASE (0x4B431000)
|
||||
#define IMX9_DISPLAY__SEERIS__SEERIS_MDR5_IRQ_3_BASE (0x4B781000)
|
||||
#define IMX9_DISPLAY__SEERIS__SEERIS_MDR5_IRQ_4_BASE (0x4B791000)
|
||||
#define IMX9_DISPLAY__SEERIS__SEERIS_MDR5_IRQ_5_BASE (0x4B7A1000)
|
||||
#define IMX9_DISPLAY__SEERIS__SEERIS_MDR5_IRQ_6_BASE (0x4B7B1000)
|
||||
#define IMX9_DISPLAY__SEERIS__SEERIS_MDR5_IRQ_BASE (0x4B401000)
|
||||
#define IMX9_DISPLAY__SEERIS__SEERIS_MDR5_LAYERBLEND1CFG_BASE (0x4B571000)
|
||||
#define IMX9_DISPLAY__SEERIS__SEERIS_MDR5_LAYERBLEND2CFG_BASE (0x4B581000)
|
||||
#define IMX9_DISPLAY__SEERIS__SEERIS_MDR5_LAYERBLEND3CFG_BASE (0x4B591000)
|
||||
#define IMX9_DISPLAY__SEERIS__SEERIS_MDR5_LAYERBLEND4CFG_BASE (0x4B5A1000)
|
||||
#define IMX9_DISPLAY__SEERIS__SEERIS_MDR5_LAYERBLEND5CFG_BASE (0x4B5B1000)
|
||||
#define IMX9_DISPLAY__SEERIS__SEERIS_MDR5_LAYERBLEND6CFG_BASE (0x4B5C1000)
|
||||
#define IMX9_DISPLAY__SEERIS__SEERIS_MDR5_MATRIX4CFG_BASE (0x4B661000)
|
||||
#define IMX9_DISPLAY__SEERIS__SEERIS_MDR5_MATRIX9CFG_BASE (0x4B461000)
|
||||
#define IMX9_DISPLAY__SEERIS__SEERIS_MDR5_ROP9CFG_BASE (0x4B441000)
|
||||
#define IMX9_DISPLAY__SEERIS__SEERIS_MDR5_SIG0CFG_BASE (0x4B6D1000)
|
||||
#define IMX9_DISPLAY__SEERIS__SEERIS_MDR5_SIG1CFG_BASE (0x4B741020)
|
||||
#define IMX9_DISPLAY__SEERIS__SEERIS_MDR5_SIG2CFG_BASE (0x4B6E1000)
|
||||
#define IMX9_DISPLAY__SEERIS__SEERIS_MDR5_STORE9CFG_BASE (0x4B4E1000)
|
||||
#define IMX9_DISPLAY__SEERIS__SEERIS_MDR5_VSCALER4CFG_BASE (0x4B681000)
|
||||
#define IMX9_DISPLAY__SEERIS__SEERIS_MDR5_VSCALER9CFG_BASE (0x4B4C1000)
|
||||
#define IMX9_DISPLAY__SEERIS__SEERIS_MDR5_XPC_BASE (0x4B420000)
|
||||
#define IMX9_DISPLAY__SEERIS__SIG_1_BASE (0x4B6D0400)
|
||||
#define IMX9_DISPLAY__SEERIS__SIG_2_BASE (0x4B6E0000)
|
||||
#define IMX9_DISPLAY__SEERIS__SIG_3_BASE (0x4B6E0400)
|
||||
#define IMX9_DISPLAY__SEERIS__SIG_4_BASE (0x4B740000)
|
||||
#define IMX9_DISPLAY__SEERIS__SIG_5_BASE (0x4B740400)
|
||||
#define IMX9_DISPLAY__SEERIS__SIG_BASE (0x4B6D0000)
|
||||
#define IMX9_DISPLAY__SEERIS__STORE_PLANAR_1_BASE (0x4B4E0038)
|
||||
#define IMX9_DISPLAY__SEERIS__STORE_PLANAR_2_BASE (0x4B4E0048)
|
||||
#define IMX9_DISPLAY__SEERIS__STORE_PLANAR_3_BASE (0x4B4E0070)
|
||||
#define IMX9_DISPLAY__SEERIS__STORE_PLANAR_BASE (0x4B4E0000)
|
||||
#define IMX9_DISPLAY__SEERIS__VSCALER_1_BASE (0x4B680000)
|
||||
#define IMX9_DISPLAY__SEERIS__VSCALER_BASE (0x4B4C0000)
|
||||
#define IMX9_DISPLAY__TCU_BASE (0x4B000000)
|
||||
#define IMX9_DMA3_BASE (0x44000000)
|
||||
#define IMX9_DPU_IRQSTEER_BASE (0x4B0B0000)
|
||||
#define IMX9_EDMA5_2_BASE (0x42000000)
|
||||
#define IMX9_EDMA5_3_BASE (0x42210000)
|
||||
#define IMX9_EDMA5_4_BASE (0x4AE10000)
|
||||
#define IMX9_EMDIO0_PCI_HDR_TYPE0_BASE (0x4CB00000)
|
||||
#define IMX9_EMDIO_BASE_BASE (0x4CCE0000)
|
||||
#define IMX9_EMDIO_GLOBAL_BASE (0x4CCF0000)
|
||||
#define IMX9_ENETC0_BASE_BASE (0x4CC10000)
|
||||
#define IMX9_ENETC0_COMMON_BASE (0x4CC11000)
|
||||
#define IMX9_ENETC0_ETH_MAC_PORT_BASE (0x4CC15000)
|
||||
#define IMX9_ENETC0_GLOBAL_BASE (0x4CC20000)
|
||||
#define IMX9_ENETC0_PCI_HDR_TYPE0_BASE (0x4CA00000)
|
||||
#define IMX9_ENETC0_PORT_BASE (0x4CC14000)
|
||||
#define IMX9_ENETC0_PSI_BASE (0x4CC00000)
|
||||
#define IMX9_ENETC1_BASE_BASE (0x4CC50000)
|
||||
#define IMX9_ENETC1_COMMON_BASE (0x4CC51000)
|
||||
#define IMX9_ENETC1_ETH_MAC_PORT_BASE (0x4CC55000)
|
||||
#define IMX9_ENETC1_GLOBAL_BASE (0x4CC60000)
|
||||
#define IMX9_ENETC1_PCI_HDR_TYPE0_BASE (0x4CA40000)
|
||||
#define IMX9_ENETC1_PORT_BASE (0x4CC54000)
|
||||
#define IMX9_ENETC1_PSI_BASE (0x4CC40000)
|
||||
#define IMX9_ENETC2_BASE_BASE (0x4CC90000)
|
||||
#define IMX9_ENETC2_COMMON_BASE (0x4CC91000)
|
||||
#define IMX9_ENETC2_ETH_MAC_PORT_BASE (0x4CC95000)
|
||||
#define IMX9_ENETC2_GLOBAL_BASE (0x4CCA0000)
|
||||
#define IMX9_ENETC2_PCI_HDR_TYPE0_BASE (0x4CA80000)
|
||||
#define IMX9_ENETC2_PORT_BASE (0x4CC94000)
|
||||
#define IMX9_ENETC2_PSI_BASE (0x4CC80000)
|
||||
#define IMX9_ENETC_VSI0_BASE (0x4CD20000)
|
||||
#define IMX9_ENETC_VSI1_BASE (0x4CD30000)
|
||||
#define IMX9_ENETC_VSI2_BASE (0x4CD40000)
|
||||
#define IMX9_ENETC_VSI3_BASE (0x4CD50000)
|
||||
#define IMX9_ENETC_VSI4_BASE (0x4CD60000)
|
||||
#define IMX9_ENETC_VSI5_BASE (0x4CD70000)
|
||||
#define IMX9_ENET_PHY_MAC_ADAPTER_BASE (0x3E0000)
|
||||
#define IMX9_ENET_PHY_PMA_MMD_BASE (0x20000)
|
||||
#define IMX9_ENET_PHY_VS_MII_MMD_BASE (0x3E0000)
|
||||
#define IMX9_ENET_PHY_VS_MMD1_BASE (0x3C0000)
|
||||
#define IMX9_ENET_PHY_XS_PCS_MMD_BASE (0x60000)
|
||||
#define IMX9_FLEXIO1_BASE (0x425C0000)
|
||||
#define IMX9_FLEXIO2_BASE (0x425D0000)
|
||||
#define IMX9_FLEXSPI_BASE (0x425E0000)
|
||||
#define IMX9_GPC_CTRL_CA55_0_BASE (0x44471000)
|
||||
#define IMX9_GPC_CTRL_CA55_1_BASE (0x44471800)
|
||||
#define IMX9_GPC_CTRL_CA55_2_BASE (0x44472000)
|
||||
#define IMX9_GPC_CTRL_CA55_3_BASE (0x44472800)
|
||||
#define IMX9_GPC_CTRL_CA55_4_BASE (0x44473000)
|
||||
#define IMX9_GPC_CTRL_CA55_5_BASE (0x44473800)
|
||||
#define IMX9_GPC_CTRL_CA55_CLUSTER_BASE (0x44474000)
|
||||
#define IMX9_GPC_CTRL_CM33_BASE (0x44470000)
|
||||
#define IMX9_GPC_CTRL_CM7_BASE (0x44470800)
|
||||
#define IMX9_GPIO1_BASE (0x47400000)
|
||||
#define IMX9_GPIO2_BASE (0x43810000)
|
||||
#define IMX9_GPIO3_BASE (0x43820000)
|
||||
#define IMX9_GPIO4_BASE (0x43840000)
|
||||
#define IMX9_GPIO5_BASE (0x43850000)
|
||||
#define IMX9_GPU__BLK_CTRL_GPUMIX_BASE (0x4D810000)
|
||||
#define IMX9_GPU__REG__GPU_MALI_DOORBELLS_BASE (0x4D980000)
|
||||
#define IMX9_GPU__REG__GPU_MALI_GPU_REGISTERS_BASE (0x4D900000)
|
||||
#define IMX9_GPU__REG__GPU_MALI_IPA_CONTROL_BASE (0x4D940000)
|
||||
#define IMX9_GPU__REG__GPU_MALI_USER_BASE (0x4D910000)
|
||||
#define IMX9_GPU__TCU_BASE (0x4D800000)
|
||||
#define IMX9_HSIO__BLK_CTRL_HSIOMIX_BASE (0x4C010000)
|
||||
#define IMX9_HSIO__GHZ_LN_PLL_BASE (0x44481800)
|
||||
#define IMX9_HSIO__GPV__SSI_AXI_SLAVE_RD_OBSERVER_SSI_MASTER_ERROR_MAIN_ERRORLOGGER_0_BASE (0x980C0000)
|
||||
#define IMX9_HSIO__GPV__SSI_AXI_SLAVE_RD_PCIE1_AXI_SLAVE_RD_I_MAIN_TRANSACTIONSTATFILTER_BASE (0x980C0480)
|
||||
#define IMX9_HSIO__GPV__SSI_AXI_SLAVE_RD_PCIE1_AXI_SLAVE_WR_I_MAIN_TRANSACTIONSTATFILTER_BASE (0x980C0400)
|
||||
#define IMX9_HSIO__GPV__SSI_AXI_SLAVE_RD_PCIE2_AXI_SLAVE_RD_I_MAIN_TRANSACTIONSTATFILTER_BASE (0x980C0380)
|
||||
#define IMX9_HSIO__GPV__SSI_AXI_SLAVE_RD_PCIE2_AXI_SLAVE_WR_I_MAIN_TRANSACTIONSTATFILTER_BASE (0x980C0300)
|
||||
#define IMX9_HSIO__GPV__SSI_AXI_SLAVE_RD_PROBE_TRANSACTION_MAIN_PROBE_BASE (0x980C0800)
|
||||
#define IMX9_HSIO__GPV__SSI_AXI_SLAVE_RD_PROBE_TRANSACTION_MAIN_TRANSACTIONSTATPROFILER_BASE (0x980C0280)
|
||||
#define IMX9_HSIO__GPV__SSI_AXI_SLAVE_RD_USB1_AXI_SLAVE_RD_I_MAIN_TRANSACTIONSTATFILTER_BASE (0x980C0200)
|
||||
#define IMX9_HSIO__GPV__SSI_AXI_SLAVE_RD_USB1_AXI_SLAVE_WR_I_MAIN_TRANSACTIONSTATFILTER_BASE (0x980C0180)
|
||||
#define IMX9_HSIO__GPV__SSI_AXI_SLAVE_RD_USB2_AXI_SLAVE_RD_I_MAIN_TRANSACTIONSTATFILTER_BASE (0x980C0100)
|
||||
#define IMX9_HSIO__GPV__SSI_AXI_SLAVE_RD_USB2_AXI_SLAVE_WR_I_MAIN_TRANSACTIONSTATFILTER_BASE (0x980C0080)
|
||||
#define IMX9_HSIO__PCIE1__PCIE_DMA_IATU_BASE (0x4C360000)
|
||||
#define IMX9_HSIO__PCIE1__PCIE_EP_BASE (0x4C300000)
|
||||
#define IMX9_HSIO__PCIE1__PCIE_RC_BASE (0x4C300000)
|
||||
#define IMX9_HSIO__PCIE1__PCIE_SHADOW_EP_BASE (0x4C320000)
|
||||
#define IMX9_HSIO__PCIE1__SERDES_SS_BASE (0x4C340000)
|
||||
#define IMX9_HSIO__PCIE2__PCIE_DMA_IATU_BASE (0x4C3E0000)
|
||||
#define IMX9_HSIO__PCIE2__PCIE_EP_BASE (0x4C380000)
|
||||
#define IMX9_HSIO__PCIE2__PCIE_RC_BASE (0x4C380000)
|
||||
#define IMX9_HSIO__PCIE2__PCIE_SHADOW_EP_BASE (0x4C3A0000)
|
||||
#define IMX9_HSIO__PCIE2__SERDES_SS_BASE (0x4C3C0000)
|
||||
#define IMX9_HSIO__TCU_BASE (0x4C000000)
|
||||
#define IMX9_HSIO__USB_3_01__GLUE_BASE (0x4C1F0000)
|
||||
#define IMX9_HSIO__USB_3_01__USB3_BASE (0x4C100000)
|
||||
#define IMX9_HSIO__USB_3_0_PHY__TCA_BASE (0x4C1FC000)
|
||||
#define IMX9_I3C1_BASE (0x44330000)
|
||||
#define IMX9_I3C2_BASE (0x42520000)
|
||||
#define IMX9_IOMUXC_BASE (0x443C0000)
|
||||
#define IMX9_IRQSTEER_BASE (0x44680000)
|
||||
#define IMX9_LPI2C1_BASE (0x44340000)
|
||||
#define IMX9_LPI2C2_BASE (0x44350000)
|
||||
#define IMX9_LPI2C3_BASE (0x42530000)
|
||||
#define IMX9_LPI2C4_BASE (0x42540000)
|
||||
#define IMX9_LPI2C5_BASE (0x426B0000)
|
||||
#define IMX9_LPI2C6_BASE (0x426C0000)
|
||||
#define IMX9_LPI2C7_BASE (0x426D0000)
|
||||
#define IMX9_LPI2C8_BASE (0x426E0000)
|
||||
#define IMX9_LPIT1_BASE (0x442F0000)
|
||||
#define IMX9_LPIT2_BASE (0x424C0000)
|
||||
#define IMX9_LPSPI1_BASE (0x44360000)
|
||||
#define IMX9_LPSPI2_BASE (0x44370000)
|
||||
#define IMX9_LPSPI3_BASE (0x42550000)
|
||||
#define IMX9_LPSPI4_BASE (0x42560000)
|
||||
#define IMX9_LPSPI5_BASE (0x426F0000)
|
||||
#define IMX9_LPSPI6_BASE (0x42700000)
|
||||
#define IMX9_LPSPI7_BASE (0x42710000)
|
||||
#define IMX9_LPSPI8_BASE (0x42720000)
|
||||
#define IMX9_LPTMR1_BASE (0x44300000)
|
||||
#define IMX9_LPTMR2_BASE (0x424D0000)
|
||||
#define IMX9_LPUART1_BASE (0x44380000)
|
||||
#define IMX9_LPUART2_BASE (0x44390000)
|
||||
#define IMX9_LPUART3_BASE (0x42570000)
|
||||
#define IMX9_LPUART4_BASE (0x42580000)
|
||||
#define IMX9_LPUART5_BASE (0x42590000)
|
||||
#define IMX9_LPUART6_BASE (0x425A0000)
|
||||
#define IMX9_LPUART7_BASE (0x42690000)
|
||||
#define IMX9_LPUART8_BASE (0x426A0000)
|
||||
#define IMX9_LVDS_BASE (0x4B0C0000)
|
||||
#define IMX9_M33_CACHE_CTRLPC_BASE (0x44400000)
|
||||
#define IMX9_M33_CACHE_CTRLPS_BASE (0x44400800)
|
||||
#define IMX9_M7__A7_APB_MCM1_BASE (0x4A0A0000)
|
||||
#define IMX9_M7__CMU_M0_BASE (0x4A080000)
|
||||
#define IMX9_M7__CMU_M1_BASE (0x4A090000)
|
||||
#define IMX9_M7__EIM_BASE (0x4A060000)
|
||||
#define IMX9_M7__ERM_BASE (0x4A070000)
|
||||
#define IMX9_M7__LSTCU_M7MIX_BASE (0x4A050000)
|
||||
#define IMX9_M7__TCU_BASE (0x4A000000)
|
||||
#define IMX9_MIPI_CSI2_BASE (0x4AD30000)
|
||||
#define IMX9_MIPI_DSI_BASE (0x4ACF0000)
|
||||
#define IMX9_MSGINTR1_BASE (0x44690000)
|
||||
#define IMX9_MSGINTR2_BASE (0x446A0000)
|
||||
#define IMX9_MU5_MUA_BASE (0x44610000)
|
||||
#define IMX9_MU7_MUB_BASE (0x42440000)
|
||||
#define IMX9_MU8_MUB_BASE (0x42740000)
|
||||
#define IMX9_NETC__IEPRC_1__IEPRC_B0_EC_F0_PCI_HDR_TYPE0_BASE (0x4CA08000)
|
||||
#define IMX9_NETC__IEPRC_1__IEPRC_B1_EC_F0_PCI_HDR_TYPE0_BASE (0x4CB08000)
|
||||
#define IMX9_NETC__IEPRC_1__IEPRC_IERB_BASE (0x4C8A0000)
|
||||
#define IMX9_NETC__IEPRC_1__IEPRC_PRB_BASE (0x4C8B0000)
|
||||
#define IMX9_NETC_IERB_BASE (0x4CDE0000)
|
||||
#define IMX9_NETC_PRIV_BASE (0x4CDF0000)
|
||||
#define IMX9_NETC__TCU_BASE (0x4C800000)
|
||||
#define IMX9_NETC_VF1_PCI_HDR_TYPE0_BASE (0x4CA10000)
|
||||
#define IMX9_NETC_VF2_PCI_HDR_TYPE0_BASE (0x4CA20000)
|
||||
#define IMX9_NETC_VF3_PCI_HDR_TYPE0_BASE (0x4CA50000)
|
||||
#define IMX9_NETC_VF4_PCI_HDR_TYPE0_BASE (0x4CA60000)
|
||||
#define IMX9_NETC_VF5_PCI_HDR_TYPE0_BASE (0x4CA90000)
|
||||
#define IMX9_NETC_VF6_PCI_HDR_TYPE0_BASE (0x4CAA0000)
|
||||
#define IMX9_NOC__BLK_CTRL_NOCMIX_BASE (0x49000000)
|
||||
#define IMX9_NOC__CMU_N0_BASE (0x49070000)
|
||||
#define IMX9_NOC__CMU_N1_BASE (0x49080000)
|
||||
#define IMX9_NOC__EIMN_BASE (0x49270000)
|
||||
#define IMX9_NOC__GIC__GICA_BASE (0x48010000)
|
||||
#define IMX9_NOC__GIC__GICDA_BASE (0x48120000)
|
||||
#define IMX9_NOC__GIC__GICD_BASE (0x48000000)
|
||||
#define IMX9_NOC__GIC__GICP_BASE (0x48030000)
|
||||
#define IMX9_NOC__GIC__GICRLPI0_BASE (0x48060000)
|
||||
#define IMX9_NOC__GIC__GICRLPI1_BASE (0x48080000)
|
||||
#define IMX9_NOC__GIC__GICRLPI2_BASE (0x480A0000)
|
||||
#define IMX9_NOC__GIC__GICRLPI3_BASE (0x480C0000)
|
||||
#define IMX9_NOC__GIC__GICRLPI4_BASE (0x480E0000)
|
||||
#define IMX9_NOC__GIC__GICRLPI5_BASE (0x48100000)
|
||||
#define IMX9_NOC__GIC__GICRSGI0_BASE (0x48070000)
|
||||
#define IMX9_NOC__GIC__GICRSGI1_BASE (0x48090000)
|
||||
#define IMX9_NOC__GIC__GICRSGI2_BASE (0x480B0000)
|
||||
#define IMX9_NOC__GIC__GICRSGI3_BASE (0x480D0000)
|
||||
#define IMX9_NOC__GIC__GICRSGI4_BASE (0x480F0000)
|
||||
#define IMX9_NOC__GIC__GICRSGI5_BASE (0x48110000)
|
||||
#define IMX9_NOC__GIC__GICT_BASE (0x48020000)
|
||||
#define IMX9_NOC__GIC__GITS0_BASE (0x48040000)
|
||||
#define IMX9_NOC__GIC__GITS0TRANSLATER_BASE (0x48050000)
|
||||
#define IMX9_NOC__GPV__ALWAYS_ON_MAIN_RESILIENCEFAULTCONTROLLER_BASE (0x49063080)
|
||||
#define IMX9_NOC__GPV__M_E_0_RD_I_MAIN_QOSGENERATOR_BASE (0x49062400)
|
||||
#define IMX9_NOC__GPV__M_E_0_RD_I_MAIN_TRANSACTIONSTATFILTER_BASE (0x49063100)
|
||||
#define IMX9_NOC__GPV__M_E_0_WR_I_MAIN_QOSGENERATOR_BASE (0x49062480)
|
||||
#define IMX9_NOC__GPV__M_E_0_WR_I_MAIN_TRANSACTIONSTATFILTER_BASE (0x49063180)
|
||||
#define IMX9_NOC__GPV__M_E_10_RD_I_MAIN_QOSGENERATOR_BASE (0x49062E80)
|
||||
#define IMX9_NOC__GPV__M_E_10_RD_I_MAIN_TRANSACTIONSTATFILTER_BASE (0x49063780)
|
||||
#define IMX9_NOC__GPV__M_E_10_WR_I_MAIN_QOSGENERATOR_BASE (0x49062F00)
|
||||
#define IMX9_NOC__GPV__M_E_10_WR_I_MAIN_TRANSACTIONSTATFILTER_BASE (0x49063800)
|
||||
#define IMX9_NOC__GPV__M_E_11_RD_I_MAIN_QOSGENERATOR_BASE (0x49062F80)
|
||||
#define IMX9_NOC__GPV__M_E_11_RD_I_MAIN_TRANSACTIONSTATFILTER_BASE (0x49063880)
|
||||
#define IMX9_NOC__GPV__M_E_11_WR_I_MAIN_QOSGENERATOR_BASE (0x49063000)
|
||||
#define IMX9_NOC__GPV__M_E_11_WR_I_MAIN_TRANSACTIONSTATFILTER_BASE (0x49063900)
|
||||
#define IMX9_NOC__GPV__M_E_1A_RD_I_MAIN_QOSGENERATOR_BASE (0x49062500)
|
||||
#define IMX9_NOC__GPV__M_E_1A_WR_I_MAIN_QOSGENERATOR_BASE (0x49062580)
|
||||
#define IMX9_NOC__GPV__M_E_1B_RD_I_MAIN_QOSGENERATOR_BASE (0x49062600)
|
||||
#define IMX9_NOC__GPV__M_E_1B_WR_I_MAIN_QOSGENERATOR_BASE (0x49062680)
|
||||
#define IMX9_NOC__GPV__M_E_3_RD_I_MAIN_QOSGENERATOR_BASE (0x49062800)
|
||||
#define IMX9_NOC__GPV__M_E_3_RD_I_MAIN_TRANSACTIONSTATFILTER_BASE (0x49063200)
|
||||
#define IMX9_NOC__GPV__M_E_3_WR_I_MAIN_QOSGENERATOR_BASE (0x49062880)
|
||||
#define IMX9_NOC__GPV__M_E_3_WR_I_MAIN_TRANSACTIONSTATFILTER_BASE (0x49063280)
|
||||
#define IMX9_NOC__GPV__M_E_4_RD_I_MAIN_QOSGENERATOR_BASE (0x49062900)
|
||||
#define IMX9_NOC__GPV__M_E_4_RD_I_MAIN_TRANSACTIONSTATFILTER_BASE (0x49063300)
|
||||
#define IMX9_NOC__GPV__M_E_4_WR_I_MAIN_QOSGENERATOR_BASE (0x49062980)
|
||||
#define IMX9_NOC__GPV__M_E_4_WR_I_MAIN_TRANSACTIONSTATFILTER_BASE (0x49063380)
|
||||
#define IMX9_NOC__GPV__M_E_5_RD_I_MAIN_QOSGENERATOR_BASE (0x49062A00)
|
||||
#define IMX9_NOC__GPV__M_E_5_RD_I_MAIN_TRANSACTIONSTATFILTER_BASE (0x49063400)
|
||||
#define IMX9_NOC__GPV__M_E_5_WR_I_MAIN_QOSGENERATOR_BASE (0x49062A80)
|
||||
#define IMX9_NOC__GPV__M_E_5_WR_I_MAIN_TRANSACTIONSTATFILTER_BASE (0x49063480)
|
||||
#define IMX9_NOC__GPV__M_E_6_RD_I_MAIN_QOSGENERATOR_BASE (0x49062B00)
|
||||
#define IMX9_NOC__GPV__M_E_6_RD_I_MAIN_TRANSACTIONSTATFILTER_BASE (0x49063500)
|
||||
#define IMX9_NOC__GPV__M_E_7_RD_I_MAIN_QOSGENERATOR_BASE (0x49062B80)
|
||||
#define IMX9_NOC__GPV__M_E_7_RD_I_MAIN_TRANSACTIONSTATFILTER_BASE (0x49063580)
|
||||
#define IMX9_NOC__GPV__M_E_7_WR_I_MAIN_QOSGENERATOR_BASE (0x49062C00)
|
||||
#define IMX9_NOC__GPV__M_E_7_WR_I_MAIN_TRANSACTIONSTATFILTER_BASE (0x49063600)
|
||||
#define IMX9_NOC__GPV__M_E_8_RD_I_MAIN_QOSGENERATOR_BASE (0x49062C80)
|
||||
#define IMX9_NOC__GPV__M_E_8_WR_I_MAIN_QOSGENERATOR_BASE (0x49062D00)
|
||||
#define IMX9_NOC__GPV__M_E_9_RD_I_MAIN_QOSGENERATOR_BASE (0x49062D80)
|
||||
#define IMX9_NOC__GPV__M_E_9_RD_I_MAIN_TRANSACTIONSTATFILTER_BASE (0x49063680)
|
||||
#define IMX9_NOC__GPV__M_E_9_WR_I_MAIN_QOSGENERATOR_BASE (0x49062E00)
|
||||
#define IMX9_NOC__GPV__M_E_9_WR_I_MAIN_TRANSACTIONSTATFILTER_BASE (0x49063700)
|
||||
#define IMX9_NOC__GPV__PROBE_M_E_0_MAIN_PROBE_BASE (0x49060000)
|
||||
#define IMX9_NOC__GPV__PROBE_M_E_0_MAIN_TRANSACTIONSTATPROFILER_BASE (0x49063980)
|
||||
#define IMX9_NOC__GPV__PROBE_M_E_10_MAIN_PROBE_BASE (0x49061C00)
|
||||
#define IMX9_NOC__GPV__PROBE_M_E_10_MAIN_TRANSACTIONSTATPROFILER_BASE (0x49063D00)
|
||||
#define IMX9_NOC__GPV__PROBE_M_E_11_MAIN_PROBE_BASE (0x49062000)
|
||||
#define IMX9_NOC__GPV__PROBE_M_E_11_MAIN_TRANSACTIONSTATPROFILER_BASE (0x49063D80)
|
||||
#define IMX9_NOC__GPV__PROBE_M_E_3_MAIN_PROBE_BASE (0x49060400)
|
||||
#define IMX9_NOC__GPV__PROBE_M_E_3_MAIN_TRANSACTIONSTATPROFILER_BASE (0x49063A00)
|
||||
#define IMX9_NOC__GPV__PROBE_M_E_4_MAIN_PROBE_BASE (0x49060800)
|
||||
#define IMX9_NOC__GPV__PROBE_M_E_4_MAIN_TRANSACTIONSTATPROFILER_BASE (0x49063A80)
|
||||
#define IMX9_NOC__GPV__PROBE_M_E_5_MAIN_PROBE_BASE (0x49060C00)
|
||||
#define IMX9_NOC__GPV__PROBE_M_E_5_MAIN_TRANSACTIONSTATPROFILER_BASE (0x49063B00)
|
||||
#define IMX9_NOC__GPV__PROBE_M_E_6_MAIN_PROBE_BASE (0x49061000)
|
||||
#define IMX9_NOC__GPV__PROBE_M_E_6_MAIN_TRANSACTIONSTATPROFILER_BASE (0x49063B80)
|
||||
#define IMX9_NOC__GPV__PROBE_M_E_7_MAIN_PROBE_BASE (0x49061400)
|
||||
#define IMX9_NOC__GPV__PROBE_M_E_7_MAIN_TRANSACTIONSTATPROFILER_BASE (0x49063C00)
|
||||
#define IMX9_NOC__GPV__PROBE_M_E_9_MAIN_PROBE_BASE (0x49061800)
|
||||
#define IMX9_NOC__GPV__PROBE_M_E_9_MAIN_TRANSACTIONSTATPROFILER_BASE (0x49063C80)
|
||||
#define IMX9_NOC__LSTCUN_BASE (0x490B0000)
|
||||
#define IMX9_NOC__MMU_TBU_TCU__TBU0_BASE (0x49110000)
|
||||
#define IMX9_NOC__MMU_TBU_TCU__TBU10_BASE (0x49230000)
|
||||
#define IMX9_NOC__MMU_TBU_TCU__TBU11_BASE (0x49250000)
|
||||
#define IMX9_NOC__MMU_TBU_TCU__TBU1_BASE (0x49130000)
|
||||
#define IMX9_NOC__MMU_TBU_TCU__TBU2_BASE (0x49150000)
|
||||
#define IMX9_NOC__MMU_TBU_TCU__TBU3_BASE (0x49170000)
|
||||
#define IMX9_NOC__MMU_TBU_TCU__TBU4_BASE (0x49190000)
|
||||
#define IMX9_NOC__MMU_TBU_TCU__TBU5_BASE (0x491B0000)
|
||||
#define IMX9_NOC__MMU_TBU_TCU__TBU6_BASE (0x491D0000)
|
||||
#define IMX9_NOC__MMU_TBU_TCU__TBU7_BASE (0x491F0000)
|
||||
#define IMX9_NOC__MMU_TBU_TCU__TBU9_BASE (0x49210000)
|
||||
#define IMX9_NOC__MMU_TBU_TCU__TCU_BASE (0x490D0000)
|
||||
#define IMX9_NOC__SRAMCTL_BASE (0x490A0000)
|
||||
#define IMX9_NOC__TCU_BASE (0x49040000)
|
||||
#define IMX9_NPU__EIM_NPUMIX_BASE (0x4A860000)
|
||||
#define IMX9_NPU__LSTCU_NPUMIX_BASE (0x4A850000)
|
||||
#define IMX9_NPU__NEUTRON_NPU__NEUTRON0__NEUTRON_BASE (0x4ABC0000)
|
||||
#define IMX9_NPU__NEUTRON_NPU__NEUTRON1__NEUTRON_BASE (0x4ABC1000)
|
||||
#define IMX9_NPU__NEUTRON_NPU__NEUTRON2__NEUTRON_BASE (0x4ABC2000)
|
||||
#define IMX9_NPU__NEUTRON_NPU__NEUTRON3__NEUTRON_BASE (0x4ABC3000)
|
||||
#define IMX9_NPU__NEUTRON_NPU__NEUTRON_GANGED__NEUTRON_BASE (0x4ABC4000)
|
||||
#define IMX9_NPU__NEUTRON_NPU__NEUTRON_S__MMR_SOC_BASE (0x4AB00000)
|
||||
#define IMX9_NPU__NEUTRON_NPU__NEUTRON_S__MMR_ZV_BASE (0x4AB80000)
|
||||
#define IMX9_NPU__TCU_BASE (0x4A800000)
|
||||
#define IMX9_PDM_BASE (0x44520000)
|
||||
#define IMX9_SAI1_BASE (0x443B0000)
|
||||
#define IMX9_SAI2_BASE (0x4C880000)
|
||||
#define IMX9_SAI3_BASE (0x42650000)
|
||||
#define IMX9_SAI4_BASE (0x42660000)
|
||||
#define IMX9_SAI5_BASE (0x42670000)
|
||||
#define IMX9_SEMA42_1_BASE (0x44260000)
|
||||
#define IMX9_SEMA42_2_BASE (0x42450000)
|
||||
#define IMX9_TMPSNS1_BASE (0x44482000)
|
||||
#define IMX9_TMPSNS2_BASE (0x4A440000)
|
||||
#define IMX9_TMR0_BASE_BASE (0x4CCC0000)
|
||||
#define IMX9_TMR0_GLOBAL_BASE (0x4CCD0000)
|
||||
#define IMX9_TMR0_PCI_HDR_TYPE0_BASE (0x4CAC0000)
|
||||
#define IMX9_TPM1_BASE (0x44310000)
|
||||
#define IMX9_TPM2_BASE (0x44320000)
|
||||
#define IMX9_TPM3_BASE (0x424E0000)
|
||||
#define IMX9_TPM4_BASE (0x424F0000)
|
||||
#define IMX9_TPM5_BASE (0x42500000)
|
||||
#define IMX9_TPM6_BASE (0x42510000)
|
||||
#define IMX9_TRDC1_BASE (0x44270000)
|
||||
#define IMX9_TSTMR1_BASE (0x442C0000)
|
||||
#define IMX9_TSTMR2_BASE (0x42480000)
|
||||
#define IMX9_USBC_BASE (0x4C200000)
|
||||
#define IMX9_USBNC_BASE (0x4C200200)
|
||||
#define IMX9_VPU__BLK_CTRL_VPUMIX_BASE (0x4C410000)
|
||||
#define IMX9_VPU__GPV__JPEG_DEC_PROBE_MAIN_PROBE_BASE (0x4C801000)
|
||||
#define IMX9_VPU__GPV__JPEG_DEC_PROBE_MAIN_TRANSACTIONSTATPROFILER_BASE (0x4C801580)
|
||||
#define IMX9_VPU__GPV__JPEG_DEC_RD_I_MAIN_TRANSACTIONSTATFILTER_BASE (0x4C801480)
|
||||
#define IMX9_VPU__GPV__JPEG_DEC_WR_I_MAIN_QOSGENERATOR_BASE (0x4C801400)
|
||||
#define IMX9_VPU__GPV__JPEG_DEC_WR_I_MAIN_TRANSACTIONSTATFILTER_BASE (0x4C801500)
|
||||
#define IMX9_VPU__GPV__JPEG_ENC_PROBE_MAIN_PROBE_BASE (0x4C802000)
|
||||
#define IMX9_VPU__GPV__JPEG_ENC_PROBE_MAIN_TRANSACTIONSTATPROFILER_BASE (0x4C802580)
|
||||
#define IMX9_VPU__GPV__JPEG_ENC_RD_I_MAIN_QOSGENERATOR_BASE (0x4C802400)
|
||||
#define IMX9_VPU__GPV__JPEG_ENC_RD_I_MAIN_TRANSACTIONSTATFILTER_BASE (0x4C802480)
|
||||
#define IMX9_VPU__GPV__JPEG_ENC_WR_I_MAIN_TRANSACTIONSTATFILTER_BASE (0x4C802500)
|
||||
#define IMX9_VPU__GPV__SSI_PRI_PROBE_MAIN_PROBE_BASE (0x4C800000)
|
||||
#define IMX9_VPU__GPV__VPU_PRI_PROBE_MAIN_PROBE_BASE (0x4C800400)
|
||||
#define IMX9_VPU__GPV__VPU_PRI_PROBE_MAIN_TRANSACTIONSTATPROFILER_BASE (0x4C800A00)
|
||||
#define IMX9_VPU__GPV__VPU_PRI_RD_I_MAIN_QOSGENERATOR_BASE (0x4C800800)
|
||||
#define IMX9_VPU__GPV__VPU_PRI_RD_I_MAIN_TRANSACTIONSTATFILTER_BASE (0x4C800900)
|
||||
#define IMX9_VPU__GPV__VPU_PRI_WR_I_MAIN_QOSGENERATOR_BASE (0x4C800880)
|
||||
#define IMX9_VPU__GPV__VPU_PRI_WR_I_MAIN_TRANSACTIONSTATFILTER_BASE (0x4C800980)
|
||||
#define IMX9_VPU__JPEG_DEC_BASE (0x4C500100)
|
||||
#define IMX9_VPU__JPEG_DEC_WRAP_BASE (0x4C500000)
|
||||
#define IMX9_VPU__JPEG_ENC_BASE (0x4C550100)
|
||||
#define IMX9_VPU__JPEG_ENC_WRAP_BASE (0x4C550000)
|
||||
#define IMX9_VPU__TCU_BASE (0x4C400000)
|
||||
#define IMX9_VPU__VPU__VPU_CODEC_BASE (0x4C480000)
|
||||
#define IMX9_WAKEUP__AHBRM1_BASE (0x425E0000)
|
||||
#define IMX9_WAKEUP__ATUA_BASE (0x42760000)
|
||||
#define IMX9_WAKEUP__ATUM_BASE (0x42770000)
|
||||
#define IMX9_WAKEUP__AUDIO_XCVR_BASE (0x42680000)
|
||||
#define IMX9_WAKEUP__BLK_CTRL_WAKEUPMIX_BASE (0x42420000)
|
||||
#define IMX9_WAKEUP__CMU1_BASE (0x42750000)
|
||||
#define IMX9_WAKEUP__CMU2_BASE (0x427A0000)
|
||||
#define IMX9_WAKEUP__DMA_CRC2_BASE (0x427B0000)
|
||||
#define IMX9_WAKEUP__EDMA5_TCD2_BASE (0x42010000)
|
||||
#define IMX9_WAKEUP__EDMA5_TCD3_BASE (0x42220000)
|
||||
#define IMX9_WAKEUP__EIMW_BASE (0x42780000)
|
||||
#define IMX9_WAKEUP__FLEXSPI_OTFAD_BASE (0x425E0000)
|
||||
#define IMX9_WAKEUP__GPV_NOCM__POWER_MEGA_RESILIENCEFAULTCONTROLLER_BASE (0x42830000)
|
||||
#define IMX9_WAKEUP__GPV_NOC__POWER_MAIN_RESILIENCEFAULTCONTROLLER_BASE (0x43900000)
|
||||
#define IMX9_WAKEUP__ROMCP2_BASE (0x42640000)
|
||||
#define IMX9_WAKEUP__USDHC1_BASE (0x42850000)
|
||||
#define IMX9_WAKEUP__USDHC2_BASE (0x42860000)
|
||||
#define IMX9_WAKEUP__USDHC3_BASE (0x428B0000)
|
||||
#define IMX9_WAKEUP__XSPI_RESPONDER_BASE (0x428A0000)
|
||||
#define IMX9_WDOG1_BASE (0x442D0000)
|
||||
#define IMX9_WDOG2_BASE (0x442E0000)
|
||||
#define IMX9_WDOG3_BASE (0x42490000)
|
||||
#define IMX9_WDOG4_BASE (0x424A0000)
|
||||
#define IMX9_WDOG5_BASE (0x424B0000)
|
748
arch/arm/src/imx9/hardware/imx95/imx95_pinmux.h
Normal file
748
arch/arm/src/imx9/hardware/imx95/imx95_pinmux.h
Normal file
|
@ -0,0 +1,748 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/hardware/imx95/imx95_pinmux.h
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
#define IOMUXC_REGISTER_NOT_AVAILABLE 0x0000
|
||||
|
||||
#define IOMUXC_PAD_DAP_TDI_JTAG_MUX_TDI IOMUX_PADCFG(IOMUXC_MUX_CTL_DAP_TDI_OFFSET, 0x0, IOMUXC_JTAG_MUX_TDI_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_DAP_TDI_OFFSET)
|
||||
#define IOMUXC_PAD_DAP_TDI_MQS2_LEFT IOMUX_PADCFG(IOMUXC_MUX_CTL_DAP_TDI_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_DAP_TDI_OFFSET)
|
||||
#define IOMUXC_PAD_DAP_TDI_NETC_TMR_1588_ALARM1 IOMUX_PADCFG(IOMUXC_MUX_CTL_DAP_TDI_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_DAP_TDI_OFFSET)
|
||||
#define IOMUXC_PAD_DAP_TDI_CAN2_TX IOMUX_PADCFG(IOMUXC_MUX_CTL_DAP_TDI_OFFSET, 0x3, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_DAP_TDI_OFFSET)
|
||||
#define IOMUXC_PAD_DAP_TDI_FLEXIO2_FLEXIO30 IOMUX_PADCFG(IOMUXC_MUX_CTL_DAP_TDI_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_DAP_TDI_OFFSET)
|
||||
#define IOMUXC_PAD_DAP_TDI_GPIO3_IO28 IOMUX_PADCFG(IOMUXC_MUX_CTL_DAP_TDI_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_DAP_TDI_OFFSET)
|
||||
#define IOMUXC_PAD_DAP_TDI_LPUART5_RX IOMUX_PADCFG(IOMUXC_MUX_CTL_DAP_TDI_OFFSET, 0x6, IOMUXC_LPUART5_IPP_IND_LPUART_RXD_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_DAP_TDI_OFFSET)
|
||||
#define IOMUXC_PAD_DAP_TMS_SWDIO_JTAG_MUX_TMS IOMUX_PADCFG(IOMUXC_MUX_CTL_DAP_TMS_SWDIO_OFFSET, 0x0, IOMUXC_JTAG_MUX_TMS_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_DAP_TMS_SWDIO_OFFSET)
|
||||
#define IOMUXC_PAD_DAP_TMS_SWDIO_CAN4_TX IOMUX_PADCFG(IOMUXC_MUX_CTL_DAP_TMS_SWDIO_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_DAP_TMS_SWDIO_OFFSET)
|
||||
#define IOMUXC_PAD_DAP_TMS_SWDIO_FLEXIO2_FLEXIO31 IOMUX_PADCFG(IOMUXC_MUX_CTL_DAP_TMS_SWDIO_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_DAP_TMS_SWDIO_OFFSET)
|
||||
#define IOMUXC_PAD_DAP_TMS_SWDIO_GPIO3_IO29 IOMUX_PADCFG(IOMUXC_MUX_CTL_DAP_TMS_SWDIO_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_DAP_TMS_SWDIO_OFFSET)
|
||||
#define IOMUXC_PAD_DAP_TMS_SWDIO_LPUART5_RTS_B IOMUX_PADCFG(IOMUXC_MUX_CTL_DAP_TMS_SWDIO_OFFSET, 0x6, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_DAP_TMS_SWDIO_OFFSET)
|
||||
#define IOMUXC_PAD_DAP_TCLK_SWCLK_JTAG_MUX_TCK IOMUX_PADCFG(IOMUXC_MUX_CTL_DAP_TCLK_SWCLK_OFFSET, 0x0, IOMUXC_JTAG_MUX_TCK_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_DAP_TCLK_SWCLK_OFFSET)
|
||||
#define IOMUXC_PAD_DAP_TCLK_SWCLK_CAN4_RX IOMUX_PADCFG(IOMUXC_MUX_CTL_DAP_TCLK_SWCLK_OFFSET, 0x2, IOMUXC_CAN4_IPP_IND_CANRX_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_DAP_TCLK_SWCLK_OFFSET)
|
||||
#define IOMUXC_PAD_DAP_TCLK_SWCLK_FLEXIO1_FLEXIO30 IOMUX_PADCFG(IOMUXC_MUX_CTL_DAP_TCLK_SWCLK_OFFSET, 0x4, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_30_OFFSET, 0x0, IOMUXC_PAD_CTL_DAP_TCLK_SWCLK_OFFSET)
|
||||
#define IOMUXC_PAD_DAP_TCLK_SWCLK_GPIO3_IO30 IOMUX_PADCFG(IOMUXC_MUX_CTL_DAP_TCLK_SWCLK_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_DAP_TCLK_SWCLK_OFFSET)
|
||||
#define IOMUXC_PAD_DAP_TCLK_SWCLK_LPUART5_CTS_B IOMUX_PADCFG(IOMUXC_MUX_CTL_DAP_TCLK_SWCLK_OFFSET, 0x6, IOMUXC_LPUART5_IPP_IND_LPUART_CTS_N_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_DAP_TCLK_SWCLK_OFFSET)
|
||||
#define IOMUXC_PAD_DAP_TDO_TRACESWO_JTAG_MUX_TDO IOMUX_PADCFG(IOMUXC_MUX_CTL_DAP_TDO_TRACESWO_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_DAP_TDO_TRACESWO_OFFSET)
|
||||
#define IOMUXC_PAD_DAP_TDO_TRACESWO_MQS2_RIGHT IOMUX_PADCFG(IOMUXC_MUX_CTL_DAP_TDO_TRACESWO_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_DAP_TDO_TRACESWO_OFFSET)
|
||||
#define IOMUXC_PAD_DAP_TDO_TRACESWO_NETC_TMR_1588_ALARM2 IOMUX_PADCFG(IOMUXC_MUX_CTL_DAP_TDO_TRACESWO_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_DAP_TDO_TRACESWO_OFFSET)
|
||||
#define IOMUXC_PAD_DAP_TDO_TRACESWO_CAN2_RX IOMUX_PADCFG(IOMUXC_MUX_CTL_DAP_TDO_TRACESWO_OFFSET, 0x3, IOMUXC_CAN2_IPP_IND_CANRX_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_DAP_TDO_TRACESWO_OFFSET)
|
||||
#define IOMUXC_PAD_DAP_TDO_TRACESWO_FLEXIO1_FLEXIO31 IOMUX_PADCFG(IOMUXC_MUX_CTL_DAP_TDO_TRACESWO_OFFSET, 0x4, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_31_OFFSET, 0x0, IOMUXC_PAD_CTL_DAP_TDO_TRACESWO_OFFSET)
|
||||
#define IOMUXC_PAD_DAP_TDO_TRACESWO_GPIO3_IO31 IOMUX_PADCFG(IOMUXC_MUX_CTL_DAP_TDO_TRACESWO_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_DAP_TDO_TRACESWO_OFFSET)
|
||||
#define IOMUXC_PAD_DAP_TDO_TRACESWO_LPUART5_TX IOMUX_PADCFG(IOMUXC_MUX_CTL_DAP_TDO_TRACESWO_OFFSET, 0x6, IOMUXC_LPUART5_IPP_IND_LPUART_TXD_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_DAP_TDO_TRACESWO_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO00_GPIO2_IO00 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO00_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO00_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO00_LPI2C3_SDA IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO00_OFFSET, 0x1, IOMUXC_LPI2C3_IPP_IND_LPI2C_SDA_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO00_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO00_LPSPI6_PCS0 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO00_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO00_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO00_LPUART5_TX IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO00_OFFSET, 0x5, IOMUXC_LPUART5_IPP_IND_LPUART_TXD_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_GPIO_IO00_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO00_LPI2C5_SDA IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO00_OFFSET, 0x6, IOMUXC_LPI2C5_IPP_IND_LPI2C_SDA_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO00_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO00_FLEXIO1_FLEXIO00 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO00_OFFSET, 0x7, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_0_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO00_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO01_GPIO2_IO01 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO01_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO01_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO01_LPI2C3_SCL IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO01_OFFSET, 0x1, IOMUXC_LPI2C3_IPP_IND_LPI2C_SCL_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO01_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO01_LPSPI6_SIN IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO01_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO01_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO01_LPUART5_RX IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO01_OFFSET, 0x5, IOMUXC_LPUART5_IPP_IND_LPUART_RXD_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_GPIO_IO01_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO01_LPI2C5_SCL IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO01_OFFSET, 0x6, IOMUXC_LPI2C5_IPP_IND_LPI2C_SCL_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO01_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO01_FLEXIO1_FLEXIO01 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO01_OFFSET, 0x7, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_1_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO01_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO02_GPIO2_IO02 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO02_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO02_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO02_LPI2C4_SDA IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO02_OFFSET, 0x1, IOMUXC_LPI2C4_IPP_IND_LPI2C_SDA_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO02_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO02_LPSPI6_SOUT IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO02_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO02_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO02_LPUART5_CTS_B IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO02_OFFSET, 0x5, IOMUXC_LPUART5_IPP_IND_LPUART_CTS_N_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_GPIO_IO02_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO02_LPI2C6_SDA IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO02_OFFSET, 0x6, IOMUXC_LPI2C6_IPP_IND_LPI2C_SDA_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO02_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO02_FLEXIO1_FLEXIO02 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO02_OFFSET, 0x7, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_2_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO02_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO03_GPIO2_IO03 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO03_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO03_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO03_LPI2C4_SCL IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO03_OFFSET, 0x1, IOMUXC_LPI2C4_IPP_IND_LPI2C_SCL_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO03_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO03_LPSPI6_SCK IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO03_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO03_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO03_LPUART5_RTS_B IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO03_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO03_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO03_LPI2C6_SCL IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO03_OFFSET, 0x6, IOMUXC_LPI2C6_IPP_IND_LPI2C_SCL_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO03_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO03_FLEXIO1_FLEXIO03 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO03_OFFSET, 0x7, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_3_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO03_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO04_GPIO2_IO04 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO04_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO04_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO04_TPM3_CH0 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO04_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO04_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO04_PDM_CLK IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO04_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO04_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO04_CAN4_TX IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO04_OFFSET, 0x3, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO04_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO04_LPSPI7_PCS0 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO04_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO04_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO04_LPUART6_TX IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO04_OFFSET, 0x5, IOMUXC_LPUART6_IPP_IND_LPUART_TXD_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_GPIO_IO04_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO04_LPI2C6_SDA IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO04_OFFSET, 0x6, IOMUXC_LPI2C6_IPP_IND_LPI2C_SDA_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_GPIO_IO04_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO04_FLEXIO1_FLEXIO04 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO04_OFFSET, 0x7, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_4_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO04_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO05_GPIO2_IO05 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO05_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO05_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO05_TPM4_CH0 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO05_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO05_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO05_PDM_BIT_STREAM00 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO05_OFFSET, 0x2, IOMUXC_PDM_IPP_IND_MIC_PDM_BITSTREAM_SELECT_INPUT_0_OFFSET, 0x1, IOMUXC_PAD_CTL_GPIO_IO05_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO05_CAN4_RX IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO05_OFFSET, 0x3, IOMUXC_CAN4_IPP_IND_CANRX_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_GPIO_IO05_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO05_LPSPI7_SIN IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO05_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO05_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO05_LPUART6_RX IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO05_OFFSET, 0x5, IOMUXC_LPUART6_IPP_IND_LPUART_RXD_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_GPIO_IO05_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO05_LPI2C6_SCL IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO05_OFFSET, 0x6, IOMUXC_LPI2C6_IPP_IND_LPI2C_SCL_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_GPIO_IO05_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO05_FLEXIO1_FLEXIO05 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO05_OFFSET, 0x7, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_5_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO05_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO06_GPIO2_IO06 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO06_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO06_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO06_TPM5_CH0 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO06_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO06_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO06_PDM_BIT_STREAM01 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO06_OFFSET, 0x2, IOMUXC_PDM_IPP_IND_MIC_PDM_BITSTREAM_SELECT_INPUT_1_OFFSET, 0x1, IOMUXC_PAD_CTL_GPIO_IO06_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO06_LPSPI7_SOUT IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO06_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO06_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO06_LPUART6_CTS_B IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO06_OFFSET, 0x5, IOMUXC_LPUART6_IPP_IND_LPUART_CTS_N_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_GPIO_IO06_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO06_LPI2C7_SDA IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO06_OFFSET, 0x6, IOMUXC_LPI2C7_IPP_IND_LPI2C_SDA_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO06_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO06_FLEXIO1_FLEXIO06 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO06_OFFSET, 0x7, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_6_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO06_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO07_GPIO2_IO07 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO07_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO07_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO07_LPSPI3_PCS1 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO07_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO07_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO07_LPSPI7_SCK IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO07_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO07_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO07_LPUART6_RTS_B IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO07_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO07_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO07_LPI2C7_SCL IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO07_OFFSET, 0x6, IOMUXC_LPI2C7_IPP_IND_LPI2C_SCL_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO07_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO07_FLEXIO1_FLEXIO07 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO07_OFFSET, 0x7, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_7_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO07_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO08_GPIO2_IO08 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO08_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO08_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO08_LPSPI3_PCS0 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO08_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO08_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO08_TPM6_CH0 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO08_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO08_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO08_LPUART7_TX IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO08_OFFSET, 0x5, IOMUXC_LPUART7_IPP_IND_LPUART_TXD_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_GPIO_IO08_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO08_LPI2C7_SDA IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO08_OFFSET, 0x6, IOMUXC_LPI2C7_IPP_IND_LPI2C_SDA_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_GPIO_IO08_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO08_FLEXIO1_FLEXIO08 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO08_OFFSET, 0x7, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_8_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO08_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO09_GPIO2_IO09 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO09_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO09_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO09_LPSPI3_SIN IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO09_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO09_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO09_TPM3_EXTCLK IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO09_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO09_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO09_LPUART7_RX IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO09_OFFSET, 0x5, IOMUXC_LPUART7_IPP_IND_LPUART_RXD_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_GPIO_IO09_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO09_LPI2C7_SCL IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO09_OFFSET, 0x6, IOMUXC_LPI2C7_IPP_IND_LPI2C_SCL_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_GPIO_IO09_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO09_FLEXIO1_FLEXIO09 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO09_OFFSET, 0x7, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_9_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO09_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO10_GPIO2_IO10 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO10_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO10_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO10_LPSPI3_SOUT IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO10_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO10_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO10_TPM4_EXTCLK IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO10_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO10_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO10_LPUART7_CTS_B IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO10_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO10_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO10_LPI2C8_SDA IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO10_OFFSET, 0x6, IOMUXC_LPI2C8_IPP_IND_LPI2C_SDA_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO10_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO10_FLEXIO1_FLEXIO10 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO10_OFFSET, 0x7, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_10_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO10_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO11_GPIO2_IO11 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO11_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO11_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO11_LPSPI3_SCK IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO11_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO11_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO11_TPM5_EXTCLK IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO11_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO11_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO11_LPUART7_RTS_B IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO11_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO11_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO11_LPI2C8_SCL IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO11_OFFSET, 0x6, IOMUXC_LPI2C8_IPP_IND_LPI2C_SCL_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO11_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO11_FLEXIO1_FLEXIO11 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO11_OFFSET, 0x7, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_11_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO11_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO12_GPIO2_IO12 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO12_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO12_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO12_TPM3_CH2 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO12_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO12_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO12_PDM_BIT_STREAM02 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO12_OFFSET, 0x2, IOMUXC_PDM_IPP_IND_MIC_PDM_BITSTREAM_SELECT_INPUT_2_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO12_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO12_FLEXIO1_FLEXIO12 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO12_OFFSET, 0x3, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_12_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO12_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO12_LPSPI8_PCS0 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO12_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO12_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO12_LPUART8_TX IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO12_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO12_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO12_LPI2C8_SDA IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO12_OFFSET, 0x6, IOMUXC_LPI2C8_IPP_IND_LPI2C_SDA_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_GPIO_IO12_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO12_SAI3_RX_SYNC IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO12_OFFSET, 0x7, IOMUXC_SAI3_IPP_IND_SAI_RXSYNC_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO12_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO13_GPIO2_IO13 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO13_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO13_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO13_TPM4_CH2 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO13_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO13_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO13_PDM_BIT_STREAM03 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO13_OFFSET, 0x2, IOMUXC_PDM_IPP_IND_MIC_PDM_BITSTREAM_SELECT_INPUT_3_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO13_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO13_LPSPI8_SIN IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO13_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO13_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO13_LPUART8_RX IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO13_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO13_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO13_LPI2C8_SCL IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO13_OFFSET, 0x6, IOMUXC_LPI2C8_IPP_IND_LPI2C_SCL_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_GPIO_IO13_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO13_FLEXIO1_FLEXIO13 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO13_OFFSET, 0x7, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_13_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO13_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO14_GPIO2_IO14 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO14_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO14_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO14_LPUART3_TX IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO14_OFFSET, 0x1, IOMUXC_LPUART3_IPP_IND_LPUART_TXD_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_GPIO_IO14_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO14_LPSPI8_SOUT IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO14_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO14_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO14_LPUART8_CTS_B IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO14_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO14_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO14_LPUART4_TX IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO14_OFFSET, 0x6, IOMUXC_LPUART4_IPP_IND_LPUART_TXD_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_GPIO_IO14_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO14_FLEXIO1_FLEXIO14 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO14_OFFSET, 0x7, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_14_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO14_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO15_GPIO2_IO15 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO15_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO15_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO15_LPUART3_RX IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO15_OFFSET, 0x1, IOMUXC_LPUART3_IPP_IND_LPUART_RXD_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_GPIO_IO15_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO15_LPSPI8_SCK IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO15_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO15_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO15_LPUART8_RTS_B IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO15_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO15_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO15_LPUART4_RX IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO15_OFFSET, 0x6, IOMUXC_LPUART4_IPP_IND_LPUART_RXD_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_GPIO_IO15_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO15_FLEXIO1_FLEXIO15 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO15_OFFSET, 0x7, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_15_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO15_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO16_GPIO2_IO16 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO16_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO16_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO16_SAI3_TX_BCLK IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO16_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO16_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO16_PDM_BIT_STREAM02 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO16_OFFSET, 0x2, IOMUXC_PDM_IPP_IND_MIC_PDM_BITSTREAM_SELECT_INPUT_2_OFFSET, 0x1, IOMUXC_PAD_CTL_GPIO_IO16_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO16_LPUART3_CTS_B IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO16_OFFSET, 0x4, IOMUXC_LPUART3_IPP_IND_LPUART_CTS_N_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_GPIO_IO16_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO16_LPSPI4_PCS2 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO16_OFFSET, 0x5, IOMUXC_LPSPI4_IPP_IND_LPSPI_PCS_SELECT_INPUT_2_OFFSET, 0x1, IOMUXC_PAD_CTL_GPIO_IO16_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO16_LPUART4_CTS_B IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO16_OFFSET, 0x6, IOMUXC_LPUART4_IPP_IND_LPUART_CTS_N_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_GPIO_IO16_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO16_FLEXIO1_FLEXIO16 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO16_OFFSET, 0x7, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_16_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO16_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO17_GPIO2_IO17 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO17_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO17_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO17_SAI3_MCLK IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO17_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO17_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO17_LPUART3_RTS_B IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO17_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO17_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO17_LPSPI4_PCS1 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO17_OFFSET, 0x5, IOMUXC_LPSPI4_IPP_IND_LPSPI_PCS_SELECT_INPUT_1_OFFSET, 0x1, IOMUXC_PAD_CTL_GPIO_IO17_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO17_LPUART4_RTS_B IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO17_OFFSET, 0x6, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO17_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO17_FLEXIO1_FLEXIO17 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO17_OFFSET, 0x7, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_17_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO17_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO18_GPIO2_IO18 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO18_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO18_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO18_SAI3_RX_BCLK IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO18_OFFSET, 0x1, IOMUXC_SAI3_IPP_IND_SAI_RXBCLK_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO18_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO18_LPSPI5_PCS0 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO18_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO18_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO18_LPSPI4_PCS0 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO18_OFFSET, 0x5, IOMUXC_LPSPI4_IPP_IND_LPSPI_PCS_SELECT_INPUT_0_OFFSET, 0x1, IOMUXC_PAD_CTL_GPIO_IO18_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO18_TPM5_CH2 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO18_OFFSET, 0x6, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO18_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO18_FLEXIO1_FLEXIO18 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO18_OFFSET, 0x7, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_18_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO18_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO19_GPIO2_IO19 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO19_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO19_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO19_SAI3_RX_SYNC IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO19_OFFSET, 0x1, IOMUXC_SAI3_IPP_IND_SAI_RXSYNC_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_GPIO_IO19_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO19_PDM_BIT_STREAM03 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO19_OFFSET, 0x2, IOMUXC_PDM_IPP_IND_MIC_PDM_BITSTREAM_SELECT_INPUT_3_OFFSET, 0x1, IOMUXC_PAD_CTL_GPIO_IO19_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO19_FLEXIO1_FLEXIO19 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO19_OFFSET, 0x3, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_19_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO19_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO19_LPSPI5_SIN IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO19_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO19_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO19_LPSPI4_SIN IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO19_OFFSET, 0x5, IOMUXC_LPSPI4_IPP_IND_LPSPI_SDI_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_GPIO_IO19_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO19_TPM6_CH2 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO19_OFFSET, 0x6, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO19_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO19_SAI3_TX_DATA00 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO19_OFFSET, 0x7, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO19_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO20_GPIO2_IO20 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO20_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO20_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO20_SAI3_RX_DATA00 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO20_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO20_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO20_PDM_BIT_STREAM00 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO20_OFFSET, 0x2, IOMUXC_PDM_IPP_IND_MIC_PDM_BITSTREAM_SELECT_INPUT_0_OFFSET, 0x2, IOMUXC_PAD_CTL_GPIO_IO20_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO20_LPSPI5_SOUT IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO20_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO20_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO20_LPSPI4_SOUT IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO20_OFFSET, 0x5, IOMUXC_LPSPI4_IPP_IND_LPSPI_SDO_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_GPIO_IO20_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO20_TPM3_CH1 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO20_OFFSET, 0x6, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO20_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO20_FLEXIO1_FLEXIO20 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO20_OFFSET, 0x7, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_20_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO20_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO21_GPIO2_IO21 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO21_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO21_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO21_SAI3_TX_DATA00 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO21_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO21_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO21_PDM_CLK IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO21_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO21_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO21_FLEXIO1_FLEXIO21 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO21_OFFSET, 0x3, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_21_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO21_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO21_LPSPI5_SCK IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO21_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO21_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO21_LPSPI4_SCK IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO21_OFFSET, 0x5, IOMUXC_LPSPI4_IPP_IND_LPSPI_SCK_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_GPIO_IO21_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO21_TPM4_CH1 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO21_OFFSET, 0x6, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO21_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO21_SAI3_RX_BCLK IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO21_OFFSET, 0x7, IOMUXC_SAI3_IPP_IND_SAI_RXBCLK_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_GPIO_IO21_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO22_GPIO2_IO22 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO22_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO22_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO22_USDHC3_CLK IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO22_OFFSET, 0x1, IOMUXC_USDHC3_IPP_CARD_CLK_IN_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO22_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO22_SPDIF_IN IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO22_OFFSET, 0x2, IOMUXC_EARC_PHY_SPDIF_IN_SELECT_INPUT_OFFSET, 0x2, IOMUXC_PAD_CTL_GPIO_IO22_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO22_CAN5_TX IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO22_OFFSET, 0x3, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO22_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO22_TPM5_CH1 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO22_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO22_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO22_TPM6_EXTCLK IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO22_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO22_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO22_LPI2C5_SDA IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO22_OFFSET, 0x6, IOMUXC_LPI2C5_IPP_IND_LPI2C_SDA_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_GPIO_IO22_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO22_FLEXIO1_FLEXIO22 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO22_OFFSET, 0x7, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_22_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO22_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO23_GPIO2_IO23 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO23_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO23_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO23_USDHC3_CMD IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO23_OFFSET, 0x1, IOMUXC_USDHC3_IPP_CMD_IN_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO23_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO23_SPDIF_OUT IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO23_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO23_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO23_CAN5_RX IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO23_OFFSET, 0x3, IOMUXC_CAN5_IPP_IND_CANRX_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO23_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO23_TPM6_CH1 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO23_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO23_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO23_LPI2C5_SCL IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO23_OFFSET, 0x6, IOMUXC_LPI2C5_IPP_IND_LPI2C_SCL_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_GPIO_IO23_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO23_FLEXIO1_FLEXIO23 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO23_OFFSET, 0x7, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_23_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO23_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO24_GPIO2_IO24 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO24_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO24_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO24_USDHC3_DATA0 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO24_OFFSET, 0x1, IOMUXC_USDHC3_IPP_DAT0_IN_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO24_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO24_TPM3_CH3 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO24_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO24_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO24_JTAG_MUX_TDO IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO24_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO24_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO24_LPSPI6_PCS1 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO24_OFFSET, 0x6, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO24_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO24_FLEXIO1_FLEXIO24 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO24_OFFSET, 0x7, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_24_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO24_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO25_GPIO2_IO25 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO25_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO25_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO25_USDHC3_DATA1 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO25_OFFSET, 0x1, IOMUXC_USDHC3_IPP_DAT1_IN_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO25_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO25_CAN2_TX IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO25_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO25_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO25_TPM4_CH3 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO25_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO25_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO25_JTAG_MUX_TCK IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO25_OFFSET, 0x5, IOMUXC_JTAG_MUX_TCK_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_GPIO_IO25_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO25_LPSPI7_PCS1 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO25_OFFSET, 0x6, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO25_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO25_FLEXIO1_FLEXIO25 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO25_OFFSET, 0x7, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_25_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO25_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO26_GPIO2_IO26 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO26_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO26_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO26_USDHC3_DATA2 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO26_OFFSET, 0x1, IOMUXC_USDHC3_IPP_DAT2_IN_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO26_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO26_PDM_BIT_STREAM01 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO26_OFFSET, 0x2, IOMUXC_PDM_IPP_IND_MIC_PDM_BITSTREAM_SELECT_INPUT_1_OFFSET, 0x2, IOMUXC_PAD_CTL_GPIO_IO26_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO26_FLEXIO1_FLEXIO26 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO26_OFFSET, 0x3, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_26_OFFSET, 0x1, IOMUXC_PAD_CTL_GPIO_IO26_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO26_TPM5_CH3 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO26_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO26_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO26_JTAG_MUX_TDI IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO26_OFFSET, 0x5, IOMUXC_JTAG_MUX_TDI_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_GPIO_IO26_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO26_LPSPI8_PCS1 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO26_OFFSET, 0x6, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO26_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO26_SAI3_TX_SYNC IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO26_OFFSET, 0x7, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO26_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO27_GPIO2_IO27 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO27_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO27_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO27_USDHC3_DATA3 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO27_OFFSET, 0x1, IOMUXC_USDHC3_IPP_DAT3_IN_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO27_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO27_CAN2_RX IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO27_OFFSET, 0x2, IOMUXC_CAN2_IPP_IND_CANRX_SELECT_INPUT_OFFSET, 0x2, IOMUXC_PAD_CTL_GPIO_IO27_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO27_TPM6_CH3 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO27_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO27_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO27_JTAG_MUX_TMS IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO27_OFFSET, 0x5, IOMUXC_JTAG_MUX_TMS_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_GPIO_IO27_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO27_LPSPI5_PCS1 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO27_OFFSET, 0x6, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO27_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO27_FLEXIO1_FLEXIO27 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO27_OFFSET, 0x7, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_27_OFFSET, 0x1, IOMUXC_PAD_CTL_GPIO_IO27_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO28_GPIO2_IO28 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO28_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO28_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO28_LPI2C3_SDA IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO28_OFFSET, 0x1, IOMUXC_LPI2C3_IPP_IND_LPI2C_SDA_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_GPIO_IO28_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO28_CAN3_TX IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO28_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO28_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO28_FLEXIO1_FLEXIO28 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO28_OFFSET, 0x7, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO28_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO29_GPIO2_IO29 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO29_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO29_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO29_LPI2C3_SCL IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO29_OFFSET, 0x1, IOMUXC_LPI2C3_IPP_IND_LPI2C_SCL_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_GPIO_IO29_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO29_CAN3_RX IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO29_OFFSET, 0x2, IOMUXC_CAN3_IPP_IND_CANRX_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_GPIO_IO29_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO29_FLEXIO1_FLEXIO29 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO29_OFFSET, 0x7, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO29_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO30_GPIO2_IO30 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO30_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO30_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO30_LPI2C4_SDA IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO30_OFFSET, 0x1, IOMUXC_LPI2C4_IPP_IND_LPI2C_SDA_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_GPIO_IO30_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO30_CAN5_TX IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO30_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO30_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO30_FLEXIO1_FLEXIO30 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO30_OFFSET, 0x7, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_30_OFFSET, 0x1, IOMUXC_PAD_CTL_GPIO_IO30_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO31_GPIO2_IO31 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO31_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO31_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO31_LPI2C4_SCL IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO31_OFFSET, 0x1, IOMUXC_LPI2C4_IPP_IND_LPI2C_SCL_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_GPIO_IO31_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO31_CAN5_RX IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO31_OFFSET, 0x2, IOMUXC_CAN5_IPP_IND_CANRX_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_GPIO_IO31_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO31_FLEXIO1_FLEXIO31 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO31_OFFSET, 0x7, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_31_OFFSET, 0x1, IOMUXC_PAD_CTL_GPIO_IO31_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO32_GPIO5_IO12 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO32_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO32_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO32_PCIE1_CLKREQ_B IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO32_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO32_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO32_LPUART6_TX IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO32_OFFSET, 0x2, IOMUXC_LPUART6_IPP_IND_LPUART_TXD_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO32_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO32_LPSPI4_PCS2 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO32_OFFSET, 0x4, IOMUXC_LPSPI4_IPP_IND_LPSPI_PCS_SELECT_INPUT_2_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO32_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO33_GPIO5_IO13 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO33_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO33_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO33_LPUART6_RX IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO33_OFFSET, 0x2, IOMUXC_LPUART6_IPP_IND_LPUART_RXD_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO33_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO33_LPSPI4_PCS1 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO33_OFFSET, 0x4, IOMUXC_LPSPI4_IPP_IND_LPSPI_PCS_SELECT_INPUT_1_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO33_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO34_GPIO5_IO14 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO34_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO34_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO34_LPUART6_CTS_B IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO34_OFFSET, 0x2, IOMUXC_LPUART6_IPP_IND_LPUART_CTS_N_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO34_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO34_LPSPI4_PCS0 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO34_OFFSET, 0x4, IOMUXC_LPSPI4_IPP_IND_LPSPI_PCS_SELECT_INPUT_0_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO34_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO35_GPIO5_IO15 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO35_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO35_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO35_PCIE2_CLKREQ_B IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO35_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO35_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO35_LPUART6_RTS_B IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO35_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO35_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO35_LPSPI4_SIN IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO35_OFFSET, 0x4, IOMUXC_LPSPI4_IPP_IND_LPSPI_SDI_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO35_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO36_GPIO5_IO16 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO36_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO36_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO36_LPUART7_TX IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO36_OFFSET, 0x2, IOMUXC_LPUART7_IPP_IND_LPUART_TXD_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO36_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO36_LPSPI4_SOUT IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO36_OFFSET, 0x4, IOMUXC_LPSPI4_IPP_IND_LPSPI_SDO_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO36_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO37_GPIO5_IO17 IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO37_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_GPIO_IO37_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO37_LPUART7_RX IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO37_OFFSET, 0x2, IOMUXC_LPUART7_IPP_IND_LPUART_RXD_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO37_OFFSET)
|
||||
#define IOMUXC_PAD_GPIO_IO37_LPSPI4_SCK IOMUX_PADCFG(IOMUXC_MUX_CTL_GPIO_IO37_OFFSET, 0x4, IOMUXC_LPSPI4_IPP_IND_LPSPI_SCK_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_GPIO_IO37_OFFSET)
|
||||
#define IOMUXC_PAD_CCM_CLKO1_CLKO_1 IOMUX_PADCFG(IOMUXC_MUX_CTL_CCM_CLKO1_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_CCM_CLKO1_OFFSET)
|
||||
#define IOMUXC_PAD_CCM_CLKO1_NETC_TMR_1588_TRIG1 IOMUX_PADCFG(IOMUXC_MUX_CTL_CCM_CLKO1_OFFSET, 0x1, IOMUXC_NETC_CMPLX_TMR_1588_TRIG1_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_CCM_CLKO1_OFFSET)
|
||||
#define IOMUXC_PAD_CCM_CLKO1_FLEXIO1_FLEXIO26 IOMUX_PADCFG(IOMUXC_MUX_CTL_CCM_CLKO1_OFFSET, 0x4, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_26_OFFSET, 0x0, IOMUXC_PAD_CTL_CCM_CLKO1_OFFSET)
|
||||
#define IOMUXC_PAD_CCM_CLKO1_GPIO3_IO26 IOMUX_PADCFG(IOMUXC_MUX_CTL_CCM_CLKO1_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_CCM_CLKO1_OFFSET)
|
||||
#define IOMUXC_PAD_CCM_CLKO2_CLKO_2 IOMUX_PADCFG(IOMUXC_MUX_CTL_CCM_CLKO2_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_CCM_CLKO2_OFFSET)
|
||||
#define IOMUXC_PAD_CCM_CLKO2_NETC_TMR_1588_PP1 IOMUX_PADCFG(IOMUXC_MUX_CTL_CCM_CLKO2_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_CCM_CLKO2_OFFSET)
|
||||
#define IOMUXC_PAD_CCM_CLKO2_FLEXIO1_FLEXIO27 IOMUX_PADCFG(IOMUXC_MUX_CTL_CCM_CLKO2_OFFSET, 0x4, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_27_OFFSET, 0x0, IOMUXC_PAD_CTL_CCM_CLKO2_OFFSET)
|
||||
#define IOMUXC_PAD_CCM_CLKO2_GPIO3_IO27 IOMUX_PADCFG(IOMUXC_MUX_CTL_CCM_CLKO2_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_CCM_CLKO2_OFFSET)
|
||||
#define IOMUXC_PAD_CCM_CLKO3_CLKO_3 IOMUX_PADCFG(IOMUXC_MUX_CTL_CCM_CLKO3_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_CCM_CLKO3_OFFSET)
|
||||
#define IOMUXC_PAD_CCM_CLKO3_NETC_TMR_1588_TRIG2 IOMUX_PADCFG(IOMUXC_MUX_CTL_CCM_CLKO3_OFFSET, 0x1, IOMUXC_NETC_CMPLX_TMR_1588_TRIG2_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_CCM_CLKO3_OFFSET)
|
||||
#define IOMUXC_PAD_CCM_CLKO3_CAN3_TX IOMUX_PADCFG(IOMUXC_MUX_CTL_CCM_CLKO3_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_CCM_CLKO3_OFFSET)
|
||||
#define IOMUXC_PAD_CCM_CLKO3_FLEXIO2_FLEXIO28 IOMUX_PADCFG(IOMUXC_MUX_CTL_CCM_CLKO3_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_CCM_CLKO3_OFFSET)
|
||||
#define IOMUXC_PAD_CCM_CLKO3_GPIO4_IO28 IOMUX_PADCFG(IOMUXC_MUX_CTL_CCM_CLKO3_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_CCM_CLKO3_OFFSET)
|
||||
#define IOMUXC_PAD_CCM_CLKO4_CLKO_4 IOMUX_PADCFG(IOMUXC_MUX_CTL_CCM_CLKO4_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_CCM_CLKO4_OFFSET)
|
||||
#define IOMUXC_PAD_CCM_CLKO4_NETC_TMR_1588_PP2 IOMUX_PADCFG(IOMUXC_MUX_CTL_CCM_CLKO4_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_CCM_CLKO4_OFFSET)
|
||||
#define IOMUXC_PAD_CCM_CLKO4_CAN3_RX IOMUX_PADCFG(IOMUXC_MUX_CTL_CCM_CLKO4_OFFSET, 0x2, IOMUXC_CAN3_IPP_IND_CANRX_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_CCM_CLKO4_OFFSET)
|
||||
#define IOMUXC_PAD_CCM_CLKO4_FLEXIO2_FLEXIO29 IOMUX_PADCFG(IOMUXC_MUX_CTL_CCM_CLKO4_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_CCM_CLKO4_OFFSET)
|
||||
#define IOMUXC_PAD_CCM_CLKO4_GPIO4_IO29 IOMUX_PADCFG(IOMUXC_MUX_CTL_CCM_CLKO4_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_CCM_CLKO4_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_MDC_NETC_MDC IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_MDC_OFFSET, 0x0, IOMUXC_NETC_CMPLX_EMDC_IN_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_ENET1_MDC_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_MDC_LPUART3_DCD_B IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_MDC_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_MDC_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_MDC_I3C2_SCL IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_MDC_OFFSET, 0x2, IOMUXC_I3C2_PIN_SCL_IN_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_ENET1_MDC_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_MDC_USB1_OTG_ID IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_MDC_OFFSET, 0x3, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_MDC_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_MDC_FLEXIO2_FLEXIO00 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_MDC_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_MDC_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_MDC_GPIO4_IO00 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_MDC_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_MDC_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_MDIO_NETC_MDIO IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_MDIO_OFFSET, 0x0, IOMUXC_NETC_CMPLX_EMDIO_IN_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_ENET1_MDIO_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_MDIO_LPUART3_RIN_B IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_MDIO_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_MDIO_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_MDIO_I3C2_SDA IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_MDIO_OFFSET, 0x2, IOMUXC_I3C2_PIN_SDA_IN_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_ENET1_MDIO_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_MDIO_USB1_OTG_PWR IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_MDIO_OFFSET, 0x3, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_MDIO_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_MDIO_FLEXIO2_FLEXIO01 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_MDIO_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_MDIO_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_MDIO_GPIO4_IO01 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_MDIO_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_MDIO_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_TD3_ETH0_RGMII_TD3 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_TD3_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_TD3_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_TD3_CAN2_TX IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_TD3_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_TD3_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_TD3_USB2_OTG_ID IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_TD3_OFFSET, 0x3, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_TD3_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_TD3_FLEXIO2_FLEXIO02 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_TD3_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_TD3_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_TD3_GPIO4_IO02 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_TD3_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_TD3_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_TD2_ETH0_RGMII_TD2 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_TD2_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_TD2_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_TD2_ETH0_RMII_REF50_CLK IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_TD2_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_TD2_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_TD2_CAN2_RX IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_TD2_OFFSET, 0x2, IOMUXC_CAN2_IPP_IND_CANRX_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_ENET1_TD2_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_TD2_USB2_OTG_OC IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_TD2_OFFSET, 0x3, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_TD2_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_TD2_FLEXIO2_FLEXIO03 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_TD2_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_TD2_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_TD2_GPIO4_IO03 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_TD2_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_TD2_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_TD1_ETH0_RGMII_TD1 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_TD1_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_TD1_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_TD1_LPUART3_RTS_B IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_TD1_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_TD1_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_TD1_I3C2_PUR IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_TD1_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_TD1_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_TD1_USB1_OTG_OC IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_TD1_OFFSET, 0x3, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_TD1_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_TD1_FLEXIO2_FLEXIO04 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_TD1_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_TD1_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_TD1_GPIO4_IO04 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_TD1_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_TD1_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_TD1_I3C2_PUR_B IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_TD1_OFFSET, 0x6, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_TD1_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_TD1_ETH0_RMII_TXD1 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_TD1_OFFSET, 0x7, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_TD1_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_TD0_ETH0_RGMII_TD0 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_TD0_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_TD0_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_TD0_LPUART3_TX IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_TD0_OFFSET, 0x1, IOMUXC_LPUART3_IPP_IND_LPUART_TXD_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_ENET1_TD0_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_TD0_ETH0_RMII_TXD0 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_TD0_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_TD0_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_TD0_FLEXIO2_FLEXIO05 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_TD0_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_TD0_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_TD0_GPIO4_IO05 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_TD0_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_TD0_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_TX_CTL_ETH0_RGMII_TX_CTL IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_TX_CTL_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_TX_CTL_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_TX_CTL_LPUART3_DTR_B IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_TX_CTL_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_TX_CTL_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_TX_CTL_ETH0_RMII_TX_EN IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_TX_CTL_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_TX_CTL_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_TX_CTL_FLEXIO2_FLEXIO06 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_TX_CTL_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_TX_CTL_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_TX_CTL_GPIO4_IO06 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_TX_CTL_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_TX_CTL_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_TXC_ETH0_RGMII_TX_CLK IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_TXC_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_TXC_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_TXC_ENET_CLK_ROOT IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_TXC_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_TXC_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_TXC_FLEXIO2_FLEXIO07 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_TXC_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_TXC_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_TXC_GPIO4_IO07 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_TXC_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_TXC_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_RX_CTL_ETH0_RGMII_RX_CTL IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_RX_CTL_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_RX_CTL_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_RX_CTL_LPUART3_DSR_B IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_RX_CTL_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_RX_CTL_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_RX_CTL_ETH0_RMII_CRS_DV IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_RX_CTL_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_RX_CTL_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_RX_CTL_USB2_OTG_PWR IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_RX_CTL_OFFSET, 0x3, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_RX_CTL_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_RX_CTL_FLEXIO2_FLEXIO08 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_RX_CTL_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_RX_CTL_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_RX_CTL_GPIO4_IO08 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_RX_CTL_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_RX_CTL_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_RXC_ETH0_RGMII_RX_CLK IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_RXC_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_RXC_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_RXC_ETH0_RMII_RX_ER IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_RXC_OFFSET, 0x1, IOMUXC_NETC_CMPLX_ETH0_RMII_RX_ER_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_ENET1_RXC_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_RXC_FLEXIO2_FLEXIO09 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_RXC_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_RXC_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_RXC_GPIO4_IO09 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_RXC_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_RXC_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_RD0_ETH0_RGMII_RD0 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_RD0_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_RD0_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_RD0_LPUART3_RX IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_RD0_OFFSET, 0x1, IOMUXC_LPUART3_IPP_IND_LPUART_RXD_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_ENET1_RD0_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_RD0_ETH0_RMII_RXD0 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_RD0_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_RD0_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_RD0_FLEXIO2_FLEXIO10 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_RD0_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_RD0_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_RD0_GPIO4_IO10 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_RD0_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_RD0_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_RD1_ETH0_RGMII_RD1 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_RD1_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_RD1_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_RD1_LPUART3_CTS_B IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_RD1_OFFSET, 0x1, IOMUXC_LPUART3_IPP_IND_LPUART_CTS_N_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_ENET1_RD1_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_RD1_ETH0_RMII_RXD1 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_RD1_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_RD1_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_RD1_LPTMR2_ALT1 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_RD1_OFFSET, 0x3, IOMUXC_LPTMR2_IPP_IND_LPTIMER_SELECT_INPUT_0_OFFSET, 0x0, IOMUXC_PAD_CTL_ENET1_RD1_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_RD1_FLEXIO2_FLEXIO11 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_RD1_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_RD1_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_RD1_GPIO4_IO11 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_RD1_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_RD1_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_RD2_ETH0_RGMII_RD2 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_RD2_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_RD2_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_RD2_ETH0_RMII_RX_ER IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_RD2_OFFSET, 0x2, IOMUXC_NETC_CMPLX_ETH0_RMII_RX_ER_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_ENET1_RD2_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_RD2_LPTMR2_ALT2 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_RD2_OFFSET, 0x3, IOMUXC_LPTMR2_IPP_IND_LPTIMER_SELECT_INPUT_1_OFFSET, 0x0, IOMUXC_PAD_CTL_ENET1_RD2_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_RD2_FLEXIO2_FLEXIO12 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_RD2_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_RD2_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_RD2_GPIO4_IO12 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_RD2_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_RD2_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_RD3_ETH0_RGMII_RD3 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_RD3_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_RD3_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_RD3_LPTMR2_ALT3 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_RD3_OFFSET, 0x3, IOMUXC_LPTMR2_IPP_IND_LPTIMER_SELECT_INPUT_2_OFFSET, 0x0, IOMUXC_PAD_CTL_ENET1_RD3_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_RD3_FLEXIO2_FLEXIO13 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_RD3_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_RD3_OFFSET)
|
||||
#define IOMUXC_PAD_ENET1_RD3_GPIO4_IO13 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET1_RD3_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET1_RD3_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_MDC_NETC_MDC IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_MDC_OFFSET, 0x0, IOMUXC_NETC_CMPLX_EMDC_IN_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_ENET2_MDC_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_MDC_LPUART4_DCD_B IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_MDC_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_MDC_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_MDC_SAI2_RX_SYNC IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_MDC_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_MDC_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_MDC_FLEXIO2_FLEXIO14 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_MDC_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_MDC_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_MDC_GPIO4_IO14 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_MDC_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_MDC_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_MDIO_NETC_MDIO IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_MDIO_OFFSET, 0x0, IOMUXC_NETC_CMPLX_EMDIO_IN_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_ENET2_MDIO_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_MDIO_LPUART4_RIN_B IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_MDIO_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_MDIO_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_MDIO_SAI2_RX_BCLK IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_MDIO_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_MDIO_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_MDIO_FLEXIO2_FLEXIO15 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_MDIO_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_MDIO_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_MDIO_GPIO4_IO15 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_MDIO_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_MDIO_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_TD3_ETH1_RGMII_TD3 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_TD3_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_TD3_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_TD3_SAI2_RX_DATA00 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_TD3_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_TD3_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_TD3_FLEXIO2_FLEXIO16 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_TD3_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_TD3_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_TD3_GPIO4_IO16 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_TD3_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_TD3_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_TD2_ETH1_RGMII_TD2 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_TD2_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_TD2_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_TD2_ETH1_RMII_REF50_CLK IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_TD2_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_TD2_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_TD2_SAI2_RX_DATA01 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_TD2_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_TD2_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_TD2_SAI4_TX_SYNC IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_TD2_OFFSET, 0x3, IOMUXC_SAI4_IPP_IND_SAI_TXSYNC_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_ENET2_TD2_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_TD2_FLEXIO2_FLEXIO17 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_TD2_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_TD2_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_TD2_GPIO4_IO17 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_TD2_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_TD2_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_TD1_ETH1_RGMII_TD1 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_TD1_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_TD1_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_TD1_LPUART4_RTS_B IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_TD1_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_TD1_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_TD1_SAI2_RX_DATA02 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_TD1_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_TD1_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_TD1_SAI4_TX_BCLK IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_TD1_OFFSET, 0x3, IOMUXC_SAI4_IPP_IND_SAI_TXBCLK_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_ENET2_TD1_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_TD1_FLEXIO2_FLEXIO18 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_TD1_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_TD1_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_TD1_GPIO4_IO18 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_TD1_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_TD1_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_TD1_ETH1_RMII_TXD1 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_TD1_OFFSET, 0x6, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_TD1_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_TD0_ETH1_RGMII_TD0 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_TD0_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_TD0_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_TD0_LPUART4_TX IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_TD0_OFFSET, 0x1, IOMUXC_LPUART4_IPP_IND_LPUART_TXD_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_ENET2_TD0_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_TD0_SAI2_RX_DATA03 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_TD0_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_TD0_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_TD0_SAI4_TX_DATA00 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_TD0_OFFSET, 0x3, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_TD0_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_TD0_FLEXIO2_FLEXIO19 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_TD0_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_TD0_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_TD0_GPIO4_IO19 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_TD0_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_TD0_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_TD0_ETH1_RMII_TXD0 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_TD0_OFFSET, 0x6, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_TD0_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_TX_CTL_ETH1_RGMII_TX_CTL IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_TX_CTL_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_TX_CTL_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_TX_CTL_LPUART4_DTR_B IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_TX_CTL_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_TX_CTL_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_TX_CTL_SAI2_TX_SYNC IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_TX_CTL_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_TX_CTL_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_TX_CTL_ETH1_RMII_TX_EN IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_TX_CTL_OFFSET, 0x3, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_TX_CTL_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_TX_CTL_FLEXIO2_FLEXIO20 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_TX_CTL_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_TX_CTL_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_TX_CTL_GPIO4_IO20 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_TX_CTL_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_TX_CTL_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_TXC_ETH1_RGMII_TX_CLK IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_TXC_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_TXC_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_TXC_ENET_CLK_ROOT IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_TXC_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_TXC_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_TXC_SAI2_TX_BCLK IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_TXC_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_TXC_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_TXC_FLEXIO2_FLEXIO21 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_TXC_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_TXC_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_TXC_GPIO4_IO21 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_TXC_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_TXC_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_RX_CTL_ETH1_RGMII_RX_CTL IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_RX_CTL_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_RX_CTL_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_RX_CTL_LPUART4_DSR_B IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_RX_CTL_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_RX_CTL_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_RX_CTL_SAI2_TX_DATA00 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_RX_CTL_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_RX_CTL_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_RX_CTL_FLEXIO2_FLEXIO22 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_RX_CTL_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_RX_CTL_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_RX_CTL_GPIO4_IO22 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_RX_CTL_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_RX_CTL_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_RX_CTL_ETH1_RMII_CRS_DV IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_RX_CTL_OFFSET, 0x6, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_RX_CTL_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_RXC_ETH1_RGMII_RX_CLK IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_RXC_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_RXC_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_RXC_ETH1_RMII_RX_ER IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_RXC_OFFSET, 0x1, IOMUXC_NETC_CMPLX_ETH1_RMII_RX_ER_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_ENET2_RXC_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_RXC_SAI2_TX_DATA01 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_RXC_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_RXC_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_RXC_SAI4_RX_SYNC IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_RXC_OFFSET, 0x3, IOMUXC_SAI4_IPP_IND_SAI_RXSYNC_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_ENET2_RXC_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_RXC_FLEXIO2_FLEXIO23 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_RXC_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_RXC_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_RXC_GPIO4_IO23 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_RXC_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_RXC_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_RD0_ETH1_RGMII_RD0 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_RD0_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_RD0_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_RD0_LPUART4_RX IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_RD0_OFFSET, 0x1, IOMUXC_LPUART4_IPP_IND_LPUART_RXD_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_ENET2_RD0_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_RD0_SAI2_TX_DATA02 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_RD0_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_RD0_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_RD0_SAI4_RX_BCLK IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_RD0_OFFSET, 0x3, IOMUXC_SAI4_IPP_IND_SAI_RXBCLK_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_ENET2_RD0_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_RD0_FLEXIO2_FLEXIO24 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_RD0_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_RD0_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_RD0_GPIO4_IO24 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_RD0_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_RD0_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_RD0_ETH1_RMII_RXD0 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_RD0_OFFSET, 0x6, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_RD0_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_RD1_ETH1_RGMII_RD1 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_RD1_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_RD1_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_RD1_SPDIF_IN IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_RD1_OFFSET, 0x1, IOMUXC_EARC_PHY_SPDIF_IN_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_ENET2_RD1_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_RD1_SAI2_TX_DATA03 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_RD1_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_RD1_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_RD1_SAI4_RX_DATA00 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_RD1_OFFSET, 0x3, IOMUXC_SAI4_IPP_IND_SAI_RXDATA_SELECT_INPUT_0_OFFSET, 0x0, IOMUXC_PAD_CTL_ENET2_RD1_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_RD1_FLEXIO2_FLEXIO25 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_RD1_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_RD1_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_RD1_GPIO4_IO25 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_RD1_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_RD1_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_RD1_ETH1_RMII_RXD1 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_RD1_OFFSET, 0x6, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_RD1_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_RD2_ETH1_RGMII_RD2 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_RD2_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_RD2_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_RD2_LPUART4_CTS_B IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_RD2_OFFSET, 0x1, IOMUXC_LPUART4_IPP_IND_LPUART_CTS_N_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_ENET2_RD2_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_RD2_SAI2_MCLK IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_RD2_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_RD2_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_RD2_MQS2_RIGHT IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_RD2_OFFSET, 0x3, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_RD2_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_RD2_FLEXIO2_FLEXIO26 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_RD2_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_RD2_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_RD2_GPIO4_IO26 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_RD2_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_RD2_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_RD2_ETH1_RMII_RX_ER IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_RD2_OFFSET, 0x6, IOMUXC_NETC_CMPLX_ETH1_RMII_RX_ER_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_ENET2_RD2_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_RD3_ETH1_RGMII_RD3 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_RD3_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_RD3_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_RD3_SPDIF_OUT IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_RD3_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_RD3_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_RD3_SPDIF_IN IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_RD3_OFFSET, 0x2, IOMUXC_EARC_PHY_SPDIF_IN_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_ENET2_RD3_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_RD3_MQS2_LEFT IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_RD3_OFFSET, 0x3, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_RD3_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_RD3_FLEXIO2_FLEXIO27 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_RD3_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_RD3_OFFSET)
|
||||
#define IOMUXC_PAD_ENET2_RD3_GPIO4_IO27 IOMUX_PADCFG(IOMUXC_MUX_CTL_ENET2_RD3_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_ENET2_RD3_OFFSET)
|
||||
#define IOMUXC_PAD_SD1_CLK_USDHC1_CLK IOMUX_PADCFG(IOMUXC_MUX_CTL_SD1_CLK_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD1_CLK_OFFSET)
|
||||
#define IOMUXC_PAD_SD1_CLK_FLEXIO1_FLEXIO08 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD1_CLK_OFFSET, 0x4, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_8_OFFSET, 0x1, IOMUXC_PAD_CTL_SD1_CLK_OFFSET)
|
||||
#define IOMUXC_PAD_SD1_CLK_GPIO3_IO08 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD1_CLK_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD1_CLK_OFFSET)
|
||||
#define IOMUXC_PAD_SD1_CMD_USDHC1_CMD IOMUX_PADCFG(IOMUXC_MUX_CTL_SD1_CMD_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD1_CMD_OFFSET)
|
||||
#define IOMUXC_PAD_SD1_CMD_FLEXIO1_FLEXIO09 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD1_CMD_OFFSET, 0x4, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_9_OFFSET, 0x1, IOMUXC_PAD_CTL_SD1_CMD_OFFSET)
|
||||
#define IOMUXC_PAD_SD1_CMD_GPIO3_IO09 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD1_CMD_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD1_CMD_OFFSET)
|
||||
#define IOMUXC_PAD_SD1_DATA0_USDHC1_DATA0 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD1_DATA0_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD1_DATA0_OFFSET)
|
||||
#define IOMUXC_PAD_SD1_DATA0_FLEXIO1_FLEXIO10 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD1_DATA0_OFFSET, 0x4, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_10_OFFSET, 0x1, IOMUXC_PAD_CTL_SD1_DATA0_OFFSET)
|
||||
#define IOMUXC_PAD_SD1_DATA0_GPIO3_IO10 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD1_DATA0_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD1_DATA0_OFFSET)
|
||||
#define IOMUXC_PAD_SD1_DATA1_USDHC1_DATA1 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD1_DATA1_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD1_DATA1_OFFSET)
|
||||
#define IOMUXC_PAD_SD1_DATA1_FLEXIO1_FLEXIO11 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD1_DATA1_OFFSET, 0x4, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_11_OFFSET, 0x1, IOMUXC_PAD_CTL_SD1_DATA1_OFFSET)
|
||||
#define IOMUXC_PAD_SD1_DATA1_GPIO3_IO11 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD1_DATA1_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD1_DATA1_OFFSET)
|
||||
#define IOMUXC_PAD_SD1_DATA2_USDHC1_DATA2 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD1_DATA2_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD1_DATA2_OFFSET)
|
||||
#define IOMUXC_PAD_SD1_DATA2_FLEXIO1_FLEXIO12 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD1_DATA2_OFFSET, 0x4, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_12_OFFSET, 0x1, IOMUXC_PAD_CTL_SD1_DATA2_OFFSET)
|
||||
#define IOMUXC_PAD_SD1_DATA2_GPIO3_IO12 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD1_DATA2_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD1_DATA2_OFFSET)
|
||||
#define IOMUXC_PAD_SD1_DATA3_USDHC1_DATA3 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD1_DATA3_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD1_DATA3_OFFSET)
|
||||
#define IOMUXC_PAD_SD1_DATA3_FLEXSPI1_A_SS1_B IOMUX_PADCFG(IOMUXC_MUX_CTL_SD1_DATA3_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD1_DATA3_OFFSET)
|
||||
#define IOMUXC_PAD_SD1_DATA3_FLEXIO1_FLEXIO13 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD1_DATA3_OFFSET, 0x4, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_13_OFFSET, 0x1, IOMUXC_PAD_CTL_SD1_DATA3_OFFSET)
|
||||
#define IOMUXC_PAD_SD1_DATA3_GPIO3_IO13 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD1_DATA3_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD1_DATA3_OFFSET)
|
||||
#define IOMUXC_PAD_SD1_DATA4_USDHC1_DATA4 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD1_DATA4_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD1_DATA4_OFFSET)
|
||||
#define IOMUXC_PAD_SD1_DATA4_FLEXSPI1_A_DATA04 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD1_DATA4_OFFSET, 0x1, IOMUXC_FLEXSPI1_I_IPP_IND_IO_FA_SELECT_INPUT_4_OFFSET, 0x0, IOMUXC_PAD_CTL_SD1_DATA4_OFFSET)
|
||||
#define IOMUXC_PAD_SD1_DATA4_FLEXIO1_FLEXIO14 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD1_DATA4_OFFSET, 0x4, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_14_OFFSET, 0x1, IOMUXC_PAD_CTL_SD1_DATA4_OFFSET)
|
||||
#define IOMUXC_PAD_SD1_DATA4_GPIO3_IO14 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD1_DATA4_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD1_DATA4_OFFSET)
|
||||
#define IOMUXC_PAD_SD1_DATA4_XSPI_DATA04 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD1_DATA4_OFFSET, 0x6, IOMUXC_XSPI_SLV_IPP_IND_IO_SELECT_INPUT_4_OFFSET, 0x0, IOMUXC_PAD_CTL_SD1_DATA4_OFFSET)
|
||||
#define IOMUXC_PAD_SD1_DATA5_USDHC1_DATA5 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD1_DATA5_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD1_DATA5_OFFSET)
|
||||
#define IOMUXC_PAD_SD1_DATA5_FLEXSPI1_A_DATA05 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD1_DATA5_OFFSET, 0x1, IOMUXC_FLEXSPI1_I_IPP_IND_IO_FA_SELECT_INPUT_5_OFFSET, 0x0, IOMUXC_PAD_CTL_SD1_DATA5_OFFSET)
|
||||
#define IOMUXC_PAD_SD1_DATA5_USDHC1_RESET_B IOMUX_PADCFG(IOMUXC_MUX_CTL_SD1_DATA5_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD1_DATA5_OFFSET)
|
||||
#define IOMUXC_PAD_SD1_DATA5_FLEXIO1_FLEXIO15 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD1_DATA5_OFFSET, 0x4, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_15_OFFSET, 0x1, IOMUXC_PAD_CTL_SD1_DATA5_OFFSET)
|
||||
#define IOMUXC_PAD_SD1_DATA5_GPIO3_IO15 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD1_DATA5_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD1_DATA5_OFFSET)
|
||||
#define IOMUXC_PAD_SD1_DATA5_XSPI_DATA05 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD1_DATA5_OFFSET, 0x6, IOMUXC_XSPI_SLV_IPP_IND_IO_SELECT_INPUT_5_OFFSET, 0x0, IOMUXC_PAD_CTL_SD1_DATA5_OFFSET)
|
||||
#define IOMUXC_PAD_SD1_DATA6_USDHC1_DATA6 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD1_DATA6_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD1_DATA6_OFFSET)
|
||||
#define IOMUXC_PAD_SD1_DATA6_FLEXSPI1_A_DATA06 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD1_DATA6_OFFSET, 0x1, IOMUXC_FLEXSPI1_I_IPP_IND_IO_FA_SELECT_INPUT_6_OFFSET, 0x0, IOMUXC_PAD_CTL_SD1_DATA6_OFFSET)
|
||||
#define IOMUXC_PAD_SD1_DATA6_USDHC1_CD_B IOMUX_PADCFG(IOMUXC_MUX_CTL_SD1_DATA6_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD1_DATA6_OFFSET)
|
||||
#define IOMUXC_PAD_SD1_DATA6_FLEXIO1_FLEXIO16 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD1_DATA6_OFFSET, 0x4, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_16_OFFSET, 0x1, IOMUXC_PAD_CTL_SD1_DATA6_OFFSET)
|
||||
#define IOMUXC_PAD_SD1_DATA6_GPIO3_IO16 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD1_DATA6_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD1_DATA6_OFFSET)
|
||||
#define IOMUXC_PAD_SD1_DATA6_XSPI_DATA06 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD1_DATA6_OFFSET, 0x6, IOMUXC_XSPI_SLV_IPP_IND_IO_SELECT_INPUT_6_OFFSET, 0x0, IOMUXC_PAD_CTL_SD1_DATA6_OFFSET)
|
||||
#define IOMUXC_PAD_SD1_DATA7_USDHC1_DATA7 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD1_DATA7_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD1_DATA7_OFFSET)
|
||||
#define IOMUXC_PAD_SD1_DATA7_FLEXSPI1_A_DATA07 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD1_DATA7_OFFSET, 0x1, IOMUXC_FLEXSPI1_I_IPP_IND_IO_FA_SELECT_INPUT_7_OFFSET, 0x0, IOMUXC_PAD_CTL_SD1_DATA7_OFFSET)
|
||||
#define IOMUXC_PAD_SD1_DATA7_USDHC1_WP IOMUX_PADCFG(IOMUXC_MUX_CTL_SD1_DATA7_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD1_DATA7_OFFSET)
|
||||
#define IOMUXC_PAD_SD1_DATA7_FLEXIO1_FLEXIO17 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD1_DATA7_OFFSET, 0x4, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_17_OFFSET, 0x1, IOMUXC_PAD_CTL_SD1_DATA7_OFFSET)
|
||||
#define IOMUXC_PAD_SD1_DATA7_GPIO3_IO17 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD1_DATA7_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD1_DATA7_OFFSET)
|
||||
#define IOMUXC_PAD_SD1_DATA7_XSPI_DATA07 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD1_DATA7_OFFSET, 0x6, IOMUXC_XSPI_SLV_IPP_IND_IO_SELECT_INPUT_7_OFFSET, 0x0, IOMUXC_PAD_CTL_SD1_DATA7_OFFSET)
|
||||
#define IOMUXC_PAD_SD1_STROBE_USDHC1_STROBE IOMUX_PADCFG(IOMUXC_MUX_CTL_SD1_STROBE_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD1_STROBE_OFFSET)
|
||||
#define IOMUXC_PAD_SD1_STROBE_FLEXSPI1_A_DQS IOMUX_PADCFG(IOMUXC_MUX_CTL_SD1_STROBE_OFFSET, 0x1, IOMUXC_FLEXSPI1_I_IPP_IND_DQS_FA_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_SD1_STROBE_OFFSET)
|
||||
#define IOMUXC_PAD_SD1_STROBE_FLEXIO1_FLEXIO18 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD1_STROBE_OFFSET, 0x4, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_18_OFFSET, 0x1, IOMUXC_PAD_CTL_SD1_STROBE_OFFSET)
|
||||
#define IOMUXC_PAD_SD1_STROBE_GPIO3_IO18 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD1_STROBE_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD1_STROBE_OFFSET)
|
||||
#define IOMUXC_PAD_SD1_STROBE_XSPI_DQS IOMUX_PADCFG(IOMUXC_MUX_CTL_SD1_STROBE_OFFSET, 0x6, IOMUXC_XSPI_IPP_IND_DQS_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_SD1_STROBE_OFFSET)
|
||||
#define IOMUXC_PAD_SD2_VSELECT_USDHC2_VSELECT IOMUX_PADCFG(IOMUXC_MUX_CTL_SD2_VSELECT_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD2_VSELECT_OFFSET)
|
||||
#define IOMUXC_PAD_SD2_VSELECT_USDHC2_WP IOMUX_PADCFG(IOMUXC_MUX_CTL_SD2_VSELECT_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD2_VSELECT_OFFSET)
|
||||
#define IOMUXC_PAD_SD2_VSELECT_LPTMR2_ALT3 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD2_VSELECT_OFFSET, 0x2, IOMUXC_LPTMR2_IPP_IND_LPTIMER_SELECT_INPUT_2_OFFSET, 0x1, IOMUXC_PAD_CTL_SD2_VSELECT_OFFSET)
|
||||
#define IOMUXC_PAD_SD2_VSELECT_FLEXIO1_FLEXIO19 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD2_VSELECT_OFFSET, 0x4, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_19_OFFSET, 0x1, IOMUXC_PAD_CTL_SD2_VSELECT_OFFSET)
|
||||
#define IOMUXC_PAD_SD2_VSELECT_GPIO3_IO19 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD2_VSELECT_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD2_VSELECT_OFFSET)
|
||||
#define IOMUXC_PAD_SD3_CLK_USDHC3_CLK IOMUX_PADCFG(IOMUXC_MUX_CTL_SD3_CLK_OFFSET, 0x0, IOMUXC_USDHC3_IPP_CARD_CLK_IN_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_SD3_CLK_OFFSET)
|
||||
#define IOMUXC_PAD_SD3_CLK_FLEXSPI1_A_SCLK IOMUX_PADCFG(IOMUXC_MUX_CTL_SD3_CLK_OFFSET, 0x1, IOMUXC_FLEXSPI1_I_IPP_IND_SCK_FA_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_SD3_CLK_OFFSET)
|
||||
#define IOMUXC_PAD_SD3_CLK_SAI5_TX_DATA01 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD3_CLK_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD3_CLK_OFFSET)
|
||||
#define IOMUXC_PAD_SD3_CLK_SAI5_RX_DATA00 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD3_CLK_OFFSET, 0x3, IOMUXC_SAI5_IPP_IND_SAI_RXDATA_SELECT_INPUT_0_OFFSET, 0x0, IOMUXC_PAD_CTL_SD3_CLK_OFFSET)
|
||||
#define IOMUXC_PAD_SD3_CLK_FLEXIO1_FLEXIO20 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD3_CLK_OFFSET, 0x4, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_20_OFFSET, 0x1, IOMUXC_PAD_CTL_SD3_CLK_OFFSET)
|
||||
#define IOMUXC_PAD_SD3_CLK_GPIO3_IO20 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD3_CLK_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD3_CLK_OFFSET)
|
||||
#define IOMUXC_PAD_SD3_CLK_XSPI_CLK IOMUX_PADCFG(IOMUXC_MUX_CTL_SD3_CLK_OFFSET, 0x6, IOMUXC_XSPI_IPP_IND_SCK_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_SD3_CLK_OFFSET)
|
||||
#define IOMUXC_PAD_SD3_CMD_USDHC3_CMD IOMUX_PADCFG(IOMUXC_MUX_CTL_SD3_CMD_OFFSET, 0x0, IOMUXC_USDHC3_IPP_CMD_IN_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_SD3_CMD_OFFSET)
|
||||
#define IOMUXC_PAD_SD3_CMD_FLEXSPI1_A_SS0_B IOMUX_PADCFG(IOMUXC_MUX_CTL_SD3_CMD_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD3_CMD_OFFSET)
|
||||
#define IOMUXC_PAD_SD3_CMD_SAI5_TX_DATA02 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD3_CMD_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD3_CMD_OFFSET)
|
||||
#define IOMUXC_PAD_SD3_CMD_SAI5_RX_SYNC IOMUX_PADCFG(IOMUXC_MUX_CTL_SD3_CMD_OFFSET, 0x3, IOMUXC_SAI5_IPP_IND_SAI_RXSYNC_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_SD3_CMD_OFFSET)
|
||||
#define IOMUXC_PAD_SD3_CMD_FLEXIO1_FLEXIO21 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD3_CMD_OFFSET, 0x4, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_21_OFFSET, 0x1, IOMUXC_PAD_CTL_SD3_CMD_OFFSET)
|
||||
#define IOMUXC_PAD_SD3_CMD_GPIO3_IO21 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD3_CMD_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD3_CMD_OFFSET)
|
||||
#define IOMUXC_PAD_SD3_CMD_XSPI_CS IOMUX_PADCFG(IOMUXC_MUX_CTL_SD3_CMD_OFFSET, 0x6, IOMUXC_XSPI_IPP_IND_CS_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_SD3_CMD_OFFSET)
|
||||
#define IOMUXC_PAD_SD3_DATA0_USDHC3_DATA0 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD3_DATA0_OFFSET, 0x0, IOMUXC_USDHC3_IPP_DAT0_IN_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_SD3_DATA0_OFFSET)
|
||||
#define IOMUXC_PAD_SD3_DATA0_FLEXSPI1_A_DATA00 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD3_DATA0_OFFSET, 0x1, IOMUXC_FLEXSPI1_I_IPP_IND_IO_FA_SELECT_INPUT_0_OFFSET, 0x0, IOMUXC_PAD_CTL_SD3_DATA0_OFFSET)
|
||||
#define IOMUXC_PAD_SD3_DATA0_SAI5_TX_DATA03 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD3_DATA0_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD3_DATA0_OFFSET)
|
||||
#define IOMUXC_PAD_SD3_DATA0_SAI5_RX_BCLK IOMUX_PADCFG(IOMUXC_MUX_CTL_SD3_DATA0_OFFSET, 0x3, IOMUXC_SAI5_IPP_IND_SAI_RXBCLK_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_SD3_DATA0_OFFSET)
|
||||
#define IOMUXC_PAD_SD3_DATA0_FLEXIO1_FLEXIO22 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD3_DATA0_OFFSET, 0x4, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_22_OFFSET, 0x1, IOMUXC_PAD_CTL_SD3_DATA0_OFFSET)
|
||||
#define IOMUXC_PAD_SD3_DATA0_GPIO3_IO22 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD3_DATA0_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD3_DATA0_OFFSET)
|
||||
#define IOMUXC_PAD_SD3_DATA0_XSPI_DATA00 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD3_DATA0_OFFSET, 0x6, IOMUXC_XSPI_SLV_IPP_IND_IO_SELECT_INPUT_0_OFFSET, 0x0, IOMUXC_PAD_CTL_SD3_DATA0_OFFSET)
|
||||
#define IOMUXC_PAD_SD3_DATA1_USDHC3_DATA1 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD3_DATA1_OFFSET, 0x0, IOMUXC_USDHC3_IPP_DAT1_IN_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_SD3_DATA1_OFFSET)
|
||||
#define IOMUXC_PAD_SD3_DATA1_FLEXSPI1_A_DATA01 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD3_DATA1_OFFSET, 0x1, IOMUXC_FLEXSPI1_I_IPP_IND_IO_FA_SELECT_INPUT_1_OFFSET, 0x0, IOMUXC_PAD_CTL_SD3_DATA1_OFFSET)
|
||||
#define IOMUXC_PAD_SD3_DATA1_SAI5_RX_DATA01 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD3_DATA1_OFFSET, 0x2, IOMUXC_SAI5_IPP_IND_SAI_RXDATA_SELECT_INPUT_1_OFFSET, 0x0, IOMUXC_PAD_CTL_SD3_DATA1_OFFSET)
|
||||
#define IOMUXC_PAD_SD3_DATA1_SAI5_TX_DATA00 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD3_DATA1_OFFSET, 0x3, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD3_DATA1_OFFSET)
|
||||
#define IOMUXC_PAD_SD3_DATA1_FLEXIO1_FLEXIO23 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD3_DATA1_OFFSET, 0x4, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_23_OFFSET, 0x1, IOMUXC_PAD_CTL_SD3_DATA1_OFFSET)
|
||||
#define IOMUXC_PAD_SD3_DATA1_GPIO3_IO23 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD3_DATA1_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD3_DATA1_OFFSET)
|
||||
#define IOMUXC_PAD_SD3_DATA1_XSPI_DATA01 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD3_DATA1_OFFSET, 0x6, IOMUXC_XSPI_SLV_IPP_IND_IO_SELECT_INPUT_1_OFFSET, 0x0, IOMUXC_PAD_CTL_SD3_DATA1_OFFSET)
|
||||
#define IOMUXC_PAD_SD3_DATA2_USDHC3_DATA2 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD3_DATA2_OFFSET, 0x0, IOMUXC_USDHC3_IPP_DAT2_IN_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_SD3_DATA2_OFFSET)
|
||||
#define IOMUXC_PAD_SD3_DATA2_FLEXSPI1_A_DATA02 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD3_DATA2_OFFSET, 0x1, IOMUXC_FLEXSPI1_I_IPP_IND_IO_FA_SELECT_INPUT_2_OFFSET, 0x0, IOMUXC_PAD_CTL_SD3_DATA2_OFFSET)
|
||||
#define IOMUXC_PAD_SD3_DATA2_SAI5_RX_DATA02 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD3_DATA2_OFFSET, 0x2, IOMUXC_SAI5_IPP_IND_SAI_RXDATA_SELECT_INPUT_2_OFFSET, 0x0, IOMUXC_PAD_CTL_SD3_DATA2_OFFSET)
|
||||
#define IOMUXC_PAD_SD3_DATA2_SAI5_TX_SYNC IOMUX_PADCFG(IOMUXC_MUX_CTL_SD3_DATA2_OFFSET, 0x3, IOMUXC_SAI5_IPP_IND_SAI_TXSYNC_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_SD3_DATA2_OFFSET)
|
||||
#define IOMUXC_PAD_SD3_DATA2_FLEXIO1_FLEXIO24 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD3_DATA2_OFFSET, 0x4, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_24_OFFSET, 0x1, IOMUXC_PAD_CTL_SD3_DATA2_OFFSET)
|
||||
#define IOMUXC_PAD_SD3_DATA2_GPIO3_IO24 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD3_DATA2_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD3_DATA2_OFFSET)
|
||||
#define IOMUXC_PAD_SD3_DATA2_XSPI_DATA02 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD3_DATA2_OFFSET, 0x6, IOMUXC_XSPI_SLV_IPP_IND_IO_SELECT_INPUT_2_OFFSET, 0x0, IOMUXC_PAD_CTL_SD3_DATA2_OFFSET)
|
||||
#define IOMUXC_PAD_SD3_DATA3_USDHC3_DATA3 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD3_DATA3_OFFSET, 0x0, IOMUXC_USDHC3_IPP_DAT3_IN_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_SD3_DATA3_OFFSET)
|
||||
#define IOMUXC_PAD_SD3_DATA3_FLEXSPI1_A_DATA03 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD3_DATA3_OFFSET, 0x1, IOMUXC_FLEXSPI1_I_IPP_IND_IO_FA_SELECT_INPUT_3_OFFSET, 0x0, IOMUXC_PAD_CTL_SD3_DATA3_OFFSET)
|
||||
#define IOMUXC_PAD_SD3_DATA3_SAI5_RX_DATA03 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD3_DATA3_OFFSET, 0x2, IOMUXC_SAI5_IPP_IND_SAI_RXDATA_SELECT_INPUT_3_OFFSET, 0x0, IOMUXC_PAD_CTL_SD3_DATA3_OFFSET)
|
||||
#define IOMUXC_PAD_SD3_DATA3_SAI5_TX_BCLK IOMUX_PADCFG(IOMUXC_MUX_CTL_SD3_DATA3_OFFSET, 0x3, IOMUXC_SAI5_IPP_IND_SAI_TXBCLK_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_SD3_DATA3_OFFSET)
|
||||
#define IOMUXC_PAD_SD3_DATA3_FLEXIO1_FLEXIO25 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD3_DATA3_OFFSET, 0x4, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_25_OFFSET, 0x1, IOMUXC_PAD_CTL_SD3_DATA3_OFFSET)
|
||||
#define IOMUXC_PAD_SD3_DATA3_GPIO3_IO25 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD3_DATA3_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD3_DATA3_OFFSET)
|
||||
#define IOMUXC_PAD_SD3_DATA3_XSPI_DATA03 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD3_DATA3_OFFSET, 0x6, IOMUXC_XSPI_SLV_IPP_IND_IO_SELECT_INPUT_3_OFFSET, 0x0, IOMUXC_PAD_CTL_SD3_DATA3_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_DATA0_FLEXSPI1_A_DATA00 IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_DATA0_OFFSET, 0x0, IOMUXC_FLEXSPI1_I_IPP_IND_IO_FA_SELECT_INPUT_0_OFFSET, 0x1, IOMUXC_PAD_CTL_XSPI1_DATA0_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_DATA0_SAI2_TX_DATA04 IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_DATA0_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_XSPI1_DATA0_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_DATA0_SAI4_TX_BCLK IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_DATA0_OFFSET, 0x2, IOMUXC_SAI4_IPP_IND_SAI_TXBCLK_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_XSPI1_DATA0_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_DATA0_SAI4_RX_DATA01 IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_DATA0_OFFSET, 0x3, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_XSPI1_DATA0_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_DATA0_XSPI_DATA00 IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_DATA0_OFFSET, 0x4, IOMUXC_XSPI_SLV_IPP_IND_IO_SELECT_INPUT_0_OFFSET, 0x1, IOMUXC_PAD_CTL_XSPI1_DATA0_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_DATA0_GPIO5_IO00 IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_DATA0_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_XSPI1_DATA0_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_DATA1_FLEXSPI1_A_DATA01 IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_DATA1_OFFSET, 0x0, IOMUXC_FLEXSPI1_I_IPP_IND_IO_FA_SELECT_INPUT_1_OFFSET, 0x1, IOMUXC_PAD_CTL_XSPI1_DATA1_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_DATA1_SAI2_TX_DATA05 IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_DATA1_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_XSPI1_DATA1_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_DATA1_SAI4_TX_SYNC IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_DATA1_OFFSET, 0x2, IOMUXC_SAI4_IPP_IND_SAI_TXSYNC_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_XSPI1_DATA1_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_DATA1_SAI4_TX_DATA01 IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_DATA1_OFFSET, 0x3, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_XSPI1_DATA1_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_DATA1_XSPI_DATA01 IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_DATA1_OFFSET, 0x4, IOMUXC_XSPI_SLV_IPP_IND_IO_SELECT_INPUT_1_OFFSET, 0x1, IOMUXC_PAD_CTL_XSPI1_DATA1_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_DATA1_GPIO5_IO01 IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_DATA1_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_XSPI1_DATA1_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_DATA2_FLEXSPI1_A_DATA02 IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_DATA2_OFFSET, 0x0, IOMUXC_FLEXSPI1_I_IPP_IND_IO_FA_SELECT_INPUT_2_OFFSET, 0x1, IOMUXC_PAD_CTL_XSPI1_DATA2_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_DATA2_SAI2_TX_DATA06 IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_DATA2_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_XSPI1_DATA2_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_DATA2_SAI4_TX_DATA00 IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_DATA2_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_XSPI1_DATA2_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_DATA2_XSPI_DATA02 IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_DATA2_OFFSET, 0x4, IOMUXC_XSPI_SLV_IPP_IND_IO_SELECT_INPUT_2_OFFSET, 0x1, IOMUXC_PAD_CTL_XSPI1_DATA2_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_DATA2_GPIO5_IO02 IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_DATA2_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_XSPI1_DATA2_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_DATA3_FLEXSPI1_A_DATA03 IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_DATA3_OFFSET, 0x0, IOMUXC_FLEXSPI1_I_IPP_IND_IO_FA_SELECT_INPUT_3_OFFSET, 0x1, IOMUXC_PAD_CTL_XSPI1_DATA3_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_DATA3_SAI2_TX_DATA07 IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_DATA3_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_XSPI1_DATA3_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_DATA3_SAI4_RX_DATA00 IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_DATA3_OFFSET, 0x2, IOMUXC_SAI4_IPP_IND_SAI_RXDATA_SELECT_INPUT_0_OFFSET, 0x1, IOMUXC_PAD_CTL_XSPI1_DATA3_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_DATA3_XSPI_DATA03 IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_DATA3_OFFSET, 0x4, IOMUXC_XSPI_SLV_IPP_IND_IO_SELECT_INPUT_3_OFFSET, 0x1, IOMUXC_PAD_CTL_XSPI1_DATA3_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_DATA3_GPIO5_IO03 IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_DATA3_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_XSPI1_DATA3_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_DATA4_FLEXSPI1_A_DATA04 IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_DATA4_OFFSET, 0x0, IOMUXC_FLEXSPI1_I_IPP_IND_IO_FA_SELECT_INPUT_4_OFFSET, 0x1, IOMUXC_PAD_CTL_XSPI1_DATA4_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_DATA4_SAI5_TX_DATA00 IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_DATA4_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_XSPI1_DATA4_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_DATA4_SAI5_RX_DATA01 IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_DATA4_OFFSET, 0x2, IOMUXC_SAI5_IPP_IND_SAI_RXDATA_SELECT_INPUT_1_OFFSET, 0x1, IOMUXC_PAD_CTL_XSPI1_DATA4_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_DATA4_XSPI_DATA04 IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_DATA4_OFFSET, 0x4, IOMUXC_XSPI_SLV_IPP_IND_IO_SELECT_INPUT_4_OFFSET, 0x1, IOMUXC_PAD_CTL_XSPI1_DATA4_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_DATA4_GPIO5_IO04 IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_DATA4_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_XSPI1_DATA4_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_DATA5_FLEXSPI1_A_DATA05 IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_DATA5_OFFSET, 0x0, IOMUXC_FLEXSPI1_I_IPP_IND_IO_FA_SELECT_INPUT_5_OFFSET, 0x1, IOMUXC_PAD_CTL_XSPI1_DATA5_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_DATA5_SAI5_TX_SYNC IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_DATA5_OFFSET, 0x1, IOMUXC_SAI5_IPP_IND_SAI_TXSYNC_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_XSPI1_DATA5_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_DATA5_SAI5_RX_DATA02 IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_DATA5_OFFSET, 0x2, IOMUXC_SAI5_IPP_IND_SAI_RXDATA_SELECT_INPUT_2_OFFSET, 0x1, IOMUXC_PAD_CTL_XSPI1_DATA5_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_DATA5_SAI2_RX_DATA06 IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_DATA5_OFFSET, 0x3, IOMUXC_SAI2_IPP_IND_SAI_RXDATA_SELECT_INPUT_6_OFFSET, 0x0, IOMUXC_PAD_CTL_XSPI1_DATA5_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_DATA5_XSPI_DATA05 IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_DATA5_OFFSET, 0x4, IOMUXC_XSPI_SLV_IPP_IND_IO_SELECT_INPUT_5_OFFSET, 0x1, IOMUXC_PAD_CTL_XSPI1_DATA5_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_DATA5_GPIO5_IO05 IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_DATA5_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_XSPI1_DATA5_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_DATA6_FLEXSPI1_A_DATA06 IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_DATA6_OFFSET, 0x0, IOMUXC_FLEXSPI1_I_IPP_IND_IO_FA_SELECT_INPUT_6_OFFSET, 0x1, IOMUXC_PAD_CTL_XSPI1_DATA6_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_DATA6_SAI5_TX_BCLK IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_DATA6_OFFSET, 0x1, IOMUXC_SAI5_IPP_IND_SAI_TXBCLK_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_XSPI1_DATA6_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_DATA6_SAI5_RX_DATA03 IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_DATA6_OFFSET, 0x2, IOMUXC_SAI5_IPP_IND_SAI_RXDATA_SELECT_INPUT_3_OFFSET, 0x1, IOMUXC_PAD_CTL_XSPI1_DATA6_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_DATA6_SAI2_RX_DATA07 IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_DATA6_OFFSET, 0x3, IOMUXC_SAI2_IPP_IND_SAI_RXDATA_SELECT_INPUT_7_OFFSET, 0x0, IOMUXC_PAD_CTL_XSPI1_DATA6_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_DATA6_XSPI_DATA06 IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_DATA6_OFFSET, 0x4, IOMUXC_XSPI_SLV_IPP_IND_IO_SELECT_INPUT_6_OFFSET, 0x1, IOMUXC_PAD_CTL_XSPI1_DATA6_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_DATA6_GPIO5_IO06 IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_DATA6_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_XSPI1_DATA6_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_DATA7_FLEXSPI1_A_DATA07 IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_DATA7_OFFSET, 0x0, IOMUXC_FLEXSPI1_I_IPP_IND_IO_FA_SELECT_INPUT_7_OFFSET, 0x1, IOMUXC_PAD_CTL_XSPI1_DATA7_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_DATA7_SAI5_RX_DATA00 IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_DATA7_OFFSET, 0x1, IOMUXC_SAI5_IPP_IND_SAI_RXDATA_SELECT_INPUT_0_OFFSET, 0x1, IOMUXC_PAD_CTL_XSPI1_DATA7_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_DATA7_SAI5_TX_DATA01 IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_DATA7_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_XSPI1_DATA7_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_DATA7_XSPI_DATA07 IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_DATA7_OFFSET, 0x4, IOMUXC_XSPI_SLV_IPP_IND_IO_SELECT_INPUT_7_OFFSET, 0x1, IOMUXC_PAD_CTL_XSPI1_DATA7_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_DATA7_GPIO5_IO07 IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_DATA7_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_XSPI1_DATA7_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_DQS_FLEXSPI1_A_DQS IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_DQS_OFFSET, 0x0, IOMUXC_FLEXSPI1_I_IPP_IND_DQS_FA_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_XSPI1_DQS_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_DQS_SAI5_RX_SYNC IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_DQS_OFFSET, 0x1, IOMUXC_SAI5_IPP_IND_SAI_RXSYNC_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_XSPI1_DQS_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_DQS_SAI5_TX_DATA02 IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_DQS_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_XSPI1_DQS_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_DQS_SAI2_RX_DATA06 IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_DQS_OFFSET, 0x3, IOMUXC_SAI2_IPP_IND_SAI_RXDATA_SELECT_INPUT_6_OFFSET, 0x1, IOMUXC_PAD_CTL_XSPI1_DQS_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_DQS_XSPI_DQS IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_DQS_OFFSET, 0x4, IOMUXC_XSPI_IPP_IND_DQS_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_XSPI1_DQS_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_DQS_GPIO5_IO08 IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_DQS_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_XSPI1_DQS_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_SCLK_FLEXSPI1_A_SCLK IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_SCLK_OFFSET, 0x0, IOMUXC_FLEXSPI1_I_IPP_IND_SCK_FA_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_XSPI1_SCLK_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_SCLK_SAI2_RX_DATA04 IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_SCLK_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_XSPI1_SCLK_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_SCLK_SAI4_RX_SYNC IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_SCLK_OFFSET, 0x2, IOMUXC_SAI4_IPP_IND_SAI_RXSYNC_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_XSPI1_SCLK_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_SCLK_EARC_DC_HPD_IN IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_SCLK_OFFSET, 0x3, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_XSPI1_SCLK_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_SCLK_XSPI_CLK IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_SCLK_OFFSET, 0x4, IOMUXC_XSPI_IPP_IND_SCK_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_XSPI1_SCLK_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_SCLK_GPIO5_IO09 IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_SCLK_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_XSPI1_SCLK_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_SS0_B_FLEXSPI1_A_SS0_B IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_SS0_B_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_XSPI1_SS0_B_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_SS0_B_SAI2_RX_DATA05 IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_SS0_B_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_XSPI1_SS0_B_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_SS0_B_SAI4_RX_BCLK IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_SS0_B_OFFSET, 0x2, IOMUXC_SAI4_IPP_IND_SAI_RXBCLK_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_XSPI1_SS0_B_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_SS0_B_EARC_CEC_OUT IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_SS0_B_OFFSET, 0x3, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_XSPI1_SS0_B_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_SS0_B_XSPI_CS IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_SS0_B_OFFSET, 0x4, IOMUXC_XSPI_IPP_IND_CS_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_XSPI1_SS0_B_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_SS0_B_GPIO5_IO10 IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_SS0_B_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_XSPI1_SS0_B_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_SS1_B_FLEXSPI1_A_SS1_B IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_SS1_B_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_XSPI1_SS1_B_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_SS1_B_SAI5_RX_BCLK IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_SS1_B_OFFSET, 0x1, IOMUXC_SAI5_IPP_IND_SAI_RXBCLK_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_XSPI1_SS1_B_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_SS1_B_SAI5_TX_DATA03 IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_SS1_B_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_XSPI1_SS1_B_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_SS1_B_SAI2_RX_DATA07 IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_SS1_B_OFFSET, 0x3, IOMUXC_SAI2_IPP_IND_SAI_RXDATA_SELECT_INPUT_7_OFFSET, 0x1, IOMUXC_PAD_CTL_XSPI1_SS1_B_OFFSET)
|
||||
#define IOMUXC_PAD_XSPI1_SS1_B_GPIO5_IO11 IOMUX_PADCFG(IOMUXC_MUX_CTL_XSPI1_SS1_B_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_XSPI1_SS1_B_OFFSET)
|
||||
#define IOMUXC_PAD_SD2_CD_B_USDHC2_CD_B IOMUX_PADCFG(IOMUXC_MUX_CTL_SD2_CD_B_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD2_CD_B_OFFSET)
|
||||
#define IOMUXC_PAD_SD2_CD_B_NETC_TMR_1588_TRIG1 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD2_CD_B_OFFSET, 0x1, IOMUXC_NETC_CMPLX_TMR_1588_TRIG1_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_SD2_CD_B_OFFSET)
|
||||
#define IOMUXC_PAD_SD2_CD_B_I3C2_SCL IOMUX_PADCFG(IOMUXC_MUX_CTL_SD2_CD_B_OFFSET, 0x2, IOMUXC_I3C2_PIN_SCL_IN_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_SD2_CD_B_OFFSET)
|
||||
#define IOMUXC_PAD_SD2_CD_B_FLEXIO1_FLEXIO00 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD2_CD_B_OFFSET, 0x4, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_0_OFFSET, 0x1, IOMUXC_PAD_CTL_SD2_CD_B_OFFSET)
|
||||
#define IOMUXC_PAD_SD2_CD_B_GPIO3_IO00 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD2_CD_B_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD2_CD_B_OFFSET)
|
||||
#define IOMUXC_PAD_SD2_CLK_USDHC2_CLK IOMUX_PADCFG(IOMUXC_MUX_CTL_SD2_CLK_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD2_CLK_OFFSET)
|
||||
#define IOMUXC_PAD_SD2_CLK_NETC_TMR_1588_PP1 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD2_CLK_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD2_CLK_OFFSET)
|
||||
#define IOMUXC_PAD_SD2_CLK_I3C2_SDA IOMUX_PADCFG(IOMUXC_MUX_CTL_SD2_CLK_OFFSET, 0x2, IOMUXC_I3C2_PIN_SDA_IN_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_SD2_CLK_OFFSET)
|
||||
#define IOMUXC_PAD_SD2_CLK_FLEXIO1_FLEXIO01 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD2_CLK_OFFSET, 0x4, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_1_OFFSET, 0x1, IOMUXC_PAD_CTL_SD2_CLK_OFFSET)
|
||||
#define IOMUXC_PAD_SD2_CLK_GPIO3_IO01 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD2_CLK_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD2_CLK_OFFSET)
|
||||
#define IOMUXC_PAD_SD2_CMD_USDHC2_CMD IOMUX_PADCFG(IOMUXC_MUX_CTL_SD2_CMD_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD2_CMD_OFFSET)
|
||||
#define IOMUXC_PAD_SD2_CMD_NETC_TMR_1588_TRIG2 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD2_CMD_OFFSET, 0x1, IOMUXC_NETC_CMPLX_TMR_1588_TRIG2_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_SD2_CMD_OFFSET)
|
||||
#define IOMUXC_PAD_SD2_CMD_I3C2_PUR IOMUX_PADCFG(IOMUXC_MUX_CTL_SD2_CMD_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD2_CMD_OFFSET)
|
||||
#define IOMUXC_PAD_SD2_CMD_I3C2_PUR_B IOMUX_PADCFG(IOMUXC_MUX_CTL_SD2_CMD_OFFSET, 0x3, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD2_CMD_OFFSET)
|
||||
#define IOMUXC_PAD_SD2_CMD_FLEXIO1_FLEXIO02 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD2_CMD_OFFSET, 0x4, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_2_OFFSET, 0x1, IOMUXC_PAD_CTL_SD2_CMD_OFFSET)
|
||||
#define IOMUXC_PAD_SD2_CMD_GPIO3_IO02 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD2_CMD_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD2_CMD_OFFSET)
|
||||
#define IOMUXC_PAD_SD2_DATA0_USDHC2_DATA0 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD2_DATA0_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD2_DATA0_OFFSET)
|
||||
#define IOMUXC_PAD_SD2_DATA0_NETC_TMR_1588_PP2 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD2_DATA0_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD2_DATA0_OFFSET)
|
||||
#define IOMUXC_PAD_SD2_DATA0_CAN2_TX IOMUX_PADCFG(IOMUXC_MUX_CTL_SD2_DATA0_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD2_DATA0_OFFSET)
|
||||
#define IOMUXC_PAD_SD2_DATA0_FLEXIO1_FLEXIO03 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD2_DATA0_OFFSET, 0x4, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_3_OFFSET, 0x1, IOMUXC_PAD_CTL_SD2_DATA0_OFFSET)
|
||||
#define IOMUXC_PAD_SD2_DATA0_GPIO3_IO03 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD2_DATA0_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD2_DATA0_OFFSET)
|
||||
#define IOMUXC_PAD_SD2_DATA1_USDHC2_DATA1 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD2_DATA1_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD2_DATA1_OFFSET)
|
||||
#define IOMUXC_PAD_SD2_DATA1_NETC_TMR_1588_CLK IOMUX_PADCFG(IOMUXC_MUX_CTL_SD2_DATA1_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD2_DATA1_OFFSET)
|
||||
#define IOMUXC_PAD_SD2_DATA1_CAN2_RX IOMUX_PADCFG(IOMUXC_MUX_CTL_SD2_DATA1_OFFSET, 0x2, IOMUXC_CAN2_IPP_IND_CANRX_SELECT_INPUT_OFFSET, 0x3, IOMUXC_PAD_CTL_SD2_DATA1_OFFSET)
|
||||
#define IOMUXC_PAD_SD2_DATA1_FLEXIO1_FLEXIO04 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD2_DATA1_OFFSET, 0x4, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_4_OFFSET, 0x1, IOMUXC_PAD_CTL_SD2_DATA1_OFFSET)
|
||||
#define IOMUXC_PAD_SD2_DATA1_GPIO3_IO04 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD2_DATA1_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD2_DATA1_OFFSET)
|
||||
#define IOMUXC_PAD_SD2_DATA2_USDHC2_DATA2 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD2_DATA2_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD2_DATA2_OFFSET)
|
||||
#define IOMUXC_PAD_SD2_DATA2_NETC_TMR_1588_PP3 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD2_DATA2_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD2_DATA2_OFFSET)
|
||||
#define IOMUXC_PAD_SD2_DATA2_MQS2_RIGHT IOMUX_PADCFG(IOMUXC_MUX_CTL_SD2_DATA2_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD2_DATA2_OFFSET)
|
||||
#define IOMUXC_PAD_SD2_DATA2_FLEXIO1_FLEXIO05 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD2_DATA2_OFFSET, 0x4, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_5_OFFSET, 0x1, IOMUXC_PAD_CTL_SD2_DATA2_OFFSET)
|
||||
#define IOMUXC_PAD_SD2_DATA2_GPIO3_IO05 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD2_DATA2_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD2_DATA2_OFFSET)
|
||||
#define IOMUXC_PAD_SD2_DATA3_USDHC2_DATA3 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD2_DATA3_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD2_DATA3_OFFSET)
|
||||
#define IOMUXC_PAD_SD2_DATA3_LPTMR2_ALT1 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD2_DATA3_OFFSET, 0x1, IOMUXC_LPTMR2_IPP_IND_LPTIMER_SELECT_INPUT_0_OFFSET, 0x1, IOMUXC_PAD_CTL_SD2_DATA3_OFFSET)
|
||||
#define IOMUXC_PAD_SD2_DATA3_MQS2_LEFT IOMUX_PADCFG(IOMUXC_MUX_CTL_SD2_DATA3_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD2_DATA3_OFFSET)
|
||||
#define IOMUXC_PAD_SD2_DATA3_NETC_TMR_1588_ALARM1 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD2_DATA3_OFFSET, 0x3, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD2_DATA3_OFFSET)
|
||||
#define IOMUXC_PAD_SD2_DATA3_FLEXIO1_FLEXIO06 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD2_DATA3_OFFSET, 0x4, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_6_OFFSET, 0x1, IOMUXC_PAD_CTL_SD2_DATA3_OFFSET)
|
||||
#define IOMUXC_PAD_SD2_DATA3_GPIO3_IO06 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD2_DATA3_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD2_DATA3_OFFSET)
|
||||
#define IOMUXC_PAD_SD2_RESET_B_USDHC2_RESET_B IOMUX_PADCFG(IOMUXC_MUX_CTL_SD2_RESET_B_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD2_RESET_B_OFFSET)
|
||||
#define IOMUXC_PAD_SD2_RESET_B_LPTMR2_ALT2 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD2_RESET_B_OFFSET, 0x1, IOMUXC_LPTMR2_IPP_IND_LPTIMER_SELECT_INPUT_1_OFFSET, 0x1, IOMUXC_PAD_CTL_SD2_RESET_B_OFFSET)
|
||||
#define IOMUXC_PAD_SD2_RESET_B_NETC_TMR_1588_GCLK IOMUX_PADCFG(IOMUXC_MUX_CTL_SD2_RESET_B_OFFSET, 0x3, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD2_RESET_B_OFFSET)
|
||||
#define IOMUXC_PAD_SD2_RESET_B_FLEXIO1_FLEXIO07 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD2_RESET_B_OFFSET, 0x4, IOMUXC_FLEXIO1_IPP_IND_FLEXIO_SELECT_INPUT_7_OFFSET, 0x1, IOMUXC_PAD_CTL_SD2_RESET_B_OFFSET)
|
||||
#define IOMUXC_PAD_SD2_RESET_B_GPIO3_IO07 IOMUX_PADCFG(IOMUXC_MUX_CTL_SD2_RESET_B_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SD2_RESET_B_OFFSET)
|
||||
#define IOMUXC_PAD_I2C1_SCL_LPI2C1_SCL IOMUX_PADCFG(IOMUXC_MUX_CTL_I2C1_SCL_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_I2C1_SCL_OFFSET)
|
||||
#define IOMUXC_PAD_I2C1_SCL_I3C1_SCL IOMUX_PADCFG(IOMUXC_MUX_CTL_I2C1_SCL_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_I2C1_SCL_OFFSET)
|
||||
#define IOMUXC_PAD_I2C1_SCL_LPUART1_DCD_B IOMUX_PADCFG(IOMUXC_MUX_CTL_I2C1_SCL_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_I2C1_SCL_OFFSET)
|
||||
#define IOMUXC_PAD_I2C1_SCL_TPM2_CH0 IOMUX_PADCFG(IOMUXC_MUX_CTL_I2C1_SCL_OFFSET, 0x3, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_I2C1_SCL_OFFSET)
|
||||
#define IOMUXC_PAD_I2C1_SCL_UART_RX IOMUX_PADCFG(IOMUXC_MUX_CTL_I2C1_SCL_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_I2C1_SCL_OFFSET)
|
||||
#define IOMUXC_PAD_I2C1_SCL_GPIO1_IO00 IOMUX_PADCFG(IOMUXC_MUX_CTL_I2C1_SCL_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_I2C1_SCL_OFFSET)
|
||||
#define IOMUXC_PAD_I2C1_SDA_LPI2C1_SDA IOMUX_PADCFG(IOMUXC_MUX_CTL_I2C1_SDA_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_I2C1_SDA_OFFSET)
|
||||
#define IOMUXC_PAD_I2C1_SDA_I3C1_SDA IOMUX_PADCFG(IOMUXC_MUX_CTL_I2C1_SDA_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_I2C1_SDA_OFFSET)
|
||||
#define IOMUXC_PAD_I2C1_SDA_LPUART1_RIN_B IOMUX_PADCFG(IOMUXC_MUX_CTL_I2C1_SDA_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_I2C1_SDA_OFFSET)
|
||||
#define IOMUXC_PAD_I2C1_SDA_TPM2_CH1 IOMUX_PADCFG(IOMUXC_MUX_CTL_I2C1_SDA_OFFSET, 0x3, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_I2C1_SDA_OFFSET)
|
||||
#define IOMUXC_PAD_I2C1_SDA_UART_TX IOMUX_PADCFG(IOMUXC_MUX_CTL_I2C1_SDA_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_I2C1_SDA_OFFSET)
|
||||
#define IOMUXC_PAD_I2C1_SDA_GPIO1_IO01 IOMUX_PADCFG(IOMUXC_MUX_CTL_I2C1_SDA_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_I2C1_SDA_OFFSET)
|
||||
#define IOMUXC_PAD_I2C2_SCL_LPI2C2_SCL IOMUX_PADCFG(IOMUXC_MUX_CTL_I2C2_SCL_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_I2C2_SCL_OFFSET)
|
||||
#define IOMUXC_PAD_I2C2_SCL_I3C1_PUR IOMUX_PADCFG(IOMUXC_MUX_CTL_I2C2_SCL_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_I2C2_SCL_OFFSET)
|
||||
#define IOMUXC_PAD_I2C2_SCL_LPUART2_DCD_B IOMUX_PADCFG(IOMUXC_MUX_CTL_I2C2_SCL_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_I2C2_SCL_OFFSET)
|
||||
#define IOMUXC_PAD_I2C2_SCL_TPM2_CH2 IOMUX_PADCFG(IOMUXC_MUX_CTL_I2C2_SCL_OFFSET, 0x3, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_I2C2_SCL_OFFSET)
|
||||
#define IOMUXC_PAD_I2C2_SCL_SAI1_RX_SYNC IOMUX_PADCFG(IOMUXC_MUX_CTL_I2C2_SCL_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_I2C2_SCL_OFFSET)
|
||||
#define IOMUXC_PAD_I2C2_SCL_GPIO1_IO02 IOMUX_PADCFG(IOMUXC_MUX_CTL_I2C2_SCL_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_I2C2_SCL_OFFSET)
|
||||
#define IOMUXC_PAD_I2C2_SCL_I3C1_PUR_B IOMUX_PADCFG(IOMUXC_MUX_CTL_I2C2_SCL_OFFSET, 0x6, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_I2C2_SCL_OFFSET)
|
||||
#define IOMUXC_PAD_I2C2_SDA_LPI2C2_SDA IOMUX_PADCFG(IOMUXC_MUX_CTL_I2C2_SDA_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_I2C2_SDA_OFFSET)
|
||||
#define IOMUXC_PAD_I2C2_SDA_LPUART2_RIN_B IOMUX_PADCFG(IOMUXC_MUX_CTL_I2C2_SDA_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_I2C2_SDA_OFFSET)
|
||||
#define IOMUXC_PAD_I2C2_SDA_TPM2_CH3 IOMUX_PADCFG(IOMUXC_MUX_CTL_I2C2_SDA_OFFSET, 0x3, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_I2C2_SDA_OFFSET)
|
||||
#define IOMUXC_PAD_I2C2_SDA_SAI1_RX_BCLK IOMUX_PADCFG(IOMUXC_MUX_CTL_I2C2_SDA_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_I2C2_SDA_OFFSET)
|
||||
#define IOMUXC_PAD_I2C2_SDA_GPIO1_IO03 IOMUX_PADCFG(IOMUXC_MUX_CTL_I2C2_SDA_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_I2C2_SDA_OFFSET)
|
||||
#define IOMUXC_PAD_UART1_RXD_LPUART1_RX IOMUX_PADCFG(IOMUXC_MUX_CTL_UART1_RXD_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_UART1_RXD_OFFSET)
|
||||
#define IOMUXC_PAD_UART1_RXD_ELE_UART_RX IOMUX_PADCFG(IOMUXC_MUX_CTL_UART1_RXD_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_UART1_RXD_OFFSET)
|
||||
#define IOMUXC_PAD_UART1_RXD_LPSPI2_SIN IOMUX_PADCFG(IOMUXC_MUX_CTL_UART1_RXD_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_UART1_RXD_OFFSET)
|
||||
#define IOMUXC_PAD_UART1_RXD_TPM1_CH0 IOMUX_PADCFG(IOMUXC_MUX_CTL_UART1_RXD_OFFSET, 0x3, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_UART1_RXD_OFFSET)
|
||||
#define IOMUXC_PAD_UART1_RXD_GPIO1_IO04 IOMUX_PADCFG(IOMUXC_MUX_CTL_UART1_RXD_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_UART1_RXD_OFFSET)
|
||||
#define IOMUXC_PAD_UART1_TXD_LPUART1_TX IOMUX_PADCFG(IOMUXC_MUX_CTL_UART1_TXD_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_UART1_TXD_OFFSET)
|
||||
#define IOMUXC_PAD_UART1_TXD_ELE_UART_TX IOMUX_PADCFG(IOMUXC_MUX_CTL_UART1_TXD_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_UART1_TXD_OFFSET)
|
||||
#define IOMUXC_PAD_UART1_TXD_LPSPI2_PCS0 IOMUX_PADCFG(IOMUXC_MUX_CTL_UART1_TXD_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_UART1_TXD_OFFSET)
|
||||
#define IOMUXC_PAD_UART1_TXD_TPM1_CH1 IOMUX_PADCFG(IOMUXC_MUX_CTL_UART1_TXD_OFFSET, 0x3, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_UART1_TXD_OFFSET)
|
||||
#define IOMUXC_PAD_UART1_TXD_GPIO1_IO05 IOMUX_PADCFG(IOMUXC_MUX_CTL_UART1_TXD_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_UART1_TXD_OFFSET)
|
||||
#define IOMUXC_PAD_UART2_RXD_LPUART2_RX IOMUX_PADCFG(IOMUXC_MUX_CTL_UART2_RXD_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_UART2_RXD_OFFSET)
|
||||
#define IOMUXC_PAD_UART2_RXD_LPUART1_CTS_B IOMUX_PADCFG(IOMUXC_MUX_CTL_UART2_RXD_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_UART2_RXD_OFFSET)
|
||||
#define IOMUXC_PAD_UART2_RXD_LPSPI2_SOUT IOMUX_PADCFG(IOMUXC_MUX_CTL_UART2_RXD_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_UART2_RXD_OFFSET)
|
||||
#define IOMUXC_PAD_UART2_RXD_TPM1_CH2 IOMUX_PADCFG(IOMUXC_MUX_CTL_UART2_RXD_OFFSET, 0x3, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_UART2_RXD_OFFSET)
|
||||
#define IOMUXC_PAD_UART2_RXD_SAI1_MCLK IOMUX_PADCFG(IOMUXC_MUX_CTL_UART2_RXD_OFFSET, 0x4, IOMUXC_SAI1_IPP_IND_SAI_MCLK_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_UART2_RXD_OFFSET)
|
||||
#define IOMUXC_PAD_UART2_RXD_GPIO1_IO06 IOMUX_PADCFG(IOMUXC_MUX_CTL_UART2_RXD_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_UART2_RXD_OFFSET)
|
||||
#define IOMUXC_PAD_UART2_TXD_LPUART2_TX IOMUX_PADCFG(IOMUXC_MUX_CTL_UART2_TXD_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_UART2_TXD_OFFSET)
|
||||
#define IOMUXC_PAD_UART2_TXD_LPUART1_RTS_B IOMUX_PADCFG(IOMUXC_MUX_CTL_UART2_TXD_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_UART2_TXD_OFFSET)
|
||||
#define IOMUXC_PAD_UART2_TXD_LPSPI2_SCK IOMUX_PADCFG(IOMUXC_MUX_CTL_UART2_TXD_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_UART2_TXD_OFFSET)
|
||||
#define IOMUXC_PAD_UART2_TXD_TPM1_CH3 IOMUX_PADCFG(IOMUXC_MUX_CTL_UART2_TXD_OFFSET, 0x3, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_UART2_TXD_OFFSET)
|
||||
#define IOMUXC_PAD_UART2_TXD_GPIO1_IO07 IOMUX_PADCFG(IOMUXC_MUX_CTL_UART2_TXD_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_UART2_TXD_OFFSET)
|
||||
#define IOMUXC_PAD_PDM_CLK_PDM_CLK IOMUX_PADCFG(IOMUXC_MUX_CTL_PDM_CLK_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_PDM_CLK_OFFSET)
|
||||
#define IOMUXC_PAD_PDM_CLK_MQS1_LEFT IOMUX_PADCFG(IOMUXC_MUX_CTL_PDM_CLK_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_PDM_CLK_OFFSET)
|
||||
#define IOMUXC_PAD_PDM_CLK_LPTMR1_ALT1 IOMUX_PADCFG(IOMUXC_MUX_CTL_PDM_CLK_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_PDM_CLK_OFFSET)
|
||||
#define IOMUXC_PAD_PDM_CLK_GPIO1_IO08 IOMUX_PADCFG(IOMUXC_MUX_CTL_PDM_CLK_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_PDM_CLK_OFFSET)
|
||||
#define IOMUXC_PAD_PDM_CLK_CAN1_TX IOMUX_PADCFG(IOMUXC_MUX_CTL_PDM_CLK_OFFSET, 0x6, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_PDM_CLK_OFFSET)
|
||||
#define IOMUXC_PAD_PDM_BIT_STREAM0_PDM_BIT_STREAM00 IOMUX_PADCFG(IOMUXC_MUX_CTL_PDM_BIT_STREAM0_OFFSET, 0x0, IOMUXC_PDM_IPP_IND_MIC_PDM_BITSTREAM_SELECT_INPUT_0_OFFSET, 0x0, IOMUXC_PAD_CTL_PDM_BIT_STREAM0_OFFSET)
|
||||
#define IOMUXC_PAD_PDM_BIT_STREAM0_MQS1_RIGHT IOMUX_PADCFG(IOMUXC_MUX_CTL_PDM_BIT_STREAM0_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_PDM_BIT_STREAM0_OFFSET)
|
||||
#define IOMUXC_PAD_PDM_BIT_STREAM0_LPSPI1_PCS1 IOMUX_PADCFG(IOMUXC_MUX_CTL_PDM_BIT_STREAM0_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_PDM_BIT_STREAM0_OFFSET)
|
||||
#define IOMUXC_PAD_PDM_BIT_STREAM0_TPM1_EXTCLK IOMUX_PADCFG(IOMUXC_MUX_CTL_PDM_BIT_STREAM0_OFFSET, 0x3, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_PDM_BIT_STREAM0_OFFSET)
|
||||
#define IOMUXC_PAD_PDM_BIT_STREAM0_LPTMR1_ALT2 IOMUX_PADCFG(IOMUXC_MUX_CTL_PDM_BIT_STREAM0_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_PDM_BIT_STREAM0_OFFSET)
|
||||
#define IOMUXC_PAD_PDM_BIT_STREAM0_GPIO1_IO09 IOMUX_PADCFG(IOMUXC_MUX_CTL_PDM_BIT_STREAM0_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_PDM_BIT_STREAM0_OFFSET)
|
||||
#define IOMUXC_PAD_PDM_BIT_STREAM0_CAN1_RX IOMUX_PADCFG(IOMUXC_MUX_CTL_PDM_BIT_STREAM0_OFFSET, 0x6, IOMUXC_CAN1_IPP_IND_CANRX_SELECT_INPUT_OFFSET, 0x0, IOMUXC_PAD_CTL_PDM_BIT_STREAM0_OFFSET)
|
||||
#define IOMUXC_PAD_PDM_BIT_STREAM1_PDM_BIT_STREAM01 IOMUX_PADCFG(IOMUXC_MUX_CTL_PDM_BIT_STREAM1_OFFSET, 0x0, IOMUXC_PDM_IPP_IND_MIC_PDM_BITSTREAM_SELECT_INPUT_1_OFFSET, 0x0, IOMUXC_PAD_CTL_PDM_BIT_STREAM1_OFFSET)
|
||||
#define IOMUXC_PAD_PDM_BIT_STREAM1_NMI_GLUE_NMI IOMUX_PADCFG(IOMUXC_MUX_CTL_PDM_BIT_STREAM1_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_PDM_BIT_STREAM1_OFFSET)
|
||||
#define IOMUXC_PAD_PDM_BIT_STREAM1_LPSPI2_PCS1 IOMUX_PADCFG(IOMUXC_MUX_CTL_PDM_BIT_STREAM1_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_PDM_BIT_STREAM1_OFFSET)
|
||||
#define IOMUXC_PAD_PDM_BIT_STREAM1_TPM2_EXTCLK IOMUX_PADCFG(IOMUXC_MUX_CTL_PDM_BIT_STREAM1_OFFSET, 0x3, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_PDM_BIT_STREAM1_OFFSET)
|
||||
#define IOMUXC_PAD_PDM_BIT_STREAM1_LPTMR1_ALT3 IOMUX_PADCFG(IOMUXC_MUX_CTL_PDM_BIT_STREAM1_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_PDM_BIT_STREAM1_OFFSET)
|
||||
#define IOMUXC_PAD_PDM_BIT_STREAM1_GPIO1_IO10 IOMUX_PADCFG(IOMUXC_MUX_CTL_PDM_BIT_STREAM1_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_PDM_BIT_STREAM1_OFFSET)
|
||||
#define IOMUXC_PAD_SAI1_TXFS_SAI1_TX_SYNC IOMUX_PADCFG(IOMUXC_MUX_CTL_SAI1_TXFS_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SAI1_TXFS_OFFSET)
|
||||
#define IOMUXC_PAD_SAI1_TXFS_SAI1_TX_DATA01 IOMUX_PADCFG(IOMUXC_MUX_CTL_SAI1_TXFS_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SAI1_TXFS_OFFSET)
|
||||
#define IOMUXC_PAD_SAI1_TXFS_LPSPI1_PCS0 IOMUX_PADCFG(IOMUXC_MUX_CTL_SAI1_TXFS_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SAI1_TXFS_OFFSET)
|
||||
#define IOMUXC_PAD_SAI1_TXFS_LPUART2_DTR_B IOMUX_PADCFG(IOMUXC_MUX_CTL_SAI1_TXFS_OFFSET, 0x3, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SAI1_TXFS_OFFSET)
|
||||
#define IOMUXC_PAD_SAI1_TXFS_MQS1_LEFT IOMUX_PADCFG(IOMUXC_MUX_CTL_SAI1_TXFS_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SAI1_TXFS_OFFSET)
|
||||
#define IOMUXC_PAD_SAI1_TXFS_GPIO1_IO11 IOMUX_PADCFG(IOMUXC_MUX_CTL_SAI1_TXFS_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SAI1_TXFS_OFFSET)
|
||||
#define IOMUXC_PAD_SAI1_TXC_SAI1_TX_BCLK IOMUX_PADCFG(IOMUXC_MUX_CTL_SAI1_TXC_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SAI1_TXC_OFFSET)
|
||||
#define IOMUXC_PAD_SAI1_TXC_LPUART2_CTS_B IOMUX_PADCFG(IOMUXC_MUX_CTL_SAI1_TXC_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SAI1_TXC_OFFSET)
|
||||
#define IOMUXC_PAD_SAI1_TXC_LPSPI1_SIN IOMUX_PADCFG(IOMUXC_MUX_CTL_SAI1_TXC_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SAI1_TXC_OFFSET)
|
||||
#define IOMUXC_PAD_SAI1_TXC_LPUART1_DSR_B IOMUX_PADCFG(IOMUXC_MUX_CTL_SAI1_TXC_OFFSET, 0x3, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SAI1_TXC_OFFSET)
|
||||
#define IOMUXC_PAD_SAI1_TXC_CAN1_RX IOMUX_PADCFG(IOMUXC_MUX_CTL_SAI1_TXC_OFFSET, 0x4, IOMUXC_CAN1_IPP_IND_CANRX_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_SAI1_TXC_OFFSET)
|
||||
#define IOMUXC_PAD_SAI1_TXC_GPIO1_IO12 IOMUX_PADCFG(IOMUXC_MUX_CTL_SAI1_TXC_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SAI1_TXC_OFFSET)
|
||||
#define IOMUXC_PAD_SAI1_TXD0_SAI1_TX_DATA00 IOMUX_PADCFG(IOMUXC_MUX_CTL_SAI1_TXD0_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SAI1_TXD0_OFFSET)
|
||||
#define IOMUXC_PAD_SAI1_TXD0_LPUART2_RTS_B IOMUX_PADCFG(IOMUXC_MUX_CTL_SAI1_TXD0_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SAI1_TXD0_OFFSET)
|
||||
#define IOMUXC_PAD_SAI1_TXD0_LPSPI1_SCK IOMUX_PADCFG(IOMUXC_MUX_CTL_SAI1_TXD0_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SAI1_TXD0_OFFSET)
|
||||
#define IOMUXC_PAD_SAI1_TXD0_LPUART1_DTR_B IOMUX_PADCFG(IOMUXC_MUX_CTL_SAI1_TXD0_OFFSET, 0x3, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SAI1_TXD0_OFFSET)
|
||||
#define IOMUXC_PAD_SAI1_TXD0_CAN1_TX IOMUX_PADCFG(IOMUXC_MUX_CTL_SAI1_TXD0_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SAI1_TXD0_OFFSET)
|
||||
#define IOMUXC_PAD_SAI1_TXD0_GPIO1_IO13 IOMUX_PADCFG(IOMUXC_MUX_CTL_SAI1_TXD0_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SAI1_TXD0_OFFSET)
|
||||
#define IOMUXC_PAD_SAI1_RXD0_SAI1_RX_DATA00 IOMUX_PADCFG(IOMUXC_MUX_CTL_SAI1_RXD0_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SAI1_RXD0_OFFSET)
|
||||
#define IOMUXC_PAD_SAI1_RXD0_SAI1_MCLK IOMUX_PADCFG(IOMUXC_MUX_CTL_SAI1_RXD0_OFFSET, 0x1, IOMUXC_SAI1_IPP_IND_SAI_MCLK_SELECT_INPUT_OFFSET, 0x1, IOMUXC_PAD_CTL_SAI1_RXD0_OFFSET)
|
||||
#define IOMUXC_PAD_SAI1_RXD0_LPSPI1_SOUT IOMUX_PADCFG(IOMUXC_MUX_CTL_SAI1_RXD0_OFFSET, 0x2, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SAI1_RXD0_OFFSET)
|
||||
#define IOMUXC_PAD_SAI1_RXD0_LPUART2_DSR_B IOMUX_PADCFG(IOMUXC_MUX_CTL_SAI1_RXD0_OFFSET, 0x3, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SAI1_RXD0_OFFSET)
|
||||
#define IOMUXC_PAD_SAI1_RXD0_MQS1_RIGHT IOMUX_PADCFG(IOMUXC_MUX_CTL_SAI1_RXD0_OFFSET, 0x4, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SAI1_RXD0_OFFSET)
|
||||
#define IOMUXC_PAD_SAI1_RXD0_GPIO1_IO14 IOMUX_PADCFG(IOMUXC_MUX_CTL_SAI1_RXD0_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_SAI1_RXD0_OFFSET)
|
||||
#define IOMUXC_PAD_WDOG_ANY_WDOG_ANY IOMUX_PADCFG(IOMUXC_MUX_CTL_WDOG_ANY_OFFSET, 0x0, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_WDOG_ANY_OFFSET)
|
||||
#define IOMUXC_PAD_WDOG_ANY_FCCU_EOUT1 IOMUX_PADCFG(IOMUXC_MUX_CTL_WDOG_ANY_OFFSET, 0x1, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_WDOG_ANY_OFFSET)
|
||||
#define IOMUXC_PAD_WDOG_ANY_GPIO1_IO15 IOMUX_PADCFG(IOMUXC_MUX_CTL_WDOG_ANY_OFFSET, 0x5, IOMUXC_REGISTER_NOT_AVAILABLE, 0x0, IOMUXC_PAD_CTL_WDOG_ANY_OFFSET)
|
40
arch/arm/src/imx9/hardware/imx9_clock.h
Normal file
40
arch/arm/src/imx9/hardware/imx9_clock.h
Normal file
|
@ -0,0 +1,40 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/hardware/imx9_clock.h
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ARCH_ARM_SRC_IMX9_HARDWARE_IMX9_CCM_H
|
||||
#define __ARCH_ARM_SRC_IMX9_HARDWARE_IMX9_CCM_H
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
#include "hardware/imx9_memorymap.h"
|
||||
|
||||
#if defined(CONFIG_ARCH_CHIP_IMX95_M7)
|
||||
# include "hardware/imx95/imx95_clock.h"
|
||||
#else
|
||||
# error Unrecognized i.MX9 architecture
|
||||
#endif
|
||||
|
||||
#endif /* __ARCH_ARM_SRC_IMX9_HARDWARE_IMX9_CCM_H_ */
|
39
arch/arm/src/imx9/hardware/imx9_dmamux.h
Normal file
39
arch/arm/src/imx9/hardware/imx9_dmamux.h
Normal file
|
@ -0,0 +1,39 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/hardware/imx9_dmamux.h
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ARCH_ARM_SRC_IMX9_HARDWARE_IMX9_DMAMUX_H
|
||||
#define __ARCH_ARM_SRC_IMX9_HARDWARE_IMX9_DMAMUX_H
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#if defined(CONFIG_ARCH_CHIP_IMX95_M7)
|
||||
# include "hardware/imx95/imx95_dmamux.h"
|
||||
#else
|
||||
# error Unrecognized i.MX9 architecture
|
||||
#endif
|
||||
|
||||
#endif /* __ARCH_ARM_SRC_IMX9_HARDWARE_IMX9_DMAMUX_H */
|
39
arch/arm/src/imx9/hardware/imx9_edma.h
Normal file
39
arch/arm/src/imx9/hardware/imx9_edma.h
Normal file
|
@ -0,0 +1,39 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/hardware/imx9_edma.h
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ARCH_ARM_SRC_IMX9_HARDWARE_IMX9_EDMA_H
|
||||
#define __ARCH_ARM_SRC_IMX9_HARDWARE_IMX9_EDMA_H
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#if defined(CONFIG_ARCH_CHIP_IMX95_M7)
|
||||
# include "hardware/imx95/imx95_edma.h"
|
||||
#else
|
||||
# error Unrecognized i.MX9 architecture
|
||||
#endif
|
||||
|
||||
#endif /* __ARCH_ARM_SRC_IMX9_HARDWARE_IMX9_EDMA_H */
|
7703
arch/arm/src/imx9/hardware/imx9_flexcan.h
Normal file
7703
arch/arm/src/imx9/hardware/imx9_flexcan.h
Normal file
File diff suppressed because it is too large
Load diff
434
arch/arm/src/imx9/hardware/imx9_gpc.h
Normal file
434
arch/arm/src/imx9/hardware/imx9_gpc.h
Normal file
|
@ -0,0 +1,434 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/hardware/imx9_gpc.h
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ARCH_ARM_SRC_IMX9_HARDWARE_IMX9_GPC_H
|
||||
#define __ARCH_ARM_SRC_IMX9_HARDWARE_IMX9_GPC_H
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/* Register offsets */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_AUTHEN_CTRL_OFFSET 0x0004 /* CMC Authentication Control */
|
||||
#define IMX9_GPC_CTRL_CMC_MISC_OFFSET 0x000c /* Miscellaneous */
|
||||
#define IMX9_GPC_CTRL_CMC_MODE_CTRL_OFFSET 0x0010 /* CPU mode control */
|
||||
#define IMX9_GPC_CTRL_CMC_MODE_STAT_OFFSET 0x0014 /* CPU mode Status */
|
||||
#define IMX9_GPC_CTRL_CMC_PIN_STAT_OFFSET 0x0018 /* CMC pin Status */
|
||||
#define IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_MASK_1_OFFSET 0x0100 /* IRQ wake-up mask register */
|
||||
#define IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_MASK_2_OFFSET 0x0104 /* IRQ wake-up mask register */
|
||||
#define IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_MASK_3_OFFSET 0x0108 /* IRQ wake-up mask register */
|
||||
#define IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_MASK_4_OFFSET 0x010c /* IRQ wake-up mask register */
|
||||
#define IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_MASK_5_OFFSET 0x0110 /* IRQ wake-up mask register */
|
||||
#define IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_MASK_6_OFFSET 0x0114 /* IRQ wake-up mask register */
|
||||
#define IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_MASK_7_OFFSET 0x0118 /* IRQ wake-up mask register */
|
||||
#define IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_MASK_8_OFFSET 0x011c /* IRQ wake-up mask register */
|
||||
#define IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_MASK_9_OFFSET 0x0120 /* IRQ wake-up mask register */
|
||||
#define IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_MASK_10_OFFSET 0x0124 /* IRQ wake-up mask register */
|
||||
#define IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_MASK_11_OFFSET 0x0128 /* IRQ wake-up mask register */
|
||||
#define IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_MASK_12_OFFSET 0x012c /* IRQ wake-up mask register */
|
||||
#define IMX9_GPC_CTRL_CMC_NON_IRQ_WAKEUP_MASK_OFFSET 0x0140 /* CMC non-IRQ wakeup mask */
|
||||
#define IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_STAT_1_OFFSET 0x0150 /* IRQ status register */
|
||||
#define IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_STAT_2_OFFSET 0x0154 /* IRQ status register */
|
||||
#define IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_STAT_3_OFFSET 0x0158 /* IRQ status register */
|
||||
#define IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_STAT_4_OFFSET 0x015c /* IRQ status register */
|
||||
#define IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_STAT_5_OFFSET 0x0160 /* IRQ status register */
|
||||
#define IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_STAT_6_OFFSET 0x0164 /* IRQ status register */
|
||||
#define IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_STAT_7_OFFSET 0x0168 /* IRQ status register */
|
||||
#define IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_STAT_8_OFFSET 0x016c /* IRQ status register */
|
||||
#define IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_STAT_9_OFFSET 0x0170 /* IRQ status register */
|
||||
#define IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_STAT_10_OFFSET 0x0174 /* IRQ status register */
|
||||
#define IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_STAT_11_OFFSET 0x0178 /* IRQ status register */
|
||||
#define IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_STAT_12_OFFSET 0x017c /* IRQ status register */
|
||||
#define IMX9_GPC_CTRL_CMC_NON_IRQ_WAKEUP_STAT_OFFSET 0x0190 /* CMC non-IRQ wakeup status */
|
||||
#define IMX9_GPC_CTRL_CMC_SLEEP_A55_HDSK_CTRL_OFFSET 0x0200 /* CMC sleep A55_HDSK control */
|
||||
#define IMX9_GPC_CTRL_CMC_SLEEP_A55_HDSK_STAT_OFFSET 0x0204 /* CMC sleep A55_HDSK status */
|
||||
#define IMX9_GPC_CTRL_CMC_SLEEP_SSAR_CTRL_OFFSET 0x0208 /* CMC sleep SSAR control */
|
||||
#define IMX9_GPC_CTRL_CMC_SLEEP_SSAR_STAT_OFFSET 0x020c /* CMC sleep SSAR status */
|
||||
#define IMX9_GPC_CTRL_CMC_SLEEP_RESET_CTRL_OFFSET 0x0230 /* CMC sleep reset control */
|
||||
#define IMX9_GPC_CTRL_CMC_SLEEP_RESET_STAT_OFFSET 0x0234 /* CMC sleep reset status */
|
||||
#define IMX9_GPC_CTRL_CMC_SLEEP_SYSMAN_CTRL_OFFSET 0x0248 /* CMC sleep Sysman control */
|
||||
#define IMX9_GPC_CTRL_CMC_SLEEP_SYSMAN_STAT_OFFSET 0x024c /* CMC Sleep Sysman status */
|
||||
#define IMX9_GPC_CTRL_CMC_WAKEUP_POWER_CTRL_OFFSET 0x0290 /* CMC wakeup power control */
|
||||
#define IMX9_GPC_CTRL_CMC_WAKEUP_POWER_STAT_OFFSET 0x0294 /* CMC wakeup power status */
|
||||
#define IMX9_GPC_CTRL_CMC_WAKEUP_SSAR_CTRL_OFFSET 0x02c8 /* CMC wakeup SSAR control */
|
||||
#define IMX9_GPC_CTRL_CMC_WAKEUP_SSAR_STAT_OFFSET 0x02cc /* CMC wakeup SSAR status */
|
||||
#define IMX9_GPC_CTRL_CMC_WAKEUP_A55_HDSK_CTRL_OFFSET 0x02d0 /* CMC wakeup A55_HDSK control */
|
||||
#define IMX9_GPC_CTRL_CMC_WAKEUP_A55_HDSK_STAT_OFFSET 0x02d4 /* CMC wakeup A55_HDSK status */
|
||||
#define IMX9_GPC_CTRL_CMC_WAKEUP_SYSMAN_CTRL_OFFSET 0x02d8 /* CMC wakeup Sysman control */
|
||||
#define IMX9_GPC_CTRL_CMC_WAKEUP_SYSMAN_STAT_OFFSET 0x02dc /* CMC wakeup Sysman status */
|
||||
#define IMX9_GPC_CTRL_CMC_SYS_SLEEP_CTRL_OFFSET 0x0380 /* CMC system sleep control */
|
||||
#define IMX9_GPC_CTRL_CMC_DEBUG_OFFSET 0x0390 /* CMC debug */
|
||||
|
||||
/* Register macros */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_AUTHEN_CTRL(n) ((n) + IMX9_GPC_CTRL_CMC_AUTHEN_CTRL_OFFSET) /* CMC Authentication Control */
|
||||
#define IMX9_GPC_CTRL_CMC_MISC(n) ((n) + IMX9_GPC_CTRL_CMC_MISC_OFFSET) /* Miscellaneous */
|
||||
#define IMX9_GPC_CTRL_CMC_MODE_CTRL(n) ((n) + IMX9_GPC_CTRL_CMC_MODE_CTRL_OFFSET) /* CPU mode control */
|
||||
#define IMX9_GPC_CTRL_CMC_MODE_STAT(n) ((n) + IMX9_GPC_CTRL_CMC_MODE_STAT_OFFSET) /* CPU mode Status */
|
||||
#define IMX9_GPC_CTRL_CMC_PIN_STAT(n) ((n) + IMX9_GPC_CTRL_CMC_PIN_STAT_OFFSET) /* CMC pin Status */
|
||||
#define IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_MASK_1(n) ((n) + IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_MASK_1_OFFSET) /* IRQ wake-up mask register */
|
||||
#define IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_MASK_2(n) ((n) + IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_MASK_2_OFFSET) /* IRQ wake-up mask register */
|
||||
#define IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_MASK_3(n) ((n) + IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_MASK_3_OFFSET) /* IRQ wake-up mask register */
|
||||
#define IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_MASK_4(n) ((n) + IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_MASK_4_OFFSET) /* IRQ wake-up mask register */
|
||||
#define IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_MASK_5(n) ((n) + IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_MASK_5_OFFSET) /* IRQ wake-up mask register */
|
||||
#define IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_MASK_6(n) ((n) + IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_MASK_6_OFFSET) /* IRQ wake-up mask register */
|
||||
#define IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_MASK_7(n) ((n) + IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_MASK_7_OFFSET) /* IRQ wake-up mask register */
|
||||
#define IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_MASK_8(n) ((n) + IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_MASK_8_OFFSET) /* IRQ wake-up mask register */
|
||||
#define IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_MASK_9(n) ((n) + IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_MASK_9_OFFSET) /* IRQ wake-up mask register */
|
||||
#define IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_MASK_10(n) ((n) + IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_MASK_10_OFFSET) /* IRQ wake-up mask register */
|
||||
#define IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_MASK_11(n) ((n) + IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_MASK_11_OFFSET) /* IRQ wake-up mask register */
|
||||
#define IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_MASK_12(n) ((n) + IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_MASK_12_OFFSET) /* IRQ wake-up mask register */
|
||||
#define IMX9_GPC_CTRL_CMC_NON_IRQ_WAKEUP_MASK(n) ((n) + IMX9_GPC_CTRL_CMC_NON_IRQ_WAKEUP_MASK_OFFSET) /* CMC non-IRQ wakeup mask */
|
||||
#define IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_STAT_1(n) ((n) + IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_STAT_1_OFFSET) /* IRQ status register */
|
||||
#define IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_STAT_2(n) ((n) + IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_STAT_2_OFFSET) /* IRQ status register */
|
||||
#define IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_STAT_3(n) ((n) + IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_STAT_3_OFFSET) /* IRQ status register */
|
||||
#define IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_STAT_4(n) ((n) + IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_STAT_4_OFFSET) /* IRQ status register */
|
||||
#define IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_STAT_5(n) ((n) + IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_STAT_5_OFFSET) /* IRQ status register */
|
||||
#define IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_STAT_6(n) ((n) + IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_STAT_6_OFFSET) /* IRQ status register */
|
||||
#define IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_STAT_7(n) ((n) + IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_STAT_7_OFFSET) /* IRQ status register */
|
||||
#define IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_STAT_8(n) ((n) + IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_STAT_8_OFFSET) /* IRQ status register */
|
||||
#define IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_STAT_9(n) ((n) + IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_STAT_9_OFFSET) /* IRQ status register */
|
||||
#define IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_STAT_10(n) ((n) + IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_STAT_10_OFFSET) /* IRQ status register */
|
||||
#define IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_STAT_11(n) ((n) + IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_STAT_11_OFFSET) /* IRQ status register */
|
||||
#define IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_STAT_12(n) ((n) + IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_STAT_12_OFFSET) /* IRQ status register */
|
||||
#define IMX9_GPC_CTRL_CMC_NON_IRQ_WAKEUP_STAT(n) ((n) + IMX9_GPC_CTRL_CMC_NON_IRQ_WAKEUP_STAT_OFFSET) /* CMC non-IRQ wakeup status */
|
||||
#define IMX9_GPC_CTRL_CMC_SLEEP_A55_HDSK_CTRL(n) ((n) + IMX9_GPC_CTRL_CMC_SLEEP_A55_HDSK_CTRL_OFFSET) /* CMC sleep A55_HDSK control */
|
||||
#define IMX9_GPC_CTRL_CMC_SLEEP_A55_HDSK_STAT(n) ((n) + IMX9_GPC_CTRL_CMC_SLEEP_A55_HDSK_STAT_OFFSET) /* CMC sleep A55_HDSK status */
|
||||
#define IMX9_GPC_CTRL_CMC_SLEEP_SSAR_CTRL(n) ((n) + IMX9_GPC_CTRL_CMC_SLEEP_SSAR_CTRL_OFFSET) /* CMC sleep SSAR control */
|
||||
#define IMX9_GPC_CTRL_CMC_SLEEP_SSAR_STAT(n) ((n) + IMX9_GPC_CTRL_CMC_SLEEP_SSAR_STAT_OFFSET) /* CMC sleep SSAR status */
|
||||
#define IMX9_GPC_CTRL_CMC_SLEEP_RESET_CTRL(n) ((n) + IMX9_GPC_CTRL_CMC_SLEEP_RESET_CTRL_OFFSET) /* CMC sleep reset control */
|
||||
#define IMX9_GPC_CTRL_CMC_SLEEP_RESET_STAT(n) ((n) + IMX9_GPC_CTRL_CMC_SLEEP_RESET_STAT_OFFSET) /* CMC sleep reset status */
|
||||
#define IMX9_GPC_CTRL_CMC_SLEEP_SYSMAN_CTRL(n) ((n) + IMX9_GPC_CTRL_CMC_SLEEP_SYSMAN_CTRL_OFFSET) /* CMC sleep Sysman control */
|
||||
#define IMX9_GPC_CTRL_CMC_SLEEP_SYSMAN_STAT(n) ((n) + IMX9_GPC_CTRL_CMC_SLEEP_SYSMAN_STAT_OFFSET) /* CMC Sleep Sysman status */
|
||||
#define IMX9_GPC_CTRL_CMC_WAKEUP_POWER_CTRL(n) ((n) + IMX9_GPC_CTRL_CMC_WAKEUP_POWER_CTRL_OFFSET) /* CMC wakeup power control */
|
||||
#define IMX9_GPC_CTRL_CMC_WAKEUP_POWER_STAT(n) ((n) + IMX9_GPC_CTRL_CMC_WAKEUP_POWER_STAT_OFFSET) /* CMC wakeup power status */
|
||||
#define IMX9_GPC_CTRL_CMC_WAKEUP_SSAR_CTRL(n) ((n) + IMX9_GPC_CTRL_CMC_WAKEUP_SSAR_CTRL_OFFSET) /* CMC wakeup SSAR control */
|
||||
#define IMX9_GPC_CTRL_CMC_WAKEUP_SSAR_STAT(n) ((n) + IMX9_GPC_CTRL_CMC_WAKEUP_SSAR_STAT_OFFSET) /* CMC wakeup SSAR status */
|
||||
#define IMX9_GPC_CTRL_CMC_WAKEUP_A55_HDSK_CTRL(n) ((n) + IMX9_GPC_CTRL_CMC_WAKEUP_A55_HDSK_CTRL_OFFSET) /* CMC wakeup A55_HDSK control */
|
||||
#define IMX9_GPC_CTRL_CMC_WAKEUP_A55_HDSK_STAT(n) ((n) + IMX9_GPC_CTRL_CMC_WAKEUP_A55_HDSK_STAT_OFFSET) /* CMC wakeup A55_HDSK status */
|
||||
#define IMX9_GPC_CTRL_CMC_WAKEUP_SYSMAN_CTRL(n) ((n) + IMX9_GPC_CTRL_CMC_WAKEUP_SYSMAN_CTRL_OFFSET) /* CMC wakeup Sysman control */
|
||||
#define IMX9_GPC_CTRL_CMC_WAKEUP_SYSMAN_STAT(n) ((n) + IMX9_GPC_CTRL_CMC_WAKEUP_SYSMAN_STAT_OFFSET) /* CMC wakeup Sysman status */
|
||||
#define IMX9_GPC_CTRL_CMC_SYS_SLEEP_CTRL(n) ((n) + IMX9_GPC_CTRL_CMC_SYS_SLEEP_CTRL_OFFSET) /* CMC system sleep control */
|
||||
#define IMX9_GPC_CTRL_CMC_DEBUG(n) ((n) + IMX9_GPC_CTRL_CMC_DEBUG_OFFSET) /* CMC debug */
|
||||
|
||||
/* Field definitions */
|
||||
|
||||
/* CMC_AUTHEN_CTRL register */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_AUTHEN_CTRL_LOCK_CFG_SHIFT 7 /* Configuration lock */
|
||||
#define IMX9_GPC_CTRL_CMC_AUTHEN_CTRL_LOCK_CFG_FLAG (1 << IMX9_GPC_CTRL_CMC_AUTHEN_CTRL_LOCK_CFG_SHIFT) /* Configuration lock */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_AUTHEN_CTRL_USER_SHIFT 8 /* Allow user mode access */
|
||||
#define IMX9_GPC_CTRL_CMC_AUTHEN_CTRL_USER_FLAG (1 << IMX9_GPC_CTRL_CMC_AUTHEN_CTRL_USER_SHIFT) /* Allow user mode access */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_AUTHEN_CTRL_NONSECURE_SHIFT 9 /* Allow non-secure mode access */
|
||||
#define IMX9_GPC_CTRL_CMC_AUTHEN_CTRL_NONSECURE_FLAG (1 << IMX9_GPC_CTRL_CMC_AUTHEN_CTRL_NONSECURE_SHIFT) /* Allow non-secure mode access */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_AUTHEN_CTRL_LOCK_SETTING_SHIFT 11 /* Lock NONSECURE and USER */
|
||||
#define IMX9_GPC_CTRL_CMC_AUTHEN_CTRL_LOCK_SETTING_FLAG (1 << IMX9_GPC_CTRL_CMC_AUTHEN_CTRL_LOCK_SETTING_SHIFT) /* Lock NONSECURE and USER */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_AUTHEN_CTRL_LOCK_LIST_SHIFT 15 /* White list lock */
|
||||
#define IMX9_GPC_CTRL_CMC_AUTHEN_CTRL_LOCK_LIST_FLAG (1 << IMX9_GPC_CTRL_CMC_AUTHEN_CTRL_LOCK_LIST_SHIFT) /* White list lock */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_AUTHEN_CTRL_WHITE_LIST_SHIFT 16 /* Domain ID white list */
|
||||
#define IMX9_GPC_CTRL_CMC_AUTHEN_CTRL_WHITE_LIST_MASK 0xffff /* Domain ID white list */
|
||||
|
||||
/* CMC_MISC register */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_MISC_NMI_STAT_SHIFT 0 /* Non-masked interrupt status */
|
||||
#define IMX9_GPC_CTRL_CMC_MISC_NMI_STAT_FLAG (1 << IMX9_GPC_CTRL_CMC_MISC_NMI_STAT_SHIFT) /* Non-masked interrupt status */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_MISC_SLEEP_HOLD_EN_SHIFT 1 /* Allow cpu_sleep_hold_req assert during CPU low power status */
|
||||
#define IMX9_GPC_CTRL_CMC_MISC_SLEEP_HOLD_EN_FLAG (1 << IMX9_GPC_CTRL_CMC_MISC_SLEEP_HOLD_EN_SHIFT) /* Allow cpu_sleep_hold_req assert during CPU low power status */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_MISC_SLEEP_HOLD_STAT_SHIFT 2 /* Status of cpu_sleep_hold_ack_b */
|
||||
#define IMX9_GPC_CTRL_CMC_MISC_SLEEP_HOLD_STAT_FLAG (1 << IMX9_GPC_CTRL_CMC_MISC_SLEEP_HOLD_STAT_SHIFT) /* Status of cpu_sleep_hold_ack_b */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_MISC_GIC_WAKEUP_STAT_SHIFT 4 /* GIC wakeup request status */
|
||||
#define IMX9_GPC_CTRL_CMC_MISC_GIC_WAKEUP_STAT_FLAG (1 << IMX9_GPC_CTRL_CMC_MISC_GIC_WAKEUP_STAT_SHIFT) /* GIC wakeup request status */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_MISC_IRQ_MUX_SHIFT 5 /* IRQ select */
|
||||
#define IMX9_GPC_CTRL_CMC_MISC_IRQ_MUX_FLAG (1 << IMX9_GPC_CTRL_CMC_MISC_IRQ_MUX_SHIFT) /* IRQ select */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_MISC_SW_WAKEUP_SHIFT 6 /* Software wakeup. Used for CPU hotplug. */
|
||||
#define IMX9_GPC_CTRL_CMC_MISC_SW_WAKEUP_FLAG (1 << IMX9_GPC_CTRL_CMC_MISC_SW_WAKEUP_SHIFT) /* Software wakeup. Used for CPU hotplug. */
|
||||
|
||||
/* CMC_MODE_CTRL register */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_MODE_CTRL_CPU_MODE_TARGET_SHIFT 0 /* The CPU mode the CPU platform should transit to on next sleep event */
|
||||
#define IMX9_GPC_CTRL_CMC_MODE_CTRL_CPU_MODE_TARGET_MASK 0x3 /* The CPU mode the CPU platform should transit to on next sleep event */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_MODE_CTRL_CPU_MODE_TARGET_STAY_IN_RUN_MODE 0
|
||||
#define IMX9_GPC_CTRL_CMC_MODE_CTRL_CPU_MODE_TARGET_TRANSIT_TO_WAIT 1
|
||||
#define IMX9_GPC_CTRL_CMC_MODE_CTRL_CPU_MODE_TARGET_TRANSIT_TO_STOP 2
|
||||
#define IMX9_GPC_CTRL_CMC_MODE_CTRL_CPU_MODE_TARGET_TRANSIT_TO_SUSPEND 3
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_MODE_CTRL_CPU_MODE_TARGET(n) (n << IMX9_GPC_CTRL_CMC_MODE_CTRL_CPU_MODE_TARGET_SHIFT)
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_MODE_CTRL_WFE_EN_SHIFT 4 /* WFE assertion can be sleep event */
|
||||
#define IMX9_GPC_CTRL_CMC_MODE_CTRL_WFE_EN_FLAG (1 << IMX9_GPC_CTRL_CMC_MODE_CTRL_WFE_EN_SHIFT) /* WFE assertion can be sleep event */
|
||||
|
||||
/* CMC_MODE_STAT register */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_MODE_STAT_CPU_MODE_CURRENT_SHIFT 0 /* Current CPU mode */
|
||||
#define IMX9_GPC_CTRL_CMC_MODE_STAT_CPU_MODE_CURRENT_MASK 0x3 /* Current CPU mode */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_MODE_STAT_CPU_MODE_PREVIOUS_SHIFT 2 /* Previous CPU mode */
|
||||
#define IMX9_GPC_CTRL_CMC_MODE_STAT_CPU_MODE_PREVIOUS_MASK 0x3 /* Previous CPU mode */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_MODE_STAT_SLEEP_TRANS_BUSY_SHIFT 8 /* Busy on CPU mode transition of sleep, not include set point trans busy. */
|
||||
#define IMX9_GPC_CTRL_CMC_MODE_STAT_SLEEP_TRANS_BUSY_FLAG (1 << IMX9_GPC_CTRL_CMC_MODE_STAT_SLEEP_TRANS_BUSY_SHIFT) /* Busy on CPU mode transition of sleep, not include set point trans busy. */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_MODE_STAT_WAKEUP_TRANS_BUSY_SHIFT 9 /* Busy on CPU mode transition of wakeup, not include set point trans busy. */
|
||||
#define IMX9_GPC_CTRL_CMC_MODE_STAT_WAKEUP_TRANS_BUSY_FLAG (1 << IMX9_GPC_CTRL_CMC_MODE_STAT_WAKEUP_TRANS_BUSY_SHIFT) /* Busy on CPU mode transition of wakeup, not include set point trans busy. */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_MODE_STAT_SLEEPING_IDLE_SHIFT 10 /* Completed CPU mode and set point transition of sleep sequence, in a sleeping_idle state. */
|
||||
#define IMX9_GPC_CTRL_CMC_MODE_STAT_SLEEPING_IDLE_FLAG (1 << IMX9_GPC_CTRL_CMC_MODE_STAT_SLEEPING_IDLE_SHIFT) /* Completed CPU mode and set point transition of sleep sequence, in a sleeping_idle state. */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_MODE_STAT_SLEEP_REQUEST_SHIFT 16 /* Status of sleep_request input port */
|
||||
#define IMX9_GPC_CTRL_CMC_MODE_STAT_SLEEP_REQUEST_FLAG (1 << IMX9_GPC_CTRL_CMC_MODE_STAT_SLEEP_REQUEST_SHIFT) /* Status of sleep_request input port */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_MODE_STAT_WFE_REQUEST_SHIFT 17 /* Status of standby_wfe input port */
|
||||
#define IMX9_GPC_CTRL_CMC_MODE_STAT_WFE_REQUEST_FLAG (1 << IMX9_GPC_CTRL_CMC_MODE_STAT_WFE_REQUEST_SHIFT) /* Status of standby_wfe input port */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_MODE_STAT_WAKEUP_REQUEST_SHIFT 18 /* "ORed" of all unmasked IRQ */
|
||||
#define IMX9_GPC_CTRL_CMC_MODE_STAT_WAKEUP_REQUEST_FLAG (1 << IMX9_GPC_CTRL_CMC_MODE_STAT_WAKEUP_REQUEST_SHIFT) /* "ORed" of all unmasked IRQ */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_MODE_STAT_FSM_STATE_SHIFT 24 /* CPU mode trans FSM state. */
|
||||
#define IMX9_GPC_CTRL_CMC_MODE_STAT_FSM_STATE_MASK 0x1f /* CPU mode trans FSM state. */
|
||||
|
||||
/* CMC_PIN_STAT register */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_PIN_STAT_A55_HDSK_REQUEST_STAT_SHIFT 0 /* cpu_mode_trans_a55_hdsk_request pin status */
|
||||
#define IMX9_GPC_CTRL_CMC_PIN_STAT_A55_HDSK_REQUEST_STAT_FLAG (1 << IMX9_GPC_CTRL_CMC_PIN_STAT_A55_HDSK_REQUEST_STAT_SHIFT) /* cpu_mode_trans_a55_hdsk_request pin status */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_PIN_STAT_SSAR_REQUEST_STAT_SHIFT 1 /* cpu_mode_trans_ssar_request pin status */
|
||||
#define IMX9_GPC_CTRL_CMC_PIN_STAT_SSAR_REQUEST_STAT_FLAG (1 << IMX9_GPC_CTRL_CMC_PIN_STAT_SSAR_REQUEST_STAT_SHIFT) /* cpu_mode_trans_ssar_request pin status */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_PIN_STAT_RESET_REQUEST_STAT_SHIFT 6 /* cpu_mode_trans_reset_request pin status */
|
||||
#define IMX9_GPC_CTRL_CMC_PIN_STAT_RESET_REQUEST_STAT_FLAG (1 << IMX9_GPC_CTRL_CMC_PIN_STAT_RESET_REQUEST_STAT_SHIFT) /* cpu_mode_trans_reset_request pin status */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_PIN_STAT_POWER_REQUEST_STAT_SHIFT 7 /* cpu_mode_trans_power_request pin status */
|
||||
#define IMX9_GPC_CTRL_CMC_PIN_STAT_POWER_REQUEST_STAT_FLAG (1 << IMX9_GPC_CTRL_CMC_PIN_STAT_POWER_REQUEST_STAT_SHIFT) /* cpu_mode_trans_power_request pin status */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_PIN_STAT_SYSMAN_REQUEST_STAT_SHIFT 9 /* cpu_mode_trans_sysman_request pin status */
|
||||
#define IMX9_GPC_CTRL_CMC_PIN_STAT_SYSMAN_REQUEST_STAT_FLAG (1 << IMX9_GPC_CTRL_CMC_PIN_STAT_SYSMAN_REQUEST_STAT_SHIFT) /* cpu_mode_trans_sysman_request pin status */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_PIN_STAT_A55_HDSK_DONE_STAT_SHIFT 16 /* cpu_mode_trans_a55_hdsk_done pin status */
|
||||
#define IMX9_GPC_CTRL_CMC_PIN_STAT_A55_HDSK_DONE_STAT_FLAG (1 << IMX9_GPC_CTRL_CMC_PIN_STAT_A55_HDSK_DONE_STAT_SHIFT) /* cpu_mode_trans_a55_hdsk_done pin status */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_PIN_STAT_SSAR_DONE_STAT_SHIFT 17 /* cpu_mode_trans_ssar_done pin status */
|
||||
#define IMX9_GPC_CTRL_CMC_PIN_STAT_SSAR_DONE_STAT_FLAG (1 << IMX9_GPC_CTRL_CMC_PIN_STAT_SSAR_DONE_STAT_SHIFT) /* cpu_mode_trans_ssar_done pin status */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_PIN_STAT_RESET_DONE_STAT_SHIFT 22 /* cpu_mode_trans_reset_done pin status */
|
||||
#define IMX9_GPC_CTRL_CMC_PIN_STAT_RESET_DONE_STAT_FLAG (1 << IMX9_GPC_CTRL_CMC_PIN_STAT_RESET_DONE_STAT_SHIFT) /* cpu_mode_trans_reset_done pin status */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_PIN_STAT_POWER_DONE_STAT_SHIFT 23 /* cpu_mode_trans_power_done pin status */
|
||||
#define IMX9_GPC_CTRL_CMC_PIN_STAT_POWER_DONE_STAT_FLAG (1 << IMX9_GPC_CTRL_CMC_PIN_STAT_POWER_DONE_STAT_SHIFT) /* cpu_mode_trans_power_done pin status */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_PIN_STAT_SYSMAN_DONE_STAT_SHIFT 25 /* cpu_mode_trans_sysman_done pin status. */
|
||||
#define IMX9_GPC_CTRL_CMC_PIN_STAT_SYSMAN_DONE_STAT_FLAG (1 << IMX9_GPC_CTRL_CMC_PIN_STAT_SYSMAN_DONE_STAT_SHIFT) /* cpu_mode_trans_sysman_done pin status. */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_PIN_STAT_CPU_MODE_STAT_SHIFT 29 /* cpu_power_mode pin status */
|
||||
#define IMX9_GPC_CTRL_CMC_PIN_STAT_CPU_MODE_STAT_MASK 0x3 /* cpu_power_mode pin status */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_PIN_STAT_DEBUG_WAKEUP_ACK_STAT_SHIFT 31 /* Debug wakeup acknowledge pin status */
|
||||
#define IMX9_GPC_CTRL_CMC_PIN_STAT_DEBUG_WAKEUP_ACK_STAT_FLAG (1 << IMX9_GPC_CTRL_CMC_PIN_STAT_DEBUG_WAKEUP_ACK_STAT_SHIFT) /* Debug wakeup acknowledge pin status */
|
||||
|
||||
/* CMC_NON_IRQ_WAKEUP_MASK register */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_NON_IRQ_WAKEUP_MASK_EVENT_WAKEUP_MASK_SHIFT 0 /* "1" means the event cannot wakeup CPU platform */
|
||||
#define IMX9_GPC_CTRL_CMC_NON_IRQ_WAKEUP_MASK_EVENT_WAKEUP_MASK_FLAG (1 << IMX9_GPC_CTRL_CMC_NON_IRQ_WAKEUP_MASK_EVENT_WAKEUP_MASK_SHIFT) /* "1" means the event cannot wakeup CPU platform */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_NON_IRQ_WAKEUP_MASK_DEBUG_WAKEUP_MASK_SHIFT 1 /* "1" means the debug_wakeup_request cannot wakeup CPU platform */
|
||||
#define IMX9_GPC_CTRL_CMC_NON_IRQ_WAKEUP_MASK_DEBUG_WAKEUP_MASK_FLAG (1 << IMX9_GPC_CTRL_CMC_NON_IRQ_WAKEUP_MASK_DEBUG_WAKEUP_MASK_SHIFT) /* "1" means the debug_wakeup_request cannot wakeup CPU platform */
|
||||
|
||||
/* CMC_NON_IRQ_WAKEUP_STAT register */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_NON_IRQ_WAKEUP_STAT_EVENT_WAKEUP_STAT_SHIFT 0 /* Event wakeup status */
|
||||
#define IMX9_GPC_CTRL_CMC_NON_IRQ_WAKEUP_STAT_EVENT_WAKEUP_STAT_FLAG (1 << IMX9_GPC_CTRL_CMC_NON_IRQ_WAKEUP_STAT_EVENT_WAKEUP_STAT_SHIFT) /* Event wakeup status */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_NON_IRQ_WAKEUP_STAT_DEBUG_WAKEUP_STAT_SHIFT 1 /* Debug wakeup status */
|
||||
#define IMX9_GPC_CTRL_CMC_NON_IRQ_WAKEUP_STAT_DEBUG_WAKEUP_STAT_FLAG (1 << IMX9_GPC_CTRL_CMC_NON_IRQ_WAKEUP_STAT_DEBUG_WAKEUP_STAT_SHIFT) /* Debug wakeup status */
|
||||
|
||||
/* CMC_SLEEP_A55_HDSK_CTRL register */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_SLEEP_A55_HDSK_CTRL_STEP_CNT_SHIFT 0 /* (invalid when CNT_MODE==0 and invisible on customer RM)Step count, usage depends on CNT_MODE. */
|
||||
#define IMX9_GPC_CTRL_CMC_SLEEP_A55_HDSK_CTRL_STEP_CNT_MASK 0xffffff /* (invalid when CNT_MODE==0 and invisible on customer RM)Step count, usage depends on CNT_MODE. */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_SLEEP_A55_HDSK_CTRL_CNT_MODE_SHIFT 28 /* (keep==0 and invisible on customer RM)Count mode */
|
||||
#define IMX9_GPC_CTRL_CMC_SLEEP_A55_HDSK_CTRL_CNT_MODE_MASK 0x3 /* (keep==0 and invisible on customer RM)Count mode */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_SLEEP_A55_HDSK_CTRL_DISABLE_SHIFT 31 /* Disable this step */
|
||||
#define IMX9_GPC_CTRL_CMC_SLEEP_A55_HDSK_CTRL_DISABLE_FLAG (1 << IMX9_GPC_CTRL_CMC_SLEEP_A55_HDSK_CTRL_DISABLE_SHIFT) /* Disable this step */
|
||||
|
||||
/* CMC_SLEEP_A55_HDSK_STAT register */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_SLEEP_A55_HDSK_STAT_RSP_CNT_SHIFT 0 /* Response count, record the delay from step start to step_done received */
|
||||
#define IMX9_GPC_CTRL_CMC_SLEEP_A55_HDSK_STAT_RSP_CNT_MASK 0xffffff /* Response count, record the delay from step start to step_done received */
|
||||
|
||||
/* CMC_SLEEP_SSAR_CTRL register */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_SLEEP_SSAR_CTRL_STEP_CNT_SHIFT 0 /* (invalid when CNT_MODE==0 and invisible on customer RM)Step count, usage depends on CNT_MODE. */
|
||||
#define IMX9_GPC_CTRL_CMC_SLEEP_SSAR_CTRL_STEP_CNT_MASK 0xffffff /* (invalid when CNT_MODE==0 and invisible on customer RM)Step count, usage depends on CNT_MODE. */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_SLEEP_SSAR_CTRL_CNT_MODE_SHIFT 28 /* (keep==0 and invisible on customer RM)Count mode */
|
||||
#define IMX9_GPC_CTRL_CMC_SLEEP_SSAR_CTRL_CNT_MODE_MASK 0x3 /* (keep==0 and invisible on customer RM)Count mode */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_SLEEP_SSAR_CTRL_DISABLE_SHIFT 31 /* Disable this step */
|
||||
#define IMX9_GPC_CTRL_CMC_SLEEP_SSAR_CTRL_DISABLE_FLAG (1 << IMX9_GPC_CTRL_CMC_SLEEP_SSAR_CTRL_DISABLE_SHIFT) /* Disable this step */
|
||||
|
||||
/* CMC_SLEEP_SSAR_STAT register */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_SLEEP_SSAR_STAT_RSP_CNT_SHIFT 0 /* Response count, record the delay from step start to step_done received */
|
||||
#define IMX9_GPC_CTRL_CMC_SLEEP_SSAR_STAT_RSP_CNT_MASK 0xffffff /* Response count, record the delay from step start to step_done received */
|
||||
|
||||
/* CMC_SLEEP_RESET_CTRL register */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_SLEEP_RESET_CTRL_STEP_CNT_SHIFT 0 /* (invalid when CNT_MODE==0 and invisible on customer RM)Step count, usage depends on CNT_MODE */
|
||||
#define IMX9_GPC_CTRL_CMC_SLEEP_RESET_CTRL_STEP_CNT_MASK 0xffffff /* (invalid when CNT_MODE==0 and invisible on customer RM)Step count, usage depends on CNT_MODE */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_SLEEP_RESET_CTRL_CNT_MODE_SHIFT 28 /* (keep==0 and invisible on customer RM)Count mode */
|
||||
#define IMX9_GPC_CTRL_CMC_SLEEP_RESET_CTRL_CNT_MODE_MASK 0x3 /* (keep==0 and invisible on customer RM)Count mode */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_SLEEP_RESET_CTRL_DISABLE_SHIFT 31 /* Disable this step */
|
||||
#define IMX9_GPC_CTRL_CMC_SLEEP_RESET_CTRL_DISABLE_FLAG (1 << IMX9_GPC_CTRL_CMC_SLEEP_RESET_CTRL_DISABLE_SHIFT) /* Disable this step */
|
||||
|
||||
/* CMC_SLEEP_RESET_STAT register */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_SLEEP_RESET_STAT_RSP_CNT_SHIFT 0 /* Response count, record the delay from step start to step_done received */
|
||||
#define IMX9_GPC_CTRL_CMC_SLEEP_RESET_STAT_RSP_CNT_MASK 0xffffff /* Response count, record the delay from step start to step_done received */
|
||||
|
||||
/* CMC_SLEEP_SYSMAN_CTRL register */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_SLEEP_SYSMAN_CTRL_STEP_CNT_SHIFT 0 /* (invalid when CNT_MODE==0 and invisible on customer RM)Step count, usage depends on CNT_MODE. */
|
||||
#define IMX9_GPC_CTRL_CMC_SLEEP_SYSMAN_CTRL_STEP_CNT_MASK 0xffffff /* (invalid when CNT_MODE==0 and invisible on customer RM)Step count, usage depends on CNT_MODE. */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_SLEEP_SYSMAN_CTRL_CNT_MODE_SHIFT 28 /* (keep==0 and invisible on customer RM)Count mode */
|
||||
#define IMX9_GPC_CTRL_CMC_SLEEP_SYSMAN_CTRL_CNT_MODE_MASK 0x3 /* (keep==0 and invisible on customer RM)Count mode */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_SLEEP_SYSMAN_CTRL_DISABLE_SHIFT 31 /* Disable this step */
|
||||
#define IMX9_GPC_CTRL_CMC_SLEEP_SYSMAN_CTRL_DISABLE_FLAG (1 << IMX9_GPC_CTRL_CMC_SLEEP_SYSMAN_CTRL_DISABLE_SHIFT) /* Disable this step */
|
||||
|
||||
/* CMC_SLEEP_SYSMAN_STAT register */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_SLEEP_SYSMAN_STAT_RSP_CNT_SHIFT 0 /* Response count, record the delay from step start to step_done received */
|
||||
#define IMX9_GPC_CTRL_CMC_SLEEP_SYSMAN_STAT_RSP_CNT_MASK 0xffffff /* Response count, record the delay from step start to step_done received */
|
||||
|
||||
/* CMC_WAKEUP_POWER_CTRL register */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_WAKEUP_POWER_CTRL_STEP_CNT_SHIFT 0 /* (invalid when CNT_MODE==0 and invisible on customer RM)Step count, usage depends on CNT_MODE */
|
||||
#define IMX9_GPC_CTRL_CMC_WAKEUP_POWER_CTRL_STEP_CNT_MASK 0xffffff /* (invalid when CNT_MODE==0 and invisible on customer RM)Step count, usage depends on CNT_MODE */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_WAKEUP_POWER_CTRL_CNT_MODE_SHIFT 28 /* (keep==0 and invisible on customer RM)Count mode */
|
||||
#define IMX9_GPC_CTRL_CMC_WAKEUP_POWER_CTRL_CNT_MODE_MASK 0x3 /* (keep==0 and invisible on customer RM)Count mode */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_WAKEUP_POWER_CTRL_DISABLE_SHIFT 31 /* Disable this step */
|
||||
#define IMX9_GPC_CTRL_CMC_WAKEUP_POWER_CTRL_DISABLE_FLAG (1 << IMX9_GPC_CTRL_CMC_WAKEUP_POWER_CTRL_DISABLE_SHIFT) /* Disable this step */
|
||||
|
||||
/* CMC_WAKEUP_POWER_STAT register */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_WAKEUP_POWER_STAT_RSP_CNT_SHIFT 0 /* Response count, record the delay from step start to step_done received */
|
||||
#define IMX9_GPC_CTRL_CMC_WAKEUP_POWER_STAT_RSP_CNT_MASK 0xffffff /* Response count, record the delay from step start to step_done received */
|
||||
|
||||
/* CMC_WAKEUP_SSAR_CTRL register */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_WAKEUP_SSAR_CTRL_STEP_CNT_SHIFT 0 /* (invalid when CNT_MODE==0 and invisible on customer RM)Step count, usage depends on CNT_MODE */
|
||||
#define IMX9_GPC_CTRL_CMC_WAKEUP_SSAR_CTRL_STEP_CNT_MASK 0xffffff /* (invalid when CNT_MODE==0 and invisible on customer RM)Step count, usage depends on CNT_MODE */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_WAKEUP_SSAR_CTRL_CNT_MODE_SHIFT 28 /* (keep==0 and invisible on customer RM)Count mode */
|
||||
#define IMX9_GPC_CTRL_CMC_WAKEUP_SSAR_CTRL_CNT_MODE_MASK 0x3 /* (keep==0 and invisible on customer RM)Count mode */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_WAKEUP_SSAR_CTRL_DISABLE_SHIFT 31 /* Disable this step */
|
||||
#define IMX9_GPC_CTRL_CMC_WAKEUP_SSAR_CTRL_DISABLE_FLAG (1 << IMX9_GPC_CTRL_CMC_WAKEUP_SSAR_CTRL_DISABLE_SHIFT) /* Disable this step */
|
||||
|
||||
/* CMC_WAKEUP_SSAR_STAT register */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_WAKEUP_SSAR_STAT_RSP_CNT_SHIFT 0 /* Response count, record the delay from step start to step_done received */
|
||||
#define IMX9_GPC_CTRL_CMC_WAKEUP_SSAR_STAT_RSP_CNT_MASK 0xffffff /* Response count, record the delay from step start to step_done received */
|
||||
|
||||
/* CMC_WAKEUP_A55_HDSK_CTRL register */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_WAKEUP_A55_HDSK_CTRL_STEP_CNT_SHIFT 0 /* (invalid when CNT_MODE==0 and invisible on customer RM)Step count, usage depends on CNT_MODE */
|
||||
#define IMX9_GPC_CTRL_CMC_WAKEUP_A55_HDSK_CTRL_STEP_CNT_MASK 0xffffff /* (invalid when CNT_MODE==0 and invisible on customer RM)Step count, usage depends on CNT_MODE */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_WAKEUP_A55_HDSK_CTRL_CNT_MODE_SHIFT 28 /* (keep==0 and invisible on customer RM)Count mode */
|
||||
#define IMX9_GPC_CTRL_CMC_WAKEUP_A55_HDSK_CTRL_CNT_MODE_MASK 0x3 /* (keep==0 and invisible on customer RM)Count mode */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_WAKEUP_A55_HDSK_CTRL_DISABLE_SHIFT 31 /* Disable this step */
|
||||
#define IMX9_GPC_CTRL_CMC_WAKEUP_A55_HDSK_CTRL_DISABLE_FLAG (1 << IMX9_GPC_CTRL_CMC_WAKEUP_A55_HDSK_CTRL_DISABLE_SHIFT) /* Disable this step */
|
||||
|
||||
/* CMC_WAKEUP_A55_HDSK_STAT register */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_WAKEUP_A55_HDSK_STAT_RSP_CNT_SHIFT 0 /* Response count, record the delay from step start to step_done received */
|
||||
#define IMX9_GPC_CTRL_CMC_WAKEUP_A55_HDSK_STAT_RSP_CNT_MASK 0xffffff /* Response count, record the delay from step start to step_done received */
|
||||
|
||||
/* CMC_WAKEUP_SYSMAN_CTRL register */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_WAKEUP_SYSMAN_CTRL_STEP_CNT_SHIFT 0 /* (invalid when CNT_MODE==0 and invisible on customer RM)Step count, usage depends on CNT_MODE */
|
||||
#define IMX9_GPC_CTRL_CMC_WAKEUP_SYSMAN_CTRL_STEP_CNT_MASK 0xffffff /* (invalid when CNT_MODE==0 and invisible on customer RM)Step count, usage depends on CNT_MODE */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_WAKEUP_SYSMAN_CTRL_CNT_MODE_SHIFT 28 /* (keep==0 and invisible on customer RM)Count mode */
|
||||
#define IMX9_GPC_CTRL_CMC_WAKEUP_SYSMAN_CTRL_CNT_MODE_MASK 0x3 /* (keep==0 and invisible on customer RM)Count mode */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_WAKEUP_SYSMAN_CTRL_DISABLE_SHIFT 31 /* Disable this step */
|
||||
#define IMX9_GPC_CTRL_CMC_WAKEUP_SYSMAN_CTRL_DISABLE_FLAG (1 << IMX9_GPC_CTRL_CMC_WAKEUP_SYSMAN_CTRL_DISABLE_SHIFT) /* Disable this step */
|
||||
|
||||
/* CMC_WAKEUP_SYSMAN_STAT register */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_WAKEUP_SYSMAN_STAT_RSP_CNT_SHIFT 0 /* Response count, record the delay from step start to step_done received */
|
||||
#define IMX9_GPC_CTRL_CMC_WAKEUP_SYSMAN_STAT_RSP_CNT_MASK 0xffffff /* Response count, record the delay from step start to step_done received */
|
||||
|
||||
/* CMC_SYS_SLEEP_CTRL register */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_SYS_SLEEP_CTRL_SS_WAIT_SHIFT 0 /* Request system sleep when CPU is in WAIT mode */
|
||||
#define IMX9_GPC_CTRL_CMC_SYS_SLEEP_CTRL_SS_WAIT_FLAG (1 << IMX9_GPC_CTRL_CMC_SYS_SLEEP_CTRL_SS_WAIT_SHIFT) /* Request system sleep when CPU is in WAIT mode */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_SYS_SLEEP_CTRL_SS_STOP_SHIFT 1 /* Request system sleep when CPU is in STOP mode */
|
||||
#define IMX9_GPC_CTRL_CMC_SYS_SLEEP_CTRL_SS_STOP_FLAG (1 << IMX9_GPC_CTRL_CMC_SYS_SLEEP_CTRL_SS_STOP_SHIFT) /* Request system sleep when CPU is in STOP mode */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_SYS_SLEEP_CTRL_SS_SUSPEND_SHIFT 2 /* Request system sleep when CPU is in SUSPEND mode */
|
||||
#define IMX9_GPC_CTRL_CMC_SYS_SLEEP_CTRL_SS_SUSPEND_FLAG (1 << IMX9_GPC_CTRL_CMC_SYS_SLEEP_CTRL_SS_SUSPEND_SHIFT) /* Request system sleep when CPU is in SUSPEND mode */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_SYS_SLEEP_CTRL_SYS_SLEEP_BUSY_SHIFT 16 /* Indicates the CPU is busy entering system sleep mode. */
|
||||
#define IMX9_GPC_CTRL_CMC_SYS_SLEEP_CTRL_SYS_SLEEP_BUSY_FLAG (1 << IMX9_GPC_CTRL_CMC_SYS_SLEEP_CTRL_SYS_SLEEP_BUSY_SHIFT) /* Indicates the CPU is busy entering system sleep mode. */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_SYS_SLEEP_CTRL_SYS_WAKEUP_BUSY_SHIFT 17 /* Indicates the CPU is busy exiting system sleep mode. */
|
||||
#define IMX9_GPC_CTRL_CMC_SYS_SLEEP_CTRL_SYS_WAKEUP_BUSY_FLAG (1 << IMX9_GPC_CTRL_CMC_SYS_SLEEP_CTRL_SYS_WAKEUP_BUSY_SHIFT) /* Indicates the CPU is busy exiting system sleep mode. */
|
||||
|
||||
/* CMC_DEBUG register */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_DEBUG_PRETEND_SLEEP_SHIFT 0 /* Write 1 to force CMC into sleep. Used to debug GPC status. Locked by LOCK_CFG field. */
|
||||
#define IMX9_GPC_CTRL_CMC_DEBUG_PRETEND_SLEEP_FLAG (1 << IMX9_GPC_CTRL_CMC_DEBUG_PRETEND_SLEEP_SHIFT) /* Write 1 to force CMC into sleep. Used to debug GPC status. Locked by LOCK_CFG field. */
|
||||
|
||||
/* Register array dimensions */
|
||||
|
||||
#define IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_MASK__REGARRAY_SIZE 12
|
||||
#define IMX9_GPC_CTRL_CMC_IRQ_WAKEUP_STAT__REGARRAY_SIZE 12
|
||||
|
||||
#endif /* __ARCH_ARM_SRC_IMX9_HARDWARE_IMX9_GPC_H */
|
109
arch/arm/src/imx9/hardware/imx9_gpio.h
Normal file
109
arch/arm/src/imx9/hardware/imx9_gpio.h
Normal file
|
@ -0,0 +1,109 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/hardware/imx9_gpio.h
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ARCH_ARM_SRC_IMX9_HARDWARE_IMX9_GPIO_H
|
||||
#define __ARCH_ARM_SRC_IMX9_HARDWARE_IMX9_GPIO_H
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#if defined(CONFIG_ARCH_CHIP_IMX95_M7)
|
||||
# include "hardware/imx95/imx95_gpio.h"
|
||||
#else
|
||||
# error Unrecognized i.MX9 architecture
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
#define GPIO1 0 /* Port 1 index */
|
||||
#define GPIO2 1 /* Port 2 index */
|
||||
#define GPIO3 2 /* Port 3 index */
|
||||
#define GPIO4 3 /* Port 4 index */
|
||||
#define GPIO5 4 /* Port 5 index */
|
||||
#define GPIO6 5 /* Port 6 index */
|
||||
#define GPIO7 6 /* Port 7 index */
|
||||
#define GPIO8 7 /* Port 8 index */
|
||||
#define GPIO9 8 /* Port 9 index */
|
||||
#define GPIO10 9 /* Port 10 index */
|
||||
#define GPIO11 10 /* Port 11 index */
|
||||
#define GPIO12 11 /* Port 12 index */
|
||||
#define GPIO13 12 /* Port 13 index */
|
||||
|
||||
#define IMX9_GPIO_NPINS 32 /* Up to 32 pins per port */
|
||||
|
||||
/* Register bit definitions *************************************************/
|
||||
|
||||
/* Most registers are laid out simply with one bit per pin */
|
||||
|
||||
#define GPIO_PIN(n) (1 << (n)) /* Bit n: Pin n, n=0-31 */
|
||||
|
||||
/* ICRN Register */
|
||||
|
||||
#define IMX9_GPIO_ICRN_ISF (1 << 24) /* Bit 24: Interrupt Status Flag */
|
||||
#define IMX9_GPIO_ICRN_LK (1 << 23) /* Bit 23: Lock Register */
|
||||
#define IMX9_GPIO_ICRN_IRQS (1 << 20) /* Bit 20: Configures the selected interrupt, or DMA request. */
|
||||
#define IMX9_GPIO_ICRN_SHIFT (16) /* Bits 16-19: Interrupt Configuration */
|
||||
#define IMX9_GPIO_ICRN_MASK (0xf << IMX9_GPIO_ICRN_SHIFT)
|
||||
# define IMX9_GPIO_ICRN_DISABLED (0 << IMX9_GPIO_ICRN_SHIFT) /* Interrupt Status Flag (ISF) is disabled */
|
||||
# define IMX9_GPIO_ICRN_DMARISING (1 << IMX9_GPIO_ICRN_SHIFT) /* ISF flag and DMA request on rising edge */
|
||||
# define IMX9_GPIO_ICRN_DMAFALLING (2 << IMX9_GPIO_ICRN_SHIFT) /* ISF flag and DMA request on falling edge */
|
||||
# define IMX9_GPIO_ICRN_DMABOTH (3 << IMX9_GPIO_ICRN_SHIFT) /* ISF flag and DMA request on either edge */
|
||||
# define IMX9_GPIO_ICRN_ISFRISING (5 << IMX9_GPIO_ICRN_SHIFT) /* ISF flag sets on rising edge */
|
||||
# define IMX9_GPIO_ICRN_ISFFALLING (6 << IMX9_GPIO_ICRN_SHIFT) /* ISF flag sets on falling edge */
|
||||
# define IMX9_GPIO_ICRN_ISFBOTH (7 << IMX9_GPIO_ICRN_SHIFT) /* ISF flag sets on either edge */
|
||||
# define IMX9_GPIO_ICRN_ZERO (8 << IMX9_GPIO_ICRN_SHIFT) /* ISF flag and Interrupt when logic 0 */
|
||||
# define IMX9_GPIO_ICRN_RISING (9 << IMX9_GPIO_ICRN_SHIFT) /* ISF flag and Interrupt on rising-edge */
|
||||
# define IMX9_GPIO_ICRN_FALLING (10 << IMX9_GPIO_ICRN_SHIFT) /* ISF flag and Interrupt on falling-edge */
|
||||
# define IMX9_GPIO_ICRN_BOTH (11 << IMX9_GPIO_ICRN_SHIFT) /* ISF flag and Interrupt on either edge */
|
||||
# define IMX9_GPIO_ICRN_ONE (12 << IMX9_GPIO_ICRN_SHIFT) /* ISF flag and Interrupt when logic 1 */
|
||||
|
||||
/* Global Interrupt Control Low Register */
|
||||
|
||||
#define IMX9_GPIO_GICLR_GIWD_SHIFT (0) /* Bits 0-15: Global Interrupt Write Data */
|
||||
#define IMX9_GPIO_GICLR_GIWD_MASK (0xffff << IMX9_GPIO_GICLR_GIWD_SHIFT)
|
||||
# define IMX9_GPIO_GICLR_GIWD_PIN(n) ((uint32_t)(n) << IMX9_GPIO_GICLR_GIWD_SHIFT) /* Pin n=0..15 */
|
||||
|
||||
#define IMX9_GPIO_GICLR_GIWE_SHIFT (16) /* Bits 16-31: Global Interrupt Write Enable */
|
||||
#define IMX9_GPIO_GICLR_GIWE_MASK (0xffff << IMX9_GPIO_GICLR_GIWE_SHIFT)
|
||||
# define IMX9_GPIO_GICLR_GIWE_PIN(n) ((uint32_t)(n) << IMX9_GPIO_GICLR_GIWE_SHIFT) /* Pin n=0..15 */
|
||||
|
||||
/* Global Interrupt Control High Register */
|
||||
|
||||
#define IMX9_GPIO_GICHR_GIWD_SHIFT (0) /* Bits 0-15: Global Interrupt Write Data */
|
||||
#define IMX9_GPIO_GICHR_GIWD_MASK (0xffff << IMX9_GPIO_GICHR_GIWD_SHIFT)
|
||||
# define IMX9_GPIO_GICHR_GIWD_PIN(n) ((uint32_t)((n) - 16) << IMX9_GPIO_GICHR_GIWD_SHIFT) /* Pin n=16..31 */
|
||||
|
||||
#define IMX9_GPIO_GICHR_GIWE_SHIFT (16) /* Bits 16-31: Global Interrupt Write Enable */
|
||||
#define IMX9_GPIO_GICHR_GIWE_MASK (0xffff << IMX9_GPIO_GICHR_GIWE_SHIFT)
|
||||
# define IMX9_GPIO_GICHR_GIWE_PIN(n) ((uint32_t)((n) - 16) << IMX9_GPIO_GICHR_GIWE_SHIFT) /* Pin n=16..31 */
|
||||
|
||||
/* Interrupt Status Flag Register */
|
||||
|
||||
#define IMX9_GPIO_ISFR(n) (1 << (n)) /* Interrupt Status Flag, n=0-31 */
|
||||
|
||||
#endif /* __ARCH_ARM_SRC_IMX9_HARDWARE_IMX9_GPIO_H */
|
107
arch/arm/src/imx9/hardware/imx9_iomuxc.h
Normal file
107
arch/arm/src/imx9/hardware/imx9_iomuxc.h
Normal file
|
@ -0,0 +1,107 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/hardware/imx9_iomuxc.h
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ARCH_ARM_SRC_IMX9_HARDWARE_IMX9_IOMUXC_H
|
||||
#define __ARCH_ARM_SRC_IMX9_HARDWARE_IMX9_IOMUXC_H
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#if defined(CONFIG_ARCH_CHIP_IMX95_M7)
|
||||
# include "hardware/imx95/imx95_iomuxc.h"
|
||||
#else
|
||||
# error Unrecognized i.MX9 architecture
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/* Pad muxing */
|
||||
|
||||
#define IOMUXC_MUX_MODE_SHIFT (0) /* MODE: pin alternate function */
|
||||
#define IOMUXC_MUX_MODE_MASK (0x03 << IOMUXC_MUX_MODE_SHIFT)
|
||||
#define IOMUXC_MUX_MODE_ALT0 (0 << IOMUXC_MUX_MODE_SHIFT)
|
||||
#define IOMUXC_MUX_MODE_ALT1 (1 << IOMUXC_MUX_MODE_SHIFT)
|
||||
#define IOMUXC_MUX_MODE_ALT2 (2 << IOMUXC_MUX_MODE_SHIFT)
|
||||
#define IOMUXC_MUX_MODE_ALT3 (3 << IOMUXC_MUX_MODE_SHIFT)
|
||||
#define IOMUXC_MUX_MODE_ALT4 (4 << IOMUXC_MUX_MODE_SHIFT)
|
||||
#define IOMUXC_MUX_MODE_ALT5 (5 << IOMUXC_MUX_MODE_SHIFT)
|
||||
#define IOMUXC_MUX_MODE_ALT6 (6 << IOMUXC_MUX_MODE_SHIFT)
|
||||
|
||||
#define IOMUXC_MUX_SION_SHIFT (4) /* SION: Force input path */
|
||||
#define IPMUXC_MUX_SION_MASK (0x01 << IOMUXC_MUX_SION_SHIFT)
|
||||
#define IOMUXC_MUX_SION_OFF (0 << IOMUXC_MUX_SION_SHIFT)
|
||||
#define IOMUXC_MUX_SION_ON (1 << IOMUXC_MUX_SION_SHIFT)
|
||||
|
||||
/* Pad control */
|
||||
|
||||
#define IOMUXC_PAD_DSE_SHIFT (1) /* DSE: Drive strength */
|
||||
#define IOMUXC_PAD_DSE_MASK (0x3f << IOMUXC_PAD_DSE_SHIFT)
|
||||
#define IOMUXC_PAD_DSE_X0 (0x00 << IOMUXC_PAD_DSE_SHIFT)
|
||||
#define IOMUXC_PAD_DSE_X1 (0x01 << IOMUXC_PAD_DSE_SHIFT)
|
||||
#define IOMUXC_PAD_DSE_X2 (0x03 << IOMUXC_PAD_DSE_SHIFT)
|
||||
#define IOMUXC_PAD_DSE_X3 (0x07 << IOMUXC_PAD_DSE_SHIFT)
|
||||
#define IOMUXC_PAD_DSE_X4 (0x0f << IOMUXC_PAD_DSE_SHIFT)
|
||||
#define IOMUXC_PAD_DSE_X5 (0x1f << IOMUXC_PAD_DSE_SHIFT)
|
||||
#define IOMUXC_PAD_DSE_X6 (0x3f << IOMUXC_PAD_DSE_SHIFT)
|
||||
|
||||
#define IOMUXC_PAD_FSEL_SHIFT (7) /* FSEL: Slew rate control */
|
||||
#define IOMUXC_PAD_FSEL_MASK (0x02 << IOMUXC_PAD_FSEL_SHIFT)
|
||||
#define IOMUXC_PAD_FSEL_SLOW (0 << IOMUXC_PAD_FSEL_SHIFT)
|
||||
#define IOMUXC_PAD_FSEL_SSLOW (1 << IOMUXC_PAD_FSEL_SHIFT) /* Slightly slow */
|
||||
#define IOMUXC_PAD_FSEL_SFAST (2 << IOMUXC_PAD_FSEL_SHIFT) /* Slightly fast */
|
||||
#define IOMUXC_PAD_FSEL_FAST (3 << IOMUXC_PAD_FSEL_SHIFT)
|
||||
|
||||
#define IOMUXC_PAD_PU_SHIFT (9) /* PU: Pull-up */
|
||||
#define IOMUXC_PAD_PU_MASK (0x01 << IOMUXC_PAD_PU_SHIFT)
|
||||
#define IOMUXC_PAD_PU_OFF (0 << IOMUXC_PAD_PU_SHIFT)
|
||||
#define IOMUXC_PAD_PU_ON (1 << IOMUXC_PAD_PU_SHIFT)
|
||||
|
||||
#define IOMUXC_PAD_PD_SHIFT (10) /* PD: Pull-down */
|
||||
#define IOMUXC_PAD_PD_MASK (0x01 << IOMUXC_PAD_PD_SHIFT)
|
||||
#define IOMUXC_PAD_PD_OFF (0 << IOMUXC_PAD_PD_SHIFT)
|
||||
#define IOMUXC_PAD_PD_ON (1 << IOMUXC_PAD_PD_SHIFT)
|
||||
|
||||
#define IOMUXC_PAD_OD_SHIFT (11) /* OD: Open-drain */
|
||||
#define IOMUXC_PAD_OD_MASK (0x01 << IOMUXC_PAD_OD_SHIFT)
|
||||
#define IOMUXC_PAD_OD_DISABE (0 << IOMUXC_PAD_OD_SHIFT)
|
||||
#define IOMUXC_PAD_OD_ENABLE (1 << IOMUXC_PAD_OD_SHIFT)
|
||||
|
||||
#define IOMUXC_PAD_HYS_SHIFT (12) /* HYS: Enable schmitt-trigger on input */
|
||||
#define IOMUXC_PAD_HYS_MASK (0x01 << IOMUXC_PAD_HYS_SHIFT)
|
||||
#define IOMUXC_PAD_HYS_ST_OFF (0 << IOMUXC_PAD_HYS_SHIFT) /* Schmitt-trigger off */
|
||||
#define IOMUXC_PAD_HYS_ST_ON (1 << IOMUXC_PAD_HYS_SHIFT) /* Schmitt-trigger on */
|
||||
|
||||
#define IOMUXC_PAD_APC_SHIFT (24) /* APC: Access control */
|
||||
#define IOMUXC_PAD_APC_MASK (0xff << IOMUXC_PAD_APC_SHIFT)
|
||||
|
||||
/* Daisy chain control, 2 bits seems to be enough */
|
||||
|
||||
#define IOMUXC_DSY_SHIFT (0)
|
||||
#define IOMUXC_DSY_MASK (0x03 << IOMUXC_DSY_SHIFT)
|
||||
|
||||
#endif /* __ARCH_ARM_SRC_IMX9_HARDWARE_IMX9_IOMUXC_H */
|
628
arch/arm/src/imx9/hardware/imx9_lpi2c.h
Normal file
628
arch/arm/src/imx9/hardware/imx9_lpi2c.h
Normal file
|
@ -0,0 +1,628 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/hardware/imx9_lpi2c.h
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ARCH_ARM_SRC_IMX9_HARDWARE_IMX9_LPI2C_H_
|
||||
#define __ARCH_ARM_SRC_IMX9_HARDWARE_IMX9_LPI2C_H_
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/* Register offsets *********************************************************/
|
||||
|
||||
#define IMX9_LPI2C_VERID_OFFSET 0x0000 /* Version ID Register offset */
|
||||
#define IMX9_LPI2C_PARAM_OFFSET 0x0004 /* Parameter Register offset */
|
||||
#define IMX9_LPI2C_MCR_OFFSET 0x0010 /* Master Control Register offset */
|
||||
#define IMX9_LPI2C_MSR_OFFSET 0x0014 /* Master Status Register offset */
|
||||
#define IMX9_LPI2C_MIER_OFFSET 0x0018 /* Master Interrupt Enable Register offset */
|
||||
#define IMX9_LPI2C_MDER_OFFSET 0x001c /* Master DMA Enable Register offset */
|
||||
#define IMX9_LPI2C_MCFGR0_OFFSET 0x0020 /* Master Config Register 0 offset */
|
||||
#define IMX9_LPI2C_MCFGR1_OFFSET 0x0024 /* Master Config Register 1 offset */
|
||||
#define IMX9_LPI2C_MCFGR2_OFFSET 0x0028 /* Master Config Register 2 offset */
|
||||
#define IMX9_LPI2C_MCFGR3_OFFSET 0x002c /* Master Config Register 3 offset */
|
||||
#define IMX9_LPI2C_MDMR_OFFSET 0x0040 /* Master Data Match Register offset */
|
||||
#define IMX9_LPI2C_MCCR0_OFFSET 0x0048 /* Master Clock Configuration Register 0 offset */
|
||||
#define IMX9_LPI2C_MCCR1_OFFSET 0x0050 /* Master Clock Configuration Register 1 offset */
|
||||
#define IMX9_LPI2C_MFCR_OFFSET 0x0058 /* Master FIFO Control Register offset */
|
||||
#define IMX9_LPI2C_MFSR_OFFSET 0x005C /* Master FIFO Status Register offset */
|
||||
#define IMX9_LPI2C_MTDR_OFFSET 0x0060 /* Master Transmit Data Register offset */
|
||||
#define IMX9_LPI2C_MRDR_OFFSET 0x0070 /* Master Receive Data Register offset */
|
||||
#define IMX9_LPI2C_SCR_OFFSET 0x0110 /* Slave Control Register offset */
|
||||
#define IMX9_LPI2C_SSR_OFFSET 0x0114 /* Slave Status Register offset */
|
||||
#define IMX9_LPI2C_SIER_OFFSET 0x0118 /* Slave Interrupt Enable Register offset */
|
||||
#define IMX9_LPI2C_SDER_OFFSET 0x011c /* Slave DMA Enable Register offset */
|
||||
#define IMX9_LPI2C_SCFGR1_OFFSET 0x0124 /* Slave Config Register 1 offset */
|
||||
#define IMX9_LPI2C_SCFGR2_OFFSET 0x0128 /* Slave Config Register 2 offset */
|
||||
#define IMX9_LPI2C_SAMR_OFFSET 0x0140 /* Slave Address Match Register offset */
|
||||
#define IMX9_LPI2C_SASR_OFFSET 0x0150 /* Slave Address Status Register offset */
|
||||
#define IMX9_LPI2C_STAR_OFFSET 0x0154 /* Slave Transmit ACK Register offset */
|
||||
#define IMX9_LPI2C_STDR_OFFSET 0x0160 /* Slave Transmit Data Register offset */
|
||||
#define IMX9_LPI2C_SRDR_OFFSET 0x0170 /* Slave Receive Data Register offset */
|
||||
|
||||
/* Register addresses *******************************************************/
|
||||
|
||||
/* LPI2C1 Registers */
|
||||
|
||||
#define IMX9_LPI2C1_VERID (IMX9_LPI2C1_BASE + IMX9_LPI2C_VERID_OFFSET) /* Version ID Register */
|
||||
#define IMX9_LPI2C1_PARAM (IMX9_LPI2C1_BASE + IMX9_LPI2C_PARAM_OFFSET) /* Parameter Register */
|
||||
#define IMX9_LPI2C1_MCR (IMX9_LPI2C1_BASE + IMX9_LPI2C_MCR_OFFSET) /* Master Control Register */
|
||||
#define IMX9_LPI2C1_MSR (IMX9_LPI2C1_BASE + IMX9_LPI2C_MSR_OFFSET) /* Master Status Register */
|
||||
#define IMX9_LPI2C1_MIER (IMX9_LPI2C1_BASE + IMX9_LPI2C_MIER_OFFSET) /* Master Interrupt Enable Register */
|
||||
#define IMX9_LPI2C1_MDER (IMX9_LPI2C1_BASE + IMX9_LPI2C_MDER_OFFSET) /* Master DMA Enable Register */
|
||||
#define IMX9_LPI2C1_MCFGR0 (IMX9_LPI2C1_BASE + IMX9_LPI2C_MCFGR0_OFFSET) /* Master Config Register 0 */
|
||||
#define IMX9_LPI2C1_MCFGR1 (IMX9_LPI2C1_BASE + IMX9_LPI2C_MCFGR1_OFFSET) /* Master Config Register 1 */
|
||||
#define IMX9_LPI2C1_MCFGR2 (IMX9_LPI2C1_BASE + IMX9_LPI2C_MCFGR2_OFFSET) /* Master Config Register 2 */
|
||||
#define IMX9_LPI2C1_MCFGR3 (IMX9_LPI2C1_BASE + IMX9_LPI2C_MCFGR3_OFFSET) /* Master Config Register 3 */
|
||||
#define IMX9_LPI2C1_MDMR (IMX9_LPI2C1_BASE + IMX9_LPI2C_MDMR_OFFSET) /* Master Data Match Register */
|
||||
#define IMX9_LPI2C1_MCCR0 (IMX9_LPI2C1_BASE + IMX9_LPI2C_MCCR0_OFFSET) /* Master Clock Configuration Register 0 */
|
||||
#define IMX9_LPI2C1_MCCR1 (IMX9_LPI2C1_BASE + IMX9_LPI2C_MCCR1_OFFSET) /* Master Clock Configuration Register 1 */
|
||||
#define IMX9_LPI2C1_MFCR (IMX9_LPI2C1_BASE + IMX9_LPI2C_MFCR_OFFSET) /* Master FIFO Control Register */
|
||||
#define IMX9_LPI2C1_MFSR (IMX9_LPI2C1_BASE + IMX9_LPI2C_MFSR_OFFSET) /* Master FIFO Status Register */
|
||||
#define IMX9_LPI2C1_MTDR (IMX9_LPI2C1_BASE + IMX9_LPI2C_MTDR_OFFSET) /* Master Transmit Data Register */
|
||||
#define IMX9_LPI2C1_MRDR (IMX9_LPI2C1_BASE + IMX9_LPI2C_MRDR_OFFSET) /* Master Receive Data Register */
|
||||
#define IMX9_LPI2C1_SCR (IMX9_LPI2C1_BASE + IMX9_LPI2C_SCR_OFFSET) /* Slave Control Register */
|
||||
#define IMX9_LPI2C1_SSR (IMX9_LPI2C1_BASE + IMX9_LPI2C_SSR_OFFSET) /* Slave Status Register */
|
||||
#define IMX9_LPI2C1_SIER (IMX9_LPI2C1_BASE + IMX9_LPI2C_SIER_OFFSET) /* Slave Interrupt Enable Register */
|
||||
#define IMX9_LPI2C1_SDER (IMX9_LPI2C1_BASE + IMX9_LPI2C_SDER_OFFSET) /* Slave DMA Enable Register */
|
||||
#define IMX9_LPI2C1_SCFGR1 (IMX9_LPI2C1_BASE + IMX9_LPI2C_SCFGR1_OFFSET) /* Slave Config Register 1 */
|
||||
#define IMX9_LPI2C1_SCFGR2 (IMX9_LPI2C1_BASE + IMX9_LPI2C_SCFGR2_OFFSET) /* Slave Config Register 2 */
|
||||
#define IMX9_LPI2C1_SAMR (IMX9_LPI2C1_BASE + IMX9_LPI2C_SAMR_OFFSET) /* Slave Address Match Register */
|
||||
#define IMX9_LPI2C1_SASR (IMX9_LPI2C1_BASE + IMX9_LPI2C_SASR_OFFSET) /* Slave Address Status Register */
|
||||
#define IMX9_LPI2C1_STAR (IMX9_LPI2C1_BASE + IMX9_LPI2C_STAR_OFFSET) /* Slave Transmit ACK Register */
|
||||
#define IMX9_LPI2C1_STDR (IMX9_LPI2C1_BASE + IMX9_LPI2C_STDR_OFFSET) /* Slave Transmit Data Register */
|
||||
#define IMX9_LPI2C1_SRDR (IMX9_LPI2C1_BASE + IMX9_LPI2C_SRDR_OFFSET) /* Slave Receive Data Register */
|
||||
|
||||
/* LPI2C2 Registers */
|
||||
|
||||
#define IMX9_LPI2C2_VERID (IMX9_LPI2C2_BASE + IMX9_LPI2C_VERID_OFFSET) /* Version ID Register */
|
||||
#define IMX9_LPI2C2_PARAM (IMX9_LPI2C2_BASE + IMX9_LPI2C_PARAM_OFFSET) /* Parameter Register */
|
||||
#define IMX9_LPI2C2_MCR (IMX9_LPI2C2_BASE + IMX9_LPI2C_MCR_OFFSET) /* Master Control Register */
|
||||
#define IMX9_LPI2C2_MSR (IMX9_LPI2C2_BASE + IMX9_LPI2C_MSR_OFFSET) /* Master Status Register */
|
||||
#define IMX9_LPI2C2_MIER (IMX9_LPI2C2_BASE + IMX9_LPI2C_MIER_OFFSET) /* Master Interrupt Enable Register */
|
||||
#define IMX9_LPI2C2_MDER (IMX9_LPI2C2_BASE + IMX9_LPI2C_MDER_OFFSET) /* Master DMA Enable Register */
|
||||
#define IMX9_LPI2C2_MCFGR0 (IMX9_LPI2C2_BASE + IMX9_LPI2C_MCFGR0_OFFSET) /* Master Config Register 0 */
|
||||
#define IMX9_LPI2C2_MCFGR1 (IMX9_LPI2C2_BASE + IMX9_LPI2C_MCFGR1_OFFSET) /* Master Config Register 1 */
|
||||
#define IMX9_LPI2C2_MCFGR2 (IMX9_LPI2C2_BASE + IMX9_LPI2C_MCFGR2_OFFSET) /* Master Config Register 2 */
|
||||
#define IMX9_LPI2C2_MCFGR3 (IMX9_LPI2C2_BASE + IMX9_LPI2C_MCFGR3_OFFSET) /* Master Config Register 3 */
|
||||
#define IMX9_LPI2C2_MDMR (IMX9_LPI2C2_BASE + IMX9_LPI2C_MDMR_OFFSET) /* Master Data Match Register */
|
||||
#define IMX9_LPI2C2_MCCR0 (IMX9_LPI2C2_BASE + IMX9_LPI2C_MCCR0_OFFSET) /* Master Clock Configuration Register 0 */
|
||||
#define IMX9_LPI2C2_MCCR1 (IMX9_LPI2C2_BASE + IMX9_LPI2C_MCCR1_OFFSET) /* Master Clock Configuration Register 1 */
|
||||
#define IMX9_LPI2C2_MFCR (IMX9_LPI2C2_BASE + IMX9_LPI2C_MFCR_OFFSET) /* Master FIFO Control Register */
|
||||
#define IMX9_LPI2C2_MFSR (IMX9_LPI2C2_BASE + IMX9_LPI2C_MFSR_OFFSET) /* Master FIFO Status Register */
|
||||
#define IMX9_LPI2C2_MTDR (IMX9_LPI2C2_BASE + IMX9_LPI2C_MTDR_OFFSET) /* Master Transmit Data Register */
|
||||
#define IMX9_LPI2C2_MRDR (IMX9_LPI2C2_BASE + IMX9_LPI2C_MRDR_OFFSET) /* Master Receive Data Register */
|
||||
#define IMX9_LPI2C2_SCR (IMX9_LPI2C2_BASE + IMX9_LPI2C_SCR_OFFSET) /* Slave Control Register */
|
||||
#define IMX9_LPI2C2_SSR (IMX9_LPI2C2_BASE + IMX9_LPI2C_SSR_OFFSET) /* Slave Status Register */
|
||||
#define IMX9_LPI2C2_SIER (IMX9_LPI2C2_BASE + IMX9_LPI2C_SIER_OFFSET) /* Slave Interrupt Enable Register */
|
||||
#define IMX9_LPI2C2_SDER (IMX9_LPI2C2_BASE + IMX9_LPI2C_SDER_OFFSET) /* Slave DMA Enable Register */
|
||||
#define IMX9_LPI2C2_SCFGR1 (IMX9_LPI2C2_BASE + IMX9_LPI2C_SCFGR1_OFFSET) /* Slave Config Register 1 */
|
||||
#define IMX9_LPI2C2_SCFGR2 (IMX9_LPI2C2_BASE + IMX9_LPI2C_SCFGR2_OFFSET) /* Slave Config Register 2 */
|
||||
#define IMX9_LPI2C2_SAMR (IMX9_LPI2C2_BASE + IMX9_LPI2C_SAMR_OFFSET) /* Slave Address Match Register */
|
||||
#define IMX9_LPI2C2_SASR (IMX9_LPI2C2_BASE + IMX9_LPI2C_SASR_OFFSET) /* Slave Address Status Register */
|
||||
#define IMX9_LPI2C2_STAR (IMX9_LPI2C2_BASE + IMX9_LPI2C_STAR_OFFSET) /* Slave Transmit ACK Register */
|
||||
#define IMX9_LPI2C2_STDR (IMX9_LPI2C2_BASE + IMX9_LPI2C_STDR_OFFSET) /* Slave Transmit Data Register */
|
||||
#define IMX9_LPI2C2_SRDR (IMX9_LPI2C2_BASE + IMX9_LPI2C_SRDR_OFFSET) /* Slave Receive Data Register */
|
||||
|
||||
/* LPI2C3 Registers */
|
||||
|
||||
#define IMX9_LPI2C3_VERID (IMX9_LPI2C3_BASE + IMX9_LPI2C_VERID_OFFSET) /* Version ID Register */
|
||||
#define IMX9_LPI2C3_PARAM (IMX9_LPI2C3_BASE + IMX9_LPI2C_PARAM_OFFSET) /* Parameter Register */
|
||||
#define IMX9_LPI2C3_MCR (IMX9_LPI2C3_BASE + IMX9_LPI2C_MCR_OFFSET) /* Master Control Register */
|
||||
#define IMX9_LPI2C3_MSR (IMX9_LPI2C3_BASE + IMX9_LPI2C_MSR_OFFSET) /* Master Status Register */
|
||||
#define IMX9_LPI2C3_MIER (IMX9_LPI2C3_BASE + IMX9_LPI2C_MIER_OFFSET) /* Master Interrupt Enable Register */
|
||||
#define IMX9_LPI2C3_MDER (IMX9_LPI2C3_BASE + IMX9_LPI2C_MDER_OFFSET) /* Master DMA Enable Register */
|
||||
#define IMX9_LPI2C3_MCFGR0 (IMX9_LPI2C3_BASE + IMX9_LPI2C_MCFGR0_OFFSET) /* Master Config Register 0 */
|
||||
#define IMX9_LPI2C3_MCFGR1 (IMX9_LPI2C3_BASE + IMX9_LPI2C_MCFGR1_OFFSET) /* Master Config Register 1 */
|
||||
#define IMX9_LPI2C3_MCFGR2 (IMX9_LPI2C3_BASE + IMX9_LPI2C_MCFGR2_OFFSET) /* Master Config Register 2 */
|
||||
#define IMX9_LPI2C3_MCFGR3 (IMX9_LPI2C3_BASE + IMX9_LPI2C_MCFGR3_OFFSET) /* Master Config Register 3 */
|
||||
#define IMX9_LPI2C3_MDMR (IMX9_LPI2C3_BASE + IMX9_LPI2C_MDMR_OFFSET) /* Master Data Match Register */
|
||||
#define IMX9_LPI2C3_MCCR0 (IMX9_LPI2C3_BASE + IMX9_LPI2C_MCCR0_OFFSET) /* Master Clock Configuration Register 0 */
|
||||
#define IMX9_LPI2C3_MCCR1 (IMX9_LPI2C3_BASE + IMX9_LPI2C_MCCR1_OFFSET) /* Master Clock Configuration Register 1 */
|
||||
#define IMX9_LPI2C3_MFCR (IMX9_LPI2C3_BASE + IMX9_LPI2C_MFCR_OFFSET) /* Master FIFO Control Register */
|
||||
#define IMX9_LPI2C3_MFSR (IMX9_LPI2C3_BASE + IMX9_LPI2C_MFSR_OFFSET) /* Master FIFO Status Register */
|
||||
#define IMX9_LPI2C3_MTDR (IMX9_LPI2C3_BASE + IMX9_LPI2C_MTDR_OFFSET) /* Master Transmit Data Register */
|
||||
#define IMX9_LPI2C3_MRDR (IMX9_LPI2C3_BASE + IMX9_LPI2C_MRDR_OFFSET) /* Master Receive Data Register */
|
||||
#define IMX9_LPI2C3_SCR (IMX9_LPI2C3_BASE + IMX9_LPI2C_SCR_OFFSET) /* Slave Control Register */
|
||||
#define IMX9_LPI2C3_SSR (IMX9_LPI2C3_BASE + IMX9_LPI2C_SSR_OFFSET) /* Slave Status Register */
|
||||
#define IMX9_LPI2C3_SIER (IMX9_LPI2C3_BASE + IMX9_LPI2C_SIER_OFFSET) /* Slave Interrupt Enable Register */
|
||||
#define IMX9_LPI2C3_SDER (IMX9_LPI2C3_BASE + IMX9_LPI2C_SDER_OFFSET) /* Slave DMA Enable Register */
|
||||
#define IMX9_LPI2C3_SCFGR1 (IMX9_LPI2C3_BASE + IMX9_LPI2C_SCFGR1_OFFSET) /* Slave Config Register 1 */
|
||||
#define IMX9_LPI2C3_SCFGR2 (IMX9_LPI2C3_BASE + IMX9_LPI2C_SCFGR2_OFFSET) /* Slave Config Register 2 */
|
||||
#define IMX9_LPI2C3_SAMR (IMX9_LPI2C3_BASE + IMX9_LPI2C_SAMR_OFFSET) /* Slave Address Match Register */
|
||||
#define IMX9_LPI2C3_SASR (IMX9_LPI2C3_BASE + IMX9_LPI2C_SASR_OFFSET) /* Slave Address Status Register */
|
||||
#define IMX9_LPI2C3_STAR (IMX9_LPI2C3_BASE + IMX9_LPI2C_STAR_OFFSET) /* Slave Transmit ACK Register */
|
||||
#define IMX9_LPI2C3_STDR (IMX9_LPI2C3_BASE + IMX9_LPI2C_STDR_OFFSET) /* Slave Transmit Data Register */
|
||||
#define IMX9_LPI2C3_SRDR (IMX9_LPI2C3_BASE + IMX9_LPI2C_SRDR_OFFSET) /* Slave Receive Data Register */
|
||||
|
||||
/* LPI2C4 Registers */
|
||||
|
||||
#define IMX9_LPI2C4_VERID (IMX9_LPI2C4_BASE + IMX9_LPI2C_VERID_OFFSET) /* Version ID Register */
|
||||
#define IMX9_LPI2C4_PARAM (IMX9_LPI2C4_BASE + IMX9_LPI2C_PARAM_OFFSET) /* Parameter Register */
|
||||
#define IMX9_LPI2C4_MCR (IMX9_LPI2C4_BASE + IMX9_LPI2C_MCR_OFFSET) /* Master Control Register */
|
||||
#define IMX9_LPI2C4_MSR (IMX9_LPI2C4_BASE + IMX9_LPI2C_MSR_OFFSET) /* Master Status Register */
|
||||
#define IMX9_LPI2C4_MIER (IMX9_LPI2C4_BASE + IMX9_LPI2C_MIER_OFFSET) /* Master Interrupt Enable Register */
|
||||
#define IMX9_LPI2C4_MDER (IMX9_LPI2C4_BASE + IMX9_LPI2C_MDER_OFFSET) /* Master DMA Enable Register */
|
||||
#define IMX9_LPI2C4_MCFGR0 (IMX9_LPI2C4_BASE + IMX9_LPI2C_MCFGR0_OFFSET) /* Master Config Register 0 */
|
||||
#define IMX9_LPI2C4_MCFGR1 (IMX9_LPI2C4_BASE + IMX9_LPI2C_MCFGR1_OFFSET) /* Master Config Register 1 */
|
||||
#define IMX9_LPI2C4_MCFGR2 (IMX9_LPI2C4_BASE + IMX9_LPI2C_MCFGR2_OFFSET) /* Master Config Register 2 */
|
||||
#define IMX9_LPI2C4_MCFGR3 (IMX9_LPI2C4_BASE + IMX9_LPI2C_MCFGR3_OFFSET) /* Master Config Register 3 */
|
||||
#define IMX9_LPI2C4_MDMR (IMX9_LPI2C4_BASE + IMX9_LPI2C_MDMR_OFFSET) /* Master Data Match Register */
|
||||
#define IMX9_LPI2C4_MCCR0 (IMX9_LPI2C4_BASE + IMX9_LPI2C_MCCR0_OFFSET) /* Master Clock Configuration Register 0 */
|
||||
#define IMX9_LPI2C4_MCCR1 (IMX9_LPI2C4_BASE + IMX9_LPI2C_MCCR1_OFFSET) /* Master Clock Configuration Register 1 */
|
||||
#define IMX9_LPI2C4_MFCR (IMX9_LPI2C4_BASE + IMX9_LPI2C_MFCR_OFFSET) /* Master FIFO Control Register */
|
||||
#define IMX9_LPI2C4_MFSR (IMX9_LPI2C4_BASE + IMX9_LPI2C_MFSR_OFFSET) /* Master FIFO Status Register */
|
||||
#define IMX9_LPI2C4_MTDR (IMX9_LPI2C4_BASE + IMX9_LPI2C_MTDR_OFFSET) /* Master Transmit Data Register */
|
||||
#define IMX9_LPI2C4_MRDR (IMX9_LPI2C4_BASE + IMX9_LPI2C_MRDR_OFFSET) /* Master Receive Data Register */
|
||||
#define IMX9_LPI2C4_SCR (IMX9_LPI2C4_BASE + IMX9_LPI2C_SCR_OFFSET) /* Slave Control Register */
|
||||
#define IMX9_LPI2C4_SSR (IMX9_LPI2C4_BASE + IMX9_LPI2C_SSR_OFFSET) /* Slave Status Register */
|
||||
#define IMX9_LPI2C4_SIER (IMX9_LPI2C4_BASE + IMX9_LPI2C_SIER_OFFSET) /* Slave Interrupt Enable Register */
|
||||
#define IMX9_LPI2C4_SDER (IMX9_LPI2C4_BASE + IMX9_LPI2C_SDER_OFFSET) /* Slave DMA Enable Register */
|
||||
#define IMX9_LPI2C4_SCFGR1 (IMX9_LPI2C4_BASE + IMX9_LPI2C_SCFGR1_OFFSET) /* Slave Config Register 1 */
|
||||
#define IMX9_LPI2C4_SCFGR2 (IMX9_LPI2C4_BASE + IMX9_LPI2C_SCFGR2_OFFSET) /* Slave Config Register 2 */
|
||||
#define IMX9_LPI2C4_SAMR (IMX9_LPI2C4_BASE + IMX9_LPI2C_SAMR_OFFSET) /* Slave Address Match Register */
|
||||
#define IMX9_LPI2C4_SASR (IMX9_LPI2C4_BASE + IMX9_LPI2C_SASR_OFFSET) /* Slave Address Status Register */
|
||||
#define IMX9_LPI2C4_STAR (IMX9_LPI2C4_BASE + IMX9_LPI2C_STAR_OFFSET) /* Slave Transmit ACK Register */
|
||||
#define IMX9_LPI2C4_STDR (IMX9_LPI2C4_BASE + IMX9_LPI2C_STDR_OFFSET) /* Slave Transmit Data Register */
|
||||
#define IMX9_LPI2C4_SRDR (IMX9_LPI2C4_BASE + IMX9_LPI2C_SRDR_OFFSET) /* Slave Receive Data Register */
|
||||
|
||||
/* Register bit definitions *************************************************/
|
||||
|
||||
/* LPI2C Version ID Register */
|
||||
|
||||
#define LPI2C_VERID_FEATURE_SHIFT (0)
|
||||
#define LPI2C_VERID_FEATURE_MASK (0xffff << LPI2C_VERID_FEATURE_SHIFT)
|
||||
#define LPI2C_VERID_MINOR_SHIFT (16)
|
||||
#define LPI2C_VERID_MINOR_MASK (0xff << LPI2C_VERID_MINOR_SHIFT)
|
||||
#define LPI2C_VERID_MAJOR_SHIFT (24)
|
||||
#define LPI2C_VERID_MAJOR_MASK (0xff << LPI2C_VERID_MAJOR_SHIFT)
|
||||
|
||||
/* LPI2C Parameter Register */
|
||||
|
||||
#define LPI2C_PARAM_MTXFIFO_MASK (0x0f) /* Config number of words in master transmit fifo to 2^MTXFIFO (pow(2,MTXFIFO )) */
|
||||
# define LPI2C_PARAM_MTXFIFO_1_WORDS (0)
|
||||
# define LPI2C_PARAM_MTXFIFO_2_WORDS (1)
|
||||
# define LPI2C_PARAM_MTXFIFO_4_WORDS (2)
|
||||
# define LPI2C_PARAM_MTXFIFO_8_WORDS (3)
|
||||
# define LPI2C_PARAM_MTXFIFO_16_WORDS (4)
|
||||
# define LPI2C_PARAM_MTXFIFO_32_WORDS (5)
|
||||
# define LPI2C_PARAM_MTXFIFO_64_WORDS (6)
|
||||
# define LPI2C_PARAM_MTXFIFO_128_WORDS (7)
|
||||
# define LPI2C_PARAM_MTXFIFO_256_WORDS (8)
|
||||
# define LPI2C_PARAM_MTXFIFO_512_WORDS (9)
|
||||
# define LPI2C_PARAM_MTXFIFO_1024_WORDS (10)
|
||||
# define LPI2C_PARAM_MTXFIFO_2048_WORDS (11)
|
||||
# define LPI2C_PARAM_MTXFIFO_4096_WORDS (12)
|
||||
# define LPI2C_PARAM_MTXFIFO_8192_WORDS (13)
|
||||
# define LPI2C_PARAM_MTXFIFO_16384_WORDS (14)
|
||||
# define LPI2C_PARAM_MTXFIFO_32768_WORDS (15)
|
||||
|
||||
#define LPI2C_PARAM_MRXFIFO_SHIFT (8)
|
||||
#define LPI2C_PARAM_MRXFIFO_MASK (0x0f << LPI2C_PARAM_MRXFIFO_SHIFT) /* Config number of words in master receive fifo 2^MRXFIFO (pow(2,MTRFIFO )) */
|
||||
# define LPI2C_PARAM_MRXFIFO_1_WORDS (0 << LPI2C_PARAM_MRXFIFO_SHIFT)
|
||||
# define LPI2C_PARAM_MRXFIFO_2_WORDS (1 << LPI2C_PARAM_MRXFIFO_SHIFT)
|
||||
# define LPI2C_PARAM_MRXFIFO_4_WORDS (2 << LPI2C_PARAM_MRXFIFO_SHIFT)
|
||||
# define LPI2C_PARAM_MRXFIFO_8_WORDS (3 << LPI2C_PARAM_MRXFIFO_SHIFT)
|
||||
# define LPI2C_PARAM_MRXFIFO_16_WORDS (4 << LPI2C_PARAM_MRXFIFO_SHIFT)
|
||||
# define LPI2C_PARAM_MRXFIFO_32_WORDS (5 << LPI2C_PARAM_MRXFIFO_SHIFT)
|
||||
# define LPI2C_PARAM_MRXFIFO_64_WORDS (6 << LPI2C_PARAM_MRXFIFO_SHIFT)
|
||||
# define LPI2C_PARAM_MRXFIFO_128_WORDS (7 << LPI2C_PARAM_MRXFIFO_SHIFT)
|
||||
# define LPI2C_PARAM_MRXFIFO_256_WORDS (8 << LPI2C_PARAM_MRXFIFO_SHIFT)
|
||||
# define LPI2C_PARAM_MRXFIFO_512_WORDS (9 << LPI2C_PARAM_MRXFIFO_SHIFT)
|
||||
# define LPI2C_PARAM_MRXFIFO_1024_WORDS (10 << LPI2C_PARAM_MRXFIFO_SHIFT)
|
||||
# define LPI2C_PARAM_MRXFIFO_2048_WORDS (11 << LPI2C_PARAM_MRXFIFO_SHIFT)
|
||||
# define LPI2C_PARAM_MRXFIFO_4096_WORDS (12 << LPI2C_PARAM_MRXFIFO_SHIFT)
|
||||
# define LPI2C_PARAM_MRXFIFO_8192_WORDS (13 << LPI2C_PARAM_MRXFIFO_SHIFT)
|
||||
# define LPI2C_PARAM_MRXFIFO_16384_WORDS (14 << LPI2C_PARAM_MRXFIFO_SHIFT)
|
||||
# define LPI2C_PARAM_MRXFIFO_32768_WORDS (15 << LPI2C_PARAM_MRXFIFO_SHIFT)
|
||||
|
||||
/* LPI2C Master Control Register */
|
||||
|
||||
#define LPI2C_MCR_MEN (1 << 0) /* Master Enable Bit */
|
||||
#define LPI2C_MCR_RST (1 << 1) /* Software Reset Bit */
|
||||
#define LPI2C_MCR_DOZEN (1 << 2) /* Doze Mode Enable Bit */
|
||||
#define LPI2C_MCR_DBGEN (1 << 3) /* Debug Enable Bit */
|
||||
/* Bits 7-4 Reserved */
|
||||
#define LPI2C_MCR_RTF (1 << 8) /* Reset Transmit FIFO Bit */
|
||||
#define LPI2C_MCR_RRF (1 << 9) /* Reset Receive FIFO Bit */
|
||||
/* Bits 31-10 Reserved */
|
||||
|
||||
/* LPI2C Master Status Register */
|
||||
|
||||
#define LPI2C_MSR_TDF (1 << 0) /* Transmit Data Flag Bit */
|
||||
#define LPI2C_MSR_RDF (1 << 1) /* Receive Data Flag Bit */
|
||||
/* Bits 7-2 Reserved */
|
||||
#define LPI2C_MSR_EPF (1 << 8) /* End Packet Flag Bit */
|
||||
#define LPI2C_MSR_SDF (1 << 9) /* STOP Detect Flag Bit */
|
||||
#define LPI2C_MSR_NDF (1 << 10) /* NACK Detect Flag Bit */
|
||||
#define LPI2C_MSR_ALF (1 << 11) /* Arbitration Lost Flag Bit */
|
||||
#define LPI2C_MSR_FEF (1 << 12) /* FIFO Error Flag Bit */
|
||||
#define LPI2C_MSR_PLTF (1 << 13) /* Pin Low Timeout Flag Bit */
|
||||
#define LPI2C_MSR_DMF (1 << 14) /* Data Match Flag Bit */
|
||||
/* Bits 23-15 Reserved */
|
||||
#define LPI2C_MSR_MBF (1 << 24) /* Master Busy Flag Bit */
|
||||
#define LPI2C_MSR_BBF (1 << 25) /* Bus Busy Flag Bit */
|
||||
/* Bits 31-26 Reserved */
|
||||
#define LPI2C_MSR_ERROR_MASK (LPI2C_MSR_NDF | LPI2C_MSR_ALF | \
|
||||
LPI2C_MSR_FEF)
|
||||
|
||||
/* LPI2C Master Interrupt Enable Register */
|
||||
|
||||
#define LPI2C_MIER_TDIE (1 << 0) /* Transmit Data Interrupt Enable Bit */
|
||||
#define LPI2C_MIER_RDIE (1 << 1) /* Receive Data Interrupt Enable Bit */
|
||||
/* Bits 7-2 Reserved */
|
||||
#define LPI2C_MIER_EPIE (1 << 8) /* End Packet Interrupt Enable Bit */
|
||||
#define LPI2C_MIER_SDIE (1 << 9) /* STOP Detect Interrupt Enable Bit */
|
||||
#define LPI2C_MIER_NDIE (1 << 10) /* NACK Detect Interrupt Enable Bit */
|
||||
#define LPI2C_MIER_ALIE (1 << 11) /* Arbitration Lost Interrupt Enable Bit */
|
||||
#define LPI2C_MIER_FEIE (1 << 12) /* FIFO Error Interrupt Enable Bit */
|
||||
#define LPI2C_MIER_PLTIE (1 << 13) /* Pin Low Timeout Interrupt Enable Bit */
|
||||
#define LPI2C_MIER_DMIE (1 << 14) /* Data Match Interrupt Enable Bit */
|
||||
/* Bits 31-15 Reserved */
|
||||
|
||||
/* LPI2C Master DMA Enable Register */
|
||||
|
||||
#define LPI2C_MDER_TDDE (1 << 0) /* Transmit Data DMA Enable Bit */
|
||||
#define LPI2C_MDER_RDDE (1 << 1) /* Transmit Data DMA Enable Bit */
|
||||
/* Bits 31-2 Reserved */
|
||||
|
||||
/* LPI2C Master Config Register 0 */
|
||||
|
||||
#define LPI2C_MCFG0_HREN (1 << 0) /* Host Request Enable Bit */
|
||||
#define LPI2C_MCFG0_HRPOL (1 << 1) /* Host Request Polarity Bit */
|
||||
#define LPI2C_MCFG0_HRSEL (1 << 2) /* Host Request Select Bit */
|
||||
/* Bits 7-3 Reserved */
|
||||
#define LPI2C_MCFG0_CIRFIFO (1 << 8) /* Circular FIFO Enable Bit */
|
||||
#define LPI2C_MCFG0_RDMO (1 << 9) /* Receive Data Match Only Bit */
|
||||
/* Bits 15-10 Reserved */
|
||||
#define LPI2C_MCFG0_RELAX (1 << 16) /* Relaxed Mode */
|
||||
#define LPI2C_MCFG0_ABORT (1 << 17) /* Abort Transfer */
|
||||
/* Bits 31-18 Reserved */
|
||||
|
||||
/* LPI2C Master Config Register 1 */
|
||||
|
||||
#define LPI2C_MCFGR1_PRESCALE_MASK (7 << 0) /* Clock Prescaler Bit Mask */
|
||||
#define LPI2C_MCFGR1_PRESCALE(n) ((n) & LPI2C_MCFGR1_PRESCALE_MASK)
|
||||
# define LPI2C_MCFGR1_PRESCALE_1 (0)
|
||||
# define LPI2C_MCFGR1_PRESCALE_2 (1)
|
||||
# define LPI2C_MCFGR1_PRESCALE_4 (2)
|
||||
# define LPI2C_MCFGR1_PRESCALE_8 (3)
|
||||
# define LPI2C_MCFGR1_PRESCALE_16 (4)
|
||||
# define LPI2C_MCFGR1_PRESCALE_32 (5)
|
||||
# define LPI2C_MCFGR1_PRESCALE_64 (6)
|
||||
# define LPI2C_MCFGR1_PRESCALE_128 (7)
|
||||
#define LPI2C_MCFGR1_AUTOSTOP (1 << 8) /* Automatic STOP Generation Bit */
|
||||
#define LPI2C_MCFGR1_IGNACK (1 << 9) /* Ignore NACK Bit */
|
||||
#define LPI2C_MCFGR1_TIMECFG (1 << 10) /* Timeout Configuration Bit */
|
||||
/* Bits 15-11 Reserved */
|
||||
#define LPI2C_MCFGR1_MATCFG_SHIFT (16)
|
||||
#define LPI2C_MCFGR1_MATCFG_MASK (7 << LPI2C_MCFGR1_MATCFG_SHIFT) /* Match Configuration Bit Mask */
|
||||
#define LPI2C_MCFGR1_MATCFG(n) (((n) << LPI2C_MCFGR1_MATCFG_SHIFT) & LPI2C_MCFGR1_MATCFG_MASK)
|
||||
# define LPI2C_MCFGR1_MATCFG_DISABLE (0 << LPI2C_MCFGR1_MATCFG_SHIFT)
|
||||
/* LPI2C_MCFG1_MATCFG = 001b Reserved */
|
||||
# define LPI2C_MCFGR1_MATCFG2 (2 << LPI2C_MCFGR1_MATCFG_SHIFT)
|
||||
# define LPI2C_MCFGR1_MATCFG3 (3 << LPI2C_MCFGR1_MATCFG_SHIFT)
|
||||
# define LPI2C_MCFGR1_MATCFG4 (4 << LPI2C_MCFGR1_MATCFG_SHIFT)
|
||||
# define LPI2C_MCFGR1_MATCFG5 (5 << LPI2C_MCFGR1_MATCFG_SHIFT)
|
||||
# define LPI2C_MCFGR1_MATCFG6 (6 << LPI2C_MCFGR1_MATCFG_SHIFT)
|
||||
# define LPI2C_MCFGR1_MATCFG7 (7 << LPI2C_MCFGR1_MATCFG_SHIFT)
|
||||
/* Bits 23-19 Reserved */
|
||||
#define LPI2C_MCFGR1_PINCFG_SHIFT (24)
|
||||
#define LPI2C_MCFGR1_PINCFG_MASK (7 << LPI2C_MCFGR1_PINCFG_SHIFT) /* Pin Configuration Bit Mask */
|
||||
#define LPI2C_MCFGR1_PINCFG(n) (((n) << LPI2C_MCFGR1_PINCFG_SHIFT) & LPI2C_MCFGR1_PINCFG_MASK)
|
||||
# define LPI2C_MCFGR1_PINCFG0 (0 << LPI2C_MCFGR1_PINCFG_SHIFT)
|
||||
# define LPI2C_MCFGR1_PINCFG1 (1 << LPI2C_MCFGR1_PINCFG_SHIFT)
|
||||
# define LPI2C_MCFGR1_PINCFG2 (2 << LPI2C_MCFGR1_PINCFG_SHIFT)
|
||||
# define LPI2C_MCFGR1_PINCFG3 (3 << LPI2C_MCFGR1_PINCFG_SHIFT)
|
||||
# define LPI2C_MCFGR1_PINCFG4 (4 << LPI2C_MCFGR1_PINCFG_SHIFT)
|
||||
# define LPI2C_MCFGR1_PINCFG5 (5 << LPI2C_MCFGR1_PINCFG_SHIFT)
|
||||
# define LPI2C_MCFGR1_PINCFG6 (6 << LPI2C_MCFGR1_PINCFG_SHIFT)
|
||||
# define LPI2C_MCFGR1_PINCFG7 (7 << LPI2C_MCFGR1_PINCFG_SHIFT)
|
||||
/* Bits 31-27 Reserved */
|
||||
|
||||
/* LPI2C Master Config Register 2 */
|
||||
|
||||
#define LPI2C_MCFG2_BUSIDLE_MASK (0xfff << 0) /* Bus Idle Timeout Period in Clock Cycles */
|
||||
#define LPI2C_MCFG2_BUSIDLE_DISABLE (0)
|
||||
#define LPI2C_MCFG2_BUSIDLE(n) ((n) & LPI2C_MCFG2_BUSIDLE_MASK)
|
||||
/* Bits 15-12 Reserved */
|
||||
#define LPI2C_MCFG2_FILTSCL_SHIFT (16)
|
||||
#define LPI2C_MCFG2_FILTSCL_MASK (15 << LPI2C_MCFG2_FILTSCL_SHIFT) /* Glitch Filter SCL */
|
||||
#define LPI2C_MCFG2_FILTSCL_DISABLE (0 << LPI2C_MCFG2_FILTSCL_SHIFT)
|
||||
#define LPI2C_MCFG2_FILTSCL_CYCLES(n) (((n) << LPI2C_MCFG2_FILTSCL_SHIFT) & LPI2C_MCFG2_FILTSCL_MASK)
|
||||
/* Bits 23-20 Reserved */
|
||||
#define LPI2C_MCFG2_FILTSDA_SHIFT (24)
|
||||
#define LPI2C_MCFG2_FILTSDA_MASK (15 << LPI2C_MCFG2_FILTSDA_SHIFT) /* Glitch Filter SDA */
|
||||
#define LPI2C_MCFG2_FILTSDA_DISABLE (0 << LPI2C_MCFG2_FILTSDA_SHIFT)
|
||||
#define LPI2C_MCFG2_FILTSDA_CYCLES(n) (((n) << LPI2C_MCFG2_FILTSDA_SHIFT) & LPI2C_MCFG2_FILTSDA_MASK)
|
||||
/* Bits 31-28 Reserved */
|
||||
|
||||
/* LPI2C Master Config Register 3 */
|
||||
|
||||
/* Bits 7-0 Reserved */
|
||||
#define LPI2C_MCFG3_PINLOW_SHIFT (8)
|
||||
#define LPI2C_MCFG3_PINLOW_MASK (0xfff << LPI2C_MCFG3_PINLOW_SHIFT) /* Configure The Pin Low Timeout in Clock Cycles */
|
||||
#define LPI2C_MCFG3_PINLOW_CYCLES(n) (((n) << LPI2C_MCFG3_PINLOW_SHIFT) & LPI2C_MCFG3_PINLOW_MASK)
|
||||
/* Bits 31-20 Reserved */
|
||||
|
||||
/* LPI2C Master Data Match Register */
|
||||
|
||||
#define LPI2C_MDMR_MATCH0_SHIFT (0)
|
||||
#define LPI2C_MDMR_MATCH0_MASK (0xff << LPI2C_MDMR_MATCH0_SHIFT) /* Match 0 Value */
|
||||
#define LPI2C_MDMR_MATCH0(n) (((n) << LPI2C_MDMR_MATCH0_SHIFT) & LPI2C_MDMR_MATCH0_MASK)
|
||||
/* Bits 15-8 Reserved */
|
||||
#define LPI2C_MDMR_MATCH1_SHIFT (16)
|
||||
#define LPI2C_MDMR_MATCH1_MASK (0xff << LPI2C_MDMR_MATCH1_SHIFT) /* Match 1 Value */
|
||||
#define LPI2C_MDMR_MATCH1(n) (((n) << LPI2C_MDMR_MATCH1_SHIFT) & LPI2C_MDMR_MATCH1_MASK)
|
||||
/* Bits 31-24 Reserved */
|
||||
|
||||
/* LPI2C Master Clock Configuration Register 0 */
|
||||
|
||||
#define LPI2C_MCCR0_CLKLO_SHIFT (0)
|
||||
#define LPI2C_MCCR0_CLKLO_MASK (0x3f << LPI2C_MCCR0_CLKLO_SHIFT) /* Clock Low Period */
|
||||
#define LPI2C_MCCR0_CLKLO(n) (((n) << LPI2C_MCCR0_CLKLO_SHIFT) & LPI2C_MCCR0_CLKLO_MASK)
|
||||
/* Bits 7-6 Reserved */
|
||||
#define LPI2C_MCCR0_CLKHI_SHIFT (8)
|
||||
#define LPI2C_MCCR0_CLKHI_MASK (0x3f << LPI2C_MCCR0_CLKHI_SHIFT) /* Clock High Period */
|
||||
#define LPI2C_MCCR0_CLKHI(n) (((n) << LPI2C_MCCR0_CLKHI_SHIFT) & LPI2C_MCCR0_CLKHI_MASK)
|
||||
/* Bits 15-14 Reserved */
|
||||
#define LPI2C_MCCR0_SETHOLD_SHIFT (16)
|
||||
#define LPI2C_MCCR0_SETHOLD_MASK (0x3f << LPI2C_MCCR0_SETHOLD_SHIFT) /* Setup Hold Delay */
|
||||
#define LPI2C_MCCR0_SETHOLD(n) (((n) << LPI2C_MCCR0_SETHOLD_SHIFT) & LPI2C_MCCR0_SETHOLD_MASK)
|
||||
/* Bits 23-22 Reserved */
|
||||
#define LPI2C_MCCR0_DATAVD_SHIFT (24)
|
||||
#define LPI2C_MCCR0_DATAVD_MASK (0x3f << LPI2C_MCCR0_DATAVD_SHIFT) /* Setup Hold Delay */
|
||||
#define LPI2C_MCCR0_DATAVD(n) (((n) << LPI2C_MCCR0_DATAVD_SHIFT) & LPI2C_MCCR0_DATAVD_MASK)
|
||||
/* Bits 31-30 Reserved */
|
||||
|
||||
/* LPI2C Master Clock Configuration Register 1 */
|
||||
|
||||
#define LPI2C_MCCR1_CLKLO_SHIFT (0)
|
||||
#define LPI2C_MCCR1_CLKLO_MASK (0x3f << LPI2C_MCCR1_CLKLO_SHIFT) /* Clock Low Period */
|
||||
#define LPI2C_MCCR1_CLKLO(n) (((n) << LPI2C_MCCR1_CLKLO_SHIFT) & LPI2C_MCCR1_CLKLO_MASK)
|
||||
/* Bits 7-6 Reserved */
|
||||
#define LPI2C_MCCR1_CLKHI_SHIFT (8)
|
||||
#define LPI2C_MCCR1_CLKHI_MASK (0x3f << LPI2C_MCCR1_CLKHI_SHIFT) /* Clock High Period */
|
||||
#define LPI2C_MCCR1_CLKHI(n) (((n) << LPI2C_MCCR1_CLKHI_SHIFT) & LPI2C_MCCR1_CLKHI_MASK)
|
||||
/* Bits 15-14 Reserved */
|
||||
#define LPI2C_MCCR1_SETHOLD_SHIFT (16)
|
||||
#define LPI2C_MCCR1_SETHOLD_MASK (0x3f << LPI2C_MCCR1_SETHOLD_SHIFT) /* Setup Hold Delay */
|
||||
#define LPI2C_MCCR1_SETHOLD(n) (((n) << LPI2C_MCCR1_SETHOLD_SHIFT) & LPI2C_MCCR1_SETHOLD_MASK)
|
||||
|
||||
/* Bits 23-22 Reserved */
|
||||
#define LPI2C_MCCR1_DATAVD_SHIFT (24)
|
||||
#define LPI2C_MCCR1_DATAVD_MASK (0x3f << LPI2C_MCCR1_DATAVD_SHIFT) /* Setup Hold Delay */
|
||||
#define LPI2C_MCCR1_DATAVD(n) (((n) << LPI2C_MCCR1_DATAVD_SHIFT) & LPI2C_MCCR1_DATAVD_MASK)
|
||||
|
||||
/* Bits 31-30 Reserved */
|
||||
|
||||
/* LPI2C Master FIFO Control Register */
|
||||
|
||||
#define LPI2C_MFCR_TXWATER_SHIFT (0)
|
||||
#define LPI2C_MFCR_TXWATER_MASK (3 << LPI2C_MFCR_TXWATER_SHIFT) /* Transmit FIFO Watermark*/
|
||||
|
||||
#define LPI2C_MFCR_TXWATER(n) (((n) << LPI2C_MFCR_TXWATER_SHIFT) & LPI2C_MFCR_TXWATER_MASK) /* Transmit FIFO Watermark */
|
||||
|
||||
/* Bits 15-2 Reserved */
|
||||
#define LPI2C_MFCR_RXWATER_SHIFT (16)
|
||||
#define LPI2C_MFCR_RXWATER_MASK (3 << LPI2C_MFCR_RXWATER_SHIFT) /* Receive FIFO Watermark */
|
||||
|
||||
#define LPI2C_MFCR_RXWATER(n) (((n) << LPI2C_MFCR_RXWATER_SHIFT) & LPI2C_MFCR_RXWATER_MASK) /* Transmit FIFO Watermark */
|
||||
|
||||
/* Bits 31-18 Reserved */
|
||||
|
||||
/* LPI2C Master FIFO Status Register */
|
||||
|
||||
#define LPI2C_MFSR_TXCOUNT_SHIFT (0)
|
||||
#define LPI2C_MFSR_TXCOUNT_MASK (3 << LPI2C_MFSR_TXCOUNT_SHIFT) /* Transmit FIFO Count */
|
||||
|
||||
/* Bits 15-2 Reserved */
|
||||
#define LPI2C_MFSR_RXCOUNT_SHIFT (16)
|
||||
#define LPI2C_MFSR_RXCOUNT_MASK (3 << LPI2C_MFSR_RXCOUNT_SHIFT) /* Receive FIFO Count */
|
||||
|
||||
/* Bits 31-18 Reserved */
|
||||
|
||||
/* LPI2C Master Transmit Data Register */
|
||||
|
||||
#define LPI2C_MTDR_DATA_SHIFT (0)
|
||||
#define LPI2C_MTDR_DATA_MASK (0xff << LPI2C_MTDR_DATA_SHIFT) /* Transmit Data */
|
||||
#define LPI2C_MTDR_DATA(n) ((n) & LPI2C_MTDR_DATA_MASK)
|
||||
#define LPI2C_MTDR_CMD_SHIFT (8)
|
||||
#define LPI2C_MTDR_CMD_MASK (7 << LPI2C_MTDR_CMD_SHIFT) /* Command Data */
|
||||
#define LPI2C_MTDR_CMD(n) (((n) << LPI2C_MTDR_CMD_SHIFT) & LPI2C_MTDR_CMD_MASK)
|
||||
# define LPI2C_MTDR_CMD_TXD (0 << LPI2C_MTDR_CMD_SHIFT)
|
||||
# define LPI2C_MTDR_CMD_RXD (1 << LPI2C_MTDR_CMD_SHIFT)
|
||||
# define LPI2C_MTDR_CMD_STOP (2 << LPI2C_MTDR_CMD_SHIFT)
|
||||
# define LPI2C_MTDR_CMD_RXD_DISC (3 << LPI2C_MTDR_CMD_SHIFT)
|
||||
# define LPI2C_MTDR_CMD_START (4 << LPI2C_MTDR_CMD_SHIFT)
|
||||
# define LPI2C_MTDR_CMD_START_NACK (5 << LPI2C_MTDR_CMD_SHIFT)
|
||||
# define LPI2C_MTDR_CMD_START_HI (6 << LPI2C_MTDR_CMD_SHIFT)
|
||||
# define LPI2C_MTDR_CMD_START_HI_NACK (7 << LPI2C_MTDR_CMD_SHIFT)
|
||||
|
||||
/* Bits 31-11 Reserved */
|
||||
|
||||
/* LPI2C Master Receive Data Register */
|
||||
|
||||
#define LPI2C_MRDR_DATA_SHIFT (0)
|
||||
#define LPI2C_MRDR_DATA_MASK (0xff << LPI2C_MRDR_DATA_SHIFT) /* Receive Data */
|
||||
|
||||
/* Bits 13-8 Reserved */
|
||||
#define LPI2C_MRDR_RXEMPTY_SHIFT (14)
|
||||
#define LPI2C_MRDR_RXEMPTY_MASK (1 << LPI2C_MRDR_RXEMPTY_SHIFT) /* Rx Empty */
|
||||
|
||||
/* Bits 31-15 Reserved */
|
||||
|
||||
/* LPI2C Slave Control Register */
|
||||
|
||||
#define LPI2C_SCR_SEN (1 << 0) /* Slave Enable Bit */
|
||||
#define LPI2C_SCR_RST (1 << 1) /* Software Reset Bit */
|
||||
/* Bits 3-2 Reserved */
|
||||
#define LPI2C_SCR_FILTEN (1 << 4) /* Filter Enable Bit */
|
||||
#define LPI2C_SCR_FILTDZ (1 << 5) /* Filter Doze Enable Bit */
|
||||
/* Bits 7-4 Reserved */
|
||||
#define LPI2C_SCR_RTF (1 << 8) /* Reset Transmit FIFO Bit */
|
||||
#define LPI2C_SCR_RRF (1 << 9) /* Reset Receive FIFO Bit */
|
||||
/* Bits 31-10 Reserved */
|
||||
|
||||
/* LPI2C Slave Status Register */
|
||||
|
||||
#define LPI2C_SSR_TDF (1 << 0) /* Transmit Data Flag Bit */
|
||||
#define LPI2C_SSR_RDF (1 << 1) /* Receive Data Flag Bit */
|
||||
#define LPI2C_SSR_AVF (1 << 2) /* Address Valid Flag Bit */
|
||||
#define LPI2C_SSR_TAF (1 << 3) /* Transmit ACK Flag Bit */
|
||||
/* Bits 7-4 Reserved */
|
||||
#define LPI2C_SSR_RSF (1 << 8) /* Repeated Start Flag Bit */
|
||||
#define LPI2C_SSR_SDF (1 << 9) /* STOP Detect Flag Bit */
|
||||
#define LPI2C_SSR_BEF (1 << 10) /* Bit Error Flag Bit */
|
||||
#define LPI2C_SSR_FEF (1 << 11) /* FIFO Error Flag Bit */
|
||||
#define LPI2C_SSR_AM0F (1 << 12) /* Address Match 0 Flag Bit */
|
||||
#define LPI2C_SSR_AM1F (1 << 13) /* Address Match 1 Flag Bit */
|
||||
#define LPI2C_SSR_GCF (1 << 14) /* General Call Flag Bit */
|
||||
#define LPI2C_SSR_SARF (1 << 15) /* SMBus Alert Response Flag Bit */
|
||||
/* Bits 23-16 Reserved */
|
||||
#define LPI2C_MSR_SBF (1 << 24) /* Slave Busy Flag Bit */
|
||||
#define LPI2C_MSR_BBF (1 << 25) /* Bus Busy Flag Bit */
|
||||
/* Bits 31-26 Reserved */
|
||||
|
||||
/* LPI2C Slave Interrupt Enable Register */
|
||||
|
||||
#define LPI2C_SIER_TDIE (1 << 0) /* Transmit Data Interrupt Enable Bit */
|
||||
#define LPI2C_SIER_RDIE (1 << 1) /* Receive Data Interrupt Enable Bit */
|
||||
#define LPI2C_SIER_AVIE (1 << 2) /* Address Valid Interrupt Enable Bit */
|
||||
#define LPI2C_SIER_TAIE (1 << 3) /* Transmit ACK Interrupt Enable Bit */
|
||||
/* Bits 7-4 Reserved */
|
||||
#define LPI2C_SIER_RSIE (1 << 8) /* Repeated Start Interrupt Enable Bit */
|
||||
#define LPI2C_SIER_SDIE (1 << 9) /* STOP Detect Interrupt Enable Bit */
|
||||
#define LPI2C_SIER_BEIE (1 << 10) /* Bit Error Interrupt Enable Bit */
|
||||
#define LPI2C_SIER_FEIE (1 << 11) /* FIFO Error Interrupt Enable Bit */
|
||||
#define LPI2C_SIER_AM0IE (1 << 12) /* Address Match 0 Interrupt Enable Bit */
|
||||
#define LPI2C_SIER_AM1IE (1 << 13) /* Address Match 1 Interrupt Enable Bit */
|
||||
#define LPI2C_SIER_GCIE (1 << 14) /* General Call Interrupt Enable Bit */
|
||||
#define LPI2C_SIER_SARIE (1 << 15) /* SMBus Alert Response Interrupt Enable Bit */
|
||||
/* Bits 31-16 Reserved */
|
||||
|
||||
/* LPI2C Slave DMA Enable Register */
|
||||
|
||||
#define LPI2C_SDER_TDDE (1 << 0) /* Transmit Data DMA Enable Bit */
|
||||
#define LPI2C_SDER_RDDE (1 << 1) /* Transmit Data DMA Enable Bit */
|
||||
#define LPI2C_SDER_AVDE (1 << 2) /* Address Valid DMA Enable Bit */
|
||||
/* Bits 31-3 Reserved */
|
||||
|
||||
/* LPI2C Slave Configuration Register 1 */
|
||||
|
||||
#define LPI2C_SCFGR1_ADRSTALL (1 << 0) /* Address SCL Stall */
|
||||
#define LPI2C_SCFGR1_RXSTALL (1 << 1) /* RX SCL Stall */
|
||||
#define LPI2C_SCFGR1_TXSTALL (1 << 2) /* TX Data SCL Stall */
|
||||
#define LPI2C_SCFGR1_ACKSTALL (1 << 3) /* ACK SCL Stall */
|
||||
/* Bits 7-4 Reserved */
|
||||
#define LPI2C_SCFGR1_GCEN (1 << 8) /* General Call Enable */
|
||||
#define LPI2C_SCFGR1_SAEN (1 << 9) /* SMBus Alert Enable */
|
||||
#define LPI2C_SCFGR1_TXCFG (1 << 10) /* Transmit Flag Configuration */
|
||||
#define LPI2C_SCFGR1_RXCFG (1 << 11) /* Receive Data Configuration */
|
||||
#define LPI2C_SCFGR1_IFNACK (1 << 12) /* Ignore NACK */
|
||||
#define LPI2C_SCFGR1_HSMEN (1 << 13) /* High Speed Mode Enable */
|
||||
/* Bits 15-14 Reserved */
|
||||
#define LPI2C_SCFG1_ADDRCFG_SHIFT (16)
|
||||
#define LPI2C_SCFG1_ADDRCFG_MASK (7 << LPI2C_SCFG1_ADDRCFG_SHIFT) /* Address Configuration Bit Mask */
|
||||
#define LPI2C_SCFG1_ADDRCFG(n) (((n) << LPI2C_SCFG1_ADDRCFG_SHIFT) & LPI2C_SCFG1_ADDRCFG_MASK)
|
||||
# define LPI2C_SCFG1_ADDRCFG0 (0 << LPI2C_SCFG1_ADDRCFG_SHIFT)
|
||||
# define LPI2C_SCFG1_ADDRCFG1 (2 << LPI2C_SCFG1_ADDRCFG_SHIFT)
|
||||
# define LPI2C_SCFG1_ADDRCFG2 (2 << LPI2C_SCFG1_ADDRCFG_SHIFT)
|
||||
# define LPI2C_SCFG1_ADDRCFG3 (3 << LPI2C_SCFG1_ADDRCFG_SHIFT)
|
||||
# define LPI2C_SCFG1_ADDRCFG4 (4 << LPI2C_SCFG1_ADDRCFG_SHIFT)
|
||||
# define LPI2C_SCFG1_ADDRCFG5 (5 << LPI2C_SCFG1_ADDRCFG_SHIFT)
|
||||
# define LPI2C_SCFG1_ADDRCFG6 (6 << LPI2C_SCFG1_ADDRCFG_SHIFT)
|
||||
# define LPI2C_SCFG1_ADDRCFG7 (7 << LPI2C_SCFG1_ADDRCFG_SHIFT)
|
||||
/* Bits 31-19 Reserved */
|
||||
|
||||
/* LPI2C Slave Configuration Register 2 */
|
||||
|
||||
#define LPI2C_SCFG2_CLKHOLD_MASK (15 << 0) /* Clock Hold Time */
|
||||
#define LPI2C_SCFG2_CLKHOLD(n) ((n) & LPI2C_SCFG2_CLKHOLD_MASK)
|
||||
/* Bits 7-4 Reserved */
|
||||
#define LPI2C_SCFG2_DATAVD_SHIFT (8)
|
||||
#define LPI2C_SCFG2_DATAVD_MASK (0x3f << LPI2C_SCFG2_DATAVD_SHIFT) /* Data Valid Delay */
|
||||
#define LPI2C_SCFG2_DATAVD(n) (((n) << LPI2C_SCFG2_DATAVD_SHIFT) & LPI2C_SCFG2_DATAVD_MASK)
|
||||
/* Bits 15-14 Reserved */
|
||||
#define LPI2C_SCFG2_FILTSCL_SHIFT (16)
|
||||
#define LPI2C_SCFG2_FILTSCL_MASK (15 << LPI2C_SCFG2_FILTSCL_SHIFT) /* Glitch Filter SCL */
|
||||
#define LPI2C_SCFG2_FILTSCL_DISABLE (0 << LPI2C_SCFG2_FILTSCL_SHIFT)
|
||||
#define LPI2C_SCFG2_FILTSCL_CYCLES(n) (((n) << LPI2C_SCFG2_FILTSCL_SHIFT) & LPI2C_SCFG2_FILTSCL_MASK)
|
||||
/* Bits 23-20 Reserved */
|
||||
#define LPI2C_SCFG2_FILTSDA_SHIFT (24)
|
||||
#define LPI2C_SCFG2_FILTSDA_MASK (15 << LPI2C_SCFG2_FILTSDA_SHIFT) /* Glitch Filter SDA */
|
||||
#define LPI2C_SCFG2_FILTSDA_DISABLE (0 << LPI2C_SCFG2_FILTSDA_SHIFT)
|
||||
#define LPI2C_SCFG2_FILTSDA_CYCLES(n) (((n) << LPI2C_SCFG2_FILTSDA_SHIFT) & LPI2C_SCFG2_FILTSDA_MASK)
|
||||
/* Bits 31-28 Reserved */
|
||||
|
||||
/* LPI2C Slave Address Match Register */
|
||||
|
||||
/* Bit 0 Reserved */
|
||||
#define LPI2C_SAMR_ADDR0_SHIFT (1)
|
||||
#define LPI2C_SAMR_ADDR0_MASK (0x3ff << LPI2C_SAMR_ADDR0_SHIFT) /* Address 0 Value */
|
||||
#define LPI2C_SAMR_ADDR0(n) (((n) << LPI2C_SAMR_ADDR0_SHIFT) & LPI2C_SAMR_ADDR0_MASK)
|
||||
/* Bits 16-11 Reserved */
|
||||
#define LPI2C_SAMR_ADDR1_SHIFT (17)
|
||||
#define LPI2C_SAMR_ADDR1_MASK (0x3ff << LPI2C_SAMR_ADDR1_SHIFT) /* Address 1 Value */
|
||||
#define LPI2C_SAMR_ADDR1(n) (((n) << LPI2C_SAMR_ADDR1_SHIFT) & LPI2C_SAMR_ADDR1_MASK)
|
||||
/* Bits 31-27 Reserved */
|
||||
|
||||
/* LPI2C Slave Address Status Register */
|
||||
|
||||
#define LPI2C_SASR_RADDR_MASK (0x7ff << 0) /* Received Address */
|
||||
|
||||
/* Bits 16-11
|
||||
* Reserved
|
||||
*/
|
||||
|
||||
#define LPI2C_SASR_ANV (1 << 14) /* Address Not Valid */
|
||||
/* Bits 31-15 Reserved */
|
||||
|
||||
/* LPI2C Slave Transmit ACK Register */
|
||||
|
||||
#define LPI2C_STAR_TXNACK (1 << 0) /* Transmit NACK */
|
||||
/* Bits 31-1 Reserved */
|
||||
|
||||
/* LPI2C Slave Transmit Data Register */
|
||||
|
||||
#define LPI2C_STDR_DATA_SHIFT (0)
|
||||
#define LPI2C_STDR_DATA_MASK (0xff << LPI2C_STDR_DATA_SHIFT) /* Transmit Data */
|
||||
#define LPI2C_STDR_DATA(n) (((n) << LPI2C_STDR_DATA_SHIFT) & LPI2C_STDR_DATA_MASK)
|
||||
/* Bits 31-8 Reserved */
|
||||
|
||||
/* LPI2C Slave Receive Data Register */
|
||||
|
||||
#define LPI2C_SRDR_DATA_SHIFT (0)
|
||||
#define LPI2C_SRDR_DATA_MASK (0xff << LPI2C_SRDR_DATA_SHIFT) /* Receive Data */
|
||||
#define LPI2C_SRDR_DATA(n) (((n) << LPI2C_SRDR_DATA_SHIFT) & LPI2C_SRDR_DATA_MASK)
|
||||
/* Bits 13-8 Reserved */
|
||||
#define LPI2C_STAR_SOF (1 << 14) /* RX Empty */
|
||||
#define LPI2C_STAR_RXEMPTY (1 << 15) /* Start Of Frame */
|
||||
/* Bits 31-16 Reserved */
|
||||
|
||||
#endif /* __ARCH_ARM_SRC_IMX9_HARDWARE_IMX9_LPI2C_H_ */
|
128
arch/arm/src/imx9/hardware/imx9_lpit.h
Normal file
128
arch/arm/src/imx9/hardware/imx9_lpit.h
Normal file
|
@ -0,0 +1,128 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/hardware/imx9_lpit.h
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ARCH_ARM_SRC_IMX9_HARDWARE_IMX9_LPIT_H
|
||||
#define __ARCH_ARM_SRC_IMX9_HARDWARE_IMX9_LPIT_H
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/* Register Offsets *********************************************************/
|
||||
|
||||
#define IMX9_LPIT_VERID_OFFSET 0x0000 /* Version ID */
|
||||
#define IMX9_LPIT_PARAM_OFFSET 0x0004 /* Parameter */
|
||||
#define IMX9_LPIT_MCR_OFFSET 0x0008 /* Module Control */
|
||||
#define IMX9_LPIT_MSR_OFFSET 0x000c /* Module Status Register */
|
||||
#define IMX9_LPIT_MIER_OFFSET 0x0010 /* Moduel Interrupt Enable */
|
||||
#define IMX9_LPIT_SETTEN_OFFSET 0x0014 /* Set Timer Enable */
|
||||
#define IMX9_LPIT_CLRTEN_OFFSET 0x0018 /* Clear Timer Enable */
|
||||
#define IMX9_LPIT_TVAL0_OFFSET 0x0020 /* Timer Channel 0 Value */
|
||||
#define IMX9_LPIT_CVAL0_OFFSET 0x0024 /* Current Timer Channel 0 Value */
|
||||
#define IMX9_LPIT_TCTRL0_OFFSET 0x0028 /* Timer Channel 0 Control */
|
||||
#define IMX9_LPIT_TVAL1_OFFSET 0x0030 /* Timer Channel 1 Value */
|
||||
#define IMX9_LPIT_CVAL1_OFFSET 0x0034 /* Current Timer Channel 1 Value */
|
||||
#define IMX9_LPIT_TCTRL1_OFFSET 0x0048 /* Timer Channel 1 Control */
|
||||
#define IMX9_LPIT_TVAL2_OFFSET 0x0040 /* Timer Channel 2 Value */
|
||||
#define IMX9_LPIT_CVAL2_OFFSET 0x0044 /* Current Timer Channel 2 Value */
|
||||
#define IMX9_LPIT_TCTRL2_OFFSET 0x0048 /* Timer Channel 2 Control */
|
||||
#define IMX9_LPIT_TVAL3_OFFSET 0x0050 /* Timer Channel 3 Value */
|
||||
#define IMX9_LPIT_CVAL3_OFFSET 0x0054 /* Current Timer Channel 3 Value */
|
||||
#define IMX9_LPIT_TCTRL3_OFFSET 0x0058 /* Timer Channel 3 Control */
|
||||
|
||||
/* Register access */
|
||||
|
||||
#define LPIT_VERID(n) ((n) + IMX9_LPIT_VERID_OFFSET)
|
||||
#define LPIT_PARAM(n) ((n) + IMX9_LPIT_PARAM_OFFSET)
|
||||
#define LPIT_MCR(n) ((n) + IMX9_LPIT_MCR_OFFSET)
|
||||
#define LPIT_MSR(n) ((n) + IMX9_LPIT_MSR_OFFSET)
|
||||
#define LPIT_MIER(n) ((n) + IMX9_LPIT_MIER_OFFSET)
|
||||
#define LPIT_SETTEN(n) ((n) + IMX9_LPIT_SETTEN_OFFSET)
|
||||
#define LPIT_CLRTEN(n) ((n) + IMX9_LPIT_CLRTEN_OFFSET)
|
||||
#define LPIT_TVAL0(n) ((n) + IMX9_LPIT_TVAL0_OFFSET)
|
||||
#define LPIT_CVAL0(n) ((n) + IMX9_LPIT_CVAL0_OFFSET)
|
||||
#define LPIT_TCTRL0(n) ((n) + IMX9_LPIT_TCTRL0_OFFSET)
|
||||
#define LPIT_TVAL1(n) ((n) + IMX9_LPIT_TVAL1_OFFSET)
|
||||
#define LPIT_CVAL1(n) ((n) + IMX9_LPIT_CVAL1_OFFSET)
|
||||
#define LPIT_TCTRL1(n) ((n) + IMX9_LPIT_TCTRL1_OFFSET)
|
||||
#define LPIT_TVAL2(n) ((n) + IMX9_LPIT_TVAL2_OFFSET)
|
||||
#define LPIT_CVAL2(n) ((n) + IMX9_LPIT_CVAL2_OFFSET)
|
||||
#define LPIT_TCTRL2(n) ((n) + IMX9_LPIT_TCTRL2_OFFSET)
|
||||
#define LPIT_TVAL3(n) ((n) + IMX9_LPIT_TVAL3_OFFSET)
|
||||
#define LPIT_CVAL3(n) ((n) + IMX9_LPIT_CVAL3_OFFSET)
|
||||
#define LPIT_TCTRL3(n) ((n) + IMX9_LPIT_TCTRL3_OFFSET)
|
||||
|
||||
/* Register Bitfield Definitions ********************************************/
|
||||
|
||||
#define LPIT_PARAM_EXT_TRIG_SHIFT (8) /* Bit[15:8]: Number of External Trigger Inputs */
|
||||
#define LPIT_PARAM_EXT_TRIG_MASK (0xff << LPIT_PARAM_EXT_TRIG_SHIFT)
|
||||
|
||||
#define LPIT_PARAM_CHANNEL_SHIFT (0) /* Bit[7:0]: Number of Timer Channels */
|
||||
#define LPIT_PARAM_CHANNEL_MASK (0xff << LPIT_PARAM_CHANNEL_SHIFT)
|
||||
|
||||
#define LPIT_MCR_DBG_EN (1 << 3) /* Stop Timer when in Debug Mode */
|
||||
#define LPIT_MCR_DOZE_EN (1 << 2) /* DOZE Mode Enable */
|
||||
#define LPIT_MCR_SW_RST (1 << 1) /* Software Reset Bit */
|
||||
#define LPIT_MCR_M_CEN (1 << 0) /* Module Clock Enable */
|
||||
|
||||
#define LPIT_MSR_TIF3 (1 << 3) /* Channel 3 Timer Interrupt Flag */
|
||||
#define LPIT_MSR_TIF2 (1 << 2) /* Channel 2 Timer Interrupt Flag */
|
||||
#define LPIT_MSR_TIF1 (1 << 1) /* Channel 1 Timer Interrupt Flag */
|
||||
#define LPIT_MSR_TIF0 (1 << 0) /* Channel 0 Timer Interrupt Flag */
|
||||
|
||||
#define LPIT_MIER_TIE3 (1 << 3) /* Channel 3 Timer Interrupt Enable */
|
||||
#define LPIT_MIER_TIE2 (1 << 2) /* Channel 2 Timer Interrupt Enable */
|
||||
#define LPIT_MIER_TIE1 (1 << 1) /* Channel 1 Timer Interrupt Enable */
|
||||
#define LPIT_MIER_TIE0 (1 << 0) /* Channel 0 Timer Interrupt Enable */
|
||||
|
||||
#define LPIT_TCTRL_TRG_SEL_SHIFT (27) /* Bit[27:24]: Trigger Select */
|
||||
#define LPIT_TCTRL_TRG_SEL_MASK (0xf << LPIT_TCTRL_TRG_SEL_SHIFT)
|
||||
#define LPIT_TCTRL_TRG_SEL_CHAN0 (0 << LPIT_TCTRL_TRG_SEL_SHIFT)
|
||||
#define LPIT_TCTRL_TRG_SEL_CHAN1 (1 << LPIT_TCTRL_TRG_SEL_SHIFT)
|
||||
#define LPIT_TCTRL_TRG_SEL_CHAN2 (2 << LPIT_TCTRL_TRG_SEL_SHIFT)
|
||||
#define LPIT_TCTRL_TRG_SEL_CHAN3 (3 << LPIT_TCTRL_TRG_SEL_SHIFT)
|
||||
|
||||
#define LPIT_TCTRL_TRG_SRC_SHIFT (23) /* Bit23: Trigger Source */
|
||||
#define LPIT_TCTRL_TRG_SRC_MASK (1 << LPIT_TCTRL_TRG_SRC_SHIFT)
|
||||
#define LPIT_TCTRL_TRG_SRC_EXTER (0 << LPIT_TCTRL_TRG_SRC_SHIFT) /* external */
|
||||
#define LPIT_TCTRL_TRG_SRC_INTER (1 << LPIT_TCTRL_TRG_SRC_SHIFT) /* internal */
|
||||
|
||||
#define LPIT_TCTRL_TROT (1 << 18) /* Timer Reload On Trigger */
|
||||
#define LPIT_TCTRL_TSOI (1 << 17) /* Timer Stop On Interrupt */
|
||||
#define LPIT_TCTRL_TSOT (1 << 16) /* Timer Start On Trigger */
|
||||
|
||||
#define LPIT_TCTRL_MODE_SHIFT (2)
|
||||
#define LPIT_TCTRL_MODE_MASK (3 << LPIT_TCTRL_MODE_SHIFT)
|
||||
#define LPIT_TCTRL_MODE_32PC (0 << LPIT_TCTRL_MODE_SHIFT) /* 32 Bit periodic Counter */
|
||||
#define LPIT_TCTRL_MODE_D16PC (1 << LPIT_TCTRL_MODE_SHIFT) /* Dual 16-bit periodic Counter */
|
||||
#define LPIT_TCTRL_MODE_32TA (2 << LPIT_TCTRL_MODE_SHIFT) /* 32 bit Trigger Accumulator */
|
||||
#define LPIT_TCTRL_MODE_32TIC (3 << LPIT_TCTRL_MODE_SHIFT) /* 32 bit Trigger Input Capture */
|
||||
|
||||
#define LPIT_TCTRL_CHAIN (1 << 1) /* Chain Channel */
|
||||
#define LPIT_TCTRL_T_EN (1 << 0) /* Timer Enable */
|
||||
|
||||
#endif /* __ARCH_ARM_SRC_IMX9_HARDWARE_IMX9_LPIT_H */
|
355
arch/arm/src/imx9/hardware/imx9_lpspi.h
Normal file
355
arch/arm/src/imx9/hardware/imx9_lpspi.h
Normal file
|
@ -0,0 +1,355 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/hardware/imx9_lpspi.h
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ARCH_ARM_SRC_IMX9_HARDWARE_IMX9_LPSPI_H_
|
||||
#define __ARCH_ARM_SRC_IMX9_HARDWARE_IMX9_LPSPI_H_
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/* Register offsets *********************************************************/
|
||||
|
||||
#define IMX9_LPSPI_VERID_OFFSET (0x0000) /* Version ID Register (VERID) */
|
||||
#define IMX9_LPSPI_PARAM_OFFSET (0x0004) /* Parameter Register (PARAM) */
|
||||
#define IMX9_LPSPI_CR_OFFSET (0x0010) /* Control Register (CR) */
|
||||
#define IMX9_LPSPI_SR_OFFSET (0x0014) /* Status Register (SR) */
|
||||
#define IMX9_LPSPI_IER_OFFSET (0x0018) /* Interrupt Enable Register (IER) */
|
||||
#define IMX9_LPSPI_DER_OFFSET (0x001c) /* DMA Enable Register (DER) */
|
||||
#define IMX9_LPSPI_CFGR0_OFFSET (0x0020) /* Configuration Register 0 (CFGR0) */
|
||||
#define IMX9_LPSPI_CFGR1_OFFSET (0x0024) /* Configuration Register 1 (CFGR1) */
|
||||
#define IMX9_LPSPI_DMR0_OFFSET (0x0030) /* Data Match Register 0 (DMR0) */
|
||||
#define IMX9_LPSPI_DMR1_OFFSET (0x0034) /* Data Match Register 1 (DMR1) */
|
||||
#define IMX9_LPSPI_CCR_OFFSET (0x0040) /* Clock Configuration Register (CCR) */
|
||||
#define IMX9_LPSPI_CCR1_OFFSET (0x0044) /* Clock Configuration Register 1 (CCR1) */
|
||||
#define IMX9_LPSPI_FCR_OFFSET (0x0058) /* FIFO Control Register (FCR) */
|
||||
#define IMX9_LPSPI_FSR_OFFSET (0x005c) /* FIFO Status Register (FSR) */
|
||||
#define IMX9_LPSPI_TCR_OFFSET (0x0060) /* Transmit Command Register (TCR) */
|
||||
#define IMX9_LPSPI_TDR_OFFSET (0x0064) /* Transmit Data Register (TDR) */
|
||||
#define IMX9_LPSPI_RSR_OFFSET (0x0070) /* Receive Status Register (RSR) */
|
||||
#define IMX9_LPSPI_RDR_OFFSET (0x0074) /* Receive Data Register (RDR) */
|
||||
#define IMX9_LPSPI_RDROR_OFFSET (0x0078) /* Receive Data Read Only Register (RDROR) */
|
||||
#define IMX9_LPSPI_TCBR_OFFSET (0x03fc) /* Transmit Command Burst Register (TCBR) */
|
||||
|
||||
#define IMX9_LPSPI_TDBR_OFFSET(n) (0x0400 + ((n) << 2)) /* Transmit Data Burst Register n=0..127 (TDBRn) */
|
||||
#define IMX9_LPSPI_RDBR_OFFSET(n) (0x0600 + ((n) << 2)) /* Receive Data Burst Register n=0..127 (RDBRn) */
|
||||
|
||||
/* Register addresses *******************************************************/
|
||||
|
||||
#define IMX9_LPSPI0_VERID(n) ((n) + IMX9_LPSPI_VERID_OFFSET)
|
||||
#define IMX9_LPSPI0_PARAM(n) ((n) + IMX9_LPSPI_PARAM_OFFSET)
|
||||
#define IMX9_LPSPI0_CR(n) ((n) + IMX9_LPSPI_CR_OFFSET)
|
||||
#define IMX9_LPSPI0_SR(n) ((n) + IMX9_LPSPI_SR_OFFSET)
|
||||
#define IMX9_LPSPI0_IER(n) ((n) + IMX9_LPSPI_IER_OFFSET)
|
||||
#define IMX9_LPSPI0_DER(n) ((n) + IMX9_LPSPI_DER_OFFSET)
|
||||
#define IMX9_LPSPI0_CFGR0(n) ((n) + IMX9_LPSPI_CFGR0_OFFSET)
|
||||
#define IMX9_LPSPI0_CFGR1(n) ((n) + IMX9_LPSPI_CFGR1_OFFSET)
|
||||
#define IMX9_LPSPI0_DMR0(n) ((n) + IMX9_LPSPI_DMR0_OFFSET)
|
||||
#define IMX9_LPSPI0_DMR1(n) ((n) + IMX9_LPSPI_DMR1_OFFSET)
|
||||
#define IMX9_LPSPI0_CCR(n) ((n) + IMX9_LPSPI_CCR_OFFSET)
|
||||
#define IMX9_LPSPI0_CCR1(n) ((n) + IMX9_LPSPI_CCR1_OFFSET)
|
||||
#define IMX9_LPSPI0_FCR(n) ((n) + IMX9_LPSPI_FCR_OFFSET)
|
||||
#define IMX9_LPSPI0_FSR(n) ((n) + IMX9_LPSPI_FSR_OFFSET)
|
||||
#define IMX9_LPSPI0_TCR(n) ((n) + IMX9_LPSPI_TCR_OFFSET)
|
||||
#define IMX9_LPSPI0_TDR(n) ((n) + IMX9_LPSPI_TDR_OFFSET)
|
||||
#define IMX9_LPSPI0_RSR(n) ((n) + IMX9_LPSPI_RSR_OFFSET)
|
||||
#define IMX9_LPSPI0_RDR(n) ((n) + IMX9_LPSPI_RDR_OFFSET)
|
||||
#define IMX9_LPSPI0_RDROR(n) ((n) + IMX9_LPSPI_RDROR_OFFSET)
|
||||
#define IMX9_LPSPI0_TCBR(n) ((n) + IMX9_LPSPI_TCBR_OFFSET)
|
||||
#define IMX9_LPSPI0_TDBR(n,v) ((n) + IMX9_LPSPI_TDBR_OFFSET(v))
|
||||
#define IMX9_LPSPI0_RDBR(n,v) ((n) + IMX9_LPSPI_RDBR_OFFSET(v))
|
||||
|
||||
/* Register bit definitions *************************************************/
|
||||
|
||||
/* Version ID Register (VERID) */
|
||||
|
||||
#define LPSPI_VERID_FEATURE_SHIFT (0) /* Bits 0-15: Module Identification Number (FEATURE) */
|
||||
#define LPSPI_VERID_FEATURE_MASK (0xffff << LPSPI_VERID_FEATURE_SHIFT)
|
||||
#define LPSPI_VERID_MINOR_SHIFT (16) /* Bits 16-23: Minor Version Number (MINOR) */
|
||||
#define LPSPI_VERID_MINOR_MASK (0xff << LPSPI_VERID_MINOR_SHIFT)
|
||||
#define LPSPI_VERID_MAJOR_SHIFT (24) /* Bits 24-31: Major Version Number (MAJOR) */
|
||||
#define LPSPI_VERID_MAJOR_MASK (0xff << LPSPI_VERID_MAJOR_SHIFT)
|
||||
|
||||
/* Parameter Register (PARAM) */
|
||||
|
||||
#define LPSPI_PARAM_TXFIFO_SHIFT (0) /* Bits 0-7: Transmit FIFO Size (TXFIFO) */
|
||||
#define LPSPI_PARAM_TXFIFO_MASK (0xff << LPSPI_PARAM_TXFIFO_SHIFT)
|
||||
#define LPSPI_PARAM_RXFIFO_SHIFT (8) /* Bits 8-15: Receive FIFO Size (RXFIFO) */
|
||||
#define LPSPI_PARAM_RXFIFO_MASK (0xff << LPSPI_PARAM_RXFIFO_SHIFT)
|
||||
#define LPSPI_PARAM_PCSNUM_SHIFT (16) /* Bits 16-23: PCS Number (PCSNUM) */
|
||||
#define LPSPI_PARAM_PCSNUM_MASK (0xff << LPSPI_PARAM_PCSNUM_SHIFT)
|
||||
/* Bits 24-31: Reserved */
|
||||
|
||||
/* Control Register (CR) */
|
||||
|
||||
#define LPSPI_CR_MEN (1 << 0) /* Bit 0: Module Enable (MEN) */
|
||||
#define LPSPI_CR_RST (1 << 1) /* Bit 1: Software Reset (RST) */
|
||||
/* Bit 2: Reserved */
|
||||
#define LPSPI_CR_DBGEN (1 << 3) /* Bit 3: Debug Enable (DBGEN) */
|
||||
/* Bits 4-7: Reserved */
|
||||
#define LPSPI_CR_RTF (1 << 8) /* Bit 8: Reset Transmit FIFO (RTF) */
|
||||
#define LPSPI_CR_RRF (1 << 9) /* Bit 9: Reset Receive FIFO (RRF) */
|
||||
/* Bits 10-31: Reserved */
|
||||
|
||||
/* Status Register (SR) */
|
||||
|
||||
#define LPSPI_SR_TDF (1 << 0) /* Bit 0: Transmit Data Flag (TDF) */
|
||||
#define LPSPI_SR_RDF (1 << 1) /* Bit 1: Receive Data Flag (RDF) */
|
||||
/* Bits 2-7: Reserved */
|
||||
#define LPSPI_SR_WCF (1 << 8) /* Bit 8: Word Complete Flag (WCF) */
|
||||
#define LPSPI_SR_FCF (1 << 9) /* Bit 9: Frame Complete Flag (FCF) */
|
||||
#define LPSPI_SR_TCF (1 << 10) /* Bit 10: Transfer Complete Flag (TCF) */
|
||||
#define LPSPI_SR_TEF (1 << 11) /* Bit 11: Transmit Error Flag (TEF) */
|
||||
#define LPSPI_SR_REF (1 << 12) /* Bit 12: Receive Error Flag (REF) */
|
||||
#define LPSPI_SR_DMF (1 << 13) /* Bit 13: Data Match Flag (DMF) */
|
||||
/* Bits 14-23: Reserved */
|
||||
#define LPSPI_SR_MBF (1 << 24) /* Bit 24: Module Busy Flag (MBF) */
|
||||
/* Bits 25-31: Reserved */
|
||||
|
||||
/* Interrupt Enable Register (IER) */
|
||||
|
||||
#define LPSPI_IER_TDIE (1 << 0) /* Bit 0: Transmit Data Interrupt Enable (TDIE) */
|
||||
#define LPSPI_IER_RDIE (1 << 1) /* Bit 1: Receive Data Interrupt Enable (RDIE) */
|
||||
/* Bits 2-7: Reserved */
|
||||
#define LPSPI_IER_WCIE (1 << 8) /* Bit 8: Word Complete Interrupt Enable (WCIE) */
|
||||
#define LPSPI_IER_FCIE (1 << 9) /* Bit 9: Frame Complete Interrupt Enable (FCIE) */
|
||||
#define LPSPI_IER_TCIE (1 << 10) /* Bit 10: Transfer Complete Interrupt Enable (TCIE) */
|
||||
#define LPSPI_IER_TEIE (1 << 11) /* Bit 11: Transmit Error Interrupt Enable (TEIE) */
|
||||
#define LPSPI_IER_REIE (1 << 12) /* Bit 12: Receive Error Interrupt Enable (REIE) */
|
||||
#define LPSPI_IER_DMIE (1 << 13) /* Bit 13: Data Match Interrupt Enable (DMIE) */
|
||||
/* Bits 14-31: Reserved */
|
||||
|
||||
/* DMA Enable Register (DER) */
|
||||
|
||||
#define LPSPI_DER_TDDE (1 << 0) /* Bit 0: Transmit Data DMA Enable (TDDE) */
|
||||
#define LPSPI_DER_RDDE (1 << 1) /* Bit 1: Receive Data DMA Enable (RDDE) */
|
||||
/* Bits 2-31: Reserved */
|
||||
|
||||
/* Configuration Register 0 (CFGR0) */
|
||||
|
||||
#define LPSPI_CFGR0_HREN (1 << 0) /* Bit 0: Host Request Enable (HREN) */
|
||||
#define LPSPI_CFGR0_HRPOL (1 << 1) /* Bit 1: Host Request Polarity (HRPOL) */
|
||||
# define LPSPI_CFGR0_HRPOL_HIGH (0 << 1) /* HREQ pin or input trigger is active high */
|
||||
# define LPSPI_CFGR0_HRPOL_LOW (1 << 1) /* HREQ pin or input trigger is active low */
|
||||
#define LPSPI_CFGR0_HRSEL (1 << 2) /* Bit 2: Host Request Select (HRSEL) */
|
||||
# define LPSPI_CFGR0_HRSEL_HREQ (0 << 2) /* Host request input is the LPSPI_HREQ pin */
|
||||
# define LPSPI_CFGR0_HRSEL_INTR (1 << 2) /* Host request input is the input trigger */
|
||||
#define LPSPI_CFGR0_HRDIR (1 << 3) /* Bit 3: Host Request Direction (HRDIR) */
|
||||
# define LPSPI_CFGR0_HRDIR_INPUT (0 << 3) /* HREQ pin is configured as input */
|
||||
# define LPSPI_CFGR0_HRDIR_OUTPUT (1 << 3) /* HREQ pin is configured as output */
|
||||
/* Bits 4-7: Reserved */
|
||||
#define LPSPI_CFGR0_CIRFIFO (1 << 8) /* Bit 8: Circular FIFO Enable (CIRCFIFO) */
|
||||
#define LPSPI_CFGR0_RDMO (1 << 9) /* Bit 9: Receive Data Match Only (RDMO) */
|
||||
# define LPSPI_CFGR0_RDMO_FIFO (0 << 9) /* Received data is stored in the receive FIFO as in normal operations */
|
||||
# define LPSPI_CFGR0_RDMO_DMF (1 << 9) /* Received data is discarded unless the Data Match Flag (DMF) is set */
|
||||
/* Bits 10-31: Reserved */
|
||||
|
||||
/* Configuration Register 1 (CFGR1) */
|
||||
|
||||
#define LPSPI_CFGR1_MASTER (1 << 0) /* Bit 0: Master Mode (MASTER) */
|
||||
#define LPSPI_CFGR1_SAMPLE (1 << 1) /* Bit 1: Sample Point (SAMPLE) */
|
||||
# define LPSPI_CFGR1_SAMPLE_SCK (0 << 1) /* Input data is sampled on SCK edge */
|
||||
# define LPSPI_CFGR1_SAMPLE_DELAY (1 << 1) /* Input data is sampled on delayed SCK edge */
|
||||
#define LPSPI_CFGR1_AUTOPCS (1 << 2) /* Bit 2: Automatic PCS (AUTOPCS) */
|
||||
#define LPSPI_CFGR1_NOSTALL (1 << 3) /* Bit 3: No Stall (NOSTALL) */
|
||||
#define LPSPI_CFGR1_PARTIAL (1 << 4) /* Bit 4: Partial Enable (PARTIAL) */
|
||||
/* Bits 5-7: Reserved */
|
||||
#define LPSPI_CFGR1_PCSPOL_SHIFT (8) /* Bits 8-15: Peripheral Chip Select Polarity (PCSPOL) */
|
||||
#define LPSPI_CFGR1_PCSPOL_MASK (0xff << LPSPI_CFGR1_PCSPOL_SHIFT)
|
||||
# define LPSPI_CFGR1_PCSPOL_LOW(n) (0 << (LPSPI_CFGR1_PCSPOL_SHIFT + (n))) /* The Peripheral Chip Select PCS[n] pin is active low */
|
||||
# define LPSPI_CFGR1_PCSPOL_HIGH(n) (1 << (LPSPI_CFGR1_PCSPOL_SHIFT + (n))) /* The Peripheral Chip Select PCS[n] pin is active high */
|
||||
|
||||
#define LPSPI_CFGR1_MATCFG_SHIFT (16) /* Bits 16-18: Match Configuration (MATCFG) */
|
||||
#define LPSPI_CFGR1_MATCFG_MASK (0x07 << LPSPI_CFGR1_MATCFG_SHIFT)
|
||||
#define LPSPI_CFGR1_MATCFG_DIS (0x00 << LPSPI_CFGR1_MATCFG_SHIFT) /* Match is disabled */
|
||||
|
||||
/* Bits 19-23: Reserved */
|
||||
#define LPSPI_CFGR1_PINCFG_SHIFT (24) /* Bits 24-25: Pin Configuration (PINCFG) */
|
||||
#define LPSPI_CFGR1_PINCFG_MASK (0x03 << LPSPI_CFGR1_PINCFG_SHIFT)
|
||||
# define LPSPI_CFGR1_PINCFG_SIN_SOUT (0x00 << LPSPI_CFGR1_PINCFG_SHIFT) /* SIN is used for input data and SOUT is used for output data */
|
||||
# define LPSPI_CFGR1_PINCFG_SIN_SIN (0x01 << LPSPI_CFGR1_PINCFG_SHIFT) /* SIN is used for both input and output data */
|
||||
# define LPSPI_CFGR1_PINCFG_SOUT_SOUT (0x02 << LPSPI_CFGR1_PINCFG_SHIFT) /* SOUT is used for both input and output data */
|
||||
# define LPSPI_CFGR1_PINCFG_SOUT_SIN (0x03 << LPSPI_CFGR1_PINCFG_SHIFT) /* SOUT is used for input data and SIN is used for output data */
|
||||
# define LPSPI_CFGR1_PINCFG(n) ((n) << LPSPI_CFGR1_PINCFG_SHIFT)
|
||||
|
||||
#define LPSPI_CFGR1_OUTCFG (1 << 26) /* Bit 26: Output Config (OUTCFG) */
|
||||
# define LPSPI_CFGR1_OUTCFG_RETAIN (0 << 26) /* Output data retains last value when chip select is negated */
|
||||
# define LPSPI_CFGR1_OUTCFG_TRISTATE (1 << 26) /* Output data is tristated when chip select is negated */
|
||||
#define LPSPI_CFGR1_PCSCFG_SHIFT (27) /* Bits 27-28: Peripheral Chip Select Configuration (PCSCFG) */
|
||||
#define LPSPI_CFGR1_PCSCFG_MASK (0x03 << LPSPI_CFGR1_PCSCFG_SHIFT)
|
||||
# define LPSPI_CFGR1_PCSCFG_PCS (0x00 << LPSPI_CFGR1_PCSCFG_SHIFT) /* PCS[2:7] are configured for chip select function */
|
||||
# define LPSPI_CFGR1_PCSCFG_4BIT (0x01 << LPSPI_CFGR1_PCSCFG_SHIFT) /* PCS[2:3] are configured for half-duplex 4-bit transfers */
|
||||
# define LPSPI_CFGR1_PCSCFG_8BIT (0x03 << LPSPI_CFGR1_PCSCFG_SHIFT) /* PCS[2:7] are configured for half-duplex 4-bit and 8-bit transfers */
|
||||
|
||||
/* Bits 29-31: Reserved */
|
||||
|
||||
/* Data Match Register 0 (DMR0) */
|
||||
|
||||
#define LPSPI_DMR0_MATCH0_SHIFT (0) /* Bits 0-31: Match 0 Value (MATCH0) */
|
||||
#define LPSPI_DMR0_MATCH0_MASK (0xffffffff << LPSPI_DMR0_MATCH0_SHIFT)
|
||||
|
||||
/* Data Match Register 0 (DMR1) */
|
||||
|
||||
#define LPSPI_DMR1_MATCH1_SHIFT (0) /* Bits 0-31: Match 1 Value (MATCH1) */
|
||||
#define LPSPI_DMR1_MATCH1_MASK (0xffffffff << LPSPI_DMR1_MATCH1_SHIFT)
|
||||
|
||||
/* Clock Configuration Register (CCR) */
|
||||
|
||||
#define LPSPI_CCR_SCKDIV_SHIFT (0) /* Bits 0-7: SCK Divider (SCKDIV) */
|
||||
#define LPSPI_CCR_SCKDIV_MASK (0xff << LPSPI_CCR_SCKDIV_SHIFT)
|
||||
# define LPSPI_CCR_SCKDIV(n) (((uint32_t)(n) << LPSPI_CCR_SCKDIV_SHIFT) & LPSPI_CCR_SCKDIV_MASK)
|
||||
#define LPSPI_CCR_DBT_SHIFT (8) /* Bits 8-15: Delay Between Transfers (DBT) */
|
||||
#define LPSPI_CCR_DBT_MASK (0xff << LPSPI_CCR_DBT_SHIFT)
|
||||
# define LPSPI_CCR_DBT(n) (((uint32_t)(n) << LPSPI_CCR_DBT_SHIFT) & LPSPI_CCR_DBT_MASK)
|
||||
#define LPSPI_CCR_PCSSCK_SHIFT (16) /* Bits 16-23: PCS-to-SCK Delay (PCSSCK) */
|
||||
#define LPSPI_CCR_PCSSCK_MASK (0xff << LPSPI_CCR_PCSSCK_SHIFT)
|
||||
# define LPSPI_CCR_PCSSCK(n) (((uint32_t)(n) << LPSPI_CCR_PCSSCK_SHIFT) & LPSPI_CCR_PCSSCK_MASK)
|
||||
#define LPSPI_CCR_SCKPCS_SHIFT (24) /* Bits 24-31: SCK-to-PCS Delay (SCKPCS) */
|
||||
#define LPSPI_CCR_SCKPCS_MASK (0xff << LPSPI_CCR_SCKPCS_SHIFT)
|
||||
# define LPSPI_CCR_SCKPCS(n) (((uint32_t)(n) << LPSPI_CCR_SCKPCS_SHIFT) & LPSPI_CCR_SCKPCS_MASK)
|
||||
|
||||
/* Clock Configuration Register 1 (CCR1) */
|
||||
|
||||
#define LPSPI_CCR1_SCKSET_SHIFT (0) /* Bits 0-7: SCK Setup (SCKSET) */
|
||||
#define LPSPI_CCR1_SCKSET_MASK (0xff << LPSPI_CCR1_SCKSET_SHIFT)
|
||||
#define LPSPI_CCR1_SCKHLD_SHIFT (8) /* Bits 8-15: SCK Hold (SCKHLD) */
|
||||
#define LPSPI_CCR1_SCKHLD_MASK (0xff << LPSPI_CCR1_SCKHLD_SHIFT)
|
||||
#define LPSPI_CCR1_PCSPCS_SHIFT (16) /* Bits 16-23: PCS to PCS Delay (PCSPCS) */
|
||||
#define LPSPI_CCR1_PCSPCS_MASK (0xff << LPSPI_CCR1_PCSPCS_SHIFT)
|
||||
#define LPSPI_CCR1_SCKSCK_SHIFT (24) /* Bits 24-31: SCK Inter-Frame Delay (SCKSCK) */
|
||||
#define LPSPI_CCR1_SCKSCK_MASK (0xff << LPSPI_CCR1_SCKSCK_SHIFT)
|
||||
|
||||
/* FIFO Control Register (FCR) */
|
||||
|
||||
#define LPSPI_FCR_TXWATER_SHIFT (0) /* Bits 0-1: Transmit FIFO Watermark (TXWATER) */
|
||||
#define LPSPI_FCR_TXWATER_MASK (0x03 << LPSPI_FCR_TXWATER_SHIFT)
|
||||
# define LPSPI_FCR_TXWATER(n) ((uint32_t)(n) << LPSPI_FCR_TXWATER_SHIFT)
|
||||
/* Bits 2-15: Reserved */
|
||||
#define LPSPI_FCR_RXWATER_SHIFT (16) /* Bits 16-17: Receive FIFO Watermark (RXWATER) */
|
||||
#define LPSPI_FCR_RXWATER_MASK (0x03 << LPSPI_FCR_RXWATER_SHIFT)
|
||||
# define LPSPI_FCR_RXWATER(n) ((uint32_t)(n) << LPSPI_FCR_RXWATER_SHIFT)
|
||||
/* Bits 18-31: Reserved */
|
||||
|
||||
/* FIFO Status Register (FSR) */
|
||||
|
||||
#define LPSPI_FSR_TXCOUNT_SHIFT (0) /* Bits 0-2: Transmit FIFO Count (TXCOUNT) */
|
||||
#define LPSPI_FSR_TXCOUNT_MASK (0x07 << LPSPI_FSR_TXCOUNT_SHIFT)
|
||||
/* Bits 3-15: Reserved */
|
||||
#define LPSPI_FSR_RXCOUNT_SHIFT (16) /* Bits 16-18: Receive FIFO Count (RXCOUNT) */
|
||||
#define LPSPI_FSR_RXCOUNT_MASK (0x07 << LPSPI_FSR_RXCOUNT_SHIFT)
|
||||
/* Bits 19-31: Reserved */
|
||||
|
||||
/* Transmit Command Register (TCR) */
|
||||
|
||||
#define LPSPI_TCR_FRAMESZ_SHIFT (0) /* Bits 0-11: Frame Size (FRAMESZ) */
|
||||
#define LPSPI_TCR_FRAMESZ_MASK (0x0fff << LPSPI_TCR_FRAMESZ_SHIFT)
|
||||
# define LPSPI_TCR_FRAMESZ(n) ((uint32_t)(n) << LPSPI_TCR_FRAMESZ_SHIFT)
|
||||
/* Bits 12-15: Reserved */
|
||||
#define LPSPI_TCR_WIDTH_SHIFT (16) /* Bits 16-17: Transfer Width (WIDTH) */
|
||||
#define LPSPI_TCR_WIDTH_MASK (0x03 << LPSPI_TCR_WIDTH_SHIFT)
|
||||
# define LPSPI_TCR_WIDTH_1BIT (0x00 << LPSPI_TCR_WIDTH_SHIFT) /* 1 bit transfer */
|
||||
# define LPSPI_TCR_WIDTH_2BIT (0x01 << LPSPI_TCR_WIDTH_SHIFT) /* 2 bit transfer */
|
||||
# define LPSPI_TCR_WIDTH_4BIT (0x02 << LPSPI_TCR_WIDTH_SHIFT) /* 4 bit transfer */
|
||||
# define LPSPI_TCR_WIDTH_8BIT (0x03 << LPSPI_TCR_WIDTH_SHIFT) /* 8 bit transfer */
|
||||
|
||||
#define LPSPI_TCR_TXMSK (1 << 18) /* Bit 18: Transmit Data Mask (TXMSK) */
|
||||
#define LPSPI_TCR_RXMSK (1 << 19) /* Bit 19: Receive Data Mask (RXMSK) */
|
||||
#define LPSPI_TCR_CONTC (1 << 20) /* Bit 20: Continuing Command (CONTC) */
|
||||
#define LPSPI_TCR_CONT (1 << 21) /* Bit 21: Continuous Transfer (CONT) */
|
||||
#define LPSPI_TCR_BYSW (1 << 22) /* Bit 22: Byte Swap (BYSW) */
|
||||
#define LPSPI_TCR_LSBF (1 << 23) /* Bit 23: LSB First (LSBF) */
|
||||
# define LPSPI_TCR_MSBF (0 << 23) /* MSB First */
|
||||
#define LPSPI_TCR_PCS_SHIFT (24) /* Bits 24-26: Peripheral Chip Select (PCS) */
|
||||
#define LPSPI_TCR_PCS_MASK (0x07 << LPSPI_TCR_PCS_SHIFT)
|
||||
# define LPSPI_TCR_PCS_0 (0x00 << LPSPI_TCR_PCS_SHIFT) /* Transfer using PCS[0] */
|
||||
# define LPSPI_TCR_PCS_1 (0x01 << LPSPI_TCR_PCS_SHIFT) /* Transfer using PCS[1] */
|
||||
# define LPSPI_TCR_PCS_2 (0x02 << LPSPI_TCR_PCS_SHIFT) /* Transfer using PCS[2] */
|
||||
# define LPSPI_TCR_PCS_3 (0x03 << LPSPI_TCR_PCS_SHIFT) /* Transfer using PCS[3] */
|
||||
# define LPSPI_TCR_PCS_4 (0x04 << LPSPI_TCR_PCS_SHIFT) /* Transfer using PCS[4] */
|
||||
# define LPSPI_TCR_PCS_5 (0x05 << LPSPI_TCR_PCS_SHIFT) /* Transfer using PCS[5] */
|
||||
# define LPSPI_TCR_PCS_6 (0x06 << LPSPI_TCR_PCS_SHIFT) /* Transfer using PCS[6] */
|
||||
# define LPSPI_TCR_PCS_7 (0x07 << LPSPI_TCR_PCS_SHIFT) /* Transfer using PCS[7] */
|
||||
# define LPSPI_TCR_PCS(n) (((n) << LPSPI_TCR_PCS_SHIFT) & LPSPI_TCR_PCS_MASK)
|
||||
|
||||
#define LPSPI_TCR_PRESCALE_SHIFT (27) /* Bits 27-29: Prescaler Value (PRESCALE) */
|
||||
#define LPSPI_TCR_PRESCALE_MASK (0x07 << LPSPI_TCR_PRESCALE_SHIFT)
|
||||
# define LPSPI_TCR_PRESCALE_DIV1 (0x00 << LPSPI_TCR_PRESCALE_SHIFT) /* Divide by 1 */
|
||||
# define LPSPI_TCR_PRESCALE_DIV2 (0x01 << LPSPI_TCR_PRESCALE_SHIFT) /* Divide by 2 */
|
||||
# define LPSPI_TCR_PRESCALE_DIV4 (0x02 << LPSPI_TCR_PRESCALE_SHIFT) /* Divide by 4 */
|
||||
# define LPSPI_TCR_PRESCALE_DIV8 (0x03 << LPSPI_TCR_PRESCALE_SHIFT) /* Divide by 8 */
|
||||
# define LPSPI_TCR_PRESCALE_DIV16 (0x04 << LPSPI_TCR_PRESCALE_SHIFT) /* Divide by 16 */
|
||||
# define LPSPI_TCR_PRESCALE_DIV32 (0x05 << LPSPI_TCR_PRESCALE_SHIFT) /* Divide by 32 */
|
||||
# define LPSPI_TCR_PRESCALE_DIV64 (0x06 << LPSPI_TCR_PRESCALE_SHIFT) /* Divide by 64 */
|
||||
# define LPSPI_TCR_PRESCALE_DIV128 (0x07 << LPSPI_TCR_PRESCALE_SHIFT) /* Divide by 128 */
|
||||
# define LPSPI_TCR_PRESCALE(n) ((n) << LPSPI_TCR_PRESCALE_SHIFT)
|
||||
|
||||
#define LPSPI_TCR_CPHA (1 << 30) /* Bit 30: Clock Phase (CPHA) */
|
||||
# define LPSPI_TCR_CPHA_CAPTURED (0 << 30) /* Data is captured on the leading edge of SCK and changed on the following edge of SCK */
|
||||
# define LPSPI_TCR_CPHA_CHANGED (1 << 30) /* Data is changed on the leading edge of SCK and captured on the following edge of SCK */
|
||||
#define LPSPI_TCR_CPOL (1 << 31) /* Bit 31: Clock Polarity (CPOL) */
|
||||
# define LPSPI_TCR_CPOL_LOW (0 << 31) /* The inactive state value of SCK is low */
|
||||
# define LPSPI_TCR_CPOL_HIGH (1 << 31) /* The inactive state value of SCK is high */
|
||||
|
||||
/* Transmit Data Register (TDR) */
|
||||
|
||||
#define LPSPI_TDR_DATA_SHIFT (0) /* Bits 0-31: Transmit Data (DATA) */
|
||||
#define LPSPI_TDR_DATA_MASK (0xffffffff << LPSPI_TDR_DATA_SHIFT)
|
||||
|
||||
/* Receive Status Register (RSR) */
|
||||
|
||||
#define LPSPI_RSR_SOF (1 << 0) /* Bit 0: Start Of Frame (SOF) */
|
||||
#define LPSPI_RSR_RXEMPTY (1 << 1) /* Bit 1: RX FIFO Empty (RXEMPTY) */
|
||||
/* Bits 2-31: Reserved */
|
||||
|
||||
/* Receive Data Register (RDR) */
|
||||
|
||||
#define LPSPI_RDR_DATA_SHIFT (0) /* Bits 0-31: Receive Data (DATA) */
|
||||
#define LPSPI_RDR_DATA_MASK (0xffffffff << LPSPI_RDR_DATA_SHIFT)
|
||||
|
||||
/* Receive Data Read Only Register (RDROR) */
|
||||
|
||||
#define LPSPI_RDROR_DATA_SHIFT (0) /* Bits 0-31: Receive Data (DATA) */
|
||||
#define LPSPI_RDROR_DATA_MASK (0xffffffff << LPSPI_RDROR_DATA_SHIFT)
|
||||
|
||||
/* Transmit Command Burst Register (TCBR) */
|
||||
|
||||
#define LPSPI_TCBR_DATA_SHIFT (0) /* Bits 0-31: Command Data (DATA) */
|
||||
#define LPSPI_TCBR_DATA_MASK (0xffffffff << LPSPI_TCBR_DATA_SHIFT)
|
||||
|
||||
/* Transmit Data Burst Register (TDBR) */
|
||||
|
||||
#define LPSPI_TDBR_DATA_SHIFT (0) /* Bits 0-31: Data (DATA) */
|
||||
#define LPSPI_TDBR_DATA_MASK (0xffffffff << LPSPI_TDBR_DATA_SHIFT)
|
||||
|
||||
/* Receive Data Burst Register (RDBR) */
|
||||
|
||||
#define LPSPI_RDBR_DATA_SHIFT (0) /* Bits 0-31: Data (DATA) */
|
||||
#define LPSPI_RDBR_DATA_MASK (0xffffffff << LPSPI_RDBR_DATA_SHIFT)
|
||||
|
||||
#endif /* __ARCH_ARM_SRC_IMX9_HARDWARE_IMX9_LPSPI_H_ */
|
103
arch/arm/src/imx9/hardware/imx9_lptmr.h
Normal file
103
arch/arm/src/imx9/hardware/imx9_lptmr.h
Normal file
|
@ -0,0 +1,103 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/hardware/imx9_lptmr.h
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ARCH_ARM_SRC_IMX9_HARDWARE_IMX9_LPTMR_H_
|
||||
#define __ARCH_ARM_SRC_IMX9_HARDWARE_IMX9_LPTMR_H_
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/* Register Offsets *********************************************************/
|
||||
|
||||
#define IMX9_LPTMR_CSR_OFFSET 0x0000 /* Control Status */
|
||||
#define IMX9_LPTMR_PSR_OFFSET 0x0004 /* Prescale */
|
||||
#define IMX9_LPTMR_CMR_OFFSET 0x0008 /* Compare */
|
||||
#define IMX9_LPTMR_CNR_OFFSET 0x000c /* Counter */
|
||||
|
||||
/* Register Address *********************************************************/
|
||||
|
||||
#define LPTMR_CSR(n) ((n) + IMX9_LPTMR_CSR_OFFSET)
|
||||
#define LPTMR_PSR(n) ((n) + IMX9_LPTMR_PSR_OFFSET)
|
||||
#define LPTMR_CMR(n) ((n) + IMX9_LPTMR_CMR_OFFSET)
|
||||
#define LPTMR_CNR(n) ((n) + IMX9_LPTMR_CNR_OFFSET)
|
||||
|
||||
/* Register Bitfield Definitions ********************************************/
|
||||
|
||||
#define LPTMR_CSR_TDRE (1 << 8) /* Timer DMA Request Enable */
|
||||
#define LPTMR_CSR_TCF (1 << 7) /* Timer Compare Flag */
|
||||
#define LPTMR_CSR_TIE (1 << 6) /* Timer Interrupt Enable */
|
||||
|
||||
#define LPTMR_CSR_TPS_SHIFT (4) /* Bit[5:4]: Timer Pin Select */
|
||||
#define LPTMR_CSR_TPS_MASK (3 << LPTMR_CSR_TPS_SHIFT)
|
||||
#define LPTMR_CSR_TPS0 (0 << LPTMR_CSR_TPS_SHIFT)
|
||||
#define LPTMR_CSR_TPS1 (1 << LPTMR_CSR_TPS_SHIFT)
|
||||
#define LPTMR_CSR_TPS2 (2 << LPTMR_CSR_TPS_SHIFT)
|
||||
#define LPTMR_CSR_TPS3 (3 << LPTMR_CSR_TPS_SHIFT)
|
||||
|
||||
#define LPTMR_CSR_TPP (1 << 3) /* Timer Pin Polarity */
|
||||
#define LPTMR_CSR_TFC (1 << 2) /* Timer Free-Running Counter */
|
||||
#define LPTMR_CSR_TMS (1 << 1) /* Timer Mode Select */
|
||||
#define LPTMR_CSR_TEN (1 << 0) /* Timer Enable */
|
||||
|
||||
#define LPTMR_PSR_PRESCALE_SHIFT (3) /* Bit[6:3]: Prescale Value */
|
||||
#define LPTMR_PSR_PRESCALE_MASK (0xf << LPTMR_PSR_PRESCALE_SHIFT)
|
||||
#define LPTMR_PSR_PRESCALE_DIV2 (0 << LPTMR_PSR_PRESCALE_SHIFT)
|
||||
#define LPTMR_PSR_PRESCALE_DIV4 (1 << LPTMR_PSR_PRESCALE_SHIFT)
|
||||
#define LPTMR_PSR_PRESCALE_DIV8 (2 << LPTMR_PSR_PRESCALE_SHIFT)
|
||||
#define LPTMR_PSR_PRESCALE_DIV16 (3 << LPTMR_PSR_PRESCALE_SHIFT)
|
||||
#define LPTMR_PSR_PRESCALE_DIV32 (4 << LPTMR_PSR_PRESCALE_SHIFT)
|
||||
#define LPTMR_PSR_PRESCALE_DIV64 (5 << LPTMR_PSR_PRESCALE_SHIFT)
|
||||
#define LPTMR_PSR_PRESCALE_DIV128 (6 << LPTMR_PSR_PRESCALE_SHIFT)
|
||||
#define LPTMR_PSR_PRESCALE_DIV256 (7 << LPTMR_PSR_PRESCALE_SHIFT)
|
||||
#define LPTMR_PSR_PRESCALE_DIV512 (8 << LPTMR_PSR_PRESCALE_SHIFT)
|
||||
#define LPTMR_PSR_PRESCALE_DIV1024 (9 << LPTMR_PSR_PRESCALE_SHIFT)
|
||||
#define LPTMR_PSR_PRESCALE_DIV2048 (10 << LPTMR_PSR_PRESCALE_SHIFT)
|
||||
#define LPTMR_PSR_PRESCALE_DIV4096 (11 << LPTMR_PSR_PRESCALE_SHIFT)
|
||||
#define LPTMR_PSR_PRESCALE_DIV8192 (12 << LPTMR_PSR_PRESCALE_SHIFT)
|
||||
#define LPTMR_PSR_PRESCALE_DIV16384 (13 << LPTMR_PSR_PRESCALE_SHIFT)
|
||||
#define LPTMR_PSR_PRESCALE_DIV32768 (14 << LPTMR_PSR_PRESCALE_SHIFT)
|
||||
#define LPTMR_PSR_PRESCALE_DIV65536 (15 << LPTMR_PSR_PRESCALE_SHIFT)
|
||||
|
||||
#define LPTMR_PSR_PBYP (1 << 2) /* Prescaler Bypass */
|
||||
|
||||
/* Clock sources (module clock / root clock)
|
||||
* ipg_clk_irclk -> lptmrx_clk_root
|
||||
* ipg_clk_1khz -> 32k_clk_root
|
||||
* ipg_clk_32khz -> 32k_clk_root
|
||||
* ipg_clk_ercl -> 32k_clk_root
|
||||
*/
|
||||
|
||||
#define LPTMR_PSR_PCS_SHIFT (0) /* Bit[1:0]: Prescaler Clock Select */
|
||||
#define LPTMR_PSR_PCS_MASK (3 << LPTMR_PSR_PCS_SHIFT)
|
||||
#define LPTMR_PSR_PCS_REF_INT (0 << LPTMR_PSR_PCS_SHIFT) /* Internal reference clock */
|
||||
#define LPTMR_PSR_PCS_LPO (1 << LPTMR_PSR_PCS_SHIFT) /* LPO 1K Hz */
|
||||
#define LPTMR_PSR_PCS_RTC (2 << LPTMR_PSR_PCS_SHIFT) /* RTC 32768 Hz */
|
||||
#define LPTMR_PSR_PCS_REF_EXT (3 << LPTMR_PSR_PCS_SHIFT) /* External reference clock */
|
||||
# define LPTMR_PSR_PCS_SOSC LPTMR_PSR_PCS_RFOSC
|
||||
|
||||
#endif /* __ARCH_ARM_SRC_IMX9_HARDWARE_IMX9_LPTMR_H_ */
|
316
arch/arm/src/imx9/hardware/imx9_lpuart.h
Normal file
316
arch/arm/src/imx9/hardware/imx9_lpuart.h
Normal file
|
@ -0,0 +1,316 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/hardware/imx9_lpuart.h
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ARCH_ARM_SRC_IMX9_HARDWARE_IMX9_LPUART_H
|
||||
#define __ARCH_ARM_SRC_IMX9_HARDWARE_IMX9_LPUART_H
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <hardware/imx9_memorymap.h>
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/* LPUART Register Offsets **************************************************/
|
||||
|
||||
#define IMX9_LPUART_VERID_OFFSET (0x00) /* Version ID Register (VERID) */
|
||||
#define IMX9_LPUART_PARAM_OFFSET (0x04) /* Parameter Register (PARAM) */
|
||||
#define IMX9_LPUART_GLOBAL_OFFSET (0x08) /* LPUART Global Register (GLOBAL) */
|
||||
#define IMX9_LPUART_PINCFG_OFFSET (0x0c) /* LPUART Pin Configuration Register (PINCFG) */
|
||||
#define IMX9_LPUART_BAUD_OFFSET (0x10) /* LPUART Baud Rate Register (BAUD) */
|
||||
#define IMX9_LPUART_STAT_OFFSET (0x14) /* LPUART Status Register (STAT) */
|
||||
#define IMX9_LPUART_CTRL_OFFSET (0x18) /* LPUART Control Register (CTRL) */
|
||||
#define IMX9_LPUART_DATA_OFFSET (0x1c) /* LPUART Data Register (DATA) */
|
||||
#define IMX9_LPUART_MATCH_OFFSET (0x20) /* LPUART Match Address Register (MATCH) */
|
||||
#define IMX9_LPUART_MODIR_OFFSET (0x24) /* LPUART Modem IrDA Register (MODIR) */
|
||||
#define IMX9_LPUART_FIFO_OFFSET (0x28) /* LPUART FIFO Register (FIFO) */
|
||||
#define IMX9_LPUART_WATER_OFFSET (0x2c) /* LPUART Watermark Register (WATER) */
|
||||
#define IMX9_LPUART_DATARO_OFFSET (0x30) /* Data read-only Register (DATARO) */
|
||||
|
||||
/* Register bit definitions *************************************************/
|
||||
|
||||
/* Version ID Register (VERID) */
|
||||
|
||||
#define LPUART_VERID_FEATURE_SHIFT (0) /* Bits 0-15: Feature Identification Number (FEATURE) */
|
||||
#define LPUART_VERID_FEATURE_MASK (0xffff << LPUART_VERID_FEATURE_SHIFT)
|
||||
# define LPUART_VERID_FEATURE_STD (1 << LPUART_VERID_FEATURE_SHIFT) /* Standard feature set */
|
||||
# define LPUART_VERID_FEATURE_MODEM (3 << LPUART_VERID_FEATURE_SHIFT) /* MODEM/IrDA support */
|
||||
|
||||
#define LPUART_VERID_MINOR_SHIFT (16) /* Bits 16-23: Minor Version Number (MINOR) */
|
||||
#define LPUART_VERID_MINOR_MASK (0xff << LPUART_VERID_MINOR_SHIFT)
|
||||
#define LPUART_VERID_MAJOR_SHIFT (24) /* Bits 24-31: Major Version Number (MAJOR) */
|
||||
#define LPUART_VERID_MAJOR_MASK (0xff << LPUART_VERID_MAJOR_SHIFT)
|
||||
|
||||
/* Parameter Register (PARAM) */
|
||||
|
||||
#define LPUART_PARAM_TXFIFO_SHIFT (0) /* Bits 0-7: Transmit FIFO Size (TXFIFO) */
|
||||
#define LPUART_PARAM_TXFIFO_MASK (0xff << LPUART_PARAM_TXFIFO_SHIFT)
|
||||
#define LPUART_PARAM_RXFIFO_SHIFT (8) /* Bits 8-15: Receive FIFO Size (RXFIFO) */
|
||||
#define LPUART_PARAM_RXFIFO_MASK (0xff << LPUART_PARAM_RXFIFO_SHIFT)
|
||||
/* Bits 16-31: Reserved */
|
||||
|
||||
/* LPUART Global Register (GLOBAL) */
|
||||
|
||||
/* Bit 0: Reserved */
|
||||
#define LPUART_GLOBAL_RST (1 << 1) /* Bit 1: Software Reset (RST) */
|
||||
/* Bits 2-31: Reserved */
|
||||
|
||||
/* LPUART Pin Configuration Register (PINCFG) */
|
||||
|
||||
#define LPUART_PINCFG_TRGSEL_SHIFT (0) /* Bits 0-1: Trigger Select (TRGSEL) */
|
||||
#define LPUART_PINCFG_TRGSEL_MASK (0x03 << LPUART_PINCFG_TRGSEL_SHIFT)
|
||||
# define LPUART_PINCFG_TRGSEL_DISABLE (0 << LPUART_PINCFG_TRGSEL_SHIFT) /* Trigger disabled */
|
||||
# define LPUART_PINCFG_TRGSEL_RXD (1 << LPUART_PINCFG_TRGSEL_SHIFT) /* Trigger used instead of RXD pin */
|
||||
# define LPUART_PINCFG_TRGSEL_CTSB (2 << LPUART_PINCFG_TRGSEL_SHIFT) /* Trigger used instead of CTS_B pin */
|
||||
# define LPUART_PINCFG_TRGSEL_TXDMOD (3 << LPUART_PINCFG_TRGSEL_SHIFT) /* Trigger used to modulate the TXD output */
|
||||
|
||||
/* Bits 2-31: Reserved */
|
||||
|
||||
/* LPUART Baud Rate Register (BAUD) */
|
||||
|
||||
#define LPUART_BAUD_SBR_SHIFT (0) /* Bits 0-12: Baud Rate Modulo Divisor (SBR) */
|
||||
#define LPUART_BAUD_SBR_MASK (0x1fff << LPUART_BAUD_SBR_SHIFT)
|
||||
# define LPUART_BAUD_SBR(n) ((n) << LPUART_BAUD_SBR_SHIFT)
|
||||
#define LPUART_BAUD_SBNS (1 << 13) /* Bit 13: Stop Bit Number Select (SBNS) */
|
||||
#define LPUART_BAUD_RXEDGIE (1 << 14) /* Bit 14: RX Input Active Edge Interrupt Enable (RXEDGIE) */
|
||||
#define LPUART_BAUD_LBKDIE (1 << 15) /* Bit 15: LIN Break Detect Interrupt Enable (LBKDIE) */
|
||||
#define LPUART_BAUD_RESYNCDIS (1 << 16) /* Bit 16: Resynchronization Disable (RESYNCDIS) */
|
||||
#define LPUART_BAUD_BOTHEDGE (1 << 17) /* Bit 17: Both Edge Sampling (BOTHEDGE) */
|
||||
#define LPUART_BAUD_MATCFG_SHIFT (18) /* Bits 18-19: Match Configuration (MATCFG) */
|
||||
#define LPUART_BAUD_MATCFG_MASK (0x03 << LPUART_BAUD_MATCFG_SHIFT)
|
||||
# define LPUART_BAUD_MATCFG_ADDR (0 << LPUART_BAUD_MATCFG_SHIFT) /* Address Match Wakeup */
|
||||
# define LPUART_BAUD_MATCFG_IDLE (1 << LPUART_BAUD_MATCFG_SHIFT) /* Idle Match Wakeup */
|
||||
# define LPUART_BAUD_MATCFG_ONOFF (2 << LPUART_BAUD_MATCFG_SHIFT) /* Match On and Match Off */
|
||||
# define LPUART_BAUD_MATCFG_RWUENAB (3 << LPUART_BAUD_MATCFG_SHIFT) /* Enables RWU on Data Match and Match On/Off for transmitter CTS input */
|
||||
|
||||
/* Bit 20: Reserved */
|
||||
#define LPUART_BAUD_RDMAE (1 << 21) /* Bit 21: Receiver Full DMA Enable (RDMAE) */
|
||||
/* Bit 22: Reserved */
|
||||
#define LPUART_BAUD_TDMAE (1 << 23) /* Bit 23: Transmitter DMA Enable (TDMAE) */
|
||||
#define LPUART_BAUD_OSR_SHIFT (24) /* Bits 24-29: Oversampling Ratio (OSR) */
|
||||
#define LPUART_BAUD_OSR_MASK (0x1f << LPUART_BAUD_OSR_SHIFT)
|
||||
# define LPUART_BAUD_OSR(n) (((n) - 1) << LPUART_BAUD_OSR_SHIFT) /* n=4..32 */
|
||||
|
||||
#define LPUART_BAUD_M10 (1 << 29) /* Bit 29: 10-bit Mode Select (M10) */
|
||||
#define LPUART_BAUD_MAEN2 (1 << 30) /* Bit 30: Match Address Mode Enable 2 (MAEN2) */
|
||||
#define LPUART_BAUD_MAEN1 (1 << 31) /* Bit 31: Match Address Mode Enable 1 (MAEN1) */
|
||||
|
||||
/* LPUART Status Register (STAT) */
|
||||
|
||||
#define LPUART_STAT_LBKFE (1 << 0) /* Bit 0: LIN Break Flag Enable (LBKFE) */
|
||||
#define LPUART_STAT_AME (1 << 1) /* Bit 1: Address Mark Enable (AME) */
|
||||
/* Bits 2-13: Reserved */
|
||||
#define LPUART_STAT_MA2F (1 << 14) /* Bit 14: Match 2 Flag (MA2F) */
|
||||
#define LPUART_STAT_MA1F (1 << 15) /* Bit 15: Match 1 Flag (MA1F) */
|
||||
#define LPUART_STAT_PF (1 << 16) /* Bit 16: Parity Error Flag (PF) */
|
||||
#define LPUART_STAT_FE (1 << 17) /* Bit 17: Framing Error Flag (FE) */
|
||||
#define LPUART_STAT_NF (1 << 18) /* Bit 18: Noise Flag (NF) */
|
||||
#define LPUART_STAT_OR (1 << 19) /* Bit 19: Receiver Overrun Flag (OR) */
|
||||
#define LPUART_STAT_IDLE (1 << 20) /* Bit 20: Idle Line Flag (IDLE) */
|
||||
#define LPUART_STAT_RDRF (1 << 21) /* Bit 21: Receive Data Register Full Flag (RDRF) */
|
||||
#define LPUART_STAT_TC (1 << 22) /* Bit 22: Transmission Complete Flag (TC) */
|
||||
#define LPUART_STAT_TDRE (1 << 23) /* Bit 23: Transmit Data Register Empty Flag (TDRE) */
|
||||
#define LPUART_STAT_RAF (1 << 24) /* Bit 24: Receiver Active Flag (RAF) */
|
||||
#define LPUART_STAT_LBKDE (1 << 25) /* Bit 25: LIN Break Detection Enable (LBKDE) */
|
||||
#define LPUART_STAT_BRK13 (1 << 26) /* Bit 26: Break Character Generation Length (BRK13) */
|
||||
#define LPUART_STAT_RWUID (1 << 27) /* Bit 27: Receive Wake Up Idle Detect (RWUID) */
|
||||
#define LPUART_STAT_RXINV (1 << 28) /* Bit 28: Receive Data Inversion (RXINV) */
|
||||
#define LPUART_STAT_MSBF (1 << 29) /* Bit 29: MSB First (MSBF) */
|
||||
#define LPUART_STAT_RXEDGIF (1 << 30) /* Bit 30: RXD Pin Active Edge Interrupt Flag (RXEDGIF) */
|
||||
#define LPUART_STAT_LBKDIF (1 << 31) /* Bit 31: LIN Break Detect Interrupt Flag (LBKDIF) */
|
||||
|
||||
/* LPUART Control Register (CTRL) */
|
||||
|
||||
#define LPUART_CTRL_PT (1 << 0) /* Bit 0: Parity Type */
|
||||
# define LPUART_CTRL_PT_EVEN (0 << 0) /* Even parity */
|
||||
# define LPUART_CTRL_PT_ODD (1 << 0) /* Odd parity */
|
||||
#define LPUART_CTRL_PE (1 << 1) /* Bit 1: Parity Enable */
|
||||
#define LPUART_CTRL_ILT (1 << 2) /* Bit 2: Idle Line Type Select */
|
||||
#define LPUART_CTRL_WAKE (1 << 3) /* Bit 3: Receiver Wakeup Method Select */
|
||||
#define LPUART_CTRL_M (1 << 4) /* Bit 4: 9-Bit or 8-Bit Mode Select */
|
||||
#define LPUART_CTRL_RSRC (1 << 5) /* Bit 5: Receiver Source Select */
|
||||
#define LPUART_CTRL_DOZEEN (1 << 6) /* Bit 6: Doze Enable */
|
||||
#define LPUART_CTRL_LOOPS (1 << 7) /* Bit 7: Loop Mode Select */
|
||||
#define LPUART_CTRL_IDLECFG_SHIFT (8) /* Bits 8-10: Idle Configuration */
|
||||
#define LPUART_CTRL_IDLECFG_MASK (0x07 << LPUART_CTRL_IDLECFG_SHIFT)
|
||||
# define LPUART_CTRL_IDLECFG_1 (0 << LPUART_CTRL_IDLECFG_SHIFT) /* 1 idle character */
|
||||
# define LPUART_CTRL_IDLECFG_2 (1 << LPUART_CTRL_IDLECFG_SHIFT) /* 2 idle characters */
|
||||
# define LPUART_CTRL_IDLECFG_4 (2 << LPUART_CTRL_IDLECFG_SHIFT) /* 4 idle characters */
|
||||
# define LPUART_CTRL_IDLECFG_8 (3 << LPUART_CTRL_IDLECFG_SHIFT) /* 8 idle characters */
|
||||
# define LPUART_CTRL_IDLECFG_16 (4 << LPUART_CTRL_IDLECFG_SHIFT) /* 6 idle characters */
|
||||
# define LPUART_CTRL_IDLECFG_32 (5 << LPUART_CTRL_IDLECFG_SHIFT) /* 32 idle characters */
|
||||
# define LPUART_CTRL_IDLECFG_64 (6 << LPUART_CTRL_IDLECFG_SHIFT) /* 64 idle characters */
|
||||
# define LPUART_CTRL_IDLECFG_128 (7 << LPUART_CTRL_IDLECFG_SHIFT) /* 128 idle characters */
|
||||
|
||||
#define LPUART_CTRL_M7 (1 << 11) /* Bit 11: 7-Bit Mode Select (M7) */
|
||||
/* Bits 12-13: Reserved */
|
||||
#define LPUART_CTRL_MA2IE (1 << 14) /* Bit 14: Match 2 Interrupt Enable (MA2IE) */
|
||||
#define LPUART_CTRL_MA1IE (1 << 15) /* Bit 15: Match 1 Interrupt Enable (MA1IE) */
|
||||
#define LPUART_CTRL_SBK (1 << 16) /* Bit 16: Send Break (SBK) */
|
||||
#define LPUART_CTRL_RWU (1 << 17) /* Bit 17: Receiver Wakeup Control (RWU) */
|
||||
#define LPUART_CTRL_RE (1 << 18) /* Bit 18: Receiver Enable (RE) */
|
||||
#define LPUART_CTRL_TE (1 << 19) /* Bit 19: Transmitter Enable (TE) */
|
||||
#define LPUART_CTRL_ILIE (1 << 20) /* Bit 20: Idle Line Interrupt Enable (ILIE) */
|
||||
#define LPUART_CTRL_RIE (1 << 21) /* Bit 21: Receiver Interrupt Enable (RIE) */
|
||||
#define LPUART_CTRL_TCIE (1 << 22) /* Bit 22: Transmission Complete Interrupt Enable (TCIE) */
|
||||
#define LPUART_CTRL_TIE (1 << 23) /* Bit 23: Transmit Interrupt Enable (TIE) */
|
||||
#define LPUART_CTRL_PEIE (1 << 24) /* Bit 24: Parity Error Interrupt Enable (PEIE) */
|
||||
#define LPUART_CTRL_FEIE (1 << 25) /* Bit 25: Framing Error Interrupt Enable (FEIE) */
|
||||
#define LPUART_CTRL_NEIE (1 << 26) /* Bit 26: Noise Error Interrupt Enable (NEIE) */
|
||||
#define LPUART_CTRL_ORIE (1 << 27) /* Bit 27: Overrun Interrupt Enable (ORIE) */
|
||||
#define LPUART_CTRL_TXINV (1 << 28) /* Bit 28: Transmit Data Inversion (TXINV) */
|
||||
#define LPUART_CTRL_TXDIR (1 << 29) /* Bit 29: TXD Pin Direction in Single-Wire Mode (TXDIR) */
|
||||
#define LPUART_CTRL_R9T8 (1 << 30) /* Bit 30: Receive Bit 9 / Transmit Bit 8 (R9T8) */
|
||||
#define LPUART_CTRL_R8T9 (1 << 31) /* Bit 31: Receive Bit 8 / Transmit Bit 9 (R8T9) */
|
||||
|
||||
#define LPUART_ALL_INTS (LPUART_CTRL_ORIE | LPUART_CTRL_NEIE | LPUART_CTRL_FEIE | \
|
||||
LPUART_CTRL_PEIE | LPUART_CTRL_TIE | LPUART_CTRL_TCIE | \
|
||||
LPUART_CTRL_RIE | LPUART_CTRL_ILIE | LPUART_CTRL_MA1IE | \
|
||||
LPUART_CTRL_MA2IE)
|
||||
|
||||
/* LPUART Data Register (DATA) */
|
||||
|
||||
#define LPUART_DATA_SHIFT (0) /* Bits 0-9: Data bits 0-9 (DATA)*/
|
||||
#define LPUART_DATA_MASK (0x03ff << LPUART_DATA_SHIFT)
|
||||
#define LPUART_DATA_LINBRK (1 << 10) /* Bit 10: LIN Break (LINBRK) */
|
||||
#define LPUART_DATA_STATUS_SHIFT (11) /* Bits 11-15: Status */
|
||||
#define LPUART_DATA_IDLINE (1 << 11) /* Bit 11: Idle Line (IDLINE) */
|
||||
#define LPUART_DATA_RXEMPT (1 << 12) /* Bit 12: Receive Buffer Empty (RXEMPT) */
|
||||
#define LPUART_DATA_FRETSC (1 << 13) /* Bit 13: Frame Error / Transmit Special Character (FRETSC) */
|
||||
#define LPUART_DATA_PARITYE (1 << 14) /* Bit 14: Parity Error (PARITYE) */
|
||||
#define LPUART_DATA_NOISY (1 << 15) /* Bit 15: Noisy Data Received (NOISY) */
|
||||
/* Bits 16-31: Reserved */
|
||||
|
||||
/* LPUART Match Address Register (MATCH) */
|
||||
|
||||
#define LPUART_MATCH_MA1_SHIFT (0) /* Bits 0-9: Match Address 1 (MA1) */
|
||||
#define LPUART_MATCH_MA1_MASK (0x03ff << LPUART_MATCH_MA1_SHIFT)
|
||||
# define LPUART_MATCH_MA1(n) ((n) << LPUART_MATCH_MA1_SHIFT)
|
||||
/* Bits 10-15: Reserved */
|
||||
#define LPUART_MATCH_MA2_SHIFT (16) /* Bits 16-25: Match Address 2 (MA2) */
|
||||
#define LPUART_MATCH_MA2_MASK (0x03ff << LPUART_MATCH_MA2_SHIFT)
|
||||
# define LPUART_MATCH_MA2(n) ((n) << LPUART_MATCH_MA2_SHIFT)
|
||||
/* Bits 26-31: Reserved */
|
||||
|
||||
/* LPUART Modem IrDA Register (MODIR) */
|
||||
|
||||
#define LPUART_MODIR_TXCTSE (1 << 0) /* Bit 0: Transmitter clear-to-send enable (TXCTSE) */
|
||||
#define LPUART_MODIR_TXRTSE (1 << 1) /* Bit 1: Transmitter request-to-send enable (TXRTSE) */
|
||||
#define LPUART_MODIR_TXRTSPOL (1 << 2) /* Bit 2: Transmitter request-to-send polarity (TXRTSPOL) */
|
||||
#define LPUART_MODIR_RXRTSE (1 << 3) /* Bit 3: Receiver request-to-send enable (RXRTSE) */
|
||||
#define LPUART_MODIR_TXCTSC (1 << 4) /* Bit 4: Transmit CTS Configuration (TXCTSC) */
|
||||
# define LPUART_MODIR_TXCTSC_START (0 << 4) /* CTS sampled at start of character */
|
||||
# define LPUART_MODIR_TXCTSC_IDLE (1 << 4) /* CTS sampled when transmitter idle */
|
||||
#define LPUART_MODIR_TXCTSSRC (1 << 5) /* Bit 5: Transmit CTS Source (TXCTSSRC) */
|
||||
# define LPUART_MODIR_TXCTSSRC_CTSB (0 << 5) /* CTS input is CTS_B pin */
|
||||
# define LPUART_MODIR_TXCTSSRC_RXMAT (1 << 5) /* CTS input is receiver address match result */
|
||||
/* Bits 6-7: Reserved */
|
||||
#define LPUART_MODIR_RTSWATER_SHIFT (8) /* Bits 8-9: Receive RTS Configuration (RTSWATER) */
|
||||
#define LPUART_MODIR_RTSWATER_MASK (0x03 << LPUART_MODIR_RTSWATER_SHIFT)
|
||||
# define LPUART_MODIR_RTSWATER(n) ((n) << LPUART_MODIR_RTSWATER_SHIFT)
|
||||
/* Bits 10-15: Reserved */
|
||||
#define LPUART_MODIR_TNP_SHIFT (16) /* Bits 16-17: Transmitter narrow pulse (TNP) */
|
||||
#define LPUART_MODIR_TNP_MASK (0x03 << LPUART_MODIR_TNP_SHIFT)
|
||||
# define LPUART_MODIR_TNP(n) (((n) - 1) << LPUART_MODIR_TNP_SHIFT) /* n/OSR */
|
||||
|
||||
#define LPUART_MODIR_IREN (1 << 18) /* Bit 18: Infrared enable (IREN) */
|
||||
/* Bits 19-31: Reserved */
|
||||
|
||||
/* LPUART FIFO Register (FIFO) */
|
||||
|
||||
#define LPUART_FIFO_RXFIFOSIZE_SHIFT (0) /* Bits 0-2: Receive FIFO Buffer Depth (RXFIFOSIZE) */
|
||||
#define LPUART_FIFO_RXFIFOSIZE_MASK (0x07 << LPUART_FIFO_RXFIFOSIZE_SHIFT)
|
||||
# define LPUART_FIFO_RXFIFOSIZE_1 (0 << LPUART_FIFO_RXFIFOSIZE_SHIFT) /* 1 dataword */
|
||||
# define LPUART_FIFO_RXFIFOSIZE_4 (1 << LPUART_FIFO_RXFIFOSIZE_SHIFT) /* 4 datawords */
|
||||
# define LPUART_FIFO_RXFIFOSIZE_8 (2 << LPUART_FIFO_RXFIFOSIZE_SHIFT) /* 8 datawords */
|
||||
# define LPUART_FIFO_RXFIFOSIZE_16 (3 << LPUART_FIFO_RXFIFOSIZE_SHIFT) /* 16 datawords */
|
||||
# define LPUART_FIFO_RXFIFOSIZE_32 (4 << LPUART_FIFO_RXFIFOSIZE_SHIFT) /* 32 datawords */
|
||||
# define LPUART_FIFO_RXFIFOSIZE_64 (5 << LPUART_FIFO_RXFIFOSIZE_SHIFT) /* 64 datawords */
|
||||
# define LPUART_FIFO_RXFIFOSIZE_128 (6 << LPUART_FIFO_RXFIFOSIZE_SHIFT) /* 128 datawords */
|
||||
# define LPUART_FIFO_RXFIFOSIZE_256 (7 << LPUART_FIFO_RXFIFOSIZE_SHIFT) /* 256 datawords */
|
||||
|
||||
#define LPUART_FIFO_RXFE (1 << 3) /* Bit 3: Receive FIFO Enable (RXFE) */
|
||||
#define LPUART_FIFO_TXFIFOSIZE_SHIFT (4) /* Bits 4-6: Transmit FIFO Buffer Depth (TXFIFOSIZE) */
|
||||
#define LPUART_FIFO_TXFIFOSIZE_MASK (0x07 << LPUART_FIFO_TXFIFOSIZE_SHIFT)
|
||||
# define LPUART_FIFO_TXFIFOSIZE_1 (0 << LPUART_FIFO_TXFIFOSIZE_SHIFT) /* 1 dataword */
|
||||
# define LPUART_FIFO_TXFIFOSIZE_4 (1 << LPUART_FIFO_TXFIFOSIZE_SHIFT) /* 4 datawords */
|
||||
# define LPUART_FIFO_TXFIFOSIZE_8 (2 << LPUART_FIFO_TXFIFOSIZE_SHIFT) /* 8 datawords */
|
||||
# define LPUART_FIFO_TXFIFOSIZE_16 (3 << LPUART_FIFO_TXFIFOSIZE_SHIFT) /* 16 datawords */
|
||||
# define LPUART_FIFO_TXFIFOSIZE_32 (4 << LPUART_FIFO_TXFIFOSIZE_SHIFT) /* 32 datawords */
|
||||
# define LPUART_FIFO_TXFIFOSIZE_64 (5 << LPUART_FIFO_TXFIFOSIZE_SHIFT) /* 64 datawords */
|
||||
# define LPUART_FIFO_TXFIFOSIZE_128 (6 << LPUART_FIFO_TXFIFOSIZE_SHIFT) /* 128 datawords */
|
||||
# define LPUART_FIFO_TXFIFOSIZE_256 (7 << LPUART_FIFO_TXFIFOSIZE_SHIFT) /* 256 datawords */
|
||||
|
||||
#define LPUART_FIFO_TXFE (1 << 7) /* Bit 7: Transmit FIFO Enable (TXFE) */
|
||||
#define LPUART_FIFO_RXUFE (1 << 8) /* Bit 8: Receive FIFO Underflow Interrupt Enable (RXUFE) */
|
||||
#define LPUART_FIFO_TXOFE (1 << 9) /* Bit 9: Transmit FIFO Overflow Interrupt Enable (TXOFE) */
|
||||
#define LPUART_FIFO_RXIDEN_SHIFT (10) /* Bits 10-12: Receiver Idle Empty Enable (RXIDEN) */
|
||||
#define LPUART_FIFO_RXIDEN_MASK (0x07 << LPUART_FIFO_RXIDEN_SHIFT)
|
||||
# define LPUART_FIFO_RXIDEN_DISABLE (0 << LPUART_FIFO_RXIDEN_SHIFT) /* Disable RDRF assertion when receiver is idle */
|
||||
# define LPUART_FIFO_RXIDEN_1 (1 << LPUART_FIFO_RXIDEN_SHIFT) /* Enable RDRF assertion when receiver idle for 1 character */
|
||||
# define LPUART_FIFO_RXIDEN_2 (2 << LPUART_FIFO_RXIDEN_SHIFT) /* Enable RDRF assertion when receiver idle for 2 characters */
|
||||
# define LPUART_FIFO_RXIDEN_4 (3 << LPUART_FIFO_RXIDEN_SHIFT) /* Enable RDRF assertion when receiver idle for 4 characters */
|
||||
# define LPUART_FIFO_RXIDEN_8 (4 << LPUART_FIFO_RXIDEN_SHIFT) /* Enable RDRF assertion when receiver idle for 8 characters */
|
||||
# define LPUART_FIFO_RXIDEN_16 (5 << LPUART_FIFO_RXIDEN_SHIFT) /* Enable RDRF assertion when receiver idle for 16 characters */
|
||||
# define LPUART_FIFO_RXIDEN_32 (6 << LPUART_FIFO_RXIDEN_SHIFT) /* Enable RDRF assertion when receiver idle for 32 characters */
|
||||
# define LPUART_FIFO_RXIDEN_64 (7 << LPUART_FIFO_RXIDEN_SHIFT) /* Enable RDRF assertion when receiver idle for 64 characters */
|
||||
|
||||
/* Bit 13: Reserved */
|
||||
#define LPUART_FIFO_RXFLUSH (1 << 14) /* Bit 14: Receive FIFO Flush (RXFLUSH) */
|
||||
#define LPUART_FIFO_TXFLUSH (1 << 15) /* Bit 15: Transmit FIFO Flush (TXFLUSH) */
|
||||
#define LPUART_FIFO_RXUF (1 << 16) /* Bit 16: Receiver FIFO Underflow Flag (RXUF) */
|
||||
#define LPUART_FIFO_TXOF (1 << 17) /* Bit 17: Transmitter FIFO Overflow Flag (TXOF) */
|
||||
/* Bits 18-21: Reserved */
|
||||
#define LPUART_FIFO_RXEMPT (1 << 22) /* Bit 22: Receive Buffer/FIFO Empty (RXEMPT) */
|
||||
#define LPUART_FIFO_TXEMPT (1 << 23) /* Bit 23: Transmit Buffer/FIFO Empty (TXEMPT) */
|
||||
/* Bits 24-31: Reserved */
|
||||
|
||||
/* LPUART Watermark Register (WATER) */
|
||||
|
||||
#define LPUART_WATER_TXWATER_SHIFT (0) /* Bits 0-3: Transmit Watermark (TXWATER) */
|
||||
#define LPUART_WATER_TXWATER_MASK (0x0f << LPUART_WATER_TXWATER_SHIFT)
|
||||
# define LPUART_WATER_TXWATER(n) ((n) << LPUART_WATER_TXWATER_SHIFT)
|
||||
/* Bits 4-7: Reserved */
|
||||
#define LPUART_WATER_TXCOUNT_SHIFT (8) /* Bits 8-12: Transmit Counter (TXCOUNT) */
|
||||
#define LPUART_WATER_TXCOUNT_MASK (0x1f << LPUART_WATER_TXCOUNT_SHIFT)
|
||||
# define LPUART_WATER_TXCOUNT(n) ((n) << LPUART_WATER_TXCOUNT_SHIFT)
|
||||
/* Bits 13-15: Reserved */
|
||||
#define LPUART_WATER_RXWATER_SHIFT (16) /* Bits 16-19: Receive Watermark (RXWATER) */
|
||||
#define LPUART_WATER_RXWATER_MASK (0x0f << LPUART_WATER_RXWATER_SHIFT)
|
||||
# define LPUART_WATER_RXWATER(n) ((n) << LPUART_WATER_RXWATER_SHIFT)
|
||||
/* Bits 20-23: Reserved */
|
||||
#define LPUART_WATER_RXCOUNT_SHIFT (24) /* Bits 24-28: Receive Counter (RXCOUNT) */
|
||||
#define LPUART_WATER_RXCOUNT_MASK (0x1f << LPUART_WATER_RXCOUNT_SHIFT)
|
||||
# define LPUART_WATER_RXCOUNT(n) ((n) << LPUART_WATER_RXCOUNT_SHIFT)
|
||||
/* Bits 29-31: Reserved */
|
||||
|
||||
/* Data read-only Register (DATARO) */
|
||||
|
||||
#define LPUART_DATARO_DATA_SHIFT (0) /* Bits 0-15: Receive Data (DATA) */
|
||||
#define LPUART_DATARO_DATA_MASK (0xffff << LPUART_DATARO_DATA_SHIFT)
|
||||
/* Bits 16-31: Reserved */
|
||||
|
||||
#endif /* __ARCH_ARM_SRC_IMX9_HARDWARE_IMX9_LPUART_H */
|
39
arch/arm/src/imx9/hardware/imx9_memorymap.h
Normal file
39
arch/arm/src/imx9/hardware/imx9_memorymap.h
Normal file
|
@ -0,0 +1,39 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/hardware/imx9_memorymap.h
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ARCH_ARM_SRC_IMX9_HARDWARE_IMX9_MEMORYMAP_H
|
||||
#define __ARCH_ARM_SRC_IMX9_HARDWARE_IMX9_MEMORYMAP_H
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#if defined(CONFIG_ARCH_CHIP_IMX95_M7)
|
||||
# include "hardware/imx95/imx95_memorymap.h"
|
||||
#else
|
||||
# error Unrecognized i.MX9 architecture
|
||||
#endif
|
||||
|
||||
#endif /* __ARCH_ARM_SRC_IMX9_HARDWARE_IMX9_MEMORYMAP_H */
|
257
arch/arm/src/imx9/hardware/imx9_mu.h
Normal file
257
arch/arm/src/imx9/hardware/imx9_mu.h
Normal file
|
@ -0,0 +1,257 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/hardware/imx9_mu.h
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/* Register offsets */
|
||||
|
||||
#define IMX9_MU_VER_OFFSET 0x0000 /* Version ID */
|
||||
#define IMX9_MU_PAR_OFFSET 0x0004 /* Parameter */
|
||||
#define IMX9_MU_CR_OFFSET 0x0008 /* Control */
|
||||
#define IMX9_MU_SR_OFFSET 0x000c /* Status */
|
||||
#define IMX9_MU_FCR_OFFSET 0x0100 /* Flag Control */
|
||||
#define IMX9_MU_FSR_OFFSET 0x0104 /* Flag Status */
|
||||
#define IMX9_MU_GIER_OFFSET 0x0110 /* General-Purpose Interrupt Enable */
|
||||
#define IMX9_MU_GCR_OFFSET 0x0114 /* General-Purpose Control */
|
||||
#define IMX9_MU_GSR_OFFSET 0x0118 /* General-purpose Status */
|
||||
#define IMX9_MU_TCR_OFFSET 0x0120 /* Transmit Control */
|
||||
#define IMX9_MU_TSR_OFFSET 0x0124 /* Transmit Status */
|
||||
#define IMX9_MU_RCR_OFFSET 0x0128 /* Receive Control */
|
||||
#define IMX9_MU_RSR_OFFSET 0x012c /* Receive Status */
|
||||
#define IMX9_MU_TR1_OFFSET 0x0200 /* Transmit */
|
||||
#define IMX9_MU_TR2_OFFSET 0x0200 /* Transmit */
|
||||
#define IMX9_MU_TR3_OFFSET 0x0200 /* Transmit */
|
||||
#define IMX9_MU_TR4_OFFSET 0x0200 /* Transmit */
|
||||
#define IMX9_MU_RR1_OFFSET 0x0280 /* Receive */
|
||||
#define IMX9_MU_RR2_OFFSET 0x0280 /* Receive */
|
||||
#define IMX9_MU_RR3_OFFSET 0x0280 /* Receive */
|
||||
#define IMX9_MU_RR4_OFFSET 0x0280 /* Receive */
|
||||
|
||||
/* Register macros */
|
||||
|
||||
#define IMX9_MU_VER(n) ((n) + IMX9_MU_VER_OFFSET) /* Version ID */
|
||||
#define IMX9_MU_PAR(n) ((n) + IMX9_MU_PAR_OFFSET) /* Parameter */
|
||||
#define IMX9_MU_CR(n) ((n) + IMX9_MU_CR_OFFSET) /* Control */
|
||||
#define IMX9_MU_SR(n) ((n) + IMX9_MU_SR_OFFSET) /* Status */
|
||||
#define IMX9_MU_FCR(n) ((n) + IMX9_MU_FCR_OFFSET) /* Flag Control */
|
||||
#define IMX9_MU_FSR(n) ((n) + IMX9_MU_FSR_OFFSET) /* Flag Status */
|
||||
#define IMX9_MU_GIER(n) ((n) + IMX9_MU_GIER_OFFSET) /* General-Purpose Interrupt Enable */
|
||||
#define IMX9_MU_GCR(n) ((n) + IMX9_MU_GCR_OFFSET) /* General-Purpose Control */
|
||||
#define IMX9_MU_GSR(n) ((n) + IMX9_MU_GSR_OFFSET) /* General-purpose Status */
|
||||
#define IMX9_MU_TCR(n) ((n) + IMX9_MU_TCR_OFFSET) /* Transmit Control */
|
||||
#define IMX9_MU_TSR(n) ((n) + IMX9_MU_TSR_OFFSET) /* Transmit Status */
|
||||
#define IMX9_MU_RCR(n) ((n) + IMX9_MU_RCR_OFFSET) /* Receive Control */
|
||||
#define IMX9_MU_RSR(n) ((n) + IMX9_MU_RSR_OFFSET) /* Receive Status */
|
||||
#define IMX9_MU_TR1(n) ((n) + IMX9_MU_TR1_OFFSET) /* Transmit */
|
||||
#define IMX9_MU_TR2(n) ((n) + IMX9_MU_TR2_OFFSET) /* Transmit */
|
||||
#define IMX9_MU_TR3(n) ((n) + IMX9_MU_TR3_OFFSET) /* Transmit */
|
||||
#define IMX9_MU_TR4(n) ((n) + IMX9_MU_TR4_OFFSET) /* Transmit */
|
||||
#define IMX9_MU_RR1(n) ((n) + IMX9_MU_RR1_OFFSET) /* Receive */
|
||||
#define IMX9_MU_RR2(n) ((n) + IMX9_MU_RR2_OFFSET) /* Receive */
|
||||
#define IMX9_MU_RR3(n) ((n) + IMX9_MU_RR3_OFFSET) /* Receive */
|
||||
#define IMX9_MU_RR4(n) ((n) + IMX9_MU_RR4_OFFSET) /* Receive */
|
||||
|
||||
/* Field definitions */
|
||||
|
||||
/* VER register */
|
||||
|
||||
#define IMX9_MU_VER_FEATURE_SHIFT 0 /* Feature Set Number */
|
||||
#define IMX9_MU_VER_FEATURE_MASK 0xffff /* Feature Set Number */
|
||||
|
||||
#define IMX9_MU_VER_MINOR_SHIFT 16 /* Minor Version Number */
|
||||
#define IMX9_MU_VER_MINOR_MASK 0xff /* Minor Version Number */
|
||||
|
||||
#define IMX9_MU_VER_MAJOR_SHIFT 24 /* Major Version Number */
|
||||
#define IMX9_MU_VER_MAJOR_MASK 0xff /* Major Version Number */
|
||||
|
||||
/* PAR register */
|
||||
|
||||
#define IMX9_MU_PAR_TR_NUM_SHIFT 0 /* Transmit Register Number */
|
||||
#define IMX9_MU_PAR_TR_NUM_MASK 0xff /* Transmit Register Number */
|
||||
|
||||
#define IMX9_MU_PAR_RR_NUM_SHIFT 8 /* Receive Register Number */
|
||||
#define IMX9_MU_PAR_RR_NUM_MASK 0xff /* Receive Register Number */
|
||||
|
||||
#define IMX9_MU_PAR_GIR_NUM_SHIFT 16 /* General-Purpose Interrupt Request Number */
|
||||
#define IMX9_MU_PAR_GIR_NUM_MASK 0xff /* General-Purpose Interrupt Request Number */
|
||||
|
||||
#define IMX9_MU_PAR_FLAG_WIDTH_SHIFT 24 /* Flag Width */
|
||||
#define IMX9_MU_PAR_FLAG_WIDTH_MASK 0xff /* Flag Width */
|
||||
|
||||
/* CR register */
|
||||
|
||||
#define IMX9_MU_CR_MUR_SHIFT 0 /* MU Reset */
|
||||
#define IMX9_MU_CR_MUR_FLAG (1 << IMX9_MU_CR_MUR_SHIFT) /* MU Reset */
|
||||
|
||||
#define IMX9_MU_CR_MURIE_SHIFT 1 /* MUA Reset Interrupt Enable */
|
||||
#define IMX9_MU_CR_MURIE_FLAG (1 << IMX9_MU_CR_MURIE_SHIFT) /* MUA Reset Interrupt Enable */
|
||||
|
||||
/* SR register */
|
||||
|
||||
#define IMX9_MU_SR_MURS_SHIFT 0 /* MUA and MUB Reset State */
|
||||
#define IMX9_MU_SR_MURS_FLAG (1 << IMX9_MU_SR_MURS_SHIFT) /* MUA and MUB Reset State */
|
||||
|
||||
#define IMX9_MU_SR_MURIP_SHIFT 1 /* MU Reset Interrupt Pending Flag */
|
||||
#define IMX9_MU_SR_MURIP_FLAG (1 << IMX9_MU_SR_MURIP_SHIFT) /* MU Reset Interrupt Pending Flag */
|
||||
|
||||
#define IMX9_MU_SR_EP_SHIFT 2 /* MUA Side Event Pending */
|
||||
#define IMX9_MU_SR_EP_FLAG (1 << IMX9_MU_SR_EP_SHIFT) /* MUA Side Event Pending */
|
||||
|
||||
#define IMX9_MU_SR_FUP_SHIFT 3 /* MUA Flag Update Pending */
|
||||
#define IMX9_MU_SR_FUP_FLAG (1 << IMX9_MU_SR_FUP_SHIFT) /* MUA Flag Update Pending */
|
||||
|
||||
#define IMX9_MU_SR_GIRP_SHIFT 4 /* MUA General-Purpose Interrupt Pending */
|
||||
#define IMX9_MU_SR_GIRP_FLAG (1 << IMX9_MU_SR_GIRP_SHIFT) /* MUA General-Purpose Interrupt Pending */
|
||||
|
||||
#define IMX9_MU_SR_TEP_SHIFT 5 /* MUA Transmit Empty Pending */
|
||||
#define IMX9_MU_SR_TEP_FLAG (1 << IMX9_MU_SR_TEP_SHIFT) /* MUA Transmit Empty Pending */
|
||||
|
||||
#define IMX9_MU_SR_RFP_SHIFT 6 /* MUA Receive Full Pending */
|
||||
#define IMX9_MU_SR_RFP_FLAG (1 << IMX9_MU_SR_RFP_SHIFT) /* MUA Receive Full Pending */
|
||||
|
||||
/* FCR register */
|
||||
|
||||
#define IMX9_MU_FCR_F0_SHIFT 0 /* MUA to MUB Flag */
|
||||
#define IMX9_MU_FCR_F0_FLAG (1 << IMX9_MU_FCR_F0_SHIFT) /* MUA to MUB Flag */
|
||||
|
||||
#define IMX9_MU_FCR_F1_SHIFT 1 /* MUA to MUB Flag */
|
||||
#define IMX9_MU_FCR_F1_FLAG (1 << IMX9_MU_FCR_F1_SHIFT) /* MUA to MUB Flag */
|
||||
|
||||
#define IMX9_MU_FCR_F2_SHIFT 2 /* MUA to MUB Flag */
|
||||
#define IMX9_MU_FCR_F2_FLAG (1 << IMX9_MU_FCR_F2_SHIFT) /* MUA to MUB Flag */
|
||||
|
||||
/* FSR register */
|
||||
|
||||
#define IMX9_MU_FSR_F0_SHIFT 0 /* MUB to MUA-Side Flag */
|
||||
#define IMX9_MU_FSR_F0_FLAG (1 << IMX9_MU_FSR_F0_SHIFT) /* MUB to MUA-Side Flag */
|
||||
|
||||
#define IMX9_MU_FSR_F1_SHIFT 1 /* MUB to MUA-Side Flag */
|
||||
#define IMX9_MU_FSR_F1_FLAG (1 << IMX9_MU_FSR_F1_SHIFT) /* MUB to MUA-Side Flag */
|
||||
|
||||
#define IMX9_MU_FSR_F2_SHIFT 2 /* MUB to MUA-Side Flag */
|
||||
#define IMX9_MU_FSR_F2_FLAG (1 << IMX9_MU_FSR_F2_SHIFT) /* MUB to MUA-Side Flag */
|
||||
|
||||
/* GIER register */
|
||||
|
||||
#define IMX9_MU_GIER_GIE0_SHIFT 0 /* MUA General-purpose Interrupt Enable */
|
||||
#define IMX9_MU_GIER_GIE0_FLAG (1 << IMX9_MU_GIER_GIE0_SHIFT) /* MUA General-purpose Interrupt Enable */
|
||||
|
||||
#define IMX9_MU_GIER_GIE1_SHIFT 1 /* MUA General-purpose Interrupt Enable */
|
||||
#define IMX9_MU_GIER_GIE1_FLAG (1 << IMX9_MU_GIER_GIE1_SHIFT) /* MUA General-purpose Interrupt Enable */
|
||||
|
||||
#define IMX9_MU_GIER_GIE2_SHIFT 2 /* MUA General-purpose Interrupt Enable */
|
||||
#define IMX9_MU_GIER_GIE2_FLAG (1 << IMX9_MU_GIER_GIE2_SHIFT) /* MUA General-purpose Interrupt Enable */
|
||||
|
||||
#define IMX9_MU_GIER_GIE3_SHIFT 3 /* MUA General-purpose Interrupt Enable */
|
||||
#define IMX9_MU_GIER_GIE3_FLAG (1 << IMX9_MU_GIER_GIE3_SHIFT) /* MUA General-purpose Interrupt Enable */
|
||||
|
||||
/* GCR register */
|
||||
|
||||
#define IMX9_MU_GCR_GIR0_SHIFT 0 /* MUA General-Purpose Interrupt Request */
|
||||
#define IMX9_MU_GCR_GIR0_FLAG (1 << IMX9_MU_GCR_GIR0_SHIFT) /* MUA General-Purpose Interrupt Request */
|
||||
|
||||
#define IMX9_MU_GCR_GIR1_SHIFT 1 /* MUA General-Purpose Interrupt Request */
|
||||
#define IMX9_MU_GCR_GIR1_FLAG (1 << IMX9_MU_GCR_GIR1_SHIFT) /* MUA General-Purpose Interrupt Request */
|
||||
|
||||
#define IMX9_MU_GCR_GIR2_SHIFT 2 /* MUA General-Purpose Interrupt Request */
|
||||
#define IMX9_MU_GCR_GIR2_FLAG (1 << IMX9_MU_GCR_GIR2_SHIFT) /* MUA General-Purpose Interrupt Request */
|
||||
|
||||
#define IMX9_MU_GCR_GIR3_SHIFT 3 /* MUA General-Purpose Interrupt Request */
|
||||
#define IMX9_MU_GCR_GIR3_FLAG (1 << IMX9_MU_GCR_GIR3_SHIFT) /* MUA General-Purpose Interrupt Request */
|
||||
|
||||
/* GSR register */
|
||||
|
||||
#define IMX9_MU_GSR_GIP0_SHIFT 0 /* MUA General-Purpose Interrupt Request Pending */
|
||||
#define IMX9_MU_GSR_GIP0_FLAG (1 << IMX9_MU_GSR_GIP0_SHIFT) /* MUA General-Purpose Interrupt Request Pending */
|
||||
|
||||
#define IMX9_MU_GSR_GIP1_SHIFT 1 /* MUA General-Purpose Interrupt Request Pending */
|
||||
#define IMX9_MU_GSR_GIP1_FLAG (1 << IMX9_MU_GSR_GIP1_SHIFT) /* MUA General-Purpose Interrupt Request Pending */
|
||||
|
||||
#define IMX9_MU_GSR_GIP2_SHIFT 2 /* MUA General-Purpose Interrupt Request Pending */
|
||||
#define IMX9_MU_GSR_GIP2_FLAG (1 << IMX9_MU_GSR_GIP2_SHIFT) /* MUA General-Purpose Interrupt Request Pending */
|
||||
|
||||
#define IMX9_MU_GSR_GIP3_SHIFT 3 /* MUA General-Purpose Interrupt Request Pending */
|
||||
#define IMX9_MU_GSR_GIP3_FLAG (1 << IMX9_MU_GSR_GIP3_SHIFT) /* MUA General-Purpose Interrupt Request Pending */
|
||||
|
||||
/* TCR register */
|
||||
|
||||
#define IMX9_MU_TCR_TIE0_SHIFT 0 /* MUA Transmit Interrupt Enable */
|
||||
#define IMX9_MU_TCR_TIE0_FLAG (1 << IMX9_MU_TCR_TIE0_SHIFT) /* MUA Transmit Interrupt Enable */
|
||||
|
||||
#define IMX9_MU_TCR_TIE1_SHIFT 1 /* MUA Transmit Interrupt Enable */
|
||||
#define IMX9_MU_TCR_TIE1_FLAG (1 << IMX9_MU_TCR_TIE1_SHIFT) /* MUA Transmit Interrupt Enable */
|
||||
|
||||
#define IMX9_MU_TCR_TIE2_SHIFT 2 /* MUA Transmit Interrupt Enable */
|
||||
#define IMX9_MU_TCR_TIE2_FLAG (1 << IMX9_MU_TCR_TIE2_SHIFT) /* MUA Transmit Interrupt Enable */
|
||||
|
||||
#define IMX9_MU_TCR_TIE3_SHIFT 3 /* MUA Transmit Interrupt Enable */
|
||||
#define IMX9_MU_TCR_TIE3_FLAG (1 << IMX9_MU_TCR_TIE3_SHIFT) /* MUA Transmit Interrupt Enable */
|
||||
|
||||
/* TSR register */
|
||||
|
||||
#define IMX9_MU_TSR_TE0_SHIFT 0 /* MUA Transmit Empty */
|
||||
#define IMX9_MU_TSR_TE0_FLAG (1 << IMX9_MU_TSR_TE0_SHIFT) /* MUA Transmit Empty */
|
||||
|
||||
#define IMX9_MU_TSR_TE1_SHIFT 1 /* MUA Transmit Empty */
|
||||
#define IMX9_MU_TSR_TE1_FLAG (1 << IMX9_MU_TSR_TE1_SHIFT) /* MUA Transmit Empty */
|
||||
|
||||
#define IMX9_MU_TSR_TE2_SHIFT 2 /* MUA Transmit Empty */
|
||||
#define IMX9_MU_TSR_TE2_FLAG (1 << IMX9_MU_TSR_TE2_SHIFT) /* MUA Transmit Empty */
|
||||
|
||||
#define IMX9_MU_TSR_TE3_SHIFT 3 /* MUA Transmit Empty */
|
||||
#define IMX9_MU_TSR_TE3_FLAG (1 << IMX9_MU_TSR_TE3_SHIFT) /* MUA Transmit Empty */
|
||||
|
||||
/* RCR register */
|
||||
|
||||
#define IMX9_MU_RCR_RIE0_SHIFT 0 /* MUA Receive Interrupt Enable */
|
||||
#define IMX9_MU_RCR_RIE0_FLAG (1 << IMX9_MU_RCR_RIE0_SHIFT) /* MUA Receive Interrupt Enable */
|
||||
|
||||
#define IMX9_MU_RCR_RIE1_SHIFT 1 /* MUA Receive Interrupt Enable */
|
||||
#define IMX9_MU_RCR_RIE1_FLAG (1 << IMX9_MU_RCR_RIE1_SHIFT) /* MUA Receive Interrupt Enable */
|
||||
|
||||
#define IMX9_MU_RCR_RIE2_SHIFT 2 /* MUA Receive Interrupt Enable */
|
||||
#define IMX9_MU_RCR_RIE2_FLAG (1 << IMX9_MU_RCR_RIE2_SHIFT) /* MUA Receive Interrupt Enable */
|
||||
|
||||
#define IMX9_MU_RCR_RIE3_SHIFT 3 /* MUA Receive Interrupt Enable */
|
||||
#define IMX9_MU_RCR_RIE3_FLAG (1 << IMX9_MU_RCR_RIE3_SHIFT) /* MUA Receive Interrupt Enable */
|
||||
|
||||
/* RSR register */
|
||||
|
||||
#define IMX9_MU_RSR_RF0_SHIFT 0 /* MUA Receive Register Full */
|
||||
#define IMX9_MU_RSR_RF0_FLAG (1 << IMX9_MU_RSR_RF0_SHIFT) /* MUA Receive Register Full */
|
||||
|
||||
#define IMX9_MU_RSR_RF1_SHIFT 1 /* MUA Receive Register Full */
|
||||
#define IMX9_MU_RSR_RF1_FLAG (1 << IMX9_MU_RSR_RF1_SHIFT) /* MUA Receive Register Full */
|
||||
|
||||
#define IMX9_MU_RSR_RF2_SHIFT 2 /* MUA Receive Register Full */
|
||||
#define IMX9_MU_RSR_RF2_FLAG (1 << IMX9_MU_RSR_RF2_SHIFT) /* MUA Receive Register Full */
|
||||
|
||||
#define IMX9_MU_RSR_RF3_SHIFT 3 /* MUA Receive Register Full */
|
||||
#define IMX9_MU_RSR_RF3_FLAG (1 << IMX9_MU_RSR_RF3_SHIFT) /* MUA Receive Register Full */
|
||||
|
||||
/* Register array dimensions */
|
||||
|
||||
#define IMX9_MU_TR_REGARRAY_SIZE 4
|
||||
#define IMX9_MU_RR_REGARRAY_SIZE 4
|
39
arch/arm/src/imx9/hardware/imx9_pinmux.h
Normal file
39
arch/arm/src/imx9/hardware/imx9_pinmux.h
Normal file
|
@ -0,0 +1,39 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/hardware/imx9_pinmux.h
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ARCH_ARM_SRC_IMX9_HARDWARE_IMX9_PINMUX_H
|
||||
#define __ARCH_ARM_SRC_IMX9_HARDWARE_IMX9_PINMUX_H
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#if defined(CONFIG_ARCH_CHIP_IMX95_M7)
|
||||
# include "hardware/imx95/imx95_pinmux.h"
|
||||
#else
|
||||
# error Unrecognized i.MX9 architecture
|
||||
#endif
|
||||
|
||||
#endif /* __ARCH_ARM_SRC_IMX9_HARDWARE_IMX9_PINMUX_H */
|
216
arch/arm/src/imx9/hardware/imx9_tpm.h
Normal file
216
arch/arm/src/imx9/hardware/imx9_tpm.h
Normal file
|
@ -0,0 +1,216 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/hardware/imx9_tpm.h
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ARCH_ARM_SRC_IMX9_HARDWARE_IMX9_TPM_H
|
||||
#define __ARCH_ARM_SRC_IMX9_HARDWARE_IMX9_TPM_H
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/* Register Offsets *********************************************************/
|
||||
|
||||
#define IMX9_TPM_VERID_OFFSET 0x0000 /* Version ID */
|
||||
#define IMX9_TPM_PARAM_OFFSET 0x0004 /* Parameter */
|
||||
#define IMX9_TPM_GLOBAL_OFFSET 0x0008 /* TPM Global */
|
||||
#define IMX9_TPM_SC_OFFSET 0x0010 /* Status and Control */
|
||||
#define IMX9_TPM_CNT_OFFSET 0x0014 /* Counter */
|
||||
#define IMX9_TPM_MOD_OFFSET 0x0018 /* Modulo */
|
||||
#define IMX9_TPM_STATUS_OFFSET 0x001c /* Capture and Compare Status */
|
||||
#define IMX9_TPM_CXSC_OFFSET(ch) (0x0020 + (ch) * 8) /* Channel Status and Control */
|
||||
#define IMX9_TPM_CXV_OFFSET(ch) (0x0024 + (ch) * 8) /* Channel Value */
|
||||
#define IMX9_TPM_C1SC_OFFSET 0x0028 /* Channel n Status and Control */
|
||||
#define IMX9_TPM_C1V_OFFSET 0x002c /* Channel n Value */
|
||||
#define IMX9_TPM_C2SC_OFFSET 0x0030 /* Channel n Status and Control */
|
||||
#define IMX9_TPM_C2V_OFFSET 0x0034 /* Channel n Value */
|
||||
#define IMX9_TPM_C3SC_OFFSET 0x0038 /* Channel n Status and Control */
|
||||
#define IMX9_TPM_C3V_OFFSET 0x003c /* Channel n Value */
|
||||
#define IMX9_TPM_COMBINE_OFFSET 0x0064 /* Combine Channel */
|
||||
#define IMX9_TPM_TRIG_OFFSET 0x006c /* Channel Trigger */
|
||||
#define IMX9_TPM_POL_OFFSET 0x0070 /* Channel Polarity */
|
||||
#define IMX9_TPM_FILTER_OFFSET 0x0078 /* Filter Control */
|
||||
#define IMX9_TPM_QDCTRL_OFFSET 0x0080 /* Quadrature Decoder Control and Status */
|
||||
#define IMX9_TPM_CONF_OFFSET 0x0084 /* Configuration */
|
||||
|
||||
/* Register Bitfield Definitions ********************************************/
|
||||
|
||||
/* PARAM */
|
||||
|
||||
#define TPM_PARAM_WIDTH_SHIFT (16) /* Bit[23:16]: Width of the counter and timer channels */
|
||||
#define TPM_PARAM_WIDTH_MASK (0xff << TPM_PARAM_WIDTH_SHIFT)
|
||||
|
||||
#define TPM_PARAM_TRIG_SHIFT (8) /* Bit[15:8]: Number of triggers that TPM implements */
|
||||
#define TPM_PARAM_TRIG_MASK (0xff << LPIT_PARAM_TRIG_SHIFT)
|
||||
|
||||
#define TPM_PARAM_CHAN_SHIFT (0) /* Bit[7:0]: Number of timer channels */
|
||||
#define TPM_PARAM_CHAN_MASK (0xff << TPM_PARAM_CHAN_SHIFT)
|
||||
|
||||
/* GLOBAL */
|
||||
|
||||
#define TPM_GLOBAL_RST_SHIFT (1) /* Bit[1]: Software Reset */
|
||||
#define TPM_GLOBAL_RST_MASK (0x1 << TPM_GLOBAL_RST_SHIFT)
|
||||
|
||||
#define TPM_GLOBAL_NOUPDATE_SHIFT (0) /* Bit[0]: Block updates to internal registers */
|
||||
#define TPM_GLOBAL_NOUPDATE_MASK (0x1 << TPM_GLOBAL_NOUPDATE_SHIFT)
|
||||
|
||||
/* SC */
|
||||
|
||||
#define TPM_SC_DMA_SHIFT (8) /* Bit[8]: DMA Enable */
|
||||
#define TPM_SC_DMA_MASK (0x1 << TPM_SC_DMA_SHIFT)
|
||||
|
||||
#define TPM_SC_TOF_SHIFT (7) /* Bit[7]: Timer Overflow Flag */
|
||||
#define TPM_SC_TOF_MASK (0x1 << TPM_SC_TOF_SHIFT)
|
||||
|
||||
#define TPM_SC_TOIE_SHIFT (6) /* Bit[6]: Timer Overflow Interrupt Enable */
|
||||
#define TPM_SC_TOIE_MASK (0x1 << TPM_SC_TOIE_SHIFT)
|
||||
|
||||
#define TPM_SC_CPWMS_SHIFT (5) /* Bit[5]: Center-Aligned PWM Select */
|
||||
#define TPM_SC_CPWMS_MASK (0x1 << TPM_SC_CPWMS_SHIFT)
|
||||
|
||||
#define TPM_SC_CMOD_SHIFT (3) /* Bit[4:3]: Clock Mode Selection */
|
||||
#define TPM_SC_CMOD_MASK (0x3 << TPM_SC_CMOD_SHIFT)
|
||||
|
||||
#define TPM_SC_CMOD_VALUE_DISABLE 0
|
||||
#define TPM_SC_CMOD_VALUE_COUNTER 1
|
||||
#define TPM_SC_CMOD_VALUE_EXTCLK 2
|
||||
#define TPM_SC_CMOD_VALUE_TRIG 3
|
||||
#define TPM_SC_CMOD(n) ((n << TPM_SC_CMOD_SHIFT) & TPM_SC_CMOD_MASK)
|
||||
|
||||
#define TPM_SC_PS_SHIFT (0) /* Bit[2:0]: Prescale Factor Selection */
|
||||
#define TPM_SC_PS_MASK (0x7 << TPM_SC_PS_SHIFT)
|
||||
|
||||
/* STATUS */
|
||||
|
||||
#define TPM_STATUS_TOF_SHIFT (8) /* Bit[8]: Timer Overflow Flag */
|
||||
#define TPM_STATUS_TOF_MASK (0x1 << TPM_STATUS_TOF_SHIFT)
|
||||
|
||||
#define TPM_STATUS_CH3F_SHIFT (3) /* Bit[3]: Channel 3 Flag */
|
||||
#define TPM_STATUS_CH3F_MASK (0x1 << TPM_STATUS_CH3F_SHIFT)
|
||||
|
||||
#define TPM_STATUS_CH2F_SHIFT (2) /* Bit[2]: Channel 2 Flag */
|
||||
#define TPM_STATUS_CH2F_MASK (0x1 << TPM_STATUS_CH2F_SHIFT)
|
||||
|
||||
#define TPM_STATUS_CH1F_SHIFT (1) /* Bit[1]: Channel 1 Flag */
|
||||
#define TPM_STATUS_CH1F_MASK (0x1 << TPM_STATUS_CH1F_SHIFT)
|
||||
|
||||
#define TPM_STATUS_CH0F_SHIFT (0) /* Bit[0]: Channel 0 Flag */
|
||||
#define TPM_STATUS_CH0F_MASK (0x1 << TPM_STATUS_CH0F_SHIFT)
|
||||
|
||||
/* C0SC - C3SC */
|
||||
|
||||
#define TPM_CXSC_CHF_SHIFT (7) /* Bit[7]: Channel Flag */
|
||||
#define TPM_CXSC_CHF_MASK (0x1 << TPM_CXSC_CHF_SHIFT)
|
||||
|
||||
#define TPM_CXSC_CHIE_SHIFT (6) /* Bit[6]: Channel Interrupt Enable */
|
||||
#define TPM_CXSC_CHIE_MASK (0x1 << TPM_CXSC_CHIE_SHIFT)
|
||||
|
||||
#define TPM_CXSC_MSB_SHIFT (5) /* Bit[5]: Channel Mode Select B */
|
||||
#define TPM_CXSC_MSB_MASK (0x1 << TPM_CXSC_MSB_SHIFT)
|
||||
|
||||
#define TPM_CXSC_MSA_SHIFT (4) /* Bit[4]: Channel Mode Select A */
|
||||
#define TPM_CXSC_MSA_MASK (0x1 << TPM_CXSC_MSA_SHIFT)
|
||||
|
||||
#define TPM_CXSC_ELSB_SHIFT (3) /* Bit[3]: Edge or Level Select B */
|
||||
#define TPM_CXSC_ELSB_MASK (0x1 << TPM_CXSC_ELSB_SHIFT)
|
||||
|
||||
#define TPM_CXSC_ELSA_SHIFT (2) /* Bit[2]: Edge or Level Select A */
|
||||
#define TPM_CXSC_ELSA_MASK (0x1 << TPM_CXSC_ELSA_SHIFT)
|
||||
|
||||
#define TPM_CXSC_DMA_SHIFT (0) /* Bit[0]: DMA Enable */
|
||||
#define TPM_CXSC_DMA_MASK (0x1 << TPM_CXSC_DMA_SHIFT)
|
||||
|
||||
/* COMBINE */
|
||||
|
||||
#define TPM_COMBINE_COMSWAP1_SHIFT (9) /* Bit[9]: Combine Channels 2 and 3 Swap */
|
||||
#define TPM_COMBINE_COMSWAP1_MASK (0x1 << TPM_COMBINE_COMSWAP1_SHIFT)
|
||||
|
||||
#define TPM_COMBINE_COMBINE1_SHIFT (8) /* Bit[8]: Combine Channels 2 and 3 */
|
||||
#define TPM_COMBINE_COMBINE1_MASK (0x1 << TPM_COMBINE_COMBINE1_SHIFT)
|
||||
|
||||
#define TPM_COMBINE_COMSWAP0_SHIFT (1) /* Bit[1]: Combine Channel 0 and 1 Swap */
|
||||
#define TPM_COMBINE_COMSWAP0_MASK (0x1 << TPM_COMBINE_COMSWAP0_SHIFT)
|
||||
|
||||
#define TPM_COMBINE_COMBINE0_SHIFT (0) /* Bit[0]: Combine Channels 0 and 1 */
|
||||
#define TPM_COMBINE_COMBINE0_MASK (0x1 << TPM_COMBINE_COMBINE0_SHIFT)
|
||||
|
||||
/* TRIG */
|
||||
|
||||
#define TPM_TRIG_TRIGX_MASK(ch) (0x1 << (ch)) /* Channel trigger configure */
|
||||
|
||||
/* POL */
|
||||
|
||||
#define TPM_POL_POLX_MASK(ch) (0x1 < (ch)) /* Channel polarity active low */
|
||||
|
||||
/* FILTER */
|
||||
|
||||
#define TPM_FILTER_CHXFVAL_SHIFT(ch) ((ch) * 4) /* Channel filter value */
|
||||
#define TPM_FILTER_CHXFVAL_MASK(ch) (0xf << TPM_FILTER_CHXFVAL_SHIFT(ch))
|
||||
|
||||
/* QDCTRL */
|
||||
|
||||
#define TPM_QDCTRL_QUADMODE_SHIFT (3) /* Bit[3]: Quadrature Decoder Mode */
|
||||
#define TPM_QDCTRL_QUADMODE_MASK (0x1 << TPM_QDCTRL_QUADMODE_SHIFT)
|
||||
|
||||
#define TPM_QDCTRL_QUADIR_SHIFT (2) /* Bit[2]: Counter Direction */
|
||||
#define TPM_QDCTRL_QUADIR_MASK (0x1 << TPM_QDCTRL_QUADIR_SHIFT)
|
||||
|
||||
#define TPM_QDCTRL_TOFDIR_SHIFT (1) /* Bit[1]: Timer Overflow Direction */
|
||||
#define TPM_QDCTRL_TOFDIR_MASK (0x1 << TPM_QDCTRL_TOFDIR_SHIFT)
|
||||
|
||||
#define TPM_QDCTRL_QUADEN_SHIFT (0) /* Bit[0]: Quadrature Decoder Enable */
|
||||
#define TPM_QDCTRL_QUADEN_MASK (0x1 << TPM_QDCTRL_QUADEN_SHIFT)
|
||||
|
||||
/* CONF */
|
||||
|
||||
#define TPM_CONF_TRGSEL_SHIFT (24) /* Bit[25:24]: Trigger Select */
|
||||
#define TPM_CONF_TRGSEL_MASK (0x3 << TPM_CONF_TRGSEL_SHIFT)
|
||||
|
||||
#define TPM_CONF_TRGSRC_SHIFT (23) /* Bit[23]: Trigger Source select */
|
||||
#define TPM_CONF_TRGSRC_MASK (0x1 << TPM_CONF_TRGSRC_SHIFT)
|
||||
|
||||
#define TPM_CONF_TRGPOL_SHIFT (22) /* Bit[22]: Trigger Polarity */
|
||||
#define TPM_CONF_TRGPOL_MASK (0x1 << TPM_CONF_TRGPOL_SHIFT)
|
||||
|
||||
#define TPM_CONF_CPOT_SHIFT (19) /* Bit[19]: Counter Pause on Trigger */
|
||||
#define TPM_CONF_CPOT_MASK (0x1 << TPM_CONF_CPOT_SHIFT)
|
||||
|
||||
#define TPM_CONF_CROT_SHIFT (18) /* Bit[18]: Counter Reload on Trigger */
|
||||
#define TPM_CONF_CROT_MASK (0x1 << TPM_CONF_CROT_SHIFT)
|
||||
|
||||
#define TPM_CONF_CSOO_SHIFT (17) /* Bit[17]: Counter Stop on Overflow */
|
||||
#define TPM_CONF_CSOO_MASK (0x1 << TPM_CONF_CSOO_SHIFT)
|
||||
|
||||
#define TPM_CONF_CSOT_SHIFT (16) /* Bit[16]: Counter Start on Trigger */
|
||||
#define TPM_CONF_CSOT_MASK (0x1 << TPM_CONF_CSOT_SHIFT)
|
||||
|
||||
#define TPM_CONF_DBGMODE_SHIFT (6) /* Bit[7:6]: Debug Mode */
|
||||
#define TPM_CONF_DBGMODE_MASK (0x3 << TPM_CONF_DBGMODE_SHIFT)
|
||||
|
||||
#define TPM_CONF_DOZEEN_SHIFT (5) /* Bit[5]: Doze Enable */
|
||||
#define TPM_CONF_DOZEEN_MASK (0x1 << TPM_CONF_DOZEEN_SHIFT)
|
||||
|
||||
#endif /* __ARCH_ARM_SRC_IMX9_HARDWARE_IMX9_TPM_H */
|
52
arch/arm/src/imx9/hardware/imx9_tstmr.h
Normal file
52
arch/arm/src/imx9/hardware/imx9_tstmr.h
Normal file
|
@ -0,0 +1,52 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/hardware/imx9_tstmr.h
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ARCH_ARM_SRC_IMX9_HARDWARE_IMX9_TSTMR_H
|
||||
#define __ARCH_ARM_SRC_IMX9_HARDWARE_IMX9_TSTMR_H
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/* Register offsets */
|
||||
|
||||
#define IMX9_TSTMR_LOW_OFFSET 0x0000 /* Timestamp Timer Low */
|
||||
#define IMX9_TSTMR_HIGH_OFFSET 0x0004 /* Timestamp Timer High */
|
||||
|
||||
/* Register macros */
|
||||
|
||||
#define IMX9_TSTMR_LOW(n) ((n) + IMX9_TSTMR_LOW_OFFSET) /* Timestamp Timer Low */
|
||||
#define IMX9_TSTMR_HIGH(n) ((n) + IMX9_TSTMR_HIGH_OFFSET) /* Timestamp Timer High */
|
||||
|
||||
/* Field definitions */
|
||||
|
||||
/* HIGH register */
|
||||
|
||||
#define IMX9_TSTMR_HIGH_VALUE_SHIFT 0 /* Timestamp Timer High */
|
||||
#define IMX9_TSTMR_HIGH_VALUE_MASK 0xffffff /* Timestamp Timer High */
|
||||
|
||||
#endif /* __ARCH_ARM_SRC_IMX9_HARDWARE_IMX9_TSTMR_H */
|
314
arch/arm/src/imx9/imx9_allocateheap.c
Normal file
314
arch/arm/src/imx9/imx9_allocateheap.c
Normal file
|
@ -0,0 +1,314 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/imx9_allocateheap.c
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#include <assert.h>
|
||||
#include <debug.h>
|
||||
#include <stdint.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/board.h>
|
||||
#include <nuttx/kmalloc.h>
|
||||
#include <nuttx/userspace.h>
|
||||
|
||||
#include <arch/imx9/chip.h>
|
||||
|
||||
#include "arm_internal.h"
|
||||
#include "hardware/imx9_memorymap.h"
|
||||
#include "imx9_mpuinit.h"
|
||||
#include "mpu.h"
|
||||
|
||||
#include <arch/board/board.h>
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/* Configuration ************************************************************/
|
||||
|
||||
/* Primary RAM: The Linker script positions the system BLOB's .data and
|
||||
* .bss in some RAM. We refer to that RAM as the primary RAM. It also
|
||||
* holds the IDLE threads stack and any remaining portion of the primary
|
||||
* OCRAM is automatically added to the heap. The linker provided address,
|
||||
* ... .sbss, .ebss, .sdat, etc. ... are expected to lie in the the region
|
||||
* defined by the OCRAM configuration settings.
|
||||
*
|
||||
* Other RAM regions must be selected use configuration options and the
|
||||
* start and end of those RAM regions must also be provided in the
|
||||
* configuration. CONFIG_MM_REGIONS must also be set to determined the
|
||||
* number of regions to be added to the heap.
|
||||
*
|
||||
*
|
||||
* IMX9_ITCM_BASE 0x00000000 256KB M7 ITCM
|
||||
* IMX9_DTCM_BASE 0x20000000 256KB M7 DTCM
|
||||
* IMX9_OCRAM_BASE 0x20480000 352KB OCRAM
|
||||
*/
|
||||
|
||||
/* There there then several memory configurations with a one primary memory
|
||||
* region and up to two additional memory regions which may be OCRAM, DTCM
|
||||
* external DDR.
|
||||
*/
|
||||
|
||||
#undef IMX9_OCRAM_ASSIGNED
|
||||
#undef IMX9_DCTM_ASSIGNED
|
||||
|
||||
#define _IMX9_OCRAM_BASE IMX9_OCRAM_BASE
|
||||
|
||||
/* See linker script */
|
||||
|
||||
extern const uint32_t _ram_start[];
|
||||
extern const uint32_t _ram_size[];
|
||||
extern const uint32_t _ocram_start[];
|
||||
extern const uint32_t _ocram_size[];
|
||||
|
||||
/* by default DTCM size is 256k
|
||||
* Can be configured by AON__BLK_CTRL_Secure_AON.M7_CFG (0x444f0124)
|
||||
*/
|
||||
|
||||
#define PRIMARY_RAM_START (uint32_t) _ram_start
|
||||
#define PRIMARY_RAM_SIZE (uint32_t) _ram_size
|
||||
#define PRIMARY_RAM_END ((uint32_t)_ram_start + (uint32_t)_ram_size)
|
||||
|
||||
#define OCRAM_START (uint32_t) _ocram_start
|
||||
#define OCRAM_SIZE (uint32_t) _ocram_size
|
||||
|
||||
#if CONFIG_MM_REGIONS > 1
|
||||
/* Pick the first region to add to the heap could be any one of OCRAM, DTCM,
|
||||
* SDRAM, or SRAM depending upon which are enabled and which has not
|
||||
* already been assigned as the primary RAM.
|
||||
*/
|
||||
|
||||
#if defined(CONFIG_IMX9_OCRAM_HEAP) && !defined(IMX9_OCRAM_ASSIGNED)
|
||||
#define REGION1_RAM_START OCRAM_START
|
||||
#define REGION1_RAM_SIZE OCRAM_SIZE
|
||||
#define IMX9_OCRAM_ASSIGNED 1
|
||||
#else
|
||||
#warning CONFIG_MM_REGIONS > 1 but no available memory region
|
||||
#endif
|
||||
|
||||
#define REGION1_RAM_END (REGION1_RAM_START + REGION1_RAM_SIZE)
|
||||
#endif
|
||||
|
||||
#if CONFIG_MM_REGIONS > 2
|
||||
#warning CONFIG_MM_REGIONS > 2 but no available memory region
|
||||
#endif
|
||||
|
||||
#if CONFIG_MM_REGIONS > 3
|
||||
#warning CONFIG_MM_REGIONS > 3 but no available memory region
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Public Data
|
||||
****************************************************************************/
|
||||
|
||||
/* _sbss is the start of the BSS region (see the linker script) _ebss is the
|
||||
* end of the BSS regions (see the linker script). The idle task stack starts
|
||||
* at the end of BSS and is of size CONFIG_IDLETHREAD_STACKSIZE. The IDLE
|
||||
* thread is the thread that the system boots on and, eventually, becomes the
|
||||
* idle, do nothing task that runs only when there is nothing else to run.
|
||||
* The heap continues from there until the configured end of memory.
|
||||
* g_idle_topstack is the beginning of this heap region (not necessarily
|
||||
* aligned).
|
||||
*/
|
||||
|
||||
const uintptr_t g_idle_topstack
|
||||
= (uintptr_t)&_ebss + CONFIG_IDLETHREAD_STACKSIZE;
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: up_allocate_heap/up_allocate_kheap
|
||||
*
|
||||
* Description:
|
||||
* This function will be called to dynamically set aside the heap region.
|
||||
*
|
||||
* - For the normal "flat" build, this function returns the size of the
|
||||
* single heap.
|
||||
* - For the protected build (CONFIG_BUILD_PROTECTED=y) with both kernel-
|
||||
* and user-space heaps (CONFIG_MM_KERNEL_HEAP=y), this function
|
||||
* provides the size of the unprotected, user-space heap.
|
||||
* - For the kernel build (CONFIG_BUILD_KERNEL=y), this function provides
|
||||
* the size of the protected, kernel-space heap.
|
||||
*
|
||||
* If a protected kernel-space heap is provided, the kernel heap must be
|
||||
* allocated by an analogous up_allocate_kheap(). A custom version of this
|
||||
* file is needed if memory protection of the kernel heap is required.
|
||||
*
|
||||
* The following memory map is assumed for the flat build:
|
||||
*
|
||||
* .data region. Size determined at link time.
|
||||
* .bss region Size determined at link time.
|
||||
* IDLE thread stack. Size determined by CONFIG_IDLETHREAD_STACKSIZE.
|
||||
* Heap. Extends to the end of SRAM.
|
||||
*
|
||||
* The following memory map is assumed for the kernel build:
|
||||
*
|
||||
* Kernel .data region. Size determined at link time.
|
||||
* Kernel .bss region Size determined at link time.
|
||||
* Kernel IDLE thread stack. (size determined by
|
||||
* CONFIG_IDLETHREAD_STACKSIZE).
|
||||
* Padding for alignment
|
||||
* User .data region. Size determined at link time.
|
||||
* User .bss region Size determined at link time.
|
||||
* Kernel heap. Size determined by CONFIG_MM_KERNEL_HEAPSIZE.
|
||||
* User heap. Extends to the end of SRAM.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_BUILD_KERNEL
|
||||
void up_allocate_kheap(void **heap_start, size_t *heap_size)
|
||||
#else
|
||||
void up_allocate_heap(void **heap_start, size_t *heap_size)
|
||||
#endif
|
||||
{
|
||||
#if defined(CONFIG_BUILD_PROTECTED) && defined(CONFIG_MM_KERNEL_HEAP)
|
||||
/* Get the unaligned size and position of the user-space heap.
|
||||
* This heap begins after the user-space .bss section at an offset
|
||||
* of CONFIG_MM_KERNEL_HEAPSIZE (subject to alignment).
|
||||
*/
|
||||
|
||||
uintptr_t ubase
|
||||
= (uintptr_t)USERSPACE->us_bssend + CONFIG_MM_KERNEL_HEAPSIZE;
|
||||
size_t usize = PRIMARY_RAM_END - ubase;
|
||||
int log2;
|
||||
|
||||
DEBUGASSERT(ubase < (uintptr_t)PRIMARY_RAM_END);
|
||||
|
||||
/* Adjust that size to account for MPU alignment requirements.
|
||||
* NOTE that there is an implicit assumption that the PRIMARY_RAM_END
|
||||
* is aligned to the MPU requirement.
|
||||
*/
|
||||
|
||||
log2 = (int)mpu_log2regionfloor(usize);
|
||||
DEBUGASSERT((PRIMARY_RAM_END & ((1 << log2) - 1)) == 0);
|
||||
|
||||
usize = (1 << log2);
|
||||
ubase = PRIMARY_RAM_END - usize;
|
||||
|
||||
/* Return the user-space heap settings */
|
||||
|
||||
board_autoled_on(LED_HEAPALLOCATE);
|
||||
*heap_start = (void *)ubase;
|
||||
*heap_size = usize;
|
||||
|
||||
/* Allow user-mode access to the user heap memory */
|
||||
|
||||
imx9_mpu_uheap((uintptr_t)ubase, usize);
|
||||
#else
|
||||
|
||||
/* Return the heap settings */
|
||||
|
||||
board_autoled_on(LED_HEAPALLOCATE);
|
||||
*heap_start = (void *)g_idle_topstack;
|
||||
*heap_size = PRIMARY_RAM_END - g_idle_topstack;
|
||||
#endif
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: up_allocate_kheap
|
||||
*
|
||||
* Description:
|
||||
* For the kernel build (CONFIG_BUILD_PROTECTED/KERNEL=y) with both kernel-
|
||||
* and user-space heaps (CONFIG_MM_KERNEL_HEAP=y), this function allocates
|
||||
* the kernel-space heap. A custom version of this function is needed if
|
||||
* memory protection of the kernel heap is required.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#if defined(CONFIG_BUILD_PROTECTED) && defined(CONFIG_MM_KERNEL_HEAP)
|
||||
void up_allocate_kheap(void **heap_start, size_t *heap_size)
|
||||
{
|
||||
/* Get the unaligned size and position of the user-space heap.
|
||||
* This heap begins after the user-space .bss section at an offset
|
||||
* of CONFIG_MM_KERNEL_HEAPSIZE (subject to alignment).
|
||||
*/
|
||||
|
||||
uintptr_t ubase
|
||||
= (uintptr_t)USERSPACE->us_bssend + CONFIG_MM_KERNEL_HEAPSIZE;
|
||||
size_t usize = PRIMARY_RAM_END - ubase;
|
||||
int log2;
|
||||
DEBUGASSERT(ubase < (uintptr_t)PRIMARY_RAM_END);
|
||||
|
||||
/* Adjust that size to account for MPU alignment requirements.
|
||||
* NOTE that there is an implicit assumption that the CONFIG_RAM_END
|
||||
* is aligned to the MPU requirement.
|
||||
*/
|
||||
|
||||
log2 = (int)mpu_log2regionfloor(usize);
|
||||
DEBUGASSERT((PRIMARY_RAM_END & ((1 << log2) - 1)) == 0);
|
||||
|
||||
usize = (1 << log2);
|
||||
ubase = PRIMARY_RAM_END - usize;
|
||||
|
||||
/* Return the kernel heap settings (i.e., the part of the heap region
|
||||
* that was not dedicated to the user heap).
|
||||
*/
|
||||
|
||||
*heap_start = (void *)USERSPACE->us_bssend;
|
||||
*heap_size = ubase - (uintptr_t)USERSPACE->us_bssend;
|
||||
}
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Name: arm_addregion
|
||||
*
|
||||
* Description:
|
||||
* Memory may be added in non-contiguous chunks. Additional chunks are
|
||||
* added by calling this function.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#if CONFIG_MM_REGIONS > 1
|
||||
void arm_addregion(void)
|
||||
{
|
||||
/* Add region 1 to the user heap */
|
||||
|
||||
kumm_addregion((void *)REGION1_RAM_START, REGION1_RAM_SIZE);
|
||||
|
||||
#if defined(CONFIG_BUILD_PROTECTED) && defined(CONFIG_MM_KERNEL_HEAP)
|
||||
/* Allow user-mode access to region 1 */
|
||||
|
||||
imx9_mpu_uheap((uintptr_t)REGION1_RAM_START, REGION1_RAM_SIZE);
|
||||
#endif
|
||||
|
||||
#if CONFIG_MM_REGIONS > 2
|
||||
/* Add region 2 to the user heap */
|
||||
|
||||
kumm_addregion((void *)REGION2_RAM_START, REGION2_RAM_SIZE);
|
||||
|
||||
#if defined(CONFIG_BUILD_PROTECTED) && defined(CONFIG_MM_KERNEL_HEAP)
|
||||
/* Allow user-mode access to region 2 */
|
||||
|
||||
imx9_mpu_uheap((uintptr_t)REGION2_RAM_START, REGION2_RAM_SIZE);
|
||||
#endif
|
||||
#endif /* CONFIG_MM_REGIONS > 2 */
|
||||
}
|
||||
#endif /* CONFIG_MM_REGIONS > 1 */
|
267
arch/arm/src/imx9/imx9_clockconfig.c
Normal file
267
arch/arm/src/imx9/imx9_clockconfig.c
Normal file
|
@ -0,0 +1,267 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/imx9_clockconfig.c
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
#include <arch/board/board.h>
|
||||
|
||||
#include "barriers.h"
|
||||
|
||||
#include "arm_internal.h"
|
||||
#include "hardware/imx9_gpc.h"
|
||||
#include "imx9_clockconfig.h"
|
||||
#include "imx9_scmi.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/* The base oscillator frequency is 24MHz */
|
||||
|
||||
#define XTAL_FREQ 24000000u
|
||||
|
||||
#define ROOT_CLOCK_OFFSET 41
|
||||
|
||||
/* Common barrier */
|
||||
|
||||
#define mb() \
|
||||
do \
|
||||
{ \
|
||||
ARM_DSB(); \
|
||||
ARM_ISB(); \
|
||||
} \
|
||||
while (0)
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_clockconfig
|
||||
*
|
||||
* Description:
|
||||
* Called to initialize the i.IMX9. This does whatever setup is needed to
|
||||
* put the SoC in a usable state. This includes the initialization of
|
||||
* clocking using the settings in board.h.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
void imx9_clockconfig(void)
|
||||
{
|
||||
/* Keep the system clock running so SYSTICK can wake up the system from
|
||||
* wfi.
|
||||
*/
|
||||
|
||||
modifyreg32(
|
||||
IMX9_GPC_CTRL_CMC_MODE_CTRL(IMX9_GPC_CTRL_CM7_BASE),
|
||||
IMX9_GPC_CTRL_CMC_MODE_CTRL_CPU_MODE_TARGET_MASK,
|
||||
IMX9_GPC_CTRL_CMC_MODE_CTRL_CPU_MODE_TARGET(
|
||||
IMX9_GPC_CTRL_CMC_MODE_CTRL_CPU_MODE_TARGET_STAY_IN_RUN_MODE));
|
||||
|
||||
modifyreg32(IMX9_GPC_CTRL_CMC_MISC(IMX9_GPC_CTRL_CM7_BASE),
|
||||
IMX9_GPC_CTRL_CMC_MISC_SLEEP_HOLD_EN_FLAG, 0);
|
||||
|
||||
/* Cortex-M33 with SM does PLL initalization */
|
||||
}
|
||||
|
||||
#ifdef CONFIG_IMX9_CLK_OVER_SCMI
|
||||
int imx9_sm_setrootclock(sm_clock_t *sm_clk)
|
||||
{
|
||||
scmi_clock_rate_t rate = /* clang-format off */
|
||||
{
|
||||
0, 0
|
||||
}; /* clang-format on */
|
||||
|
||||
uint32_t channel = sm_clk->channel;
|
||||
uint32_t clock_id = sm_clk->clk_id;
|
||||
uint32_t pclk_id = sm_clk->pclk_id;
|
||||
uint32_t div = sm_clk->div;
|
||||
uint32_t attributes = sm_clk->attributes;
|
||||
uint32_t oem_config_val = sm_clk->oem_config_val;
|
||||
uint32_t flags = sm_clk->flags;
|
||||
uint32_t old_pclk_id = 0; /* parent clock id */
|
||||
uint64_t src_rate, root_rate;
|
||||
int32_t status = -1;
|
||||
|
||||
if (div == 0)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
status = imx9_scmi_clockparentget(channel, clock_id, &old_pclk_id);
|
||||
if (status != 0)
|
||||
{
|
||||
return status;
|
||||
}
|
||||
|
||||
if (old_pclk_id != pclk_id)
|
||||
{
|
||||
status = imx9_scmi_clockparentset(channel, clock_id, pclk_id);
|
||||
if (status != 0)
|
||||
{
|
||||
return status;
|
||||
}
|
||||
}
|
||||
|
||||
status = imx9_scmi_clockrateget(channel, pclk_id, &rate);
|
||||
if (status != 0)
|
||||
{
|
||||
return status;
|
||||
}
|
||||
|
||||
src_rate = rate.upper;
|
||||
src_rate = (src_rate << 32);
|
||||
src_rate |= rate.lower;
|
||||
|
||||
root_rate = src_rate / div;
|
||||
|
||||
rate.lower = root_rate & SM_CLOCK_RATE_MASK;
|
||||
rate.upper = (root_rate >> 32) & SM_CLOCK_RATE_MASK;
|
||||
|
||||
status = imx9_scmi_clockrateset(channel, clock_id, flags, rate);
|
||||
if (status != 0)
|
||||
{
|
||||
return status;
|
||||
}
|
||||
|
||||
status = imx9_scmi_clockconfigset(channel, clock_id, attributes,
|
||||
oem_config_val);
|
||||
if (status != 0)
|
||||
{
|
||||
return status;
|
||||
}
|
||||
|
||||
return OK;
|
||||
}
|
||||
|
||||
int imx9_sm_getipfreq(sm_clock_t *sm_clk)
|
||||
{
|
||||
scmi_clock_rate_t rate = /* clang-format off */
|
||||
{
|
||||
0, 0
|
||||
}; /* clang-format on */
|
||||
|
||||
uint32_t channel = sm_clk->channel;
|
||||
uint32_t clock_id = sm_clk->clk_id;
|
||||
uint32_t pclk_id = sm_clk->pclk_id;
|
||||
int status = 0;
|
||||
|
||||
status = imx9_scmi_clockparentget(channel, clock_id, &pclk_id);
|
||||
if (status < 0)
|
||||
{
|
||||
return status;
|
||||
}
|
||||
|
||||
status = imx9_scmi_clockrateget(channel, clock_id, &rate);
|
||||
if (status < 0)
|
||||
{
|
||||
return status;
|
||||
}
|
||||
|
||||
return rate.lower;
|
||||
}
|
||||
#endif
|
||||
|
||||
int imx9_configure_clock(clock_config_t clk_config, bool enabled)
|
||||
{
|
||||
sm_clock_t sm_clk = /* clang-format off */
|
||||
{
|
||||
0
|
||||
}; /* clang-format on */
|
||||
|
||||
sm_clk.clk_id = GET_CLOCK_ROOT(clk_config) + ROOT_CLOCK_OFFSET;
|
||||
sm_clk.pclk_id = GET_CLOCK_ID(clk_config);
|
||||
sm_clk.channel = SM_PLATFORM_A2P;
|
||||
sm_clk.div = GET_CLOCK_DIV(clk_config);
|
||||
|
||||
if (sm_clk.div == 0)
|
||||
{
|
||||
/* Make sure div is always 1 */
|
||||
|
||||
sm_clk.div = 1;
|
||||
}
|
||||
|
||||
sm_clk.attributes = SCMI_CLOCK_CONFIG_SET_ENABLE(enabled);
|
||||
sm_clk.flags = SCMI_CLOCK_RATE_FLAGS_ROUND(SCMI_CLOCK_ROUND_AUTO);
|
||||
|
||||
return imx9_sm_setrootclock(&sm_clk);
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_get_rootclock
|
||||
*
|
||||
* Description:
|
||||
* This function returns the clock frequency of the specified root
|
||||
* functional clock.
|
||||
*
|
||||
* Input Parameters:
|
||||
* clkroot - Identifies the peripheral clock of interest
|
||||
* frequency - The location where the peripheral clock frequency will be
|
||||
* returned
|
||||
*
|
||||
* Returned Value:
|
||||
* Zero (OK) is returned on success; a negated errno value is returned on
|
||||
* any failure. -ENODEV is returned if the clock is not enabled or is not
|
||||
* being clocked.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
int imx9_get_rootclock(int clkroot, uint32_t *frequency)
|
||||
{
|
||||
if (clkroot <= CCM_CR_COUNT)
|
||||
{
|
||||
uint32_t ret = 0;
|
||||
|
||||
sm_clock_t sm_clk = /* clang-format off */
|
||||
{
|
||||
0
|
||||
}; /* clang-format on */
|
||||
|
||||
sm_clk.clk_id = (uint32_t)(clkroot + ROOT_CLOCK_OFFSET);
|
||||
sm_clk.channel = SM_PLATFORM_A2P;
|
||||
|
||||
ret = imx9_sm_getipfreq(&sm_clk);
|
||||
|
||||
if (ret < 0)
|
||||
{
|
||||
return -ENODEV;
|
||||
}
|
||||
else
|
||||
{
|
||||
*frequency = ret;
|
||||
return OK;
|
||||
}
|
||||
}
|
||||
|
||||
return -ENODEV;
|
||||
}
|
82
arch/arm/src/imx9/imx9_clockconfig.h
Normal file
82
arch/arm/src/imx9/imx9_clockconfig.h
Normal file
|
@ -0,0 +1,82 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/imx9_clockconfig.h
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ARCH_ARM_SRC_IMX9_IMX9_CLOCKCONFIG_H
|
||||
#define __ARCH_ARM_SRC_IMX9_IMX9_CLOCKCONFIG_H
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
#include <stdint.h>
|
||||
#include "hardware/imx9_clock.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Public Types
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Public Function Prototypes
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_clockconfig
|
||||
*
|
||||
* Description:
|
||||
* Called to initialize the i.IMX9. This does whatever setup is needed to
|
||||
* put the SoC in a usable state. This includes the initialization of
|
||||
* clocking using the settings in board.h.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
void imx9_clockconfig(void);
|
||||
|
||||
int imx9_configure_clock(clock_config_t clk_config, bool enabled);
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_get_rootclock
|
||||
*
|
||||
* Description:
|
||||
* This function returns the clock frequency of the specified root
|
||||
* functional clock.
|
||||
*
|
||||
* Input Parameters:
|
||||
* clkroot - Identifies the peripheral clock of interest
|
||||
* frequency - The location where the peripheral clock frequency will be
|
||||
* returned
|
||||
*
|
||||
* Returned Value:
|
||||
* Zero (OK) is returned on success; a negated errno value is returned on
|
||||
* any failure. -ENODEV is returned if the clock is not enabled or is not
|
||||
* being clocked.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
int imx9_get_rootclock(int clkroot, uint32_t *frequency);
|
||||
|
||||
#endif /* __ARCH_ARM_SRC_IMX9_IMX9_CLOCKCONFIG_H */
|
1603
arch/arm/src/imx9/imx9_edma.c
Normal file
1603
arch/arm/src/imx9/imx9_edma.c
Normal file
File diff suppressed because it is too large
Load diff
478
arch/arm/src/imx9/imx9_edma.h
Normal file
478
arch/arm/src/imx9/imx9_edma.h
Normal file
|
@ -0,0 +1,478 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/imx9_edma.h
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
* SPDX-FileCopyrightText: 2019, 2021, 2023 Gregory Nutt.
|
||||
* SPDX-FileCopyrightText: 2022 NXP
|
||||
* SPDX-FileCopyrightText: 2016-2017 NXP
|
||||
* SPDX-FileCopyrightText: 2015, Freescale Semiconductor, Inc.
|
||||
* SPDX-FileContributor: Gregory Nutt <gnutt@nuttx.org>
|
||||
* SPDX-FileContributor: David Sidrane <david.sidrane@nscdg.com>
|
||||
* SPDX-FileContributor: Peter van der Perk <peter.vanderperk@nxp.com>
|
||||
*
|
||||
* 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_IMX9_IMX9_EDMA_H
|
||||
#define __ARCH_ARM_SRC_IMX9_IMX9_EDMA_H
|
||||
|
||||
/* General Usage:
|
||||
*
|
||||
* 1. Allocate a DMA channel
|
||||
*
|
||||
* DMACH_HANDLE handle;
|
||||
* handle = edma_dmach_alloc(dmamux, dchpri);
|
||||
*
|
||||
* Where 'dmamux' is the channel DMAMUX configuration register setting and
|
||||
* 'dchpri' is the channel DCHPRIO priority register setting.
|
||||
*
|
||||
* 2. Create the transfer configuration:
|
||||
*
|
||||
* struct imx9_edma_xfrconfig_s config;
|
||||
* config.saddr = ..;
|
||||
* config.daddr = ..;
|
||||
* etc.
|
||||
*
|
||||
* 3. Setup the transfer in hardware:
|
||||
*
|
||||
* int ret;
|
||||
* ret = imx9_dmach_xfrsetup(handle, &config);
|
||||
*
|
||||
* 4. If you are setting up a scatter gather DMA
|
||||
* (with CONFIG_IMX9_EDMA_NTCD > 0), then repeat steps 2 and 3 for
|
||||
* each segment of the transfer.
|
||||
*
|
||||
* 5. Start the DMA:
|
||||
*
|
||||
* ret = imx9_dmach_start(handle, my_callback_func, priv);
|
||||
*
|
||||
* Where my_callback_func() is called when the DMA completes or an error
|
||||
* occurs. 'priv' represents some internal driver state that will be
|
||||
* provided with the callback.
|
||||
*
|
||||
* 6. If you need to stop the DMA and free resources (such as if a timeout
|
||||
* occurs), then:
|
||||
*
|
||||
* i mxrt_dmach_stop(handle);
|
||||
*
|
||||
* 7. The callback will be received when the DMA completes (or an error
|
||||
* occurs). After that, you may free the DMA channel, or re-use it on
|
||||
* subsequent DMAs.
|
||||
*
|
||||
* imx9_dmach_free(handle);
|
||||
*
|
||||
* Almost non-invasive debug instrumentation is available. You may call
|
||||
* imx9_dmasample() to save the current state of the eDMA registers at
|
||||
* any given point in time. At some later, postmortem analysis, you can
|
||||
* dump the content of the buffered registers with imx9_dmadump().
|
||||
* imx9_dmasample() is also available for monitoring DMA progress.
|
||||
*/
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/* Configuration flags.
|
||||
*
|
||||
* REVISIT: Many missing options that should be represented as flags:
|
||||
* 1. Bandwidth
|
||||
* 2. Source/Destination modulo
|
||||
*/
|
||||
|
||||
#define EDMA_CONFIG_LINKTYPE_SHIFT (0) /* Bits 0-1: Link type */
|
||||
#define EDMA_CONFIG_LINKTYPE_MASK (3 << EDMA_CONFIG_LINKTYPE_SHIFT)
|
||||
# define EDMA_CONFIG_LINKTYPE_LINKNONE (0 << EDMA_CONFIG_LINKTYPE_SHIFT) /* No channel link */
|
||||
# define EDMA_CONFIG_LINKTYPE_MINORLINK (1 << EDMA_CONFIG_LINKTYPE_SHIFT) /* Channel link after each minor loop */
|
||||
# define EDMA_CONFIG_LINKTYPE_MAJORLINK (2 << EDMA_CONFIG_LINKTYPE_SHIFT) /* Channel link when major loop count exhausted */
|
||||
|
||||
#define EDMA_CONFIG_LOOP_SHIFT (2) /* Bits 2: Loop type */
|
||||
#define EDMA_CONFIG_LOOP_MASK (3 << EDMA_CONFIG_LOOP_SHIFT)
|
||||
# define EDMA_CONFIG_LOOPNONE (0 << EDMA_CONFIG_LOOP_SHIFT) /* No looping */
|
||||
# define EDMA_CONFIG_LOOPSRC (1 << EDMA_CONFIG_LOOP_SHIFT) /* Source looping */
|
||||
# define EDMA_CONFIG_LOOPDEST (2 << EDMA_CONFIG_LOOP_SHIFT) /* Dest looping */
|
||||
|
||||
#define EDMA_CONFIG_INTHALF (1 << 4) /* Bits 4: Int on HALF */
|
||||
#define EDMA_CONFIG_INTMAJOR (1 << 5) /* Bits 5: Int on all Major completion
|
||||
* Default is only on last completion
|
||||
* if using scatter gather
|
||||
*/
|
||||
|
||||
/****************************************************************************
|
||||
* Public Types
|
||||
****************************************************************************/
|
||||
|
||||
typedef void *DMACH_HANDLE;
|
||||
typedef void (*edma_callback_t)(DMACH_HANDLE handle,
|
||||
void *arg, bool done, int result);
|
||||
|
||||
/* eDMA transfer type */
|
||||
|
||||
enum imx9_edma_xfrtype_e
|
||||
{
|
||||
EDMA_MEM2MEM = 0, /* Transfer from memory to memory */
|
||||
EDMA_PERIPH2MEM, /* Transfer from peripheral to memory */
|
||||
EDMA_MEM2PERIPH, /* Transfer from memory to peripheral */
|
||||
};
|
||||
|
||||
/* eDMA transfer sises */
|
||||
|
||||
enum imx9_edma_sizes_e
|
||||
{
|
||||
EDMA_8BIT = 0, /* Transfer data size 8 */
|
||||
EDMA_16BIT = 1, /* Transfer data size 16 */
|
||||
EDMA_32BIT = 2, /* Transfer data size 32 */
|
||||
EDMA_64BIT = 3, /* Transfer data size 64 */
|
||||
EDMA_16BYTE = 4, /* Transfer data size 16-byte */
|
||||
EDMA_32BYTE = 5, /* Transfer data size 32-byte */
|
||||
EDMA_64BYTE = 6, /* Transfer data size 64-byte */
|
||||
};
|
||||
|
||||
/* This structure holds the source/destination transfer attribute
|
||||
* configuration.
|
||||
*/
|
||||
|
||||
struct imx9_edma_xfrconfig_s
|
||||
{
|
||||
uintptr_t saddr; /* Source data address. */
|
||||
uintptr_t daddr; /* Destination data address. */
|
||||
int16_t soff; /* Sign-extended offset for current source address. */
|
||||
int16_t doff; /* Sign-extended offset for current destination address. */
|
||||
uint16_t iter; /* Major loop iteration count. */
|
||||
uint8_t flags; /* See EDMA_CONFIG_* definitions */
|
||||
uint8_t ssize; /* Source data transfer size (see TCD_ATTR_SIZE_* definitions in rdware/. */
|
||||
uint8_t dsize; /* Destination data transfer size. */
|
||||
#ifdef CONFIG_IMX9_EDMA_EMLIM
|
||||
uint16_t nbytes; /* Bytes to transfer in a minor loop */
|
||||
#else
|
||||
uint32_t nbytes; /* Bytes to transfer in a minor loop */
|
||||
#endif
|
||||
#ifdef CONFIG_IMX9_EDMA_MOD
|
||||
uint8_t smod;
|
||||
uint8_t dmod;
|
||||
#endif
|
||||
#ifdef CONFIG_IMX9_EDMA_BWC
|
||||
uint8_t bwc;
|
||||
#endif
|
||||
#ifdef CONFIG_IMX9_EDMA_ELINK
|
||||
DMACH_HANDLE linkch; /* Link channel (With EDMA_CONFIG_LINKTYPE_* flags) */
|
||||
#endif
|
||||
};
|
||||
|
||||
/* The following is used for sampling DMA registers when CONFIG DEBUG_DMA
|
||||
* is selected
|
||||
*/
|
||||
|
||||
#ifdef CONFIG_DEBUG_DMA
|
||||
struct imx9_dmaregs_s
|
||||
{
|
||||
uint8_t chan; /* Sampled channel */
|
||||
|
||||
/* eDMA Global Registers */
|
||||
|
||||
uint32_t cr; /* Control */
|
||||
uint32_t es; /* Error Status */
|
||||
uint32_t req; /* Interrupt Request */
|
||||
uint32_t hrs; /* Hardware Request Status */
|
||||
|
||||
/* eDMA Channel registers */
|
||||
|
||||
uint8_t dchpri; /* Channel priority */
|
||||
|
||||
/* eDMA TCD */
|
||||
|
||||
uint32_t saddr; /* TCD Source Address */
|
||||
uint16_t soff; /* TCD Signed Source Address Offset */
|
||||
uint16_t attr; /* TCD Transfer Attributes */
|
||||
uint32_t nbml; /* TCD Signed Minor Loop Offset / Byte Count */
|
||||
uint32_t slast; /* TCD Last Source Address Adjustment */
|
||||
uint32_t daddr; /* TCD Destination Address */
|
||||
uint16_t doff; /* TCD Signed Destination Address Offset */
|
||||
uint16_t citer; /* TCD Current Minor Loop Link, Major Loop Count */
|
||||
uint32_t dlastsga; /* TCD Last Destination Address Adjustment/Scatter Gather Address */
|
||||
uint16_t csr; /* TCD Control and Status */
|
||||
uint16_t biter; /* TCD Beginning Minor Loop Link, Major Loop Count */
|
||||
|
||||
/* DMAMUX registers */
|
||||
|
||||
uint32_t dmamux; /* Channel configuration */
|
||||
};
|
||||
#endif /* CONFIG_DEBUG_DMA */
|
||||
|
||||
/****************************************************************************
|
||||
* Inline Functions
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
/****************************************************************************
|
||||
* Public Data
|
||||
****************************************************************************/
|
||||
|
||||
#undef EXTERN
|
||||
#if defined(__cplusplus)
|
||||
#define EXTERN extern "C"
|
||||
extern "C"
|
||||
{
|
||||
#else
|
||||
#define EXTERN extern
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Public Function Prototypes
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_dmach_alloc
|
||||
*
|
||||
* Allocate a DMA channel. This function sets aside a DMA channel,
|
||||
* initializes the DMAMUX for the channel, then gives the caller exclusive
|
||||
* access to the DMA channel.
|
||||
*
|
||||
* Input Parameters:
|
||||
* dmamux - DMAMUX configuration see DMAMUX channel configuration register
|
||||
* bit-field definitions in hardware/imx9_dmamux.h.
|
||||
* Settings include:
|
||||
*
|
||||
* DMAMUX_CHCFG_SOURCE Chip-specific DMA source (required)
|
||||
* DMAMUX_CHCFG_TRIG DMA Channel Trigger Enable (optional)
|
||||
* DMAMUX_CHCFG_ENBL DMA Mux Channel Enable (required)
|
||||
*
|
||||
* A value of zero will disable the DMAMUX channel.
|
||||
* dchpri - DCHPRI channel priority configuration. See DCHPRI channel
|
||||
* configuration register bit-field definitions in
|
||||
* hardware/imx9_edma.h. Meaningful settings include:
|
||||
*
|
||||
* EDMA_DCHPRI_CHPRI Channel Arbitration Priority
|
||||
* DCHPRI_DPA Disable Preempt Ability
|
||||
* DCHPRI_ECP Enable Channel Preemption
|
||||
*
|
||||
* The power-on default, 0x05, is a reasonable choice.
|
||||
*
|
||||
* Returned Value:
|
||||
* If a DMA channel is available, this function returns a non-NULL, void*
|
||||
* DMA channel handle. NULL is returned on any failure.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
DMACH_HANDLE imx9_dmach_alloc(uint16_t dmamux, uint8_t dchpri);
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_dmach_free
|
||||
*
|
||||
* Description:
|
||||
* Release a DMA channel.
|
||||
* NOTE: The 'handle' used in this argument must NEVER be used again
|
||||
* until imx9_dmach_alloc() is called again to re-gain a valid handle.
|
||||
*
|
||||
* Returned Value:
|
||||
* None
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
void imx9_dmach_free(DMACH_HANDLE handle);
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_dmach_xfrsetup
|
||||
*
|
||||
* Description:
|
||||
* This function adds the eDMA transfer to the DMA sequence. The request
|
||||
* is setup according to the content of the transfer configuration
|
||||
* structure. For "normal" DMA, imx9_dmach_xfrsetup is called only
|
||||
* once.
|
||||
* Scatter/gather DMA is accomplished by calling this function repeatedly,
|
||||
* once for each transfer in the sequence. Scatter/gather DMA processing
|
||||
* is enabled automatically when the second transfer configuration is
|
||||
* received.
|
||||
*
|
||||
* This function may be called multiple times to handle multiple,
|
||||
* discontinuous transfers (scatter-gather)
|
||||
*
|
||||
* Input Parameters:
|
||||
* handle - DMA channel handle created by imx9_dmach_alloc()
|
||||
* config - A DMA transfer configuration instance, populated by the
|
||||
* The content of 'config' describes the transfer
|
||||
*
|
||||
* Returned Value
|
||||
* Zero (OK) is returned on success; a negated errno value is returned on
|
||||
* any failure.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
int imx9_dmach_xfrsetup(DMACH_HANDLE handle,
|
||||
const struct imx9_edma_xfrconfig_s *config);
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_dmach_start
|
||||
*
|
||||
* Description:
|
||||
* Start the DMA transfer by enabling the channel DMA request.
|
||||
* This function should be called after the final call to
|
||||
* imx9_dmasetup() in order to avoid race conditions.
|
||||
*
|
||||
* At the conclusion of each major DMA loop, a callback to the
|
||||
* user-provided function is made: |For "normal" DMAs, this will
|
||||
* correspond to the DMA DONE interrupt; for scatter gather DMAs, multiple
|
||||
* interrupts will be generated with the final being the DONE interrupt.
|
||||
*
|
||||
* At the conclusion of the DMA, the DMA channel is reset, all TCDs are
|
||||
* freed, and the callback function is called with the the success/fail
|
||||
* result of the DMA.
|
||||
*
|
||||
* NOTE:
|
||||
* On Rx DMAs (peripheral-to-memory or memory-to-memory), it is necessary
|
||||
* to invalidate the destination memory. That is not done automatically
|
||||
* by the DMA module. Invalidation of the destination memory regions is
|
||||
* the responsibility of the caller.
|
||||
*
|
||||
* Input Parameters:
|
||||
* handle - DMA channel handle created by imx9_dmach_alloc()
|
||||
* callback - The callback to be invoked when the DMA is completes or is
|
||||
* aborted.
|
||||
* arg - An argument that accompanies the callback
|
||||
*
|
||||
* Returned Value:
|
||||
* Zero (OK) is returned on success; a negated errno value is returned on
|
||||
* any failure.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
int imx9_dmach_start(DMACH_HANDLE handle, edma_callback_t callback,
|
||||
void *arg);
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_dmach_stop
|
||||
*
|
||||
* Description:
|
||||
* Cancel the DMA. After imx9_dmach_stop() is called, the DMA channel
|
||||
* is reset, all TCDs are freed, and imx9_dmarx/txsetup() must be called
|
||||
* before imx9_dmach_start() can be called again
|
||||
*
|
||||
* Input Parameters:
|
||||
* handle - DMA channel handle created by imx9_dmach_alloc()
|
||||
*
|
||||
* Returned Value:
|
||||
* None.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
void imx9_dmach_stop(DMACH_HANDLE handle);
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_dmach_getcount
|
||||
*
|
||||
* Description:
|
||||
* This function checks the TCD (Task Control Descriptor) status for a
|
||||
* specified eDMA channel and returns the the number of major loop counts
|
||||
* that have not finished.
|
||||
*
|
||||
* NOTES:
|
||||
* 1. This function can only be used to get unfinished major loop count of
|
||||
* transfer without the next TCD, or it might be inaccuracy.
|
||||
* 2. The unfinished/remaining transfer bytes cannot be obtained directly
|
||||
* from registers while the channel is running.
|
||||
*
|
||||
* Because to calculate the remaining bytes, the initial NBYTES configured
|
||||
* in DMA_TCDn_NBYTES_MLNO register is needed while the eDMA IP does not
|
||||
* support getting it while a channel is active. In another words, the
|
||||
* NBYTES value reading is always the actual (decrementing) NBYTES value
|
||||
* the dma_engine is working with while a channel is running.
|
||||
* Consequently, to get the remaining transfer bytes, a software-saved
|
||||
* initial value of NBYTES (for example copied before enabling the channel)
|
||||
* is needed. The formula to calculate it is shown below:
|
||||
*
|
||||
* RemainingBytes = RemainingMajorLoopCount * NBYTES(initially configured)
|
||||
*
|
||||
* Input Parameters:
|
||||
* handle - DMA channel handle created by imx9_dmach_alloc()
|
||||
*
|
||||
* Returned Value:
|
||||
* Major loop count which has not been transferred yet for the current TCD.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
unsigned int imx9_dmach_getcount(DMACH_HANDLE handle);
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_dmach_idle
|
||||
*
|
||||
* Description:
|
||||
* This function checks if the dma is idle
|
||||
*
|
||||
* Returned Value:
|
||||
* 0 - if idle
|
||||
* !0 - not
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
unsigned int imx9_dmach_idle(DMACH_HANDLE handle);
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_dmasample
|
||||
*
|
||||
* Description:
|
||||
* Sample DMA register contents
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_DEBUG_DMA
|
||||
void imx9_dmasample(DMACH_HANDLE handle, struct imx9_dmaregs_s *regs);
|
||||
#else
|
||||
# define imx9_dmasample(handle,regs)
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_dmadump
|
||||
*
|
||||
* Description:
|
||||
* Dump previously sampled DMA register contents
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_DEBUG_DMA
|
||||
void imx9_dmadump(const struct imx9_dmaregs_s *regs, const char *msg);
|
||||
#else
|
||||
# define imx9_dmadump(handle,regs,msg)
|
||||
#endif
|
||||
|
||||
#undef EXTERN
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
#endif /* __ARCH_ARM_SRC_IMX9_IMX9_EDMA_H */
|
2161
arch/arm/src/imx9/imx9_flexcan.c
Normal file
2161
arch/arm/src/imx9/imx9_flexcan.c
Normal file
File diff suppressed because it is too large
Load diff
87
arch/arm/src/imx9/imx9_flexcan.h
Normal file
87
arch/arm/src/imx9/imx9_flexcan.h
Normal file
|
@ -0,0 +1,87 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/imx9_flexcan.h
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ARCH_ARM_SRC_IMX9_IMX9_FLEXCAN_H
|
||||
#define __ARCH_ARM_SRC_IMX9_IMX9_FLEXCAN_H
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#include "hardware/imx9_flexcan.h"
|
||||
|
||||
#ifdef CONFIG_IMX9_FLEXCAN
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Public Function Prototypes
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
#undef EXTERN
|
||||
#if defined(__cplusplus)
|
||||
#define EXTERN extern "C"
|
||||
extern "C"
|
||||
{
|
||||
#else
|
||||
#define EXTERN extern
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Function: arm_caninitialize
|
||||
*
|
||||
* Description:
|
||||
* Initialize the enabled CAN device interfaces. If there are more
|
||||
* different network devices in the chip, then board-specific logic will
|
||||
* have to provide this function to determine which, if any, network
|
||||
* devices should be initialized.
|
||||
*
|
||||
* Input Parameters:
|
||||
* None
|
||||
*
|
||||
* Returned Value:
|
||||
* OK on success; Negated errno on failure.
|
||||
*
|
||||
* Assumptions:
|
||||
* Called very early in the initialization sequence.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_NETDEV_LATEINIT
|
||||
int imx9_caninitialize(int intf);
|
||||
#endif
|
||||
|
||||
#undef EXTERN
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
#endif /* CONFIG_IMX9_FLEXCAN */
|
||||
#endif /* __ARCH_ARM_SRC_IMX9_IMX9_FLEXCAN_H */
|
281
arch/arm/src/imx9/imx9_gpio.c
Normal file
281
arch/arm/src/imx9/imx9_gpio.c
Normal file
|
@ -0,0 +1,281 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/imx9_gpio.c
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include <assert.h>
|
||||
#include <errno.h>
|
||||
|
||||
#include <nuttx/irq.h>
|
||||
|
||||
#include <imx9_gpiobase.c>
|
||||
|
||||
#include "chip.h"
|
||||
#include "arm_internal.h"
|
||||
#include "imx9_iomuxc.h"
|
||||
#include "imx9_gpio.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Private Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_gpio_dirout
|
||||
****************************************************************************/
|
||||
|
||||
static inline void imx9_gpio_dirout(uint32_t port, uint32_t pin)
|
||||
{
|
||||
uint32_t regval = getreg32(IMX9_GPIO_PDDR(port));
|
||||
regval |= GPIO_PIN(pin);
|
||||
putreg32(regval, IMX9_GPIO_PDDR(port));
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_gpio_dirin
|
||||
****************************************************************************/
|
||||
|
||||
static inline void imx9_gpio_dirin(uint32_t port, uint32_t pin)
|
||||
{
|
||||
uint32_t regval = getreg32(IMX9_GPIO_PDDR(port));
|
||||
regval &= ~GPIO_PIN(pin);
|
||||
putreg32(regval, IMX9_GPIO_PDDR(port));
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_gpio_setoutput
|
||||
****************************************************************************/
|
||||
|
||||
static void imx9_gpio_setoutput(uint32_t port, uint32_t pin, bool value)
|
||||
{
|
||||
uintptr_t regaddr = IMX9_GPIO_PDOR(port);
|
||||
uint32_t regval;
|
||||
|
||||
regval = getreg32(regaddr);
|
||||
if (value)
|
||||
{
|
||||
regval |= GPIO_PIN(pin);
|
||||
}
|
||||
else
|
||||
{
|
||||
regval &= ~GPIO_PIN(pin);
|
||||
}
|
||||
|
||||
putreg32(regval, regaddr);
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_gpio_getpin_status
|
||||
****************************************************************************/
|
||||
|
||||
static inline bool imx9_gpio_get_pinstatus(uint32_t port, uint32_t pin)
|
||||
{
|
||||
uintptr_t regaddr = IMX9_GPIO_PSOR(port);
|
||||
uint32_t regval;
|
||||
|
||||
regval = getreg32(regaddr);
|
||||
return ((regval & GPIO_PIN(pin)) != 0);
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_gpio_getinput
|
||||
****************************************************************************/
|
||||
|
||||
static inline bool imx9_gpio_getinput(uint32_t port, uint32_t pin)
|
||||
{
|
||||
uintptr_t regaddr = IMX9_GPIO_PDIR(port);
|
||||
uint32_t regval;
|
||||
|
||||
regval = getreg32(regaddr);
|
||||
return ((regval & GPIO_PIN(pin)) != 0);
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_gpio_configinput
|
||||
****************************************************************************/
|
||||
|
||||
static int imx9_gpio_configinput(gpio_pinset_t pinset)
|
||||
{
|
||||
uint32_t port = (pinset & GPIO_PORT_MASK) >> GPIO_PORT_SHIFT;
|
||||
uint32_t pin = (pinset & GPIO_PIN_MASK) >> GPIO_PIN_SHIFT;
|
||||
|
||||
DEBUGASSERT((unsigned int)port < IMX9_GPIO_NPORTS);
|
||||
|
||||
/* Configure pin as in input */
|
||||
|
||||
imx9_gpio_dirin(port, pin);
|
||||
|
||||
return OK;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_gpio_configoutput
|
||||
****************************************************************************/
|
||||
|
||||
static inline int imx9_gpio_configoutput(gpio_pinset_t pinset)
|
||||
{
|
||||
uint32_t port = (pinset & GPIO_PORT_MASK) >> GPIO_PORT_SHIFT;
|
||||
uint32_t pin = (pinset & GPIO_PIN_MASK) >> GPIO_PIN_SHIFT;
|
||||
bool value = ((pinset & GPIO_OUTPUT_ONE) != 0);
|
||||
|
||||
DEBUGASSERT((unsigned int)port < IMX9_GPIO_NPORTS);
|
||||
|
||||
/* Set the output value */
|
||||
|
||||
imx9_gpio_setoutput(port, pin, value);
|
||||
|
||||
/* Convert the configured input GPIO to an output */
|
||||
|
||||
imx9_gpio_dirout(port, pin);
|
||||
return OK;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_config_gpio
|
||||
*
|
||||
* Description:
|
||||
* Configure a GPIO pin based on pin-encoded description of the pin.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
int imx9_config_gpio(gpio_pinset_t pinset)
|
||||
{
|
||||
irqstate_t flags;
|
||||
int ret;
|
||||
|
||||
/* Configure the pin as an input initially to avoid any spurious outputs */
|
||||
|
||||
flags = enter_critical_section();
|
||||
|
||||
/* Configure based upon the pin mode */
|
||||
|
||||
switch (pinset & GPIO_MODE_MASK)
|
||||
{
|
||||
case GPIO_INPUT:
|
||||
{
|
||||
/* Configure the pin as a GPIO input */
|
||||
|
||||
ret = imx9_gpio_configinput(pinset);
|
||||
}
|
||||
break;
|
||||
|
||||
case GPIO_OUTPUT:
|
||||
{
|
||||
/* First configure the pin as a GPIO input to avoid output
|
||||
* glitches.
|
||||
*/
|
||||
|
||||
ret = imx9_gpio_configinput(pinset);
|
||||
if (ret >= 0)
|
||||
{
|
||||
/* Convert the input to an output */
|
||||
|
||||
ret = imx9_gpio_configoutput(pinset);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
#ifdef CONFIG_IMX9_GPIO_IRQ
|
||||
case GPIO_INTERRUPT:
|
||||
{
|
||||
/* Configure the pin as a GPIO input */
|
||||
|
||||
ret = imx9_gpio_configinput(pinset);
|
||||
if (ret == OK)
|
||||
{
|
||||
ret = imx9_gpioirq_configure(pinset);
|
||||
}
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
|
||||
default:
|
||||
ret = -EINVAL;
|
||||
break;
|
||||
}
|
||||
|
||||
leave_critical_section(flags);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_gpio_write
|
||||
*
|
||||
* Description:
|
||||
* Write one or zero to the selected GPIO pin
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
void imx9_gpio_write(gpio_pinset_t pinset, bool value)
|
||||
{
|
||||
irqstate_t flags;
|
||||
uint32_t port = (pinset & GPIO_PORT_MASK) >> GPIO_PORT_SHIFT;
|
||||
uint32_t pin = (pinset & GPIO_PIN_MASK) >> GPIO_PIN_SHIFT;
|
||||
|
||||
DEBUGASSERT((unsigned int)port < IMX9_GPIO_NPORTS);
|
||||
|
||||
flags = enter_critical_section();
|
||||
imx9_gpio_setoutput(port, pin, value);
|
||||
leave_critical_section(flags);
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_gpio_read
|
||||
*
|
||||
* Description:
|
||||
* Read one or zero from the selected GPIO pin
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
bool imx9_gpio_read(gpio_pinset_t pinset)
|
||||
{
|
||||
irqstate_t flags;
|
||||
uint32_t port = (pinset & GPIO_PORT_MASK) >> GPIO_PORT_SHIFT;
|
||||
uint32_t pin = (pinset & GPIO_PIN_MASK) >> GPIO_PIN_SHIFT;
|
||||
bool value;
|
||||
|
||||
DEBUGASSERT((unsigned int)port < IMX9_GPIO_NPORTS);
|
||||
|
||||
flags = enter_critical_section();
|
||||
if ((pinset & (GPIO_OUTPUT)) == (GPIO_OUTPUT))
|
||||
{
|
||||
value = imx9_gpio_get_pinstatus(port, pin);
|
||||
}
|
||||
else
|
||||
{
|
||||
value = imx9_gpio_getinput(port, pin);
|
||||
}
|
||||
|
||||
leave_critical_section(flags);
|
||||
return value;
|
||||
}
|
340
arch/arm/src/imx9/imx9_gpio.h
Normal file
340
arch/arm/src/imx9/imx9_gpio.h
Normal file
|
@ -0,0 +1,340 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/imx9_gpio.h
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ARCH_ARM_SRC_IMX9_IMX9_GPIO_H
|
||||
#define __ARCH_ARM_SRC_IMX9_IMX9_GPIO_H
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
#include "chip.h"
|
||||
#include "hardware/imx9_gpio.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/* GPIO pinset is a 16-bit word used to configure the GPIO settings. The
|
||||
* encoding is as follows...
|
||||
*
|
||||
* 1111 1100 0000 0000
|
||||
* 5432 1098 7654 3210
|
||||
* ENCODING MMVX BEEG GGGP PPPP
|
||||
* GPIO INPUT 00.. BEEG GGGP PPPP
|
||||
* INT INPUT 11.. BEEG GGGP PPPP
|
||||
* GPIO OUTPUT 01V. ...G GGGP PPPP
|
||||
*/
|
||||
|
||||
/* Input/Output Selection:
|
||||
*
|
||||
* 1111 1100 0000 0000
|
||||
* 5432 1098 7654 3210
|
||||
* ENCODING MM.. .... .... ....
|
||||
*/
|
||||
|
||||
#define GPIO_MODE_SHIFT (14) /* Bits 14-15: Pin mode */
|
||||
#define GPIO_MODE_MASK (0x3 << GPIO_MODE_SHIFT)
|
||||
# define GPIO_INPUT (0 << GPIO_MODE_SHIFT) /* GPIO input */
|
||||
# define GPIO_OUTPUT (1 << GPIO_MODE_SHIFT) /* GPIO output */
|
||||
# define GPIO_INTERRUPT (2 << GPIO_MODE_SHIFT) /* Interrupt input */
|
||||
|
||||
/* Initial Output Value:
|
||||
*
|
||||
* 1111 1100 0000 0000
|
||||
* 5432 1098 7654 3210
|
||||
* GPIO OUTPUT 01V. .... .... ....
|
||||
*/
|
||||
|
||||
#define GPIO_OUTPUT_SHIFT (13) /* Bit 13: Initial output */
|
||||
#define GPIO_OUTPUT_MASK (0x1 << GPIO_OUTPUT_SHIFT)
|
||||
# define GPIO_OUTPUT_ZERO (0 << GPIO_OUTPUT_SHIFT) /* Bit 29: 0=Initial output is low */
|
||||
# define GPIO_OUTPUT_ONE (1 << GPIO_OUTPUT_SHIFT) /* Bit 29: 1=Initial output is high */
|
||||
|
||||
/* Interrupt on both edges configuration
|
||||
*
|
||||
* 1111 1100 0000 0000
|
||||
* 5432 1098 7654 3210
|
||||
* INT INPUT 11.. B... .... ....
|
||||
*/
|
||||
|
||||
#define GPIO_INTBOTHCFG_SHIFT (11) /* Bit 11: Interrupt both edges configuration */
|
||||
#define GPIO_INTBOTHCFG_MASK (1 << GPIO_INTBOTHCFG_SHIFT)
|
||||
# define GPIO_INTBOTH_EDGES (1 << GPIO_INTBOTHCFG_SHIFT)
|
||||
|
||||
/* Interrupt edge/level configuration
|
||||
*
|
||||
* 1111 1100 0000 0000
|
||||
* 5432 1098 7654 3210
|
||||
* INT INPUT 11.. .EE. .... ....
|
||||
*/
|
||||
|
||||
#define GPIO_INTCFG_SHIFT (9) /* Bits 9-10: Interrupt edge/level configuration */
|
||||
#define GPIO_INTCFG_MASK (0x3 << GPIO_INTCFG_SHIFT)
|
||||
# define GPIO_INT_LOWLEVEL (0 << GPIO_INTCFG_SHIFT)
|
||||
# define GPIO_INT_HIGHLEVEL (1 << GPIO_INTCFG_SHIFT)
|
||||
# define GPIO_INT_RISINGEDGE (2 << GPIO_INTCFG_SHIFT)
|
||||
# define GPIO_INT_FALLINGEDGE (3 << GPIO_INTCFG_SHIFT)
|
||||
|
||||
/* GPIO Port Number
|
||||
*
|
||||
* 1111 1100 0000 0000
|
||||
* 5432 1098 7654 3210
|
||||
* GPIO IN/OUT .... ...G GGG. ....
|
||||
*/
|
||||
|
||||
#define GPIO_PORT_SHIFT (5) /* Bits 5-8: GPIO port index */
|
||||
#define GPIO_PORT_MASK (0xf << GPIO_PORT_SHIFT)
|
||||
# define GPIO_PORT1 (GPIO1 << GPIO_PORT_SHIFT) /* GPIO1 */
|
||||
# define GPIO_PORT2 (GPIO2 << GPIO_PORT_SHIFT) /* GPIO2 */
|
||||
# define GPIO_PORT3 (GPIO3 << GPIO_PORT_SHIFT) /* GPIO3 */
|
||||
# define GPIO_PORT4 (GPIO4 << GPIO_PORT_SHIFT) /* GPIO4 */
|
||||
# define GPIO_PORT5 (GPIO5 << GPIO_PORT_SHIFT) /* GPIO5 */
|
||||
# define GPIO_PORT6 (GPIO6 << GPIO_PORT_SHIFT) /* GPIO6 */
|
||||
# define GPIO_PORT7 (GPIO7 << GPIO_PORT_SHIFT) /* GPIO7 */
|
||||
# define GPIO_PORT8 (GPIO8 << GPIO_PORT_SHIFT) /* GPIO8 */
|
||||
# define GPIO_PORT9 (GPIO9 << GPIO_PORT_SHIFT) /* GPIO9 */
|
||||
# define GPIO_PORT10 (GPIO10 << GPIO_PORT_SHIFT) /* GPIO10 */
|
||||
# define GPIO_PORT11 (GPIO11 << GPIO_PORT_SHIFT) /* GPIO11 */
|
||||
# define GPIO_PORT12 (GPIO12 << GPIO_PORT_SHIFT) /* GPIO12 */
|
||||
# define GPIO_PORT13 (GPIO13 << GPIO_PORT_SHIFT) /* GPIO13 */
|
||||
|
||||
/* GPIO Pin Number:
|
||||
*
|
||||
* 1111 1100 0000 0000
|
||||
* 5432 1098 7654 3210
|
||||
* GPIO IN/OUT .... .... ...P PPPP
|
||||
*/
|
||||
|
||||
#define GPIO_PIN_SHIFT (0) /* Bits 0-4: GPIO pin number */
|
||||
#define GPIO_PIN_MASK (0x1f << GPIO_PIN_SHIFT)
|
||||
# define GPIO_PIN0 (0 << GPIO_PIN_SHIFT) /* Pin 0 */
|
||||
# define GPIO_PIN1 (1 << GPIO_PIN_SHIFT) /* Pin 1 */
|
||||
# define GPIO_PIN2 (2 << GPIO_PIN_SHIFT) /* Pin 2 */
|
||||
# define GPIO_PIN3 (3 << GPIO_PIN_SHIFT) /* Pin 3 */
|
||||
# define GPIO_PIN4 (4 << GPIO_PIN_SHIFT) /* Pin 4 */
|
||||
# define GPIO_PIN5 (5 << GPIO_PIN_SHIFT) /* Pin 5 */
|
||||
# define GPIO_PIN6 (6 << GPIO_PIN_SHIFT) /* Pin 6 */
|
||||
# define GPIO_PIN7 (7 << GPIO_PIN_SHIFT) /* Pin 7 */
|
||||
# define GPIO_PIN8 (8 << GPIO_PIN_SHIFT) /* Pin 8 */
|
||||
# define GPIO_PIN9 (9 << GPIO_PIN_SHIFT) /* Pin 9 */
|
||||
# define GPIO_PIN10 (10 << GPIO_PIN_SHIFT) /* Pin 10 */
|
||||
# define GPIO_PIN11 (11 << GPIO_PIN_SHIFT) /* Pin 11 */
|
||||
# define GPIO_PIN12 (12 << GPIO_PIN_SHIFT) /* Pin 12 */
|
||||
# define GPIO_PIN13 (13 << GPIO_PIN_SHIFT) /* Pin 13 */
|
||||
# define GPIO_PIN14 (14 << GPIO_PIN_SHIFT) /* Pin 14 */
|
||||
# define GPIO_PIN15 (15 << GPIO_PIN_SHIFT) /* Pin 15 */
|
||||
# define GPIO_PIN16 (16 << GPIO_PIN_SHIFT) /* Pin 16 */
|
||||
# define GPIO_PIN17 (17 << GPIO_PIN_SHIFT) /* Pin 17 */
|
||||
# define GPIO_PIN18 (18 << GPIO_PIN_SHIFT) /* Pin 18 */
|
||||
# define GPIO_PIN19 (19 << GPIO_PIN_SHIFT) /* Pin 19 */
|
||||
# define GPIO_PIN20 (20 << GPIO_PIN_SHIFT) /* Pin 20 */
|
||||
# define GPIO_PIN21 (21 << GPIO_PIN_SHIFT) /* Pin 21 */
|
||||
# define GPIO_PIN22 (22 << GPIO_PIN_SHIFT) /* Pin 22 */
|
||||
# define GPIO_PIN23 (23 << GPIO_PIN_SHIFT) /* Pin 23 */
|
||||
# define GPIO_PIN24 (24 << GPIO_PIN_SHIFT) /* Pin 24 */
|
||||
# define GPIO_PIN25 (25 << GPIO_PIN_SHIFT) /* Pin 25 */
|
||||
# define GPIO_PIN26 (26 << GPIO_PIN_SHIFT) /* Pin 26 */
|
||||
# define GPIO_PIN27 (27 << GPIO_PIN_SHIFT) /* Pin 27 */
|
||||
# define GPIO_PIN28 (28 << GPIO_PIN_SHIFT) /* Pin 28 */
|
||||
# define GPIO_PIN29 (29 << GPIO_PIN_SHIFT) /* Pin 29 */
|
||||
# define GPIO_PIN30 (30 << GPIO_PIN_SHIFT) /* Pin 30 */
|
||||
# define GPIO_PIN31 (31 << GPIO_PIN_SHIFT) /* Pin 31 */
|
||||
|
||||
/* Port access via global LUT */
|
||||
|
||||
#define IMX9_GPIO_BASE(n) g_gpio_base[n] /* Use GPIO1..GPIOn macros as indices */
|
||||
|
||||
#define IMX9_GPIO_VERID(n) (IMX9_GPIO_BASE(n) + IMX9_GPIO_VERID_OFFSET)
|
||||
#define IMX9_GPIO_PARAM(n) (IMX9_GPIO_BASE(n) + IMX9_GPIO_PARAM_OFFSET)
|
||||
#define IMX9_GPIO_LOCK(n) (IMX9_GPIO_BASE(n) + IMX9_GPIO_LOCK_OFFSET)
|
||||
#define IMX9_GPIO_PCNS(n) (IMX9_GPIO_BASE(n) + IMX9_GPIO_PCNS_OFFSET)
|
||||
#define IMX9_GPIO_ICNS(n) (IMX9_GPIO_BASE(n) + IMX9_GPIO_ICNS_OFFSET)
|
||||
#define IMX9_GPIO_PCNP(n) (IMX9_GPIO_BASE(n) + IMX9_GPIO_PCNP_OFFSET)
|
||||
#define IMX9_GPIO_ICNP(n) (IMX9_GPIO_BASE(n) + IMX9_GPIO_ICNP_OFFSET)
|
||||
#define IMX9_GPIO_PDOR(n) (IMX9_GPIO_BASE(n) + IMX9_GPIO_PDOR_OFFSET)
|
||||
#define IMX9_GPIO_PSOR(n) (IMX9_GPIO_BASE(n) + IMX9_GPIO_PSOR_OFFSET)
|
||||
#define IMX9_GPIO_PCOR(n) (IMX9_GPIO_BASE(n) + IMX9_GPIO_PCOR_OFFSET)
|
||||
#define IMX9_GPIO_PTOR(n) (IMX9_GPIO_BASE(n) + IMX9_GPIO_PTOR_OFFSET)
|
||||
#define IMX9_GPIO_PDIR(n) (IMX9_GPIO_BASE(n) + IMX9_GPIO_PDIR_OFFSET)
|
||||
#define IMX9_GPIO_PDDR(n) (IMX9_GPIO_BASE(n) + IMX9_GPIO_PDDR_OFFSET)
|
||||
#define IMX9_GPIO_PIDR(n) (IMX9_GPIO_BASE(n) + IMX9_GPIO_PIDR_OFFSET)
|
||||
#define IMX9_GPIO_GICLR(n) (IMX9_GPIO_BASE(n) + IMX9_GPIO_GICLR_OFFSET)
|
||||
#define IMX9_GPIO_GICHR(n) (IMX9_GPIO_BASE(n) + IMX9_GPIO_GICHR_OFFSET)
|
||||
|
||||
/* Interrupt status flags, these have two channels. Channel is selected by
|
||||
* setting / clearing ICRN.IRQS bit.
|
||||
*/
|
||||
|
||||
#define IMX9_GPIO_ISFR0(n) (IMX9_GPIO_BASE(n) + IMX9_GPIO_ISFR0_OFFSET)
|
||||
#define IMX9_GPIO_ISFR1(n) (IMX9_GPIO_BASE(n) + IMX9_GPIO_ISFR1_OFFSET)
|
||||
|
||||
/* GPIO PIN[0...31] and ICR[0...31] */
|
||||
|
||||
#define IMX9_GPIO_P0DR(n) (IMX9_GPIO_BASE(n) + IMX9_GPIO_P0DR_OFFSET)
|
||||
#define IMX9_GPIO_PNDR(n, p) (IMX9_GPIO_P0DR(n) + ((p) * 0x4))
|
||||
#define IMX9_GPIO_ICR0(n) (IMX9_GPIO_BASE(n) + IMX9_GPIO_ICR0_OFFSET)
|
||||
#define IMX9_GPIO_ICRN(n, p) (IMX9_GPIO_ICR0(n) + ((p) * 0x4))
|
||||
|
||||
/****************************************************************************
|
||||
* Public Types
|
||||
****************************************************************************/
|
||||
|
||||
/* The smallest integer type that can hold the GPIO encoding */
|
||||
|
||||
typedef uint16_t gpio_pinset_t;
|
||||
|
||||
/****************************************************************************
|
||||
* Public Data
|
||||
****************************************************************************/
|
||||
|
||||
#undef EXTERN
|
||||
#if defined(__cplusplus)
|
||||
#define EXTERN extern "C"
|
||||
extern "C"
|
||||
{
|
||||
#else
|
||||
#define EXTERN extern
|
||||
#endif
|
||||
|
||||
/* Look-up table that maps GPIO1..GPIOn indexes into GPIO register base
|
||||
* addresses
|
||||
*/
|
||||
|
||||
EXTERN const uintptr_t g_gpio_base[];
|
||||
|
||||
/****************************************************************************
|
||||
* Public Function Prototypes
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_gpioirq_initialize
|
||||
*
|
||||
* Description:
|
||||
* Initialize logic to support a second level of interrupt decoding for
|
||||
* GPIO pins.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_IMX9_GPIO_IRQ
|
||||
void imx9_gpioirq_initialize(void);
|
||||
#else
|
||||
# define imx9_gpioirq_initialize()
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_config_gpio
|
||||
*
|
||||
* Description:
|
||||
* Configure a GPIO pin based on bit-encoded description of the pin.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
int imx9_config_gpio(gpio_pinset_t pinset);
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_gpio_write
|
||||
*
|
||||
* Description:
|
||||
* Write one or zero to the selected GPIO pin
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
void imx9_gpio_write(gpio_pinset_t pinset, bool value);
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_gpio_read
|
||||
*
|
||||
* Description:
|
||||
* Read one or zero from the selected GPIO pin
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
bool imx9_gpio_read(gpio_pinset_t pinset);
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_gpioirq_attach
|
||||
*
|
||||
* Description:
|
||||
* Attach a pin interrupt handler.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_IMX9_GPIO_IRQ
|
||||
int imx9_gpioirq_attach(gpio_pinset_t pinset, xcpt_t isr, void *arg);
|
||||
#else
|
||||
#define imx9_gpioirq_attach(pinset, isr, arg) 0
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_gpioirq_configure
|
||||
*
|
||||
* Description:
|
||||
* Configure an interrupt for the specified GPIO pin.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_IMX9_GPIO_IRQ
|
||||
int imx9_gpioirq_configure(gpio_pinset_t pinset);
|
||||
#else
|
||||
# define imx9_gpioirq_configure(pinset) 0
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_gpioirq_enable
|
||||
*
|
||||
* Description:
|
||||
* Enable the interrupt for specified GPIO IRQ
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_IMX9_GPIO_IRQ
|
||||
int imx9_gpioirq_enable(gpio_pinset_t pinset);
|
||||
#else
|
||||
# define imx9_gpioirq_enable(pinset) 0
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_gpioirq_disable
|
||||
*
|
||||
* Description:
|
||||
* Disable the interrupt for specified GPIO IRQ
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_IMX9_GPIO_IRQ
|
||||
int imx9_gpioirq_disable(gpio_pinset_t pinset);
|
||||
#else
|
||||
# define imx9_gpioirq_disable(pinset) 0
|
||||
#endif
|
||||
|
||||
#undef EXTERN
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
#endif
|
||||
#endif /* __ARCH_ARM_SRC_IMX9_IMX9_GPIO_H */
|
62
arch/arm/src/imx9/imx9_gpiobase.c
Normal file
62
arch/arm/src/imx9/imx9_gpiobase.c
Normal file
|
@ -0,0 +1,62 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/imx9_gpiobase.c
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#include "imx9_gpio.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Public Data
|
||||
****************************************************************************/
|
||||
|
||||
#if defined(CONFIG_ARCH_CHIP_IMX93)
|
||||
/* Base address for the GPIO memory mapped registers */
|
||||
|
||||
const uintptr_t g_gpio_base[] =
|
||||
{
|
||||
IMX9_GPIO1_BASE,
|
||||
IMX9_GPIO2_BASE,
|
||||
IMX9_GPIO3_BASE,
|
||||
IMX9_GPIO4_BASE,
|
||||
};
|
||||
#elif defined(CONFIG_ARCH_CHIP_IMX9_CORTEX_M)
|
||||
/* Base address for the GPIO memory mapped registers */
|
||||
|
||||
const uintptr_t g_gpio_base[] =
|
||||
{
|
||||
IMX9_GPIO1_BASE,
|
||||
IMX9_GPIO2_BASE,
|
||||
IMX9_GPIO3_BASE,
|
||||
IMX9_GPIO4_BASE,
|
||||
};
|
||||
#else
|
||||
# error Unrecognized i.MX9 architecture
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
309
arch/arm/src/imx9/imx9_gpioirq.c
Normal file
309
arch/arm/src/imx9/imx9_gpioirq.c
Normal file
|
@ -0,0 +1,309 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/imx9_gpioirq.c
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#include <stdint.h>
|
||||
#include <assert.h>
|
||||
#include <errno.h>
|
||||
#include <debug.h>
|
||||
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/irq.h>
|
||||
|
||||
#include "arm_internal.h"
|
||||
#include "imx9_gpio.h"
|
||||
|
||||
#ifdef CONFIG_IMX9_GPIO_IRQ
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Private Types
|
||||
****************************************************************************/
|
||||
|
||||
struct imx9_portisr_s
|
||||
{
|
||||
struct
|
||||
{
|
||||
xcpt_t isr; /* The interrupt service routine */
|
||||
void *arg; /* Argument passed to it */
|
||||
}
|
||||
pins[IMX9_GPIO_NPINS];
|
||||
};
|
||||
|
||||
/****************************************************************************
|
||||
* Private Data
|
||||
****************************************************************************/
|
||||
|
||||
static struct imx9_portisr_s g_isrtab[IMX9_GPIO_NPORTS];
|
||||
|
||||
/****************************************************************************
|
||||
* Private Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_gpio_interrupt
|
||||
*
|
||||
* Description:
|
||||
* GPIO interrupt handlers. iMX9 has two interrupt sources for each pin,
|
||||
* the NuttX driver uses source 0.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int imx9_gpio_interrupt(int irq, void *context, void *arg)
|
||||
{
|
||||
uint32_t port = (uint32_t)((uintptr_t)arg) >> GPIO_PORT_SHIFT;
|
||||
uint32_t status;
|
||||
uint32_t pin;
|
||||
uint32_t regaddr;
|
||||
|
||||
/* Get the pending interrupt indications */
|
||||
|
||||
regaddr = IMX9_GPIO_ISFR0(port);
|
||||
status = getreg32(regaddr);
|
||||
|
||||
/* Decode the pending interrupts */
|
||||
|
||||
for (pin = 0; pin < 32 && status != 0; pin++)
|
||||
{
|
||||
/* Is the IRQ associated with this pin pending? */
|
||||
|
||||
uint32_t mask = (1 << pin);
|
||||
if ((status & mask) != 0)
|
||||
{
|
||||
struct imx9_portisr_s *isrtab;
|
||||
|
||||
/* Yes, clear the status bit and dispatch the interrupt */
|
||||
|
||||
putreg32(mask, regaddr);
|
||||
status &= ~mask;
|
||||
|
||||
/* Get the interrupt table for this port */
|
||||
|
||||
isrtab = &g_isrtab[port];
|
||||
if (isrtab->pins[pin].isr != NULL)
|
||||
{
|
||||
/* Run the user handler with the user's argument */
|
||||
|
||||
isrtab->pins[pin].isr(irq, context, isrtab->pins[pin].arg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return OK;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_gpioirq_initialize
|
||||
*
|
||||
* Description:
|
||||
* Initialize logic to support a second level of interrupt decoding for
|
||||
* GPIO pins.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
void imx9_gpioirq_initialize(void)
|
||||
{
|
||||
/* Do not loop over all GPIOs on IMX95 because some IOs may not be
|
||||
* accessible depending on the system managers configuration
|
||||
*/
|
||||
|
||||
#ifndef CONFIG_ARCH_CHIP_IMX95_M7
|
||||
uint32_t port;
|
||||
uint32_t pin;
|
||||
|
||||
/* Disable all GPIO interrupts at the source */
|
||||
|
||||
for (port = 0; port < IMX9_GPIO_NPORTS; port++)
|
||||
{
|
||||
for (pin = 0; pin < IMX9_GPIO_NPINS; pin++)
|
||||
{
|
||||
/* Reset the interrupt configuration, disabling the interrupt */
|
||||
|
||||
putreg32(0, IMX9_GPIO_ICRN(port, pin));
|
||||
}
|
||||
}
|
||||
#endif /* CONFIG_ARCH_CHIP_IMX95_M7 */
|
||||
|
||||
/* Disable all GPIO interrupts */
|
||||
|
||||
up_disable_irq(IMX9_IRQ_GPIO1_0);
|
||||
up_disable_irq(IMX9_IRQ_GPIO1_1);
|
||||
|
||||
up_disable_irq(IMX9_IRQ_GPIO2_0);
|
||||
up_disable_irq(IMX9_IRQ_GPIO2_1);
|
||||
|
||||
up_disable_irq(IMX9_IRQ_GPIO3_0);
|
||||
up_disable_irq(IMX9_IRQ_GPIO3_1);
|
||||
|
||||
up_disable_irq(IMX9_IRQ_GPIO4_0);
|
||||
up_disable_irq(IMX9_IRQ_GPIO4_1);
|
||||
|
||||
/* Attach the common GPIO interrupt handler and enable the interrupt */
|
||||
|
||||
DEBUGVERIFY(irq_attach(IMX9_IRQ_GPIO1_0,
|
||||
imx9_gpio_interrupt, (void *)GPIO_PORT1));
|
||||
up_enable_irq(IMX9_IRQ_GPIO1_0);
|
||||
|
||||
DEBUGVERIFY(irq_attach(IMX9_IRQ_GPIO2_0,
|
||||
imx9_gpio_interrupt, (void *)GPIO_PORT2));
|
||||
up_enable_irq(IMX9_IRQ_GPIO2_0);
|
||||
|
||||
DEBUGVERIFY(irq_attach(IMX9_IRQ_GPIO3_0,
|
||||
imx9_gpio_interrupt, (void *)GPIO_PORT3));
|
||||
up_enable_irq(IMX9_IRQ_GPIO3_0);
|
||||
|
||||
DEBUGVERIFY(irq_attach(IMX9_IRQ_GPIO4_0,
|
||||
imx9_gpio_interrupt, (void *)GPIO_PORT4));
|
||||
up_enable_irq(IMX9_IRQ_GPIO4_0);
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_gpioirq_attach
|
||||
*
|
||||
* Description:
|
||||
* Attach a pin interrupt handler.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
int imx9_gpioirq_attach(gpio_pinset_t pinset, xcpt_t isr, void *arg)
|
||||
{
|
||||
uint32_t port = (pinset & GPIO_PORT_MASK) >> GPIO_PORT_SHIFT;
|
||||
uint32_t pin = (pinset & GPIO_PIN_MASK) >> GPIO_PIN_SHIFT;
|
||||
|
||||
/* Atomically change the handler */
|
||||
|
||||
irqstate_t flags = enter_critical_section();
|
||||
|
||||
g_isrtab[port].pins[pin].isr = isr;
|
||||
g_isrtab[port].pins[pin].arg = arg;
|
||||
|
||||
leave_critical_section(flags);
|
||||
return OK;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_gpioirq_configure
|
||||
*
|
||||
* Description:
|
||||
* Configure an interrupt for the specified GPIO pin.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
int imx9_gpioirq_configure(gpio_pinset_t pinset)
|
||||
{
|
||||
uint32_t port = (pinset & GPIO_PORT_MASK) >> GPIO_PORT_SHIFT;
|
||||
uint32_t pin = (pinset & GPIO_PIN_MASK) >> GPIO_PIN_SHIFT;
|
||||
|
||||
/* Nothing much to do here, just reset the IRQ config */
|
||||
|
||||
putreg32(0, IMX9_GPIO_ICRN(port, pin));
|
||||
|
||||
return OK;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_gpioirq_enable
|
||||
*
|
||||
* Description:
|
||||
* Enable the interrupt for specified GPIO IRQ
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
int imx9_gpioirq_enable(gpio_pinset_t pinset)
|
||||
{
|
||||
uint32_t port = (pinset & GPIO_PORT_MASK) >> GPIO_PORT_SHIFT;
|
||||
uint32_t pin = (pinset & GPIO_PIN_MASK) >> GPIO_PIN_SHIFT;
|
||||
uint32_t both = (pinset & GPIO_INTBOTHCFG_MASK) >> GPIO_INTBOTHCFG_SHIFT;
|
||||
uint32_t icr = (pinset & GPIO_INTCFG_MASK);
|
||||
uint32_t regval;
|
||||
uintptr_t regaddr;
|
||||
|
||||
/* Perform RMW to the specific pin */
|
||||
|
||||
regaddr = IMX9_GPIO_ICRN(port, pin);
|
||||
regval = getreg32(regaddr);
|
||||
regval &= ~IMX9_GPIO_ICRN_MASK;
|
||||
|
||||
if (both)
|
||||
{
|
||||
regval |= IMX9_GPIO_ICRN_BOTH;
|
||||
}
|
||||
else if (icr == GPIO_INT_LOWLEVEL)
|
||||
{
|
||||
regval |= IMX9_GPIO_ICRN_ZERO;
|
||||
}
|
||||
else if (icr == GPIO_INT_HIGHLEVEL)
|
||||
{
|
||||
regval |= IMX9_GPIO_ICRN_ONE;
|
||||
}
|
||||
else if (icr == GPIO_INT_RISINGEDGE)
|
||||
{
|
||||
regval |= IMX9_GPIO_ICRN_RISING;
|
||||
}
|
||||
else /* GPIO_INT_FALLINGEDGE */
|
||||
{
|
||||
regval |= IMX9_GPIO_ICRN_FALLING;
|
||||
}
|
||||
|
||||
putreg32(regval, regaddr);
|
||||
return OK;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_gpioirq_disable
|
||||
*
|
||||
* Description:
|
||||
* Disable the interrupt for specified GPIO IRQ
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
int imx9_gpioirq_disable(gpio_pinset_t pinset)
|
||||
{
|
||||
uint32_t port = (pinset & GPIO_PORT_MASK) >> GPIO_PORT_SHIFT;
|
||||
uint32_t pin = (pinset & GPIO_PIN_MASK) >> GPIO_PIN_SHIFT;
|
||||
uint32_t regval;
|
||||
uintptr_t regaddr;
|
||||
|
||||
/* Perform RMW to the specific pin */
|
||||
|
||||
regaddr = IMX9_GPIO_ICRN(port, pin);
|
||||
regval = getreg32(regaddr);
|
||||
regval &= ~IMX9_GPIO_ICRN_MASK;
|
||||
|
||||
putreg32(regval, regaddr);
|
||||
return OK;
|
||||
}
|
||||
|
||||
#endif /* CONFIG_IMX9_GPIO_IRQ */
|
174
arch/arm/src/imx9/imx9_idle.c
Normal file
174
arch/arm/src/imx9/imx9_idle.c
Normal file
|
@ -0,0 +1,174 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/imx9_idle.c
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <arch/board/board.h>
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#include <debug.h>
|
||||
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/board.h>
|
||||
#include <nuttx/power/pm.h>
|
||||
|
||||
#include <nuttx/irq.h>
|
||||
|
||||
#include "chip.h"
|
||||
#include "arm_internal.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/* Does the board support an IDLE LED to indicate that the board is in the
|
||||
* IDLE state?
|
||||
*/
|
||||
|
||||
#if defined(CONFIG_ARCH_LEDS) && defined(LED_IDLE)
|
||||
# define BEGIN_IDLE() board_autoled_on(LED_IDLE)
|
||||
# define END_IDLE() board_autoled_off(LED_IDLE)
|
||||
#else
|
||||
# define BEGIN_IDLE()
|
||||
# define END_IDLE()
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Private Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: up_idlepm
|
||||
*
|
||||
* Description:
|
||||
* Perform IDLE state power management.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
static void up_idlepm(void)
|
||||
{
|
||||
static enum pm_state_e oldstate = PM_NORMAL;
|
||||
enum pm_state_e newstate;
|
||||
irqstate_t flags;
|
||||
int ret;
|
||||
|
||||
/* Decide, which power saving level can be obtained */
|
||||
|
||||
newstate = pm_checkstate(PM_IDLE_DOMAIN);
|
||||
|
||||
/* Check for state changes */
|
||||
|
||||
if (newstate != oldstate)
|
||||
{
|
||||
flags = enter_critical_section();
|
||||
|
||||
/* Perform board-specific, state-dependent logic here */
|
||||
|
||||
pwrinfo("newstate= %d oldstate=%d\n", newstate, oldstate);
|
||||
|
||||
/* Then force the global state change */
|
||||
|
||||
ret = pm_changestate(PM_IDLE_DOMAIN, newstate);
|
||||
if (ret < 0)
|
||||
{
|
||||
/* The new state change failed, revert to the preceding state */
|
||||
|
||||
pm_changestate(PM_IDLE_DOMAIN, oldstate);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Save the new state */
|
||||
|
||||
oldstate = newstate;
|
||||
}
|
||||
|
||||
/* MCU-specific power management logic */
|
||||
|
||||
switch (newstate)
|
||||
{
|
||||
case PM_NORMAL:
|
||||
break;
|
||||
|
||||
case PM_IDLE:
|
||||
break;
|
||||
|
||||
case PM_STANDBY:
|
||||
imx9_pmstop(true);
|
||||
break;
|
||||
|
||||
case PM_SLEEP:
|
||||
imx9_pmstandby();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
leave_critical_section(flags);
|
||||
}
|
||||
}
|
||||
#else
|
||||
# define up_idlepm()
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: up_idle
|
||||
*
|
||||
* Description:
|
||||
* up_idle() is the logic that will be executed when there is no other
|
||||
* ready-to-run task. This is processor idle time and will continue until
|
||||
* some interrupt occurs to cause a context switch from the idle task.
|
||||
*
|
||||
* Processing in this state may be processor-specific. e.g., this is where
|
||||
* power management operations might be performed.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
void up_idle(void)
|
||||
{
|
||||
#if defined(CONFIG_SUPPRESS_INTERRUPTS) || defined(CONFIG_SUPPRESS_TIMER_INTS)
|
||||
/* If the system is idle and there are no timer interrupts, then process
|
||||
* "fake" timer interrupts. Hopefully, something will wake up.
|
||||
*/
|
||||
|
||||
nxsched_process_timer();
|
||||
#else
|
||||
|
||||
/* Perform IDLE mode power management */
|
||||
|
||||
up_idlepm();
|
||||
|
||||
/* Sleep until an interrupt occurs to save power. */
|
||||
|
||||
BEGIN_IDLE();
|
||||
asm("WFI");
|
||||
END_IDLE();
|
||||
#endif
|
||||
}
|
207
arch/arm/src/imx9/imx9_iomuxc.c
Normal file
207
arch/arm/src/imx9/imx9_iomuxc.c
Normal file
|
@ -0,0 +1,207 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/imx9_iomuxc.c
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#include "arm_internal.h"
|
||||
#include "hardware/imx9_memorymap.h"
|
||||
#include "imx9_iomuxc.h"
|
||||
|
||||
#ifdef CONFIG_IMX9_IOMUX_OVER_SCMI
|
||||
#include "imx9_scmi.h"
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_iomux_configure
|
||||
*
|
||||
* Description:
|
||||
* This function writes the encoded pad configuration to the Pad Control
|
||||
* register.
|
||||
*
|
||||
* Input Parameters:
|
||||
* cfg - The IOMUX configuration
|
||||
*
|
||||
* Returned Value:
|
||||
* Zero (OK) on success; a negated errno value on failure.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_IMX9_IOMUX_OVER_SCMI
|
||||
|
||||
/* Sets the IOMUXC pin mux mode.
|
||||
*/
|
||||
|
||||
void imx9_sm_iomucx_configure(sm_pinctrl_t *sm_pinctrl)
|
||||
{
|
||||
scmi_pin_config_t configs[4];
|
||||
uint32_t num_configs = 0;
|
||||
uint32_t channel = sm_pinctrl->channel;
|
||||
uint32_t mux_register = sm_pinctrl->mux_register;
|
||||
uint32_t mux_mode = sm_pinctrl->mux_mode;
|
||||
uint32_t input_register = sm_pinctrl->input_register;
|
||||
uint32_t input_daisy = sm_pinctrl->input_daisy;
|
||||
uint32_t input_on_field = sm_pinctrl->input_on_field;
|
||||
uint32_t config_register = sm_pinctrl->config_register;
|
||||
uint32_t config_value = sm_pinctrl->config_value;
|
||||
|
||||
if (mux_register)
|
||||
{
|
||||
configs[num_configs].type = SCMI_PINCTRL_TYPE_MUX;
|
||||
configs[num_configs].value = SM_PLATFORM_PINCTRL_MUX_MODE(mux_mode)
|
||||
| SM_PLATFORM_PINCTRL_SION(
|
||||
input_on_field);
|
||||
num_configs++;
|
||||
}
|
||||
|
||||
if (input_register & 0xffff)
|
||||
{
|
||||
configs[num_configs].type = SCMI_PINCTRL_TYPE_DAISY_ID;
|
||||
configs[num_configs].value =
|
||||
(input_register - SM_PLATFORM_PINCTRL_DAISYREG_OFF) / 4;
|
||||
num_configs++;
|
||||
configs[num_configs].type = SCMI_PINCTRL_TYPE_DAISY_CFG;
|
||||
configs[num_configs].value = input_daisy;
|
||||
num_configs++;
|
||||
}
|
||||
|
||||
if (config_register)
|
||||
{
|
||||
configs[num_configs].type = SCMI_PINCTRL_TYPE_CONFIG;
|
||||
configs[num_configs].value = config_value;
|
||||
num_configs++;
|
||||
}
|
||||
|
||||
if (mux_register || input_register)
|
||||
{
|
||||
uint32_t attributes = SCMI_PINCTRL_SET_ATTR_SELECTOR(
|
||||
SCMI_PINCTRL_SEL_PIN)
|
||||
| SCMI_PINCTRL_SET_ATTR_NUM_CONFIGS(
|
||||
num_configs);
|
||||
|
||||
imx9_scmi_pinctrlconfigset(
|
||||
channel, (mux_register - SM_PLATFORM_PINCTRL_MUXREG_OFF) / 4,
|
||||
attributes, configs);
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
int imx9_iomux_configure(iomux_cfg_t cfg)
|
||||
{
|
||||
#ifdef CONFIG_IMX9_IOMUX_OVER_SCMI
|
||||
sm_pinctrl_t sm_pinctrl =
|
||||
{
|
||||
0
|
||||
};
|
||||
|
||||
sm_pinctrl.channel = SM_PLATFORM_A2P;
|
||||
sm_pinctrl.mux_register = IMX9_IOMUXC_BASE + cfg.padcfg.ctlregoff;
|
||||
sm_pinctrl.mux_mode = cfg.padcfg.mode;
|
||||
sm_pinctrl.input_register = IMX9_IOMUXC_BASE + cfg.padcfg.dsyregoff;
|
||||
sm_pinctrl.input_daisy = cfg.padcfg.dsy;
|
||||
sm_pinctrl.config_register = IMX9_IOMUXC_BASE + cfg.padcfg.padregoff;
|
||||
sm_pinctrl.config_value = cfg.pad;
|
||||
sm_pinctrl.input_on_field = cfg.sion;
|
||||
|
||||
imx9_sm_iomucx_configure(&sm_pinctrl);
|
||||
#else
|
||||
if (!cfg.padcfg.ctlregoff)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
putreg32(cfg.padcfg.mode | (cfg.sion << IOMUXC_MUX_SION_SHIFT),
|
||||
IMX9_IOMUXC_BASE + cfg.padcfg.ctlregoff);
|
||||
|
||||
if (cfg.padcfg.dsyregoff)
|
||||
{
|
||||
putreg32(cfg.padcfg.dsy, IMX9_IOMUXC_BASE + cfg.padcfg.dsyregoff);
|
||||
}
|
||||
|
||||
if (cfg.padcfg.padregoff)
|
||||
{
|
||||
putreg32(cfg.pad << IOMUXC_PAD_CONFIG_SHIFT,
|
||||
IMX9_IOMUXC_BASE + cfg.padcfg.padregoff);
|
||||
}
|
||||
|
||||
return OK;
|
||||
#endif
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_iomux_configure
|
||||
*
|
||||
* Description:
|
||||
* This can be used to forcibly set a pad to GPIO mode. This overrides and
|
||||
* disconnects any peripheral using the pin.
|
||||
*
|
||||
* Input Parameters:
|
||||
* cfg - The IOMUX configuration.
|
||||
* sion - if true; sets SION, otherwise clears it.
|
||||
*
|
||||
* Returned Value:
|
||||
* Zero (OK) on success; a negated errno value on failure.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
int imx9_iomux_gpio(iomux_cfg_t cfg, bool sion)
|
||||
{
|
||||
uint32_t reg_sion;
|
||||
|
||||
if (!cfg.padcfg.ctlregoff)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
/* Set sion if requested to do so */
|
||||
|
||||
reg_sion = sion ? IOMUXC_MUX_SION_ON : 0;
|
||||
|
||||
/* Based on pad number, either ALT0/ALT5 sets the pad as GPIO */
|
||||
|
||||
if ((cfg.padcfg.ctlregoff >= IOMUXC_MUX_CTL_GPIO_IO00_OFFSET)
|
||||
&& (cfg.padcfg.ctlregoff <= IOMUXC_MUX_CTL_GPIO_IO37_OFFSET))
|
||||
{
|
||||
putreg32(IOMUXC_MUX_MODE_ALT0 | reg_sion,
|
||||
IMX9_IOMUXC_BASE + cfg.padcfg.ctlregoff);
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
putreg32(IOMUXC_MUX_MODE_ALT5 | reg_sion,
|
||||
IMX9_IOMUXC_BASE + cfg.padcfg.ctlregoff);
|
||||
}
|
||||
|
||||
return OK;
|
||||
}
|
144
arch/arm/src/imx9/imx9_iomuxc.h
Normal file
144
arch/arm/src/imx9/imx9_iomuxc.h
Normal file
|
@ -0,0 +1,144 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/imx9_iomuxc.h
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ARCH_ARM_SRC_IMX9_IMX9_IOMUXC_H
|
||||
#define __ARCH_ARM_SRC_IMX9_IMX9_IOMUXC_H
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
#include "hardware/imx9_iomuxc.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
#define IOMUXC_PAD_CONFIG_SHIFT 1
|
||||
|
||||
#define IOMUX_PADCFG(_ctlregoff, _mode, _dsyregoff, _dsy, _padregoff) \
|
||||
{ \
|
||||
.ctlregoff = (_ctlregoff), \
|
||||
.padregoff = (_padregoff), \
|
||||
.dsyregoff = (_dsyregoff), \
|
||||
.mode = (_mode), \
|
||||
.dsy = (_dsy), \
|
||||
}
|
||||
|
||||
#define IOMUX_CFG(_padcfg, _pad, _sion) \
|
||||
(iomux_cfg_t) \
|
||||
{ \
|
||||
.padcfg = _padcfg, \
|
||||
.pad = (_pad) >> IOMUXC_PAD_CONFIG_SHIFT, \
|
||||
.sion = (_sion) >> IOMUXC_MUX_SION_SHIFT, \
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Public Types
|
||||
****************************************************************************/
|
||||
|
||||
/* Information for the pad alternate function */
|
||||
|
||||
struct iomux_padcfg_s
|
||||
{
|
||||
/* Register offsets for PAD
|
||||
* ALT(mode) configuration for ctlreg
|
||||
* input daisy(dsy) configuration for dsyreg
|
||||
*/
|
||||
|
||||
uint16_t mode : 3;
|
||||
uint16_t ctlregoff : 13;
|
||||
uint16_t padregoff : 16;
|
||||
uint16_t dsy : 3;
|
||||
uint16_t dsyregoff : 13;
|
||||
};
|
||||
|
||||
struct iomux_cfg_s
|
||||
{
|
||||
struct iomux_padcfg_s padcfg;
|
||||
|
||||
/* Register values */
|
||||
|
||||
uint32_t pad :31;
|
||||
uint32_t sion : 1;
|
||||
};
|
||||
typedef struct iomux_cfg_s iomux_cfg_t;
|
||||
|
||||
/****************************************************************************
|
||||
* Public Function Prototypes
|
||||
****************************************************************************/
|
||||
|
||||
#undef EXTERN
|
||||
#if defined(__cplusplus)
|
||||
#define EXTERN extern "C"
|
||||
extern "C"
|
||||
{
|
||||
#else
|
||||
#define EXTERN extern
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_iomux_configure
|
||||
*
|
||||
* Description:
|
||||
* This function writes the encoded pad configuration to the Pad Control
|
||||
* register.
|
||||
*
|
||||
* Input Parameters:
|
||||
* cfg - The IOMUX configuration
|
||||
*
|
||||
* Returned Value:
|
||||
* Zero (OK) on success; a negated errno value on failure.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
int imx9_iomux_configure(iomux_cfg_t cfg);
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_iomux_configure
|
||||
*
|
||||
* Description:
|
||||
* This can be used to forcibly set a pad to GPIO mode. This overrides and
|
||||
* disconnects any peripheral using the pin.
|
||||
*
|
||||
* Input Parameters:
|
||||
* cfg - The IOMUX configuration.
|
||||
* sion - if true; sets SION, otherwise clears it.
|
||||
*
|
||||
* Returned Value:
|
||||
* Zero (OK) on success; a negated errno value on failure.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
int imx9_iomux_gpio(iomux_cfg_t cfg, bool sion);
|
||||
|
||||
#undef EXTERN
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
#endif
|
||||
#endif /* __ARCH_ARM_SRC_IMX9_IMX9_IOMUXC_H */
|
670
arch/arm/src/imx9/imx9_irq.c
Normal file
670
arch/arm/src/imx9/imx9_irq.c
Normal file
|
@ -0,0 +1,670 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/imx9_irq.c
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#include <inttypes.h>
|
||||
#include <stdint.h>
|
||||
#include <assert.h>
|
||||
#include <debug.h>
|
||||
|
||||
#include <nuttx/irq.h>
|
||||
#include <nuttx/arch.h>
|
||||
|
||||
#include <arch/irq.h>
|
||||
#include <arch/armv7-m/nvicpri.h>
|
||||
|
||||
#include "nvic.h"
|
||||
#include "ram_vectors.h"
|
||||
#include "arm_internal.h"
|
||||
|
||||
#ifdef CONFIG_IMX9_GPIO_IRQ
|
||||
# include "imx9_gpio.h"
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/* Get a 32-bit version of the default priority */
|
||||
|
||||
#define DEFPRIORITY32 \
|
||||
(NVIC_SYSH_PRIORITY_DEFAULT << 24 | \
|
||||
NVIC_SYSH_PRIORITY_DEFAULT << 16 | \
|
||||
NVIC_SYSH_PRIORITY_DEFAULT << 8 | \
|
||||
NVIC_SYSH_PRIORITY_DEFAULT)
|
||||
|
||||
/* Given the address of a NVIC ENABLE register, this is the offset to
|
||||
* the corresponding CLEAR ENABLE register.
|
||||
*/
|
||||
|
||||
#define NVIC_ENA_OFFSET (0)
|
||||
#define NVIC_CLRENA_OFFSET (NVIC_IRQ0_31_CLEAR - NVIC_IRQ0_31_ENABLE)
|
||||
|
||||
/****************************************************************************
|
||||
* Private Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_dumpnvic
|
||||
*
|
||||
* Description:
|
||||
* Dump some interesting NVIC registers
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#if defined(CONFIG_DEBUG_IRQ_INFO)
|
||||
static void imx9_dumpnvic(const char *msg, int irq)
|
||||
{
|
||||
irqstate_t flags;
|
||||
|
||||
flags = enter_critical_section();
|
||||
|
||||
irqinfo("NVIC (%s, irq=%d):\n", msg, irq);
|
||||
irqinfo(" INTCTRL: %08x VECTAB: %08x\n",
|
||||
getreg32(NVIC_INTCTRL), getreg32(NVIC_VECTAB));
|
||||
#if 0
|
||||
irqinfo(" SYSH ENABLE MEMFAULT: %08x BUSFAULT: %08x USGFAULT: %08x "
|
||||
"SYSTICK: %08x\n",
|
||||
getreg32(NVIC_SYSHCON_MEMFAULTENA),
|
||||
getreg32(NVIC_SYSHCON_BUSFAULTENA),
|
||||
getreg32(NVIC_SYSHCON_USGFAULTENA),
|
||||
getreg32(NVIC_SYSTICK_CTRL_ENABLE));
|
||||
#endif
|
||||
irqinfo(" IRQ ENABLE: %08x %08x %08x %08x\n",
|
||||
getreg32(NVIC_IRQ0_31_ENABLE),
|
||||
getreg32(NVIC_IRQ32_63_ENABLE),
|
||||
getreg32(NVIC_IRQ64_95_ENABLE),
|
||||
getreg32(NVIC_IRQ96_127_ENABLE));
|
||||
#if IMX9_IRQ_NEXTINT > 128
|
||||
irqinfo(" %08x %08x %08x %08x\n",
|
||||
getreg32(NVIC_IRQ128_159_ENABLE),
|
||||
getreg32(NVIC_IRQ160_191_ENABLE),
|
||||
getreg32(NVIC_IRQ192_223_ENABLE),
|
||||
getreg32(NVIC_IRQ224_239_ENABLE));
|
||||
#endif
|
||||
irqinfo(" SYSH_PRIO: %08x %08x %08x\n",
|
||||
getreg32(NVIC_SYSH4_7_PRIORITY),
|
||||
getreg32(NVIC_SYSH8_11_PRIORITY),
|
||||
getreg32(NVIC_SYSH12_15_PRIORITY));
|
||||
irqinfo(" IRQ PRIO: %08x %08x %08x %08x\n",
|
||||
getreg32(NVIC_IRQ0_3_PRIORITY),
|
||||
getreg32(NVIC_IRQ4_7_PRIORITY),
|
||||
getreg32(NVIC_IRQ8_11_PRIORITY),
|
||||
getreg32(NVIC_IRQ12_15_PRIORITY));
|
||||
#if IMX9_IRQ_NEXTINT > 16
|
||||
irqinfo(" %08x %08x %08x %08x\n",
|
||||
getreg32(NVIC_IRQ16_19_PRIORITY),
|
||||
getreg32(NVIC_IRQ20_23_PRIORITY),
|
||||
getreg32(NVIC_IRQ24_27_PRIORITY),
|
||||
getreg32(NVIC_IRQ28_31_PRIORITY));
|
||||
#endif
|
||||
#if IMX9_IRQ_NEXTINT > 32
|
||||
irqinfo(" %08x %08x %08x %08x\n",
|
||||
getreg32(NVIC_IRQ32_35_PRIORITY),
|
||||
getreg32(NVIC_IRQ36_39_PRIORITY),
|
||||
getreg32(NVIC_IRQ40_43_PRIORITY),
|
||||
getreg32(NVIC_IRQ44_47_PRIORITY));
|
||||
#endif
|
||||
#if IMX9_IRQ_NEXTINT > 48
|
||||
irqinfo(" %08x %08x %08x %08x\n",
|
||||
getreg32(NVIC_IRQ48_51_PRIORITY),
|
||||
getreg32(NVIC_IRQ52_55_PRIORITY),
|
||||
getreg32(NVIC_IRQ56_59_PRIORITY),
|
||||
getreg32(NVIC_IRQ60_63_PRIORITY));
|
||||
#endif
|
||||
#if IMX9_IRQ_NEXTINT > 64
|
||||
irqinfo(" %08x %08x %08x %08x\n",
|
||||
getreg32(NVIC_IRQ64_67_PRIORITY),
|
||||
getreg32(NVIC_IRQ68_71_PRIORITY),
|
||||
getreg32(NVIC_IRQ72_75_PRIORITY),
|
||||
getreg32(NVIC_IRQ76_79_PRIORITY));
|
||||
#endif
|
||||
#if IMX9_IRQ_NEXTINT > 80
|
||||
irqinfo(" %08x %08x %08x %08x\n",
|
||||
getreg32(NVIC_IRQ80_83_PRIORITY),
|
||||
getreg32(NVIC_IRQ84_87_PRIORITY),
|
||||
getreg32(NVIC_IRQ88_91_PRIORITY),
|
||||
getreg32(NVIC_IRQ92_95_PRIORITY));
|
||||
#endif
|
||||
#if IMX9_IRQ_NEXTINT > 96
|
||||
irqinfo(" %08x %08x %08x %08x\n",
|
||||
getreg32(NVIC_IRQ96_99_PRIORITY),
|
||||
getreg32(NVIC_IRQ100_103_PRIORITY),
|
||||
getreg32(NVIC_IRQ104_107_PRIORITY),
|
||||
getreg32(NVIC_IRQ108_111_PRIORITY));
|
||||
#endif
|
||||
#if IMX9_IRQ_NEXTINT > 112
|
||||
irqinfo(" %08x %08x %08x %08x\n",
|
||||
getreg32(NVIC_IRQ112_115_PRIORITY),
|
||||
getreg32(NVIC_IRQ116_119_PRIORITY),
|
||||
getreg32(NVIC_IRQ120_123_PRIORITY),
|
||||
getreg32(NVIC_IRQ124_127_PRIORITY));
|
||||
#endif
|
||||
#if IMX9_IRQ_NEXTINT > 128
|
||||
irqinfo(" %08x %08x %08x %08x\n",
|
||||
getreg32(NVIC_IRQ128_131_PRIORITY),
|
||||
getreg32(NVIC_IRQ132_135_PRIORITY),
|
||||
getreg32(NVIC_IRQ136_139_PRIORITY),
|
||||
getreg32(NVIC_IRQ140_143_PRIORITY));
|
||||
#endif
|
||||
#if IMX9_IRQ_NEXTINT > 144
|
||||
irqinfo(" %08x %08x %08x %08x\n",
|
||||
getreg32(NVIC_IRQ144_147_PRIORITY),
|
||||
getreg32(NVIC_IRQ148_151_PRIORITY),
|
||||
getreg32(NVIC_IRQ152_155_PRIORITY),
|
||||
getreg32(NVIC_IRQ156_159_PRIORITY));
|
||||
#endif
|
||||
#if IMX9_IRQ_NEXTINT > 160
|
||||
irqinfo(" %08x %08x %08x %08x\n",
|
||||
getreg32(NVIC_IRQ160_163_PRIORITY),
|
||||
getreg32(NVIC_IRQ164_167_PRIORITY),
|
||||
getreg32(NVIC_IRQ168_171_PRIORITY),
|
||||
getreg32(NVIC_IRQ172_175_PRIORITY));
|
||||
#endif
|
||||
#if IMX9_IRQ_NEXTINT > 176
|
||||
irqinfo(" %08x %08x %08x %08x\n",
|
||||
getreg32(NVIC_IRQ176_179_PRIORITY),
|
||||
getreg32(NVIC_IRQ180_183_PRIORITY),
|
||||
getreg32(NVIC_IRQ184_187_PRIORITY),
|
||||
getreg32(NVIC_IRQ188_191_PRIORITY));
|
||||
#endif
|
||||
#if IMX9_IRQ_NEXTINT > 192
|
||||
irqinfo(" %08x %08x %08x %08x\n",
|
||||
getreg32(NVIC_IRQ192_195_PRIORITY),
|
||||
getreg32(NVIC_IRQ196_199_PRIORITY),
|
||||
getreg32(NVIC_IRQ200_203_PRIORITY),
|
||||
getreg32(NVIC_IRQ204_207_PRIORITY));
|
||||
#endif
|
||||
#if IMX9_IRQ_NEXTINT > 208
|
||||
irqinfo(" %08x %08x %08x\n",
|
||||
getreg32(NVIC_IRQ208_211_PRIORITY),
|
||||
getreg32(NVIC_IRQ212_215_PRIORITY),
|
||||
getreg32(NVIC_IRQ216_219_PRIORITY));
|
||||
#endif
|
||||
#if IMX9_IRQ_NEXTINT > 218
|
||||
# warning Missing logic
|
||||
#endif
|
||||
|
||||
leave_critical_section(flags);
|
||||
}
|
||||
#else
|
||||
# define imx9_dumpnvic(msg, irq)
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_nmi, imx9_pendsv, imx9_pendsv, imx9_reserved
|
||||
*
|
||||
* Description:
|
||||
* Handlers for various exceptions. None are handled and all are fatal
|
||||
* error conditions. The only advantage these provided over the default
|
||||
* unexpected interrupt handler is that they provide a diagnostic output.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_DEBUG_FEATURES
|
||||
static int imx9_nmi(int irq, void *context, void *arg)
|
||||
{
|
||||
up_irq_save();
|
||||
_err("PANIC!!! NMI received\n");
|
||||
PANIC();
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int imx9_pendsv(int irq, void *context, void *arg)
|
||||
{
|
||||
up_irq_save();
|
||||
_err("PANIC!!! PendSV received\n");
|
||||
PANIC();
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int imx9_reserved(int irq, void *context, void *arg)
|
||||
{
|
||||
up_irq_save();
|
||||
_err("PANIC!!! Reserved interrupt\n");
|
||||
PANIC();
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_prioritize_syscall
|
||||
*
|
||||
* Description:
|
||||
* Set the priority of an exception. This function may be needed
|
||||
* internally even if support for prioritized interrupts is not enabled.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static inline void imx9_prioritize_syscall(int priority)
|
||||
{
|
||||
uint32_t regval;
|
||||
|
||||
/* SVCALL is system handler 11 */
|
||||
|
||||
regval = getreg32(NVIC_SYSH8_11_PRIORITY);
|
||||
regval &= ~NVIC_SYSH_PRIORITY_PR11_MASK;
|
||||
regval |= (priority << NVIC_SYSH_PRIORITY_PR11_SHIFT);
|
||||
putreg32(regval, NVIC_SYSH8_11_PRIORITY);
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_irqinfo
|
||||
*
|
||||
* Description:
|
||||
* Given an IRQ number, provide the register and bit setting to enable or
|
||||
* disable the irq.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int imx9_irqinfo(int irq, uintptr_t *regaddr, uint32_t *bit,
|
||||
uintptr_t offset)
|
||||
{
|
||||
unsigned int extint = irq - IMX9_IRQ_EXTINT;
|
||||
|
||||
DEBUGASSERT(irq >= IMX9_IRQ_NMI && irq < NR_IRQS);
|
||||
|
||||
/* Check for external interrupt */
|
||||
|
||||
if (irq >= IMX9_IRQ_EXTINT)
|
||||
{
|
||||
if (extint < 32)
|
||||
{
|
||||
*regaddr = (NVIC_IRQ0_31_ENABLE + offset);
|
||||
*bit = 1 << extint;
|
||||
}
|
||||
else
|
||||
#if IMX9_IRQ_NEXTINT > 32
|
||||
if (extint < 64)
|
||||
{
|
||||
*regaddr = (NVIC_IRQ32_63_ENABLE + offset);
|
||||
*bit = 1 << (extint - 32);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
#if IMX9_IRQ_NEXTINT > 64
|
||||
if (extint < 96)
|
||||
{
|
||||
*regaddr = (NVIC_IRQ64_95_ENABLE + offset);
|
||||
*bit = 1 << (extint - 64);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
#if IMX9_IRQ_NEXTINT > 96
|
||||
if (extint < 128)
|
||||
{
|
||||
*regaddr = (NVIC_IRQ96_127_ENABLE + offset);
|
||||
*bit = 1 << (extint - 96);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
#if IMX9_IRQ_NEXTINT > 128
|
||||
if (extint < 160)
|
||||
{
|
||||
*regaddr = (NVIC_IRQ128_159_ENABLE + offset);
|
||||
*bit = 1 << (extint - 128);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
#if IMX9_IRQ_NEXTINT > 160
|
||||
if (extint < 192)
|
||||
{
|
||||
*regaddr = (NVIC_IRQ160_191_ENABLE + offset);
|
||||
*bit = 1 << (extint - 160);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
#if IMX9_IRQ_NEXTINT > 192
|
||||
if (extint < 219)
|
||||
{
|
||||
*regaddr = (NVIC_IRQ192_223_ENABLE + offset);
|
||||
*bit = 1 << (extint - 192);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
#if IMX9_IRQ_NEXTINT > 218
|
||||
# error Missing logic
|
||||
#endif
|
||||
{
|
||||
return ERROR; /* Invalid interrupt */
|
||||
}
|
||||
}
|
||||
|
||||
/* Handle processor exceptions. Only a few can be disabled */
|
||||
|
||||
else
|
||||
{
|
||||
*regaddr = NVIC_SYSHCON;
|
||||
if (irq == IMX9_IRQ_MEMFAULT)
|
||||
{
|
||||
*bit = NVIC_SYSHCON_MEMFAULTENA;
|
||||
}
|
||||
else if (irq == IMX9_IRQ_BUSFAULT)
|
||||
{
|
||||
*bit = NVIC_SYSHCON_BUSFAULTENA;
|
||||
}
|
||||
else if (irq == IMX9_IRQ_USAGEFAULT)
|
||||
{
|
||||
*bit = NVIC_SYSHCON_USGFAULTENA;
|
||||
}
|
||||
else if (irq == IMX9_IRQ_SYSTICK)
|
||||
{
|
||||
*regaddr = NVIC_SYSTICK_CTRL;
|
||||
*bit = NVIC_SYSTICK_CTRL_ENABLE;
|
||||
}
|
||||
else
|
||||
{
|
||||
return ERROR; /* Invalid or unsupported exception */
|
||||
}
|
||||
}
|
||||
|
||||
return OK;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: up_irqinitialize
|
||||
****************************************************************************/
|
||||
|
||||
void up_irqinitialize(void)
|
||||
{
|
||||
uintptr_t regaddr;
|
||||
int nintlines;
|
||||
int i;
|
||||
|
||||
/* The NVIC ICTR register (bits 0-4) holds the number of interrupt
|
||||
* lines that the NVIC supports, defined in groups of 32. That is,
|
||||
* the total number of interrupt lines is up to (32*(INTLINESNUM+1)).
|
||||
*
|
||||
* 0 -> 32 interrupt lines, 1 enable register, 8 priority registers
|
||||
* 1 -> 64 " " " ", 2 enable registers, 16 priority registers
|
||||
* 2 -> 96 " " " ", 3 enable registers, 24 priority registers
|
||||
* ...
|
||||
*/
|
||||
|
||||
nintlines = (getreg32(NVIC_ICTR) & NVIC_ICTR_INTLINESNUM_MASK) + 1;
|
||||
|
||||
/* Disable all interrupts. There are nintlines interrupt enable
|
||||
* registers.
|
||||
*/
|
||||
|
||||
for (i = nintlines, regaddr = NVIC_IRQ0_31_CLEAR;
|
||||
i > 0;
|
||||
i--, regaddr += 4)
|
||||
{
|
||||
putreg32(0xffffffff, regaddr);
|
||||
}
|
||||
|
||||
/* Make sure that we are using the correct vector table. The default
|
||||
* vector address is 0x0000:0000 but if we are executing code that is
|
||||
* positioned in SRAM or in external FLASH, then we may need to reset
|
||||
* the interrupt vector so that it refers to the table in SRAM or in
|
||||
* external FLASH.
|
||||
*/
|
||||
|
||||
putreg32((uint32_t)_vectors, NVIC_VECTAB);
|
||||
|
||||
#ifdef CONFIG_ARCH_RAMVECTORS
|
||||
/* If CONFIG_ARCH_RAMVECTORS is defined, then we are using a RAM-based
|
||||
* vector table that requires special initialization.
|
||||
*/
|
||||
|
||||
arm_ramvec_initialize();
|
||||
#endif
|
||||
|
||||
/* Set all interrupts (and exceptions) to the default priority */
|
||||
|
||||
putreg32(DEFPRIORITY32, NVIC_SYSH4_7_PRIORITY);
|
||||
putreg32(DEFPRIORITY32, NVIC_SYSH8_11_PRIORITY);
|
||||
putreg32(DEFPRIORITY32, NVIC_SYSH12_15_PRIORITY);
|
||||
|
||||
/* Now set all of the interrupt lines to the default priority. There are
|
||||
* nintlines * 8 priority registers.
|
||||
*/
|
||||
|
||||
for (i = (nintlines << 3), regaddr = NVIC_IRQ0_3_PRIORITY;
|
||||
i > 0;
|
||||
i--, regaddr += 4)
|
||||
{
|
||||
putreg32(DEFPRIORITY32, regaddr);
|
||||
}
|
||||
|
||||
/* Attach the SVCall and Hard Fault exception handlers. The SVCall
|
||||
* exception is used for performing context switches; The Hard Fault
|
||||
* must also be caught because a SVCall may show up as a Hard Fault
|
||||
* under certain conditions.
|
||||
*/
|
||||
|
||||
irq_attach(IMX9_IRQ_SVCALL, arm_svcall, NULL);
|
||||
irq_attach(IMX9_IRQ_HARDFAULT, arm_hardfault, NULL);
|
||||
|
||||
/* Set the priority of the SVCall interrupt */
|
||||
|
||||
#ifdef CONFIG_ARCH_IRQPRIO
|
||||
/* up_prioritize_irq(IMX9_IRQ_PENDSV, NVIC_SYSH_PRIORITY_MIN); */
|
||||
#endif
|
||||
imx9_prioritize_syscall(NVIC_SYSH_SVCALL_PRIORITY);
|
||||
|
||||
/* If the MPU is enabled, then attach and enable the Memory Management
|
||||
* Fault handler.
|
||||
*/
|
||||
|
||||
#ifdef CONFIG_ARM_MPU
|
||||
irq_attach(IMX9_IRQ_MEMFAULT, arm_memfault, NULL);
|
||||
up_enable_irq(IMX9_IRQ_MEMFAULT);
|
||||
#endif
|
||||
|
||||
/* Attach all other processor exceptions (except reset and sys tick) */
|
||||
|
||||
#ifdef CONFIG_DEBUG_FEATURES
|
||||
irq_attach(IMX9_IRQ_NMI, imx9_nmi, NULL);
|
||||
#ifndef CONFIG_ARM_MPU
|
||||
irq_attach(IMX9_IRQ_MEMFAULT, arm_memfault, NULL);
|
||||
#endif
|
||||
irq_attach(IMX9_IRQ_BUSFAULT, arm_busfault, NULL);
|
||||
irq_attach(IMX9_IRQ_USAGEFAULT, arm_usagefault, NULL);
|
||||
irq_attach(IMX9_IRQ_PENDSV, imx9_pendsv, NULL);
|
||||
arm_enable_dbgmonitor();
|
||||
irq_attach(IMX9_IRQ_DBGMONITOR, arm_dbgmonitor, NULL);
|
||||
irq_attach(IMX9_IRQ_RESERVED, imx9_reserved, NULL);
|
||||
#endif
|
||||
|
||||
imx9_dumpnvic("initial", NR_IRQS);
|
||||
|
||||
#ifndef CONFIG_SUPPRESS_INTERRUPTS
|
||||
/* Initialize logic to support a second level of interrupt decoding for
|
||||
* GPIO pins.
|
||||
*/
|
||||
|
||||
#ifdef CONFIG_IMX9_GPIO_IRQ
|
||||
imx9_gpioirq_initialize();
|
||||
#endif
|
||||
|
||||
/* And finally, enable interrupts */
|
||||
|
||||
up_irq_enable();
|
||||
#endif
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: up_disable_irq
|
||||
*
|
||||
* Description:
|
||||
* Disable the IRQ specified by 'irq'
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
void up_disable_irq(int irq)
|
||||
{
|
||||
uintptr_t regaddr;
|
||||
uint32_t regval;
|
||||
uint32_t bit;
|
||||
|
||||
if (imx9_irqinfo(irq, ®addr, &bit, NVIC_CLRENA_OFFSET) == 0)
|
||||
{
|
||||
/* Modify the appropriate bit in the register to disable the interrupt.
|
||||
* For normal interrupts, we need to set the bit in the associated
|
||||
* Interrupt Clear Enable register. For other exceptions, we need to
|
||||
* clear the bit in the System Handler Control and State Register.
|
||||
*/
|
||||
|
||||
if (irq >= IMX9_IRQ_EXTINT)
|
||||
{
|
||||
putreg32(bit, regaddr);
|
||||
}
|
||||
else
|
||||
{
|
||||
regval = getreg32(regaddr);
|
||||
regval &= ~bit;
|
||||
putreg32(regval, regaddr);
|
||||
}
|
||||
}
|
||||
#ifdef CONFIG_IMX9_GPIO_IRQ
|
||||
else
|
||||
{
|
||||
/* Maybe it is a (derived) GPIO IRQ */
|
||||
|
||||
imx9_gpioirq_disable(irq);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if 0 /* Might be useful in early bring-up */
|
||||
imx9_dumpnvic("disable", irq);
|
||||
#endif
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: up_enable_irq
|
||||
*
|
||||
* Description:
|
||||
* Enable the IRQ specified by 'irq'
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
void up_enable_irq(int irq)
|
||||
{
|
||||
uintptr_t regaddr;
|
||||
uint32_t regval;
|
||||
uint32_t bit;
|
||||
|
||||
if (imx9_irqinfo(irq, ®addr, &bit, NVIC_ENA_OFFSET) == 0)
|
||||
{
|
||||
/* Modify the appropriate bit in the register to enable the interrupt.
|
||||
* For normal interrupts, we need to set the bit in the associated
|
||||
* Interrupt Set Enable register. For other exceptions, we need to
|
||||
* set the bit in the System Handler Control and State Register.
|
||||
*/
|
||||
|
||||
if (irq >= IMX9_IRQ_EXTINT)
|
||||
{
|
||||
putreg32(bit, regaddr);
|
||||
}
|
||||
else
|
||||
{
|
||||
regval = getreg32(regaddr);
|
||||
regval |= bit;
|
||||
putreg32(regval, regaddr);
|
||||
}
|
||||
}
|
||||
#ifdef CONFIG_IMX9_GPIO_IRQ
|
||||
else
|
||||
{
|
||||
/* Maybe it is a (derived) GPIO IRQ */
|
||||
|
||||
imx9_gpioirq_enable(irq);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if 0 /* Might be useful in early bring-up */
|
||||
imx9_dumpnvic("enable", irq);
|
||||
#endif
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: arm_ack_irq
|
||||
*
|
||||
* Description:
|
||||
* Acknowledge the IRQ
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
void arm_ack_irq(int irq)
|
||||
{
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: up_prioritize_irq
|
||||
*
|
||||
* Description:
|
||||
* Set the priority of an IRQ.
|
||||
*
|
||||
* Since this API is not supported on all architectures, it should be
|
||||
* avoided in common implementations where possible.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_ARCH_IRQPRIO
|
||||
int up_prioritize_irq(int irq, int priority)
|
||||
{
|
||||
uint32_t regaddr;
|
||||
uint32_t regval;
|
||||
int shift;
|
||||
|
||||
DEBUGASSERT(irq >= IMX9_IRQ_MEMFAULT && irq < NR_IRQS &&
|
||||
(unsigned)priority <= NVIC_SYSH_PRIORITY_MIN);
|
||||
|
||||
if (irq < IMX9_IRQ_EXTINT)
|
||||
{
|
||||
/* NVIC_SYSH_PRIORITY() maps {0..15} to one of three priority
|
||||
* registers (0-3 are invalid)
|
||||
*/
|
||||
|
||||
regaddr = NVIC_SYSH_PRIORITY(irq);
|
||||
irq -= 4;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* NVIC_IRQ_PRIORITY() maps {0..} to one of many priority registers */
|
||||
|
||||
irq -= IMX9_IRQ_EXTINT;
|
||||
regaddr = NVIC_IRQ_PRIORITY(irq);
|
||||
}
|
||||
|
||||
regval = getreg32(regaddr);
|
||||
shift = ((irq & 3) << 3);
|
||||
regval &= ~(0xff << shift);
|
||||
regval |= (priority << shift);
|
||||
putreg32(regval, regaddr);
|
||||
|
||||
imx9_dumpnvic("prioritize", irq);
|
||||
return OK;
|
||||
}
|
||||
#endif
|
592
arch/arm/src/imx9/imx9_lowputc.c
Normal file
592
arch/arm/src/imx9/imx9_lowputc.c
Normal file
|
@ -0,0 +1,592 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/imx9_lowputc.c
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <assert.h>
|
||||
#include <errno.h>
|
||||
|
||||
#include "hardware/imx9_pinmux.h"
|
||||
#include "hardware/imx9_lpuart.h"
|
||||
|
||||
#include "arm_internal.h"
|
||||
|
||||
#include "imx9_lowputc.h"
|
||||
#include "imx9_clockconfig.h"
|
||||
#include "imx9_iomuxc.h"
|
||||
#include "hardware/imx9_clock.h"
|
||||
#include "hardware/imx9_pinmux.h"
|
||||
|
||||
#include <arch/board/board.h> /* Include last: has dependencies */
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/* Configuration ************************************************************/
|
||||
|
||||
#if defined(CONFIG_LPUART1_SERIAL_CONSOLE)
|
||||
# define IMX9_CONSOLE_DEVNUM 0
|
||||
# define IMX9_CONSOLE_BASE IMX9_LPUART1_BASE
|
||||
# define IMX9_CONSOLE_BAUD CONFIG_LPUART1_BAUD
|
||||
# define IMX9_CONSOLE_BITS CONFIG_LPUART1_BITS
|
||||
# define IMX9_CONSOLE_PARITY CONFIG_LPUART1_PARITY
|
||||
# define IMX9_CONSOLE_2STOP CONFIG_LPUART1_2STOP
|
||||
#elif defined(CONFIG_LPUART2_SERIAL_CONSOLE)
|
||||
# define IMX9_CONSOLE_DEVNUM 1
|
||||
# define IMX9_CONSOLE_BASE IMX9_LPUART2_BASE
|
||||
# define IMX9_CONSOLE_BAUD CONFIG_LPUART2_BAUD
|
||||
# define IMX9_CONSOLE_BITS CONFIG_LPUART2_BITS
|
||||
# define IMX9_CONSOLE_PARITY CONFIG_LPUART2_PARITY
|
||||
# define IMX9_CONSOLE_2STOP CONFIG_LPUART2_2STOP
|
||||
#elif defined(CONFIG_LPUART3_SERIAL_CONSOLE)
|
||||
# define IMX9_CONSOLE_DEVNUM 2
|
||||
# define IMX9_CONSOLE_BASE IMX9_LPUART3_BASE
|
||||
# define IMX9_CONSOLE_BAUD CONFIG_LPUART3_BAUD
|
||||
# define IMX9_CONSOLE_BITS CONFIG_LPUART3_BITS
|
||||
# define IMX9_CONSOLE_PARITY CONFIG_LPUART3_PARITY
|
||||
# define IMX9_CONSOLE_2STOP CONFIG_LPUART3_2STOP
|
||||
#elif defined(CONFIG_LPUART4_SERIAL_CONSOLE)
|
||||
# define IMX9_CONSOLE_DEVNUM 3
|
||||
# define IMX9_CONSOLE_BASE IMX9_LPUART4_BASE
|
||||
# define IMX9_CONSOLE_BAUD CONFIG_LPUART4_BAUD
|
||||
# define IMX9_CONSOLE_BITS CONFIG_LPUART4_BITS
|
||||
# define IMX9_CONSOLE_PARITY CONFIG_LPUART4_PARITY
|
||||
# define IMX9_CONSOLE_2STOP CONFIG_LPUART4_2STOP
|
||||
#elif defined(CONFIG_LPUART5_SERIAL_CONSOLE)
|
||||
# define IMX9_CONSOLE_DEVNUM 4
|
||||
# define IMX9_CONSOLE_BASE IMX9_LPUART5_BASE
|
||||
# define IMX9_CONSOLE_BAUD CONFIG_LPUART5_BAUD
|
||||
# define IMX9_CONSOLE_BITS CONFIG_LPUART5_BITS
|
||||
# define IMX9_CONSOLE_PARITY CONFIG_LPUART5_PARITY
|
||||
# define IMX9_CONSOLE_2STOP CONFIG_LPUART5_2STOP
|
||||
#elif defined(CONFIG_LPUART6_SERIAL_CONSOLE)
|
||||
# define IMX9_CONSOLE_DEVNUM 5
|
||||
# define IMX9_CONSOLE_BASE IMX9_LPUART6_BASE
|
||||
# define IMX9_CONSOLE_BAUD CONFIG_LPUART6_BAUD
|
||||
# define IMX9_CONSOLE_BITS CONFIG_LPUART6_BITS
|
||||
# define IMX9_CONSOLE_PARITY CONFIG_LPUART6_PARITY
|
||||
# define IMX9_CONSOLE_2STOP CONFIG_LPUART6_2STOP
|
||||
#elif defined(CONFIG_LPUART7_SERIAL_CONSOLE)
|
||||
# define IMX9_CONSOLE_DEVNUM 6
|
||||
# define IMX9_CONSOLE_BASE IMX9_LPUART7_BASE
|
||||
# define IMX9_CONSOLE_BAUD CONFIG_LPUART7_BAUD
|
||||
# define IMX9_CONSOLE_BITS CONFIG_LPUART7_BITS
|
||||
# define IMX9_CONSOLE_PARITY CONFIG_LPUART7_PARITY
|
||||
# define IMX9_CONSOLE_2STOP CONFIG_LPUART7_2STOP
|
||||
#elif defined(CONFIG_LPUART8_SERIAL_CONSOLE)
|
||||
# define IMX9_CONSOLE_DEVNUM 7
|
||||
# define IMX9_CONSOLE_BASE IMX9_LPUART8_BASE
|
||||
# define IMX9_CONSOLE_BAUD CONFIG_LPUART8_BAUD
|
||||
# define IMX9_CONSOLE_BITS CONFIG_LPUART8_BITS
|
||||
# define IMX9_CONSOLE_PARITY CONFIG_LPUART8_PARITY
|
||||
# define IMX9_CONSOLE_2STOP CONFIG_LPUART8_2STOP
|
||||
#endif
|
||||
|
||||
/* Clocking *****************************************************************/
|
||||
|
||||
/* Functional clocking is provided via the PCC. The PCC clocking must
|
||||
* be configured by board-specific logic prior to using the LPUART.
|
||||
*/
|
||||
|
||||
/****************************************************************************
|
||||
* Private Data
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef IMX9_CONSOLE_BASE
|
||||
static const struct uart_config_s g_console_config =
|
||||
{
|
||||
.baud = IMX9_CONSOLE_BAUD, /* Configured baud */
|
||||
.parity = IMX9_CONSOLE_PARITY, /* 0=none, 1=odd, 2=even */
|
||||
.bits = IMX9_CONSOLE_BITS, /* Number of bits (5-9) */
|
||||
.stopbits2 = IMX9_CONSOLE_2STOP, /* true: Configure with 2 stop bits instead of 1 */
|
||||
};
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_lowsetup
|
||||
*
|
||||
* Description:
|
||||
* Called at the very beginning of _start. Performs low level
|
||||
* initialization including setup of the console UART. This UART done
|
||||
* early so that the serial console is available for debugging very early
|
||||
* in the boot sequence.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
void imx9_lowsetup(void)
|
||||
{
|
||||
#ifndef CONFIG_SUPPRESS_LPUART_CONFIG
|
||||
|
||||
#ifdef CONFIG_IMX9_LPUART1
|
||||
/* Configure LPUART1 pins: RXD and TXD. Also configure RTS and CTS if flow
|
||||
* control is enabled.
|
||||
*/
|
||||
|
||||
imx9_iomux_configure(MUX_LPUART1_RX);
|
||||
imx9_iomux_configure(MUX_LPUART1_TX);
|
||||
#ifdef CONFIG_LPUART1_OFLOWCONTROL
|
||||
imx9_iomux_configure(MUX_LPUART1_CTS);
|
||||
#endif
|
||||
#if ((defined(CONFIG_SERIAL_RS485CONTROL) && defined(CONFIG_LPUART1_RS485RTSCONTROL)) || \
|
||||
(defined(CONFIG_SERIAL_IFLOWCONTROL) && defined(CONFIG_LPUART1_IFLOWCONTROL)))
|
||||
imx9_iomux_configure(MUX_LPUART1_RTS);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_IMX9_LPUART2
|
||||
|
||||
/* Configure LPUART2 pins: RXD and TXD. Also configure RTS and CTS if flow
|
||||
* control is enabled.
|
||||
*/
|
||||
|
||||
imx9_iomux_configure(MUX_LPUART2_RX);
|
||||
imx9_iomux_configure(MUX_LPUART2_TX);
|
||||
#ifdef CONFIG_LPUART2_OFLOWCONTROL
|
||||
imx9_iomux_configure(MUX_LPUART2_CTS);
|
||||
#endif
|
||||
#if ((defined(CONFIG_SERIAL_RS485CONTROL) && defined(CONFIG_LPUART2_RS485RTSCONTROL)) || \
|
||||
(defined(CONFIG_SERIAL_IFLOWCONTROL) && defined(CONFIG_LPUART2_IFLOWCONTROL)))
|
||||
imx9_iomux_configure(MUX_LPUART2_RTS);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_IMX9_LPUART3
|
||||
|
||||
/* Configure LPUART3 pins: RXD and TXD. Also configure RTS and CTS if flow
|
||||
* control is enabled.
|
||||
*/
|
||||
|
||||
imx9_iomux_configure(MUX_LPUART3_RX);
|
||||
imx9_iomux_configure(MUX_LPUART3_TX);
|
||||
#ifdef CONFIG_LPUART3_OFLOWCONTROL
|
||||
imx9_iomux_configure(MUX_LPUART3_CTS);
|
||||
#endif
|
||||
#if ((defined(CONFIG_SERIAL_RS485CONTROL) && defined(CONFIG_LPUART3_RS485RTSCONTROL)) || \
|
||||
(defined(CONFIG_SERIAL_IFLOWCONTROL) && defined(CONFIG_LPUART3_IFLOWCONTROL)))
|
||||
imx9_iomux_configure(MUX_LPUART3_RTS);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_IMX9_LPUART4
|
||||
|
||||
/* Configure LPUART4 pins: RXD and TXD. Also configure RTS and CTS if flow
|
||||
* control is enabled.
|
||||
*/
|
||||
|
||||
imx9_iomux_configure(MUX_LPUART4_RX);
|
||||
imx9_iomux_configure(MUX_LPUART4_TX);
|
||||
#ifdef CONFIG_LPUART4_OFLOWCONTROL
|
||||
imx9_iomux_configure(MUX_LPUART4_CTS);
|
||||
#endif
|
||||
#if ((defined(CONFIG_SERIAL_RS485CONTROL) && defined(CONFIG_LPUART4_RS485RTSCONTROL)) || \
|
||||
(defined(CONFIG_SERIAL_IFLOWCONTROL) && defined(CONFIG_LPUART4_IFLOWCONTROL)))
|
||||
imx9_iomux_configure(MUX_LPUART4_RTS);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_IMX9_LPUART5
|
||||
|
||||
/* Configure LPUART5 pins: RXD and TXD. Also configure RTS and CTS if flow
|
||||
* control is enabled.
|
||||
*/
|
||||
|
||||
imx9_iomux_configure(MUX_LPUART5_RX);
|
||||
imx9_iomux_configure(MUX_LPUART5_TX);
|
||||
#ifdef CONFIG_LPUART5_OFLOWCONTROL
|
||||
imx9_iomux_configure(MUX_LPUART5_CTS);
|
||||
#endif
|
||||
#if ((defined(CONFIG_SERIAL_RS485CONTROL) && defined(CONFIG_LPUART5_RS485RTSCONTROL)) || \
|
||||
(defined(CONFIG_SERIAL_IFLOWCONTROL) && defined(CONFIG_LPUART5_IFLOWCONTROL)))
|
||||
imx9_iomux_configure(MUX_LPUART5_RTS);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_IMX9_LPUART6
|
||||
|
||||
/* Configure LPUART6 pins: RXD and TXD. Also configure RTS and CTS if flow
|
||||
* control is enabled.
|
||||
*/
|
||||
|
||||
imx9_iomux_configure(MUX_LPUART6_RX);
|
||||
imx9_iomux_configure(MUX_LPUART6_TX);
|
||||
#ifdef CONFIG_LPUART6_OFLOWCONTROL
|
||||
imx9_iomux_configure(MUX_LPUART6_CTS);
|
||||
#endif
|
||||
#if ((defined(CONFIG_SERIAL_RS485CONTROL) && defined(CONFIG_LPUART6_RS485RTSCONTROL)) || \
|
||||
(defined(CONFIG_SERIAL_IFLOWCONTROL) && defined(CONFIG_LPUART6_IFLOWCONTROL)))
|
||||
imx9_iomux_configure(MUX_LPUART6_RTS);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_IMX9_LPUART7
|
||||
|
||||
/* Configure LPUART7 pins: RXD and TXD. Also configure RTS and CTS if flow
|
||||
* control is enabled.
|
||||
*/
|
||||
|
||||
imx9_iomux_configure(MUX_LPUART7_RX);
|
||||
imx9_iomux_configure(MUX_LPUART7_TX);
|
||||
#ifdef CONFIG_LPUART7_OFLOWCONTROL
|
||||
imx9_iomux_configure(MUX_LPUART7_CTS);
|
||||
#endif
|
||||
#if ((defined(CONFIG_SERIAL_RS485CONTROL) && defined(CONFIG_LPUART7_RS485RTSCONTROL)) || \
|
||||
(defined(CONFIG_SERIAL_IFLOWCONTROL) && defined(CONFIG_LPUART7_IFLOWCONTROL)))
|
||||
imx9_iomux_configure(MUX_LPUART7_RTS);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_IMX9_LPUART8
|
||||
|
||||
/* Configure LPUART8 pins: RXD and TXD. Also configure RTS and CTS if flow
|
||||
* control is enabled.
|
||||
*/
|
||||
|
||||
imx9_iomux_configure(MUX_LPUART8_RX);
|
||||
imx9_iomux_configure(MUX_LPUART8_TX);
|
||||
#ifdef CONFIG_LPUART0_OFLOWCONTROL
|
||||
imx9_iomux_configure(MUX_LPUART8_CTS);
|
||||
#endif
|
||||
#if ((defined(CONFIG_SERIAL_RS485CONTROL) && defined(CONFIG_LPUART8_RS485RTSCONTROL)) || \
|
||||
(defined(CONFIG_SERIAL_IFLOWCONTROL) && defined(CONFIG_LPUART8_IFLOWCONTROL)))
|
||||
imx9_iomux_configure(MUX_LPUART8_RTS);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef IMX9_CONSOLE_BASE
|
||||
/* Configure the serial console for initial, non-interrupt driver mode */
|
||||
|
||||
imx9_lpuart_configure(IMX9_CONSOLE_BASE, IMX9_CONSOLE_DEVNUM,
|
||||
&g_console_config);
|
||||
#endif
|
||||
|
||||
#endif /* CONFIG_SUPPRESS_LPUART_CONFIG */
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_lpuart_configure
|
||||
*
|
||||
* Description:
|
||||
* Configure a UART for non-interrupt driven operation
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
int imx9_lpuart_configure(uint32_t base, int uartnum,
|
||||
const struct uart_config_s *config)
|
||||
{
|
||||
uint32_t lpuart_freq;
|
||||
clock_config_t lpuart_config;
|
||||
uint16_t sbr;
|
||||
uint16_t temp_sbr;
|
||||
uint32_t osr;
|
||||
uint32_t temp_osr;
|
||||
int temp_diff;
|
||||
int configured_baud = config->baud;
|
||||
int calculated_baud;
|
||||
int baud_diff;
|
||||
uint32_t regval;
|
||||
|
||||
switch (base)
|
||||
{
|
||||
#ifdef LPUART1_CLK
|
||||
case IMX9_LPUART1_BASE:
|
||||
lpuart_config = LPUART1_CLK;
|
||||
break;
|
||||
#endif
|
||||
|
||||
#ifdef LPUART2_CLK
|
||||
case IMX9_LPUART2_BASE:
|
||||
lpuart_config = LPUART2_CLK;
|
||||
break;
|
||||
#endif
|
||||
|
||||
#ifdef LPUART3_CLK
|
||||
case IMX9_LPUART3_BASE:
|
||||
lpuart_config = LPUART3_CLK;
|
||||
break;
|
||||
#endif
|
||||
|
||||
#ifdef LPUART4_CLK
|
||||
case IMX9_LPUART4_BASE:
|
||||
lpuart_config = LPUART4_CLK;
|
||||
break;
|
||||
#endif
|
||||
|
||||
#ifdef LPUART5_CLK
|
||||
case IMX9_LPUART5_BASE:
|
||||
lpuart_config = LPUART5_CLK;
|
||||
break;
|
||||
#endif
|
||||
|
||||
#ifdef LPUART6_CLK
|
||||
case IMX9_LPUART6_BASE:
|
||||
lpuart_config = LPUART6_CLK;
|
||||
break;
|
||||
#endif
|
||||
|
||||
#ifdef LPUART7_CLK
|
||||
case IMX9_LPUART7_BASE:
|
||||
lpuart_config = LPUART7_CLK;
|
||||
break;
|
||||
#endif
|
||||
|
||||
#ifdef LPUART8_CLK
|
||||
case IMX9_LPUART7_BASE:
|
||||
lpuart_config = LPUART8_CLK;
|
||||
break;
|
||||
#endif
|
||||
|
||||
default:
|
||||
return ERROR;
|
||||
}
|
||||
|
||||
/* Configure root clock */
|
||||
|
||||
imx9_configure_clock(lpuart_config, true);
|
||||
|
||||
imx9_get_rootclock(GET_CLOCK_ROOT(lpuart_config), &lpuart_freq);
|
||||
|
||||
/* This LPUART instantiation uses a slightly different baud rate
|
||||
* calculation. The idea is to use the best OSR (over-sampling rate)
|
||||
* possible.
|
||||
*
|
||||
* NOTE: OSR is typically hard-set to 16 in other LPUART instantiations
|
||||
* loop to find the best OSR value possible, one that generates minimum
|
||||
* baud_diff iterate through the rest of the supported values of OSR
|
||||
*/
|
||||
|
||||
baud_diff = configured_baud;
|
||||
osr = 0;
|
||||
sbr = 0;
|
||||
|
||||
for (temp_osr = 4; temp_osr <= 32; temp_osr++)
|
||||
{
|
||||
/* Calculate the temporary sbr value */
|
||||
|
||||
temp_sbr = (lpuart_freq / (configured_baud * temp_osr));
|
||||
|
||||
/* Set temp_sbr to 1 if the sourceClockInHz can not satisfy the
|
||||
* desired baud rate.
|
||||
*/
|
||||
|
||||
if (temp_sbr == 0)
|
||||
{
|
||||
temp_sbr = 1;
|
||||
}
|
||||
|
||||
/* Calculate the baud rate based on the temporary OSR and SBR values */
|
||||
|
||||
calculated_baud = (lpuart_freq / (temp_osr * temp_sbr));
|
||||
temp_diff = abs(calculated_baud - configured_baud);
|
||||
|
||||
/* Select the better value between srb and (sbr + 1) */
|
||||
|
||||
calculated_baud = (lpuart_freq / (temp_osr * (temp_sbr + 1)));
|
||||
if (temp_diff >
|
||||
abs(calculated_baud - configured_baud))
|
||||
{
|
||||
temp_diff = abs(calculated_baud - configured_baud);
|
||||
temp_sbr++;
|
||||
}
|
||||
|
||||
if (temp_diff <= baud_diff)
|
||||
{
|
||||
baud_diff = temp_diff;
|
||||
osr = temp_osr;
|
||||
sbr = temp_sbr;
|
||||
}
|
||||
}
|
||||
|
||||
if (baud_diff > ((configured_baud * 3) / 100))
|
||||
{
|
||||
/* Unacceptable baud rate difference of more than 3% */
|
||||
|
||||
return ERROR;
|
||||
}
|
||||
|
||||
/* Reset all internal logic and registers, except the Global Register */
|
||||
|
||||
regval = getreg32(base + IMX9_LPUART_GLOBAL_OFFSET);
|
||||
regval |= LPUART_GLOBAL_RST;
|
||||
putreg32(regval, base + IMX9_LPUART_GLOBAL_OFFSET);
|
||||
|
||||
regval &= ~LPUART_GLOBAL_RST;
|
||||
putreg32(regval, base + IMX9_LPUART_GLOBAL_OFFSET);
|
||||
|
||||
/* Enable RX and TX FIFOs */
|
||||
|
||||
putreg32(LPUART_FIFO_RXFE | LPUART_FIFO_TXFE,
|
||||
base + IMX9_LPUART_FIFO_OFFSET);
|
||||
|
||||
/* Construct MODIR register */
|
||||
|
||||
regval = 0;
|
||||
|
||||
if (config->userts)
|
||||
{
|
||||
regval |= LPUART_MODIR_RXRTSE;
|
||||
}
|
||||
else if (config->users485)
|
||||
{
|
||||
/* Both TX and RX side can't control RTS, so this gives
|
||||
* the RX side precedence. This should have been filtered
|
||||
* in layers above anyway, but it's just a precaution.
|
||||
*/
|
||||
|
||||
regval |= LPUART_MODIR_TXRTSE;
|
||||
}
|
||||
|
||||
if (config->usects)
|
||||
{
|
||||
regval |= LPUART_MODIR_TXCTSE;
|
||||
}
|
||||
|
||||
if (config->invrts)
|
||||
{
|
||||
regval |= LPUART_MODIR_TXRTSPOL;
|
||||
}
|
||||
|
||||
putreg32(regval, base + IMX9_LPUART_MODIR_OFFSET);
|
||||
|
||||
regval = 0;
|
||||
|
||||
if ((osr > 3) && (osr < 8))
|
||||
{
|
||||
regval |= LPUART_BAUD_BOTHEDGE;
|
||||
}
|
||||
|
||||
if (config->stopbits2)
|
||||
{
|
||||
regval |= LPUART_BAUD_SBNS;
|
||||
}
|
||||
|
||||
regval |= LPUART_BAUD_OSR(osr) | LPUART_BAUD_SBR(sbr);
|
||||
putreg32(regval, base + IMX9_LPUART_BAUD_OFFSET);
|
||||
|
||||
regval = 0;
|
||||
if (config->parity == 1)
|
||||
{
|
||||
regval |= LPUART_CTRL_PE | LPUART_CTRL_PT_ODD;
|
||||
}
|
||||
else if (config->parity == 2)
|
||||
{
|
||||
regval |= LPUART_CTRL_PE | LPUART_CTRL_PT_EVEN;
|
||||
}
|
||||
|
||||
if (config->bits == 9 || (config->bits == 8 && config->parity != 0))
|
||||
{
|
||||
regval |= LPUART_CTRL_M;
|
||||
}
|
||||
else if ((config->bits == 8))
|
||||
{
|
||||
regval &= ~LPUART_CTRL_M;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* REVISIT: Here should be added support of other bit modes. */
|
||||
|
||||
return -ENOSYS;
|
||||
}
|
||||
|
||||
regval |= LPUART_CTRL_RE | LPUART_CTRL_TE;
|
||||
putreg32(regval, base + IMX9_LPUART_CTRL_OFFSET);
|
||||
|
||||
return OK;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: arm_earlyprintinit
|
||||
*
|
||||
* Description:
|
||||
* Configure LPUART1 for non-interrupt driven operation
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
void arm_earlyprintinit(char ch)
|
||||
{
|
||||
/* Assume bootloader has already set up the LPUART1 */
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: arm_lowputc
|
||||
*
|
||||
* Description:
|
||||
* Output a byte with as few system dependencies as possible. This will
|
||||
* even work BEFORE the console is initialized if we are booting from U-
|
||||
* Boot (and the same UART is used for the console, of course.)
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
void arm_lowputc(char ch)
|
||||
{
|
||||
#ifdef IMX9_CONSOLE_BASE
|
||||
while ((getreg32(IMX9_CONSOLE_BASE + IMX9_LPUART_STAT_OFFSET) &
|
||||
LPUART_STAT_TDRE) == 0)
|
||||
{
|
||||
}
|
||||
|
||||
/* If the character to output is a newline,
|
||||
* then pre-pend a carriage return
|
||||
*/
|
||||
|
||||
if (ch == '\n')
|
||||
{
|
||||
/* Send the carriage return by writing it into the UART_TXD register. */
|
||||
|
||||
putreg32((uint32_t)'\r',
|
||||
IMX9_CONSOLE_BASE + IMX9_LPUART_DATA_OFFSET);
|
||||
|
||||
/* Wait for the transmit register to be emptied. When the TXFE bit is
|
||||
* non-zero, the TX Buffer FIFO is empty.
|
||||
*/
|
||||
|
||||
while ((getreg32(IMX9_CONSOLE_BASE + IMX9_LPUART_STAT_OFFSET) &
|
||||
LPUART_STAT_TDRE) == 0)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
/* Send the character by writing it into the UART_TXD register. */
|
||||
|
||||
putreg32((uint32_t)ch, IMX9_CONSOLE_BASE + IMX9_LPUART_DATA_OFFSET);
|
||||
|
||||
/* Wait for the transmit register to be emptied. When the TXFE bit is
|
||||
* non-zero, the TX Buffer FIFO is empty.
|
||||
*/
|
||||
|
||||
while ((getreg32(IMX9_CONSOLE_BASE + IMX9_LPUART_STAT_OFFSET) &
|
||||
LPUART_STAT_TDRE) == 0)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
}
|
96
arch/arm/src/imx9/imx9_lowputc.h
Normal file
96
arch/arm/src/imx9/imx9_lowputc.h
Normal file
|
@ -0,0 +1,96 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/imx9_lowputc.h
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ARCH_ARM_SRC_IMX9_IMX9_LOWPUTC_H
|
||||
#define __ARCH_ARM_SRC_IMX9_IMX9_LOWPUTC_H
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
#include <nuttx/compiler.h>
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
#include "arm_internal.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Public Types
|
||||
****************************************************************************/
|
||||
|
||||
/* This structure describes the configuration of an UART */
|
||||
|
||||
struct uart_config_s
|
||||
{
|
||||
uint32_t baud; /* Configured baud */
|
||||
uint8_t parity; /* 0=none, 1=odd, 2=even */
|
||||
uint8_t bits; /* Number of bits (5-9) */
|
||||
bool stopbits2; /* true: Configure with 2 stop bits instead of 1 */
|
||||
bool userts; /* True: Assert RTS when there are data to be sent */
|
||||
bool invrts; /* True: Invert sense of RTS pin (true=active high) */
|
||||
bool usects; /* True: Condition transmission on CTS asserted */
|
||||
bool users485; /* True: Assert RTS while transmission progresses */
|
||||
};
|
||||
|
||||
/****************************************************************************
|
||||
* Public Function Prototypes
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_lowsetup
|
||||
*
|
||||
* Description:
|
||||
* Called at the very beginning of _start. Performs low level
|
||||
* initialization including setup of the console UART. This UART done
|
||||
* early so that the serial console is available for debugging very early
|
||||
* in the boot sequence.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
void imx9_lowsetup(void);
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_lpuart_configure
|
||||
*
|
||||
* Description:
|
||||
* Configure a UART for non-interrupt driven operation
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
int imx9_lpuart_configure(uint32_t base,
|
||||
int uartnum,
|
||||
const struct uart_config_s *config);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __ARCH_ARM_SRC_IMX9_IMX9_LOWPUTC_H */
|
2451
arch/arm/src/imx9/imx9_lpi2c.c
Normal file
2451
arch/arm/src/imx9/imx9_lpi2c.c
Normal file
File diff suppressed because it is too large
Load diff
74
arch/arm/src/imx9/imx9_lpi2c.h
Normal file
74
arch/arm/src/imx9/imx9_lpi2c.h
Normal file
|
@ -0,0 +1,74 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/imx9_lpi2c.h
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ARCH_ARM_SRC_IMX9_IMX9_LPI2C_H
|
||||
#define __ARCH_ARM_SRC_IMX9_IMX9_LPI2C_H
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
#include <nuttx/i2c/i2c_master.h>
|
||||
|
||||
/****************************************************************************
|
||||
* Public Function Prototypes
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_i2cbus_initialize
|
||||
*
|
||||
* Description:
|
||||
* Initialize the selected I2C port. And return a unique instance of struct
|
||||
* struct i2c_master_s. This function may be called to obtain multiple
|
||||
* instances of the interface, each of which may be set up with a
|
||||
* different frequency and slave address.
|
||||
*
|
||||
* Input Parameters:
|
||||
* Port number (for hardware that has multiple I2C interfaces)
|
||||
*
|
||||
* Returned Value:
|
||||
* Valid I2C device structure reference on success; a NULL on failure
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
struct i2c_master_s *imx9_i2cbus_initialize(int port);
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_i2cbus_uninitialize
|
||||
*
|
||||
* Description:
|
||||
* De-initialize the selected I2C port, and power down the device.
|
||||
*
|
||||
* Input Parameters:
|
||||
* Device structure as returned by the imx9_i2cbus_initialize()
|
||||
*
|
||||
* Returned Value:
|
||||
* OK on success, ERROR when internal reference count mismatch or dev
|
||||
* points to invalid hardware device.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
int imx9_i2cbus_uninitialize(struct i2c_master_s *dev);
|
||||
|
||||
#endif /* __ARCH_ARM_SRC_IMX9_IMX9_LPI2C_H */
|
2142
arch/arm/src/imx9/imx9_lpspi.c
Normal file
2142
arch/arm/src/imx9/imx9_lpspi.c
Normal file
File diff suppressed because it is too large
Load diff
162
arch/arm/src/imx9/imx9_lpspi.h
Normal file
162
arch/arm/src/imx9/imx9_lpspi.h
Normal file
|
@ -0,0 +1,162 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/imx9_lpspi.h
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ARCH_ARM_SRC_IMX9_IMX9_LPSPI_H
|
||||
#define __ARCH_ARM_SRC_IMX9_IMX9_LPSPI_H
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#include <stdbool.h>
|
||||
|
||||
#include <nuttx/spi/spi.h>
|
||||
|
||||
#include "chip.h"
|
||||
#include "hardware/imx9_lpspi.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions Prototypes
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
#undef EXTERN
|
||||
#if defined(__cplusplus)
|
||||
#define EXTERN extern "C"
|
||||
extern "C"
|
||||
{
|
||||
#else
|
||||
#define EXTERN extern
|
||||
#endif
|
||||
|
||||
struct spi_dev_s; /* Forward reference */
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_lpspibus_initialize
|
||||
*
|
||||
* Description:
|
||||
* Initialize the selected SPI bus
|
||||
*
|
||||
* Input Parameters:
|
||||
* bus number (for hardware that has multiple SPI interfaces)
|
||||
*
|
||||
* Returned Value:
|
||||
* Valid SPI device structure reference on success; a NULL on failure
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
struct spi_dev_s *imx9_lpspibus_initialize(int bus);
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_lpspibus_uninitialize
|
||||
*
|
||||
* Description:
|
||||
* Unitialize the selected SPI bus if refcount is 1
|
||||
*
|
||||
* Input Parameters:
|
||||
* dev - Device-specific state data
|
||||
*
|
||||
* Returned Value:
|
||||
* None
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
void imx9_lpspi_uninitialize(struct spi_dev_s *dev);
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_lpspi1/2/...select and imx9_lpspi1/2/...status
|
||||
*
|
||||
* Description:
|
||||
* The external functions, imx9_lpspi1/2/...select,
|
||||
* imx9_lpspi1/2/...status, and imx9_lpspi1/2/...cmddata must be
|
||||
* provided by board-specific logic. These are implementations of the
|
||||
* select, status, and cmddata methods of the SPI interface defined by
|
||||
* struct spi_ops_s (see include/nuttx/spi/spi.h). All other methods
|
||||
* (including imx9_lpspibus_initialize()) are provided by common IMX9
|
||||
* logic. To use this common SPI logic on your board:
|
||||
*
|
||||
* 1. Provide logic in imx9_boardinitialize() to configure SPI chip select
|
||||
* pins.
|
||||
* 2. Provide imx9_lpspi1/2/...select() and imx9_lpspi1/2/...status()
|
||||
* functions in your board-specific logic. These functions will perform
|
||||
* chip selection and status operations using GPIOs in the way your
|
||||
* board is configured.
|
||||
* 3. If CONFIG_SPI_CMDDATA is defined in your NuttX configuration file,
|
||||
* then provide imx9_lpspi1/2/...cmddata() functions in your
|
||||
* board-specific logic. These functions will perform cmd/data selection
|
||||
* operations using GPIOs in the way your board is configured.
|
||||
* 4. Add a calls to imx9_lpspibus_initialize() in your low level
|
||||
* application initialization logic
|
||||
* 5. The handle returned by imx9_lpspibus_initialize() may then be used
|
||||
* to bind the SPI driver to higher level logic (e.g., calling
|
||||
* mmcsd_spislotinitialize(), for example, will bind the SPI driver to
|
||||
* the SPI MMC/SD driver).
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
void imx9_lpspi_select(struct spi_dev_s *dev,
|
||||
uint32_t devid, bool selected);
|
||||
uint8_t imx9_lpspi_status(struct spi_dev_s *dev, uint32_t devid);
|
||||
int imx9_lpspi_cmddata(struct spi_dev_s *dev,
|
||||
uint32_t devid, bool cmd);
|
||||
#ifdef CONFIG_IMX9_LPSPI_HWPCS
|
||||
void imx9_lpspi_hw_select(struct spi_dev_s *dev, uint32_t devid,
|
||||
bool selected);
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_lpspi1/2/...register
|
||||
*
|
||||
* Description:
|
||||
* If the board supports a card detect callback to inform the SPI-based
|
||||
* MMC/SD driver when an SD card is inserted or removed, then
|
||||
* CONFIG_SPI_CALLBACK should be defined and the following function(s)
|
||||
* must be implemented. These functions implements the registercallback
|
||||
* method of the SPI interface (see include/nuttx/spi/spi.h for details)
|
||||
*
|
||||
* Input Parameters:
|
||||
* dev - Device-specific state data
|
||||
* callback - The function to call on the media change
|
||||
* arg - A caller provided value to return with the callback
|
||||
*
|
||||
* Returned Value:
|
||||
* 0 on success; negated errno on failure.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_SPI_CALLBACK
|
||||
int imx9_lpspi_register(struct spi_dev_s *dev,
|
||||
spi_mediachange_t callback,
|
||||
void *arg);
|
||||
#endif
|
||||
|
||||
#undef EXTERN
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
#endif /* __ARCH_ARM_SRC_IMX9_IMX9_LPSPI_H */
|
2651
arch/arm/src/imx9/imx9_lpuart.c
Normal file
2651
arch/arm/src/imx9/imx9_lpuart.c
Normal file
File diff suppressed because it is too large
Load diff
243
arch/arm/src/imx9/imx9_mpuinit.c
Normal file
243
arch/arm/src/imx9/imx9_mpuinit.c
Normal file
|
@ -0,0 +1,243 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/imx9_mpuinit.c
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#include <assert.h>
|
||||
#include <sys/param.h>
|
||||
|
||||
#include <nuttx/userspace.h>
|
||||
|
||||
#include "mpu.h"
|
||||
#include "barriers.h"
|
||||
|
||||
#include "hardware/imx9_memorymap.h"
|
||||
|
||||
#include "imx9_mpuinit.h"
|
||||
#include "arm_internal.h"
|
||||
|
||||
#ifdef CONFIG_ARM_MPU
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef CONFIG_ARMV7M_DCACHE
|
||||
/* With Dcache off:
|
||||
* Cacheable (MPU_RASR_C) and Bufferable (MPU_RASR_B) needs to be off
|
||||
*/
|
||||
# undef MPU_RASR_B
|
||||
# define MPU_RASR_B 0
|
||||
# define RASR_B_VALUE 0
|
||||
# define RASR_C_VALUE 0
|
||||
#else
|
||||
# ifndef CONFIG_ARMV7M_DCACHE_WRITETHROUGH
|
||||
/* With Dcache on:
|
||||
* Cacheable (MPU_RASR_C) and Bufferable (MPU_RASR_B) needs to be on
|
||||
*/
|
||||
# define RASR_B_VALUE MPU_RASR_B
|
||||
# define RASR_C_VALUE MPU_RASR_C
|
||||
|
||||
# else
|
||||
/* With Dcache in WRITETHROUGH Bufferable (MPU_RASR_B)
|
||||
* needs to be off, except for FLASH for alignment leniency
|
||||
*/
|
||||
# define RASR_B_VALUE 0
|
||||
# define RASR_C_VALUE MPU_RASR_C
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_mpu_initialize
|
||||
*
|
||||
* Description:
|
||||
* Configure the MPU to permit user-space access to only restricted i.MXRT
|
||||
* resources.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
void imx9_mpu_initialize(void)
|
||||
{
|
||||
uint32_t regval;
|
||||
uint32_t region;
|
||||
#ifdef CONFIG_BUILD_PROTECTED
|
||||
uintptr_t datastart;
|
||||
uintptr_t dataend;
|
||||
#endif
|
||||
|
||||
/* Show MPU information */
|
||||
|
||||
mpu_showtype();
|
||||
|
||||
/* Reset MPU if enabled */
|
||||
|
||||
mpu_reset();
|
||||
|
||||
#ifdef CONFIG_ARMV7M_DCACHE
|
||||
/* Memory barrier */
|
||||
|
||||
ARM_DMB();
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_BUILD_PROTECTED
|
||||
/* Configure user flash and SRAM space */
|
||||
|
||||
DEBUGASSERT(USERSPACE->us_textend >= USERSPACE->us_textstart);
|
||||
|
||||
mpu_user_flash(USERSPACE->us_textstart,
|
||||
USERSPACE->us_textend - USERSPACE->us_textstart);
|
||||
|
||||
datastart = MIN(USERSPACE->us_datastart, USERSPACE->us_bssstart);
|
||||
dataend = MAX(USERSPACE->us_dataend, USERSPACE->us_bssend);
|
||||
|
||||
DEBUGASSERT(dataend >= datastart);
|
||||
|
||||
mpu_user_intsram(datastart, dataend - datastart);
|
||||
#else
|
||||
|
||||
region = mpu_allocregion();
|
||||
DEBUGASSERT(region == 0);
|
||||
|
||||
/* Select the region */
|
||||
|
||||
putreg32(region, MPU_RNR);
|
||||
|
||||
/* Select the region base address */
|
||||
|
||||
putreg32(region | MPU_RBAR_VALID, MPU_RBAR);
|
||||
|
||||
/* The configure the region */
|
||||
|
||||
regval = MPU_RASR_ENABLE | /* Enable region */
|
||||
MPU_RASR_SIZE_LOG2(32) | /* entire memory */
|
||||
MPU_RASR_TEX_SO | /* Strongly ordered */
|
||||
MPU_RASR_AP_NONO | /* P:None U:None */
|
||||
MPU_RASR_XN; /* Execute-never to prevent instruction fetch */
|
||||
putreg32(regval, MPU_RASR);
|
||||
|
||||
mpu_configure_region(IMX9_FLEXSPI1_ALIAS_BASE, 32 * 1024 * 1024,
|
||||
MPU_RASR_AP_RORO | /* P:R0 U:R0 */
|
||||
MPU_RASR_TEX_NOR | /* Normal */
|
||||
MPU_RASR_C | /* Cacheable */
|
||||
MPU_RASR_B /* Bufferable */
|
||||
);
|
||||
|
||||
mpu_configure_region(IMX9_ITCM_BASE, 512 * 1024,
|
||||
MPU_RASR_AP_RORO | /* P:R0 U:R0 */
|
||||
MPU_RASR_TEX_NOR | /* Normal */
|
||||
MPU_RASR_C | /* Cacheable */
|
||||
MPU_RASR_B /* Bufferable */
|
||||
);
|
||||
|
||||
mpu_configure_region(IMX9_DTCM_BASE, 512 * 1024,
|
||||
MPU_RASR_AP_RWRW | /* P:RW U:RW */
|
||||
MPU_RASR_TEX_NOR | /* Normal */
|
||||
MPU_RASR_C | /* Cacheable */
|
||||
MPU_RASR_B | /* Bufferable */
|
||||
MPU_RASR_S | /* Shareable */
|
||||
MPU_RASR_XN /* Execute-never to prevent instruction fetch */
|
||||
);
|
||||
|
||||
mpu_configure_region(0x20400000, 1 * 1024 * 1024,
|
||||
MPU_RASR_AP_RWRW | /* P:RW U:RW */
|
||||
MPU_RASR_TEX_NOR | /* Normal */
|
||||
MPU_RASR_C | /* Cacheable */
|
||||
MPU_RASR_B /* Bufferable */
|
||||
);
|
||||
|
||||
mpu_configure_region(IMX9_FLEXSPI1_BASE, 128 * 1024 * 1024,
|
||||
MPU_RASR_AP_RORO | /* P:R0 U:R0 */
|
||||
MPU_RASR_TEX_NOR | /* Strongly Ordered */
|
||||
MPU_RASR_C | /* Cacheable */
|
||||
MPU_RASR_B /* Bufferable */
|
||||
);
|
||||
|
||||
/* AIPS1 + AIPS2 */
|
||||
|
||||
mpu_configure_region(IMX9_AIPS1_BASE, 16 * 1024 * 1024,
|
||||
MPU_RASR_AP_RWRW | /* P:RW U:RW */
|
||||
MPU_RASR_TEX_DEV /* Device */
|
||||
);
|
||||
|
||||
mpu_configure_region(IMX9_AIPS3_BASE, 8 * 1024 * 1024,
|
||||
MPU_RASR_AP_RWRW | /* P:RW U:RW */
|
||||
MPU_RASR_TEX_DEV /* Device */
|
||||
);
|
||||
|
||||
mpu_configure_region(IMX9_AIPS4_BASE, 8 * 1024 * 1024,
|
||||
MPU_RASR_AP_RWRW | /* P:RW U:RW */
|
||||
MPU_RASR_TEX_DEV /* Device */
|
||||
);
|
||||
|
||||
mpu_configure_region(IMX9_GPIO_MEM_BASE, 320 * 1024,
|
||||
MPU_RASR_AP_RWRW | /* P:RW U:RW */
|
||||
MPU_RASR_TEX_DEV /* Device */
|
||||
);
|
||||
|
||||
mpu_configure_region(IMX9_GPIO1_BASE, 64 * 1024,
|
||||
MPU_RASR_AP_RWRW | /* P:RW U:RW */
|
||||
MPU_RASR_TEX_DEV /* Device */
|
||||
);
|
||||
|
||||
/* For RPMSG VRING and RSC table */
|
||||
|
||||
mpu_configure_region(IMX9_RPMSG_BASE, 4096 * 1024,
|
||||
MPU_RASR_AP_RWRW | /* P:RW U:RW */
|
||||
MPU_RASR_TEX_NOR /* Normal */
|
||||
);
|
||||
|
||||
mpu_configure_region(IMX9_DRAM_XIP_BASE, 0x003ff800,
|
||||
MPU_RASR_AP_RWRW | /* P:RW U:RW */
|
||||
MPU_RASR_TEX_NOR /* Normal */
|
||||
);
|
||||
#endif
|
||||
|
||||
mpu_control(true, false, true);
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_mpu_uheap
|
||||
*
|
||||
* Description:
|
||||
* Map the user-heap region.
|
||||
*
|
||||
* This logic may need an extension to handle external SDRAM).
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_BUILD_PROTECTED
|
||||
void imx9_mpu_uheap(uintptr_t start, size_t size)
|
||||
{
|
||||
mpu_user_intsram(start, size);
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* CONFIG_ARM_MPU */
|
94
arch/arm/src/imx9/imx9_mpuinit.h
Normal file
94
arch/arm/src/imx9/imx9_mpuinit.h
Normal file
|
@ -0,0 +1,94 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/imx9_mpuinit.h
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ARCH_ARM_SRC_IMX9_IMX9_MPUINIT_H
|
||||
#define __ARCH_ARM_SRC_IMX9_IMX9_MPUINIT_H
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <stdint.h>
|
||||
|
||||
/****************************************************************************
|
||||
* Inline Functions
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
/****************************************************************************
|
||||
* Public Data
|
||||
****************************************************************************/
|
||||
|
||||
#undef EXTERN
|
||||
#if defined(__cplusplus)
|
||||
#define EXTERN extern "C"
|
||||
extern "C"
|
||||
{
|
||||
#else
|
||||
#define EXTERN extern
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Public Function Prototypes
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_mpu_initialize
|
||||
*
|
||||
* Description:
|
||||
* Configure the MPU to permit user-space access to only unrestricted
|
||||
* i.MXRT resources.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_ARM_MPU
|
||||
void imx9_mpu_initialize(void);
|
||||
#else
|
||||
# define imx9_mpu_initialize()
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_mpu_uheap
|
||||
*
|
||||
* Description:
|
||||
* Map the user heap region.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_BUILD_PROTECTED
|
||||
void imx9_mpu_uheap(uintptr_t start, size_t size);
|
||||
#else
|
||||
# define imx9_mpu_uheap(start,size)
|
||||
#endif
|
||||
|
||||
#undef EXTERN
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
#endif /* __ARCH_ARM_SRC_IMX9_IMX9_MPUINIT_H */
|
287
arch/arm/src/imx9/imx9_mu.c
Normal file
287
arch/arm/src/imx9/imx9_mu.c
Normal file
|
@ -0,0 +1,287 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/imx9_mu.c
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include "imx9_mu.h"
|
||||
#include "arm_internal.h"
|
||||
#include "hardware/imx95/imx95_memorymap.h"
|
||||
#include "hardware/imx9_mu.h"
|
||||
#include <debug.h>
|
||||
#include <nuttx/config.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
#define NR_OF_GPI 4
|
||||
#define MSG_INT_MASK ((1 << IMX9_MU_RR_REGARRAY_SIZE) - 1)
|
||||
#define GPI_INT_MASK ((1 << NR_OF_GPI) - 1)
|
||||
|
||||
/****************************************************************************
|
||||
* Private Types
|
||||
****************************************************************************/
|
||||
|
||||
struct imx9_mudev_s
|
||||
{
|
||||
uint32_t mubase;
|
||||
uint32_t irq;
|
||||
imx9_mu_msg_callback_t msg_callback;
|
||||
imx9_mu_gpi_callback_t gpi_callback;
|
||||
};
|
||||
|
||||
/****************************************************************************
|
||||
* Private Function Prototypes
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Private Data
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_IMX9_MU5
|
||||
static struct imx9_mudev_s g_mu5_dev = /* clang-format off */
|
||||
{
|
||||
.mubase = IMX9_MU5_MUA_BASE,
|
||||
.irq = IMX9_IRQ_MU5_A
|
||||
}; /* clang-format on */
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_IMX9_MU7
|
||||
static struct imx9_mudev_s g_mu7_dev = /* clang-format off */
|
||||
{
|
||||
.mubase = IMX9_MU7_MUB_BASE,
|
||||
.irq = IMX9_IRQ_MU7_B
|
||||
}; /* clang-format on */
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_IMX9_MU8
|
||||
static struct imx9_mudev_s g_mu8_dev = /* clang-format off */
|
||||
{
|
||||
.mubase = IMX9_MU8_MUB_BASE,
|
||||
.irq = IMX9_IRQ_MU8_B
|
||||
}; /* clang-format on */
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Private Functions
|
||||
****************************************************************************/
|
||||
|
||||
static int imx9_mu_interrupt(int irq, void *context, void *args)
|
||||
{
|
||||
struct imx9_mudev_s *dev = args;
|
||||
|
||||
uint32_t sr = getreg32(IMX9_MU_SR(dev->mubase));
|
||||
uint32_t rsr = getreg32(IMX9_MU_RSR(dev->mubase));
|
||||
uint32_t gsr = getreg32(IMX9_MU_GSR(dev->mubase));
|
||||
|
||||
ipcinfo("MU irq=%d, SR=0x%04lx, RSR=0x%04lx, GSR=0x%04lx\n", irq, sr, rsr,
|
||||
gsr);
|
||||
|
||||
if (sr & IMX9_MU_SR_RFP_FLAG)
|
||||
{
|
||||
for (int i = 0; i < IMX9_MU_RR_REGARRAY_SIZE; i++)
|
||||
{
|
||||
if (rsr & (1 << i))
|
||||
{
|
||||
uint32_t msg = imx95_mu_receive_msg_non_blocking(dev, i);
|
||||
|
||||
if (dev->msg_callback)
|
||||
{
|
||||
dev->msg_callback(i, msg, dev);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < NR_OF_GPI; i++)
|
||||
{
|
||||
if (gsr & (1 << i))
|
||||
{
|
||||
putreg32((1 << i), IMX9_MU_GSR(dev->mubase));
|
||||
|
||||
if (dev->gpi_callback)
|
||||
{
|
||||
dev->gpi_callback(i, dev);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Unknown interrupt flag which occurs when A55 shuts down */
|
||||
|
||||
if (sr & 0x80)
|
||||
{
|
||||
/* TODO how to clear this flag? A W1C doesn't seem to work.. */
|
||||
|
||||
putreg32(0x80, IMX9_MU_SR(dev->mubase));
|
||||
}
|
||||
|
||||
return OK;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
|
||||
struct imx9_mudev_s *imx95_mu_init(int index)
|
||||
{
|
||||
struct imx9_mudev_s *priv;
|
||||
|
||||
#ifdef CONFIG_IMX9_MU5
|
||||
if ((index == 5))
|
||||
{
|
||||
priv = &g_mu5_dev;
|
||||
}
|
||||
|
||||
else
|
||||
#endif
|
||||
#ifdef CONFIG_IMX9_MU7
|
||||
if ((index == 7))
|
||||
{
|
||||
priv = &g_mu7_dev;
|
||||
}
|
||||
|
||||
else
|
||||
#endif
|
||||
#ifdef CONFIG_IMX9_MU8
|
||||
if ((index == 8))
|
||||
{
|
||||
priv = &g_mu8_dev;
|
||||
}
|
||||
|
||||
else
|
||||
#endif
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
irq_attach(priv->irq, imx9_mu_interrupt, priv);
|
||||
up_enable_irq(priv->irq);
|
||||
|
||||
priv->gpi_callback = NULL;
|
||||
priv->msg_callback = NULL;
|
||||
|
||||
return priv;
|
||||
}
|
||||
|
||||
void imx95_mu_subscribe_msg(struct imx9_mudev_s *priv,
|
||||
uint32_t msg_int_bitfield,
|
||||
imx9_mu_msg_callback_t callback)
|
||||
{
|
||||
priv->msg_callback = callback;
|
||||
putreg32(msg_int_bitfield & MSG_INT_MASK, IMX9_MU_RCR(priv->mubase));
|
||||
}
|
||||
|
||||
void imx95_mu_subscribe_gpi(struct imx9_mudev_s *priv,
|
||||
uint32_t gpi_int_enable,
|
||||
imx9_mu_gpi_callback_t callback)
|
||||
{
|
||||
priv->gpi_callback = callback;
|
||||
putreg32(gpi_int_enable & GPI_INT_MASK, IMX9_MU_GIER(priv->mubase));
|
||||
}
|
||||
|
||||
void imx95_mu_deinit(struct imx9_mudev_s *priv)
|
||||
{
|
||||
up_disable_irq(priv->irq);
|
||||
}
|
||||
|
||||
int imx95_mu_send_msg_non_blocking(struct imx9_mudev_s *priv,
|
||||
uint32_t reg_index, uint32_t msg)
|
||||
{
|
||||
assert(reg_index < IMX9_MU_TR_REGARRAY_SIZE);
|
||||
|
||||
ipcinfo("MU send msg nonblocking idx=%ld, msg=%ld\n", reg_index, msg);
|
||||
|
||||
if ((getreg32(IMX9_MU_TSR(priv->mubase)) & (1UL << reg_index)) == 0UL)
|
||||
{
|
||||
return -EBUSY;
|
||||
}
|
||||
|
||||
putreg32(msg, IMX9_MU_TR1(priv->mubase) + (reg_index * sizeof(uint32_t)));
|
||||
return OK;
|
||||
}
|
||||
|
||||
void imx95_mu_send_msg(struct imx9_mudev_s *priv, uint32_t reg_index,
|
||||
uint32_t msg)
|
||||
{
|
||||
assert(reg_index < IMX9_MU_TR_REGARRAY_SIZE);
|
||||
|
||||
ipcinfo("MU send msg idx=%ld, msg=%ld\n", reg_index, msg);
|
||||
|
||||
/* Wait TX register to be empty. */
|
||||
|
||||
while ((getreg32(IMX9_MU_TSR(priv->mubase)) & (1UL << reg_index)) == 0UL)
|
||||
;
|
||||
|
||||
putreg32(msg, IMX9_MU_TR1(priv->mubase) + (reg_index * sizeof(uint32_t)));
|
||||
}
|
||||
|
||||
int imx95_mu_has_received_msg(struct imx9_mudev_s *priv, uint32_t reg_index)
|
||||
{
|
||||
if ((getreg32(IMX9_MU_RSR(priv->mubase)) & (1UL << reg_index)) == 0UL)
|
||||
{
|
||||
return -ENODATA;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint32_t imx95_mu_receive_msg_non_blocking(struct imx9_mudev_s *priv,
|
||||
uint32_t reg_index)
|
||||
{
|
||||
assert(reg_index < IMX9_MU_RR_REGARRAY_SIZE);
|
||||
|
||||
return getreg32(IMX9_MU_RR1(priv->mubase) +
|
||||
(reg_index * sizeof(uint32_t)));
|
||||
}
|
||||
|
||||
uint32_t imx95_mu_receive_msg(struct imx9_mudev_s *priv, uint32_t reg_index)
|
||||
{
|
||||
assert(reg_index < IMX9_MU_RR_REGARRAY_SIZE);
|
||||
|
||||
/* Wait RX register to be full. */
|
||||
|
||||
while (imx95_mu_has_received_msg(priv, reg_index) == -ENODATA);
|
||||
|
||||
return getreg32(IMX9_MU_RR1(priv->mubase) +
|
||||
(reg_index * sizeof(uint32_t)));
|
||||
}
|
||||
|
||||
int imx95_mu_trigger_interrupts(struct imx9_mudev_s *priv,
|
||||
uint32_t interrupts)
|
||||
{
|
||||
int ret = -ECOMM;
|
||||
uint32_t gcr = getreg32(IMX9_MU_GCR(priv->mubase));
|
||||
|
||||
/* Only if previous interrupts has been accepted. */
|
||||
|
||||
if ((gcr & interrupts) == 0)
|
||||
{
|
||||
putreg32(gcr | interrupts, IMX9_MU_GCR(priv->mubase));
|
||||
ret = OK;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
61
arch/arm/src/imx9/imx9_mu.h
Normal file
61
arch/arm/src/imx9/imx9_mu.h
Normal file
|
@ -0,0 +1,61 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/imx9_mu.h
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ARCH_ARM_SRC_IMX9_IMX9_MU_H
|
||||
#define __ARCH_ARM_SRC_IMX9_IMX9_MU_H
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stdint.h>
|
||||
|
||||
typedef void (*imx9_mu_msg_callback_t)(int id, uint32_t msg, void *arg);
|
||||
typedef void (*imx9_mu_gpi_callback_t)(int id, void *arg);
|
||||
|
||||
/****************************************************************************
|
||||
* Public Function Prototypes
|
||||
****************************************************************************/
|
||||
|
||||
struct imx9_mudev_s *imx95_mu_init(int index);
|
||||
void imx95_mu_subscribe_msg(struct imx9_mudev_s *priv,
|
||||
uint32_t msg_int_bitfield,
|
||||
imx9_mu_msg_callback_t callback);
|
||||
void imx95_mu_subscribe_gpi(struct imx9_mudev_s *priv,
|
||||
uint32_t gpi_int_enable,
|
||||
imx9_mu_gpi_callback_t callback);
|
||||
|
||||
void imx95_mu_deinit(struct imx9_mudev_s *priv);
|
||||
int imx95_mu_send_msg_non_blocking(struct imx9_mudev_s *priv,
|
||||
uint32_t reg_index, uint32_t msg);
|
||||
void imx95_mu_send_msg(struct imx9_mudev_s *priv, uint32_t reg_index,
|
||||
uint32_t msg);
|
||||
int imx95_mu_has_received_msg(struct imx9_mudev_s *priv, uint32_t reg_index);
|
||||
uint32_t imx95_mu_receive_msg_non_blocking(struct imx9_mudev_s *priv,
|
||||
uint32_t reg_index);
|
||||
uint32_t imx95_mu_receive_msg(struct imx9_mudev_s *priv, uint32_t reg_index);
|
||||
int imx95_mu_trigger_interrupts(struct imx9_mudev_s *priv,
|
||||
uint32_t interrupts);
|
||||
|
||||
#endif /* __ARCH_ARM_SRC_IMX9_IMX9_MU_H */
|
301
arch/arm/src/imx9/imx9_rptun.c
Normal file
301
arch/arm/src/imx9/imx9_rptun.c
Normal file
|
@ -0,0 +1,301 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/imx9_rptun.c
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include "imx9_rptun.h"
|
||||
#include "arm_internal.h"
|
||||
#include "imx9_mu.h"
|
||||
#include "imx9_rsctable.h"
|
||||
#include <debug.h>
|
||||
#include <nuttx/config.h>
|
||||
#include <nuttx/kthread.h>
|
||||
#include <nuttx/nuttx.h>
|
||||
#include <nuttx/rptun/rptun.h>
|
||||
#include <nuttx/semaphore.h>
|
||||
#include <nuttx/signal.h>
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
#define VRING_SHMEM 0x88220000 /* Vring shared memory start */
|
||||
|
||||
#define RPMSG_MU_CHANNEL 1
|
||||
#define MU_INSTANCE 7
|
||||
|
||||
#define MU_MSG_VQID_BITOFFSET 16
|
||||
|
||||
/****************************************************************************
|
||||
* Private Types
|
||||
****************************************************************************/
|
||||
|
||||
/* IMX9 rptun shared memory */
|
||||
|
||||
struct imx9_rptun_shmem_s
|
||||
{
|
||||
struct rptun_rsc_s rsc;
|
||||
};
|
||||
|
||||
/* IMX9 rptun device */
|
||||
|
||||
struct imx9_rptun_dev_s
|
||||
{
|
||||
struct rptun_dev_s rptun;
|
||||
rptun_callback_t callback;
|
||||
void *mu;
|
||||
void *arg;
|
||||
struct imx9_rptun_shmem_s *shmem;
|
||||
char cpuname[RPMSG_NAME_SIZE + 1];
|
||||
char shmemname[RPMSG_NAME_SIZE + 1];
|
||||
};
|
||||
|
||||
/****************************************************************************
|
||||
* Private Function Prototypes
|
||||
****************************************************************************/
|
||||
|
||||
static const char *imx9_rptun_get_cpuname(struct rptun_dev_s *dev);
|
||||
static const char *imx9_rptun_get_firmware(struct rptun_dev_s *dev);
|
||||
static const struct rptun_addrenv_s *
|
||||
imx9_rptun_get_addrenv(struct rptun_dev_s *dev);
|
||||
static struct rptun_rsc_s *imx9_rptun_get_resource(struct rptun_dev_s *dev);
|
||||
static bool imx9_rptun_is_autostart(struct rptun_dev_s *dev);
|
||||
static bool imx9_rptun_is_master(struct rptun_dev_s *dev);
|
||||
static int imx9_rptun_start(struct rptun_dev_s *dev);
|
||||
static int imx9_rptun_stop(struct rptun_dev_s *dev);
|
||||
static int imx9_rptun_notify(struct rptun_dev_s *dev, uint32_t vqid);
|
||||
static int imx9_rptun_register_callback(struct rptun_dev_s *dev,
|
||||
rptun_callback_t callback,
|
||||
void *arg);
|
||||
|
||||
/****************************************************************************
|
||||
* Private Data
|
||||
****************************************************************************/
|
||||
|
||||
static const struct rptun_ops_s g_imx9_rptun_ops =
|
||||
{
|
||||
.get_cpuname = imx9_rptun_get_cpuname,
|
||||
.get_firmware = imx9_rptun_get_firmware,
|
||||
.get_addrenv = imx9_rptun_get_addrenv,
|
||||
.get_resource = imx9_rptun_get_resource,
|
||||
.is_autostart = imx9_rptun_is_autostart,
|
||||
.is_master = imx9_rptun_is_master,
|
||||
.start = imx9_rptun_start,
|
||||
.stop = imx9_rptun_stop,
|
||||
.notify = imx9_rptun_notify,
|
||||
.register_callback = imx9_rptun_register_callback,
|
||||
};
|
||||
|
||||
struct imx9_rptun_dev_s g_rptun_dev;
|
||||
|
||||
/****************************************************************************
|
||||
* Private Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_rptun_get_cpuname
|
||||
****************************************************************************/
|
||||
|
||||
static const char *imx9_rptun_get_cpuname(struct rptun_dev_s *dev)
|
||||
{
|
||||
struct imx9_rptun_dev_s *priv =
|
||||
container_of(dev, struct imx9_rptun_dev_s, rptun);
|
||||
|
||||
return priv->cpuname;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_rptun_get_firmware
|
||||
****************************************************************************/
|
||||
|
||||
static const char *imx9_rptun_get_firmware(struct rptun_dev_s *dev)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_rptun_get_addrenv
|
||||
****************************************************************************/
|
||||
|
||||
static const struct rptun_addrenv_s *
|
||||
imx9_rptun_get_addrenv(struct rptun_dev_s *dev)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_rptun_get_resource
|
||||
****************************************************************************/
|
||||
|
||||
static struct rptun_rsc_s *imx9_rptun_get_resource(struct rptun_dev_s *dev)
|
||||
{
|
||||
struct imx9_rptun_dev_s *priv =
|
||||
container_of(dev, struct imx9_rptun_dev_s, rptun);
|
||||
|
||||
if (priv->shmem != NULL)
|
||||
{
|
||||
return &priv->shmem->rsc;
|
||||
}
|
||||
|
||||
priv->shmem = (struct imx9_rptun_shmem_s *)VRING_SHMEM;
|
||||
if (priv->shmem->rsc.rsc_tbl_hdr.offset
|
||||
!= g_imx9_rsc_table.rsc_tbl_hdr.offset)
|
||||
{
|
||||
imx9_rsctable_copy();
|
||||
}
|
||||
|
||||
return &priv->shmem->rsc;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_rptun_is_autostart
|
||||
****************************************************************************/
|
||||
|
||||
static bool imx9_rptun_is_autostart(struct rptun_dev_s *dev)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_rptun_is_master
|
||||
****************************************************************************/
|
||||
|
||||
static bool imx9_rptun_is_master(struct rptun_dev_s *dev)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_rptun_start
|
||||
****************************************************************************/
|
||||
|
||||
static int imx9_rptun_start(struct rptun_dev_s *dev)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_rptun_stop
|
||||
****************************************************************************/
|
||||
|
||||
static int imx9_rptun_stop(struct rptun_dev_s *dev)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_rptun_notify
|
||||
****************************************************************************/
|
||||
|
||||
static int imx9_rptun_notify(struct rptun_dev_s *dev, uint32_t vqid)
|
||||
{
|
||||
struct imx9_rptun_dev_s *priv =
|
||||
container_of(dev, struct imx9_rptun_dev_s, rptun);
|
||||
|
||||
ipcinfo("Rptun notify vqid=%ld\n", vqid);
|
||||
|
||||
imx95_mu_send_msg(priv->mu, RPMSG_MU_CHANNEL,
|
||||
vqid << MU_MSG_VQID_BITOFFSET);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_rptun_register_callback
|
||||
****************************************************************************/
|
||||
|
||||
static int imx9_rptun_register_callback(struct rptun_dev_s *dev,
|
||||
rptun_callback_t callback, void *arg)
|
||||
{
|
||||
struct imx9_rptun_dev_s *priv =
|
||||
container_of(dev, struct imx9_rptun_dev_s, rptun);
|
||||
|
||||
priv->callback = callback;
|
||||
priv->arg = arg;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_mu_callback
|
||||
****************************************************************************/
|
||||
|
||||
static void imx9_mu_callback(int id, uint32_t msg, void *arg)
|
||||
{
|
||||
if (id == RPMSG_MU_CHANNEL)
|
||||
{
|
||||
struct imx9_rptun_dev_s *dev = &g_rptun_dev;
|
||||
uint32_t vqid = msg >> MU_MSG_VQID_BITOFFSET;
|
||||
|
||||
ipcinfo("Rptun interrupt id=%d, vqid=%ld\n", id, vqid);
|
||||
|
||||
if (dev->callback != NULL)
|
||||
{
|
||||
dev->callback(dev->arg, vqid);
|
||||
}
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
DEBUGASSERT(0);
|
||||
}
|
||||
|
||||
__asm volatile("dsb 0xF" ::: "memory");
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
|
||||
int imx9_rptun_init(const char *shmemname, const char *cpuname)
|
||||
{
|
||||
struct imx9_rptun_dev_s *dev = &g_rptun_dev;
|
||||
int ret = OK;
|
||||
|
||||
/* Subscribe to MU */
|
||||
|
||||
dev->mu = imx95_mu_init(MU_INSTANCE);
|
||||
if (!dev->mu)
|
||||
{
|
||||
ipcerr("ERROR: cannot init mailbox %i!\n", MU_INSTANCE);
|
||||
return ret;
|
||||
}
|
||||
|
||||
imx95_mu_subscribe_msg(dev->mu, (1 << RPMSG_MU_CHANNEL), imx9_mu_callback);
|
||||
|
||||
/* Configure device */
|
||||
|
||||
dev->rptun.ops = &g_imx9_rptun_ops;
|
||||
strncpy(dev->cpuname, cpuname, RPMSG_NAME_SIZE);
|
||||
strncpy(dev->shmemname, shmemname, RPMSG_NAME_SIZE);
|
||||
|
||||
ret = rptun_initialize(&dev->rptun);
|
||||
if (ret < 0)
|
||||
{
|
||||
ipcerr("ERROR: rptun_initialize failed %d!\n", ret);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
47
arch/arm/src/imx9/imx9_rptun.h
Normal file
47
arch/arm/src/imx9/imx9_rptun.h
Normal file
|
@ -0,0 +1,47 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/imx9_rptun.h
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ARCH_ARM_SRC_IMX9_IMX9_RPTUN_H
|
||||
#define __ARCH_ARM_SRC_IMX9_IMX9_RPTUN_H
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
/****************************************************************************
|
||||
* Public Data
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Public Function Prototypes
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_rptun_init
|
||||
****************************************************************************/
|
||||
|
||||
int imx9_rptun_init(const char *shmemname, const char *cpuname);
|
||||
|
||||
#endif /* __ARCH_ARM_SRC_IMX9_IMX9_RPTUN_H */
|
126
arch/arm/src/imx9/imx9_rsctable.c
Normal file
126
arch/arm/src/imx9/imx9_rsctable.c
Normal file
|
@ -0,0 +1,126 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/imx9_rsctable.c
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include "imx9_rsctable.h"
|
||||
#include <string.h>
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
#define NUM_VRINGS 0x02
|
||||
#define RL_BUFFER_COUNT 0x100
|
||||
#define VRING_ALIGN 0x1000
|
||||
#define VRING_SIZE 0x8000
|
||||
#define VDEV0_VRING_BASE 0x88000000
|
||||
#define RESOURCE_TABLE_BASE 0x88220000
|
||||
|
||||
#define NO_RESOURCE_ENTRIES (1)
|
||||
#define RSC_VDEV_FEATURE_NS (1) /* Support name service announcement */
|
||||
#define IMX9_RSC_TABLE_VERSION (1)
|
||||
|
||||
/****************************************************************************
|
||||
* Private Functions
|
||||
****************************************************************************/
|
||||
|
||||
/* Place resource table in special ELF section */
|
||||
#if defined(__ARMCC_VERSION) || defined(__GNUC__)
|
||||
__attribute__ ((section(".resource_table")))
|
||||
#elif defined(__ICCARM__)
|
||||
#pragma location = ".resource_table"
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
const struct rptun_rsc_s g_imx9_rsc_table =
|
||||
{
|
||||
.rsc_tbl_hdr =
|
||||
{
|
||||
IMX9_RSC_TABLE_VERSION,
|
||||
NO_RESOURCE_ENTRIES,
|
||||
{
|
||||
0, 0
|
||||
}
|
||||
},
|
||||
|
||||
.offset =
|
||||
{
|
||||
offsetof(struct rptun_rsc_s, rpmsg_vdev)
|
||||
},
|
||||
|
||||
.log_trace =
|
||||
{
|
||||
RSC_TRACE, 0, 0
|
||||
},
|
||||
|
||||
.rpmsg_vdev = /* SRTM virtio device entry */
|
||||
{
|
||||
RSC_VDEV,
|
||||
7,
|
||||
2,
|
||||
RSC_VDEV_FEATURE_NS,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
NUM_VRINGS,
|
||||
{
|
||||
0, 0
|
||||
}
|
||||
},
|
||||
|
||||
.rpmsg_vring0 =
|
||||
{
|
||||
VDEV0_VRING_BASE,
|
||||
VRING_ALIGN,
|
||||
RL_BUFFER_COUNT,
|
||||
0,
|
||||
0
|
||||
},
|
||||
|
||||
.rpmsg_vring1 =
|
||||
{
|
||||
VDEV0_VRING_BASE + VRING_SIZE,
|
||||
VRING_ALIGN,
|
||||
RL_BUFFER_COUNT,
|
||||
1,
|
||||
0
|
||||
},
|
||||
|
||||
.config =
|
||||
{
|
||||
0
|
||||
}
|
||||
};
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
|
||||
void imx9_rsctable_copy(void)
|
||||
{
|
||||
memcpy((void *)RESOURCE_TABLE_BASE, (void *)&g_imx9_rsc_table,
|
||||
sizeof(g_imx9_rsc_table));
|
||||
}
|
45
arch/arm/src/imx9/imx9_rsctable.h
Normal file
45
arch/arm/src/imx9/imx9_rsctable.h
Normal file
|
@ -0,0 +1,45 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/imx9_rsctable.h
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ARCH_ARM_SRC_IMX9_IMX9_RSCTABLE_H
|
||||
#define __ARCH_ARM_SRC_IMX9_IMX9_RSCTABLE_H
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/rptun/rptun.h>
|
||||
|
||||
/****************************************************************************
|
||||
* Public Data
|
||||
****************************************************************************/
|
||||
|
||||
extern const struct rptun_rsc_s g_imx9_rsc_table;
|
||||
|
||||
/****************************************************************************
|
||||
* Public Function Prototypes
|
||||
****************************************************************************/
|
||||
|
||||
void imx9_rsctable_copy(void);
|
||||
|
||||
#endif /* __ARCH_ARM_SRC_IMX9_IMX9_RSCTABLE_H */
|
1046
arch/arm/src/imx9/imx9_scmi.c
Normal file
1046
arch/arm/src/imx9/imx9_scmi.c
Normal file
File diff suppressed because it is too large
Load diff
157
arch/arm/src/imx9/imx9_scmi.h
Normal file
157
arch/arm/src/imx9/imx9_scmi.h
Normal file
|
@ -0,0 +1,157 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/imx9_scmi.h
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ARCH_ARM_SRC_IMX9_IMX9_SCMI_H
|
||||
#define __ARCH_ARM_SRC_IMX9_IMX9_SCMI_H
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
#define SM_PLATFORM_A2P 0 /* SCMI Agent -> SCMI Platform */
|
||||
#define SM_PLATFORM_NOTIFY 1 /* SCMI Platform -> SCMI Agent */
|
||||
#define SM_PLATFORM_PRIORITY 2
|
||||
|
||||
#define SM_CLOCK_RATE_MASK 0xFFFFFFFFU
|
||||
|
||||
/* SCMI clock round options */
|
||||
#define SCMI_CLOCK_ROUND_DOWN 0U /* Round down */
|
||||
#define SCMI_CLOCK_ROUND_UP 1U /* Round up */
|
||||
#define SCMI_CLOCK_ROUND_AUTO 2U /* Round to nearest */
|
||||
|
||||
/* SCMI clock rate flags */
|
||||
|
||||
#define SCMI_CLOCK_RATE_FLAGS_ROUND(x) (((x) & 0x3U) << 2U) /* Round up/down */
|
||||
#define SCMI_CLOCK_RATE_FLAGS_NO_RESP(x) (((x) & 0x1U) << 1U) /* Ignore delayed response */
|
||||
#define SCMI_CLOCK_RATE_FLAGS_ASYNC(x) (((x) & 0x1U) << 0U) /* Async flag */
|
||||
|
||||
/* SCMI clock config attributes */
|
||||
|
||||
#define SCMI_CLOCK_CONFIG_SET_OEM(x) (((x) & 0xFFU) << 16U) /* OEM specified config type */
|
||||
#define SCMI_CLOCK_CONFIG_SET_ENABLE(x) (((x) & 0x3U) << 0U) /* Enable/Disable */
|
||||
|
||||
/* SCMI pin control types */
|
||||
|
||||
#define SCMI_PINCTRL_SEL_PIN 0U
|
||||
#define SCMI_PINCTRL_SEL_GROUP 1U
|
||||
#define SCMI_PINCTRL_TYPE_MUX 192U /* Mux type */
|
||||
#define SCMI_PINCTRL_TYPE_CONFIG 193U /* Config type */
|
||||
#define SCMI_PINCTRL_TYPE_DAISY_ID 194U /* Daisy ID type */
|
||||
#define SCMI_PINCTRL_TYPE_DAISY_CFG 195U /* Daisy config type */
|
||||
#define SCMI_PINCTRL_SET_ATTR_NUM_CONFIGS(x) (((x) & 0xFFU) << 2U)
|
||||
#define SCMI_PINCTRL_SET_ATTR_SELECTOR(x) (((x) & 0x3U) << 0U)
|
||||
|
||||
/* Pinctrl */
|
||||
#define SM_PLATFORM_PINCTRL_MUX_MODE_MASK (0x7U)
|
||||
#define SM_PLATFORM_PINCTRL_MUX_MODE_SHIFT (0U)
|
||||
#define SM_PLATFORM_PINCTRL_MUX_MODE(x) \
|
||||
(((uint32_t)(((uint32_t)(x)) << SM_PLATFORM_PINCTRL_MUX_MODE_SHIFT)) & SM_PLATFORM_PINCTRL_MUX_MODE_MASK)
|
||||
|
||||
#define SM_PLATFORM_PINCTRL_SION_MASK (0x10)
|
||||
#define SM_PLATFORM_PINCTRL_SION_SHIFT (4U)
|
||||
#define SM_PLATFORM_PINCTRL_SION(x) \
|
||||
(((uint32_t)(((uint32_t)(x)) << SM_PLATFORM_PINCTRL_SION_SHIFT)) & SM_PLATFORM_PINCTRL_SION_MASK)
|
||||
|
||||
#define SM_PLATFORM_PINCTRL_BASE IMX9_IOMUXC_BASE
|
||||
#define SM_PLATFORM_PINCTRL_MUXREG_OFF (SM_PLATFORM_PINCTRL_BASE)
|
||||
#define SM_PLATFORM_PINCTRL_CFGREG_OFF (SM_PLATFORM_PINCTRL_BASE + 0x204) /* 0x443c0204 */
|
||||
#define SM_PLATFORM_PINCTRL_DAISYREG_OFF (SM_PLATFORM_PINCTRL_BASE + 0x408) /* 0x443c0408 */
|
||||
|
||||
/****************************************************************************
|
||||
* Public Types
|
||||
****************************************************************************/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint32_t channel; /* channel id: SCMI_A2P, SCMI_NOTIRY, SCMI_P2A, */
|
||||
uint32_t rateu;
|
||||
uint32_t ratel;
|
||||
uint32_t clk_id; /* clock device id */
|
||||
uint32_t pclk_id; /* parent clock device id */
|
||||
uint32_t div; /* clock divider */
|
||||
uint32_t attributes; /* clock attributes */
|
||||
uint32_t oem_config_val;
|
||||
uint32_t flags;
|
||||
} sm_clock_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint32_t channel;
|
||||
uint32_t mux_register;
|
||||
uint32_t mux_mode;
|
||||
uint32_t input_register;
|
||||
uint32_t input_daisy;
|
||||
uint32_t config_register;
|
||||
uint32_t config_value;
|
||||
uint32_t input_on_field;
|
||||
} sm_pinctrl_t;
|
||||
|
||||
/* SCMI clock rate */
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint32_t lower; /* Lower 32 bits of the physical rate in Hz */
|
||||
uint32_t upper; /* Upper 32 bits of the physical rate in Hz */
|
||||
} scmi_clock_rate_t;
|
||||
|
||||
/* SCMI pin control config */
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint32_t type; /* The type of config */
|
||||
uint32_t value; /* The configuration value */
|
||||
} scmi_pin_config_t;
|
||||
|
||||
/****************************************************************************
|
||||
* Public Function Prototypes
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_scmi_initialize
|
||||
*
|
||||
* Description:
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
void imx9_scmi_initialize(void);
|
||||
|
||||
int32_t imx9_scmi_clockparentget(uint32_t channel, uint32_t clockid,
|
||||
uint32_t *parentid);
|
||||
int32_t imx9_scmi_clockparentset(uint32_t channel, uint32_t clockid,
|
||||
uint32_t parentid);
|
||||
int32_t imx9_scmi_clockrateget(uint32_t channel, uint32_t clockid,
|
||||
scmi_clock_rate_t *rate);
|
||||
int32_t imx9_scmi_clockrateset(uint32_t channel, uint32_t clockid,
|
||||
uint32_t flags, scmi_clock_rate_t rate);
|
||||
int32_t imx9_scmi_clockconfigset(uint32_t channel, uint32_t clockid,
|
||||
uint32_t attributes, uint32_t oem_config_val);
|
||||
int32_t imx9_scmi_pinctrlconfigset(uint32_t channel, uint32_t identifier,
|
||||
uint32_t attributes, const scmi_pin_config_t *configs);
|
||||
|
||||
#endif /* __ARCH_ARM_SRC_IMX9_IMX9_SCMI_H */
|
245
arch/arm/src/imx9/imx9_serial.h
Normal file
245
arch/arm/src/imx9/imx9_serial.h
Normal file
|
@ -0,0 +1,245 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/imx9_serial.h
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ARCH_ARM_SRC_IMX9_IMX9_SERIAL_H
|
||||
#define __ARCH_ARM_SRC_IMX9_IMX9_SERIAL_H
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
#if defined(CONFIG_IMX9_LPUART1) || defined(CONFIG_IMX9_LPUART2) || \
|
||||
defined(CONFIG_IMX9_LPUART3) || defined(CONFIG_IMX9_LPUART4) || \
|
||||
defined(CONFIG_IMX9_LPUART5) || defined(CONFIG_IMX9_LPUART6) || \
|
||||
defined(CONFIG_IMX9_LPUART7) || defined(CONFIG_IMX9_LPUART8)
|
||||
# define HAVE_UART 1
|
||||
#endif
|
||||
|
||||
/* Assume DMA is not used on the console UART */
|
||||
|
||||
#undef SERIAL_HAVE_CONSOLE_RXDMA
|
||||
#undef SERIAL_HAVE_CONSOLE_TXDMA
|
||||
|
||||
#if !defined(HAVE_UART) || !defined(CONFIG_ARCH_DMA)
|
||||
# undef CONFIG_LPUART1_RXDMA
|
||||
# undef CONFIG_LPUART1_TXDMA
|
||||
# undef CONFIG_LPUART2_RXDMA
|
||||
# undef CONFIG_LPUART2_TXDMA
|
||||
# undef CONFIG_LPUART3_RXDMA
|
||||
# undef CONFIG_LPUART3_TXDMA
|
||||
# undef CONFIG_LPUART4_RXDMA
|
||||
# undef CONFIG_LPUART4_TXDMA
|
||||
# undef CONFIG_LPUART5_RXDMA
|
||||
# undef CONFIG_LPUART5_TXDMA
|
||||
# undef CONFIG_LPUART6_RXDMA
|
||||
# undef CONFIG_LPUART6_TXDMA
|
||||
# undef CONFIG_LPUART7_RXDMA
|
||||
# undef CONFIG_LPUART7_TXDMA
|
||||
# undef CONFIG_LPUART8_RXDMA
|
||||
# undef CONFIG_LPUART8_TXDMA
|
||||
#endif
|
||||
|
||||
/* Disable the DMA configuration on all unused LPUARTs */
|
||||
|
||||
#ifndef CONFIG_IMX9_LPUART1
|
||||
# undef CONFIG_LPUART1_RXDMA
|
||||
# undef CONFIG_LPUART1_TXDMA
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_IMX9_LPUART2
|
||||
# undef CONFIG_LPUART2_RXDMA
|
||||
# undef CONFIG_LPUART2_TXDMA
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_IMX9_LPUART3
|
||||
# undef CONFIG_LPUART3_RXDMA
|
||||
# undef CONFIG_LPUART3_TXDMA
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_IMX9_LPUART4
|
||||
# undef CONFIG_LPUART4_RXDMA
|
||||
# undef CONFIG_LPUART4_TXDMA
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_IMX9_LPUART5
|
||||
# undef CONFIG_LPUART5_RXDMA
|
||||
# undef CONFIG_LPUART5_TXDMA
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_IMX9_LPUART6
|
||||
# undef CONFIG_LPUART6_RXDMA
|
||||
# undef CONFIG_LPUART6_TXDMA
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_IMX9_LPUART8
|
||||
# undef CONFIG_LPUART7_RXDMA
|
||||
# undef CONFIG_LPUART7_TXDMA
|
||||
#endif
|
||||
|
||||
/* Is RX DMA available on any (enabled) LPUART? */
|
||||
|
||||
#undef SERIAL_HAVE_RXDMA
|
||||
#if defined(CONFIG_LPUART1_RXDMA) || defined(CONFIG_LPUART2_RXDMA) || \
|
||||
defined(CONFIG_LPUART3_RXDMA) || defined(CONFIG_LPUART4_RXDMA) || \
|
||||
defined(CONFIG_LPUART5_RXDMA) || defined(CONFIG_LPUART6_RXDMA) || \
|
||||
defined(CONFIG_LPUART7_RXDMA) || defined(CONFIG_LPUART8_RXDMA)
|
||||
# define SERIAL_HAVE_RXDMA 1
|
||||
#endif
|
||||
|
||||
/* Is TX DMA available on any (enabled) LPUART? */
|
||||
#undef SERIAL_HAVE_TXDMA
|
||||
#if defined(CONFIG_LPUART1_TXDMA) || defined(CONFIG_LPUART2_TXDMA) || \
|
||||
defined(CONFIG_LPUART3_TXDMA) || defined(CONFIG_LPUART4_TXDMA) || \
|
||||
defined(CONFIG_LPUART5_TXDMA) || defined(CONFIG_LPUART6_TXDMA) || \
|
||||
defined(CONFIG_LPUART7_TXDMA) || defined(CONFIG_LPUART8_TXDMA)
|
||||
# define SERIAL_HAVE_TXDMA 1
|
||||
#endif
|
||||
|
||||
/* Is RX DMA used on all (enabled) LPUARTs */
|
||||
|
||||
#define SERIAL_HAVE_ONLY_RXDMA 1
|
||||
#if defined(CONFIG_IMX9_LPUART1) && !defined(CONFIG_LPUART1_RXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_RXDMA
|
||||
#elif defined(CONFIG_IMX9_LPUART2) && !defined(CONFIG_LPUART2_RXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_RXDMA
|
||||
#elif defined(CONFIG_IMX9_LPUART3) && !defined(CONFIG_LPUART3_RXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_RXDMA
|
||||
#elif defined(CONFIG_IMX9_LPUART4) && !defined(CONFIG_LPUART4_RXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_RXDMA
|
||||
#elif defined(CONFIG_IMX9_LPUART5) && !defined(CONFIG_LPUART5_RXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_RXDMA
|
||||
#elif defined(CONFIG_IMX9_LPUART6) && !defined(CONFIG_LPUART6_RXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_RXDMA
|
||||
#elif defined(CONFIG_IMX9_LPUART7) && !defined(CONFIG_LPUART7_RXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_RXDMA
|
||||
#elif defined(CONFIG_IMX9_LPUART8) && !defined(CONFIG_LPUART8_RXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_RXDMA
|
||||
#endif
|
||||
|
||||
/* Is TX DMA used on all (enabled) LPUARTs */
|
||||
|
||||
#define SERIAL_HAVE_ONLY_TXDMA 1
|
||||
#if defined(CONFIG_IMX9_LPUART1) && !defined(CONFIG_LPUART1_TXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_TXDMA
|
||||
#elif defined(CONFIG_IMX9_LPUART2) && !defined(CONFIG_LPUART2_TXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_TXDMA
|
||||
#elif defined(CONFIG_IMX9_LPUART3) && !defined(CONFIG_LPUART3_TXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_TXDMA
|
||||
#elif defined(CONFIG_IMX9_LPUART4) && !defined(CONFIG_LPUART4_TXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_TXDMA
|
||||
#elif defined(CONFIG_IMX9_LPUART5) && !defined(CONFIG_LPUART5_TXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_TXDMA
|
||||
#elif defined(CONFIG_IMX9_LPUART6) && !defined(CONFIG_LPUART6_TXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_TXDMA
|
||||
#elif defined(CONFIG_IMX9_LPUART7) && !defined(CONFIG_LPUART7_TXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_TXDMA
|
||||
#elif defined(CONFIG_IMX9_LPUART8) && !defined(CONFIG_LPUART8_TXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_TXDMA
|
||||
#endif
|
||||
|
||||
#undef SERIAL_HAVE_ONLY_DMA
|
||||
#if defined(SERIAL_HAVE_ONLY_RXDMA) && defined(SERIAL_HAVE_ONLY_TXDMA)
|
||||
#define SERIAL_HAVE_ONLY_DMA
|
||||
#endif
|
||||
|
||||
/* Verify that DMA has been enabled and the DMA channel has been defined.
|
||||
*/
|
||||
|
||||
#if defined(SERIAL_HAVE_TXDMA) || defined(SERIAL_HAVE_RXDMA)
|
||||
# ifndef CONFIG_IMX9_EDMA
|
||||
# error IMXRT LPUART receive or transmit DMA requires CONFIG_IMX9_EDMA
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if defined(SERIAL_HAVE_RXDMA)
|
||||
/* Currently RS-485 support cannot be enabled when RXDMA is in use due to
|
||||
* lack of testing.
|
||||
*/
|
||||
|
||||
# if (defined(CONFIG_LPUART1_RXDMA) && defined(CONFIG_LPUART1_RS485)) || \
|
||||
(defined(CONFIG_LPUART2_RXDMA) && defined(CONFIG_LPUART2_RS485)) || \
|
||||
(defined(CONFIG_LPUART3_RXDMA) && defined(CONFIG_LPUART3_RS485)) || \
|
||||
(defined(CONFIG_LPUART4_RXDMA) && defined(CONFIG_LPUART4_RS485)) || \
|
||||
(defined(CONFIG_LPUART5_RXDMA) && defined(CONFIG_LPUART5_RS485)) || \
|
||||
(defined(CONFIG_LPUART6_RXDMA) && defined(CONFIG_LPUART6_RS485)) || \
|
||||
(defined(CONFIG_LPUART7_RXDMA) && defined(CONFIG_LPUART7_RS485)) || \
|
||||
(defined(CONFIG_LPUART8_RXDMA) && defined(CONFIG_LPUART8_RS485))
|
||||
# error "RXDMA and RS-485 cannot be enabled at the same time for the same LPUART"
|
||||
# endif
|
||||
#endif /* SERIAL_HAVE_RXDMA */
|
||||
|
||||
/* Currently RS-485 support cannot be enabled when TXDMA is in use due to
|
||||
* lack of testing.
|
||||
*/
|
||||
|
||||
# if (defined(CONFIG_LPUART1_TXDMA) && defined(CONFIG_LPUART1_RS485)) || \
|
||||
(defined(CONFIG_LPUART2_TXDMA) && defined(CONFIG_LPUART2_RS485)) || \
|
||||
(defined(CONFIG_LPUART3_TXDMA) && defined(CONFIG_LPUART3_RS485)) || \
|
||||
(defined(CONFIG_LPUART4_TXDMA) && defined(CONFIG_LPUART4_RS485)) || \
|
||||
(defined(CONFIG_LPUART5_TXDMA) && defined(CONFIG_LPUART5_RS485)) || \
|
||||
(defined(CONFIG_LPUART6_TXDMA) && defined(CONFIG_LPUART6_RS485)) || \
|
||||
(defined(CONFIG_LPUART7_TXDMA) && defined(CONFIG_LPUART7_RS485)) || \
|
||||
(defined(CONFIG_LPUART8_TXDMA) && defined(CONFIG_LPUART8_RS485))
|
||||
# error "TXDMA and RS-485 cannot be enabled at the same time for the same LPUART"
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Public Types
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Inline Functions
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
/****************************************************************************
|
||||
* Public Data
|
||||
****************************************************************************/
|
||||
|
||||
#undef EXTERN
|
||||
#if defined(__cplusplus)
|
||||
#define EXTERN extern "C"
|
||||
extern "C"
|
||||
{
|
||||
#else
|
||||
#define EXTERN extern
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Public Function Prototypes
|
||||
****************************************************************************/
|
||||
|
||||
#undef EXTERN
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
#endif /* __ARCH_ARM_SRC_IMX9_IMX9_SERIAL_H */
|
283
arch/arm/src/imx9/imx9_start.c
Normal file
283
arch/arm/src/imx9/imx9_start.c
Normal file
|
@ -0,0 +1,283 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/imx9_start.c
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#include <stdint.h>
|
||||
#include <assert.h>
|
||||
#include <debug.h>
|
||||
|
||||
#include <nuttx/cache.h>
|
||||
#include <nuttx/init.h>
|
||||
#include <arch/board/board.h>
|
||||
|
||||
#include "arm_internal.h"
|
||||
#include "barriers.h"
|
||||
#include "nvic.h"
|
||||
#include "mpu.h"
|
||||
|
||||
#include "imx9_clockconfig.h"
|
||||
#include "imx9_mpuinit.h"
|
||||
#include "imx9_userspace.h"
|
||||
#include "imx9_lowputc.h"
|
||||
#include "imx9_serial.h"
|
||||
#include "imx9_start.h"
|
||||
#include "imx9_gpio.h"
|
||||
|
||||
#ifdef CONFIG_IMX9_SCMI
|
||||
#include "imx9_scmi.h"
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
#define IDLE_STACK ((unsigned)&_ebss+CONFIG_IDLETHREAD_STACKSIZE)
|
||||
|
||||
#ifdef CONFIG_DEBUG_FEATURES
|
||||
#define showprogress(c) arm_lowputc(c)
|
||||
#else
|
||||
# define showprogress(c)
|
||||
#endif
|
||||
|
||||
/* Memory Map ***************************************************************/
|
||||
|
||||
/* 0x2020:0000 - Start of on-chip RAM (OCRAM) and start of .data (_sdata)
|
||||
* - End of .data (_edata) and start of .bss (_sbss)
|
||||
* - End of .bss (_ebss) and bottom of idle stack
|
||||
* - _ebss + CONFIG_IDLETHREAD_STACKSIZE = end of idle stack,
|
||||
* start of heap. NOTE that the ARM uses a decrement before
|
||||
* store stack so that the correct initial value is the end of
|
||||
* the stack + 4;
|
||||
* 0x2027:ffff - End of OCRAM and end of heap (assuming 512Kb OCRAM)
|
||||
*
|
||||
* NOTE: This assumes that all internal RAM is configured for OCRAM (vs.
|
||||
* ITCM or DTCM). The RAM that holds .data and .bss is called the "Primary
|
||||
* RAM". Many other configurations are possible, including configurations
|
||||
* where the primary ram is in external memory. Those are not considered
|
||||
* here.
|
||||
*/
|
||||
|
||||
/****************************************************************************
|
||||
* Private Types
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_ARMV7M_STACKCHECK
|
||||
/* we need to get r10 set before we can allow instrumentation calls */
|
||||
|
||||
void __start(void) noinstrument_function;
|
||||
#endif
|
||||
|
||||
extern const void * const _vectors[];
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_tcmenable
|
||||
*
|
||||
* Description:
|
||||
* Enable/disable tightly coupled memories. Size of tightly coupled
|
||||
* memory regions is controlled by GPNVM Bits 7-8.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static inline void imx9_tcmenable(void)
|
||||
{
|
||||
uint32_t regval;
|
||||
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
|
||||
/* Enabled/disabled ITCM */
|
||||
|
||||
#ifdef CONFIG_ARMV7M_ITCM
|
||||
regval = NVIC_TCMCR_EN | NVIC_TCMCR_RMW | NVIC_TCMCR_RETEN;
|
||||
#else
|
||||
regval = getreg32(NVIC_ITCMCR);
|
||||
regval &= ~NVIC_TCMCR_EN;
|
||||
#endif
|
||||
putreg32(regval, NVIC_ITCMCR);
|
||||
|
||||
/* Enabled/disabled DTCM */
|
||||
|
||||
#ifdef CONFIG_ARMV7M_DTCM
|
||||
regval = NVIC_TCMCR_EN | NVIC_TCMCR_RMW | NVIC_TCMCR_RETEN;
|
||||
#else
|
||||
regval = getreg32(NVIC_DTCMCR);
|
||||
regval &= ~NVIC_TCMCR_EN;
|
||||
#endif
|
||||
putreg32(regval, NVIC_DTCMCR);
|
||||
|
||||
ARM_DSB();
|
||||
ARM_ISB();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: __start
|
||||
*
|
||||
* Description:
|
||||
* This is the reset entry point.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
void __start(void)
|
||||
{
|
||||
register const uint32_t *src;
|
||||
register uint32_t *dest;
|
||||
|
||||
/* Make sure that interrupts are disabled and set MSP */
|
||||
|
||||
__asm__ __volatile__ ("CPSID i\n");
|
||||
__asm__ __volatile__ ("MSR MSP, %0\n" : : "r" (IDLE_STACK) :);
|
||||
|
||||
/* Make sure that we use MSP from now on */
|
||||
|
||||
__asm__ __volatile__ ("MSR CONTROL, %0\n" : : "r" (0) :);
|
||||
__asm__ __volatile__ ("ISB SY\n");
|
||||
|
||||
/* Make sure VECTAB is set to NuttX vector table
|
||||
* and not the one from the boot ROM and have consistency
|
||||
* with debugger that automatically set the VECTAB
|
||||
*/
|
||||
|
||||
putreg32((uint32_t)_vectors, NVIC_VECTAB);
|
||||
|
||||
#ifdef CONFIG_ARMV7M_STACKCHECK
|
||||
/* Set the stack limit before we attempt to call any functions */
|
||||
|
||||
__asm__ volatile("sub r10, sp, %0" : :
|
||||
"r"(CONFIG_IDLETHREAD_STACKSIZE - 64) :);
|
||||
#endif
|
||||
|
||||
/* If enabled reset the MPU */
|
||||
|
||||
mpu_early_reset();
|
||||
|
||||
#if defined(CONFIG_IMX9_INIT_ISRAM)
|
||||
imx9_init_isram_functions();
|
||||
#endif
|
||||
|
||||
/* Clear .bss. We'll do this inline (vs. calling memset) just to be
|
||||
* certain that there are no issues with the state of global variables.
|
||||
*/
|
||||
|
||||
for (dest = (uint32_t *)_sbss; dest < (uint32_t *)_ebss; )
|
||||
{
|
||||
*dest++ = 0;
|
||||
}
|
||||
|
||||
/* Move the initialized data section from his temporary holding spot in
|
||||
* FLASH into the correct place in OCRAM. The correct place in OCRAM is
|
||||
* give by _sdata and _edata. The temporary location is in FLASH at the
|
||||
* end of all of the other read-only data (.text, .rodata) at _eronly.
|
||||
*/
|
||||
|
||||
for (src = (const uint32_t *)_eronly,
|
||||
dest = (uint32_t *)_sdata; dest < (uint32_t *)_edata;
|
||||
)
|
||||
{
|
||||
*dest++ = *src++;
|
||||
}
|
||||
|
||||
/* Copy any necessary code sections from FLASH to RAM. The correct
|
||||
* destination in OCRAM is given by _sramfuncs and _eramfuncs. The
|
||||
* temporary location is in flash after the data initialization code
|
||||
* at _framfuncs. This should be done before imx9_clockconfig() is
|
||||
* called (in case it has some dependency on initialized C variables).
|
||||
*/
|
||||
|
||||
#ifdef CONFIG_ARCH_RAMFUNCS
|
||||
for (src = (const uint32_t *)_framfuncs,
|
||||
dest = (uint32_t *)_sramfuncs; dest < (uint32_t *)_eramfuncs;
|
||||
)
|
||||
{
|
||||
*dest++ = *src++;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_ARMV7M_STACKCHECK
|
||||
arm_stack_check_init();
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_IMX9_SCMI
|
||||
imx9_scmi_initialize();
|
||||
#endif
|
||||
|
||||
/* Configure the UART so that we can get debug output as soon as possible */
|
||||
|
||||
imx9_clockconfig();
|
||||
arm_fpuconfig();
|
||||
imx9_lowsetup();
|
||||
|
||||
/* Enable/disable tightly coupled memories */
|
||||
|
||||
imx9_tcmenable();
|
||||
|
||||
/* Initialize onboard resources */
|
||||
|
||||
imx9_boardinitialize();
|
||||
|
||||
#ifdef CONFIG_ARM_MPU
|
||||
#ifdef CONFIG_BUILD_PROTECTED
|
||||
/* For the case of the separate user-/kernel-space build, perform whatever
|
||||
* platform specific initialization of the user memory is required.
|
||||
* Normally this just means initializing the user space .data and .bss
|
||||
* segments.
|
||||
*/
|
||||
|
||||
imx9_userspace();
|
||||
#endif
|
||||
|
||||
/* Configure the MPU to permit user-space access to its FLASH and RAM (for
|
||||
* CONFIG_BUILD_PROTECTED) or to manage cache properties in external
|
||||
* memory regions.
|
||||
*/
|
||||
|
||||
imx9_mpu_initialize();
|
||||
#endif
|
||||
|
||||
/* Enable I- and D-Caches */
|
||||
|
||||
up_enable_icache();
|
||||
up_enable_dcache();
|
||||
|
||||
/* Perform early serial initialization */
|
||||
|
||||
#ifdef USE_EARLYSERIALINIT
|
||||
arm_earlyserialinit();
|
||||
#endif
|
||||
|
||||
/* Then start NuttX */
|
||||
|
||||
nx_start();
|
||||
|
||||
/* Shouldn't get here */
|
||||
|
||||
for (; ; );
|
||||
}
|
125
arch/arm/src/imx9/imx9_start.h
Normal file
125
arch/arm/src/imx9/imx9_start.h
Normal file
|
@ -0,0 +1,125 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/imx9_start.h
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ARCH_ARM_SRC_IMX9_IMX9_START_H
|
||||
#define __ARCH_ARM_SRC_IMX9_IMX9_START_H
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
#include <nuttx/compiler.h>
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
#include "arm_internal.h"
|
||||
#include "chip.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Public Types
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Inline Functions
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
/****************************************************************************
|
||||
* Public Data
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_ARCH_FAMILY_IMX9117x
|
||||
/* Each IMX9117X board must provide the following initialized structure.
|
||||
* This is needed to establish the initial board clocking.
|
||||
*/
|
||||
|
||||
extern const struct clock_configuration_s g_initial_clkconfig;
|
||||
#endif
|
||||
|
||||
#undef EXTERN
|
||||
#if defined(__cplusplus)
|
||||
#define EXTERN extern "C"
|
||||
extern "C"
|
||||
{
|
||||
#else
|
||||
#define EXTERN extern
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Public Function Prototypes
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_lowsetup
|
||||
*
|
||||
* Description:
|
||||
* Called at the very beginning of _start. Performs low level
|
||||
* initialization including setup of the console UART. This UART done
|
||||
* early so that the serial console is available for debugging very early
|
||||
* in the boot sequence.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
void imx9_lowsetup(void);
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_boardinitialize
|
||||
*
|
||||
* Description:
|
||||
* All i.MXRT architectures must provide the following entry point. This
|
||||
* entry point is called early in the initialization -- after clocking and
|
||||
* memory have been configured but before caches have been enabled and
|
||||
* before any devices have been initialized.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
void imx9_boardinitialize(void);
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_init_isram_functions
|
||||
*
|
||||
* Description:
|
||||
* Called off reset vector to reconfigure the ITCM
|
||||
* and finish the FLASH to RAM Copy.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef IMX9_INIT_ISRAM
|
||||
void imx9_init_isram_functions(void);
|
||||
#endif
|
||||
|
||||
#undef EXTERN
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
#endif /* __ARCH_ARM_SRC_IMX9_IMX9_START_H */
|
226
arch/arm/src/imx9/imx9_timerisr.c
Normal file
226
arch/arm/src/imx9/imx9_timerisr.c
Normal file
|
@ -0,0 +1,226 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/imx9_timerisr.c
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#include <stdint.h>
|
||||
#include <time.h>
|
||||
#include <assert.h>
|
||||
#include <debug.h>
|
||||
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/power/pm.h>
|
||||
|
||||
#include <arch/board/board.h>
|
||||
|
||||
#include "nvic.h"
|
||||
#include "clock/clock.h"
|
||||
#include "arm_internal.h"
|
||||
#include "chip.h"
|
||||
#include "hardware/imx9_clock.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/* Select MCU-specific settings
|
||||
*
|
||||
* The SysTick timer is driven by the output of the Main Clock (main_clk).
|
||||
*/
|
||||
|
||||
#define IMX9_SYSTICK_CLOCK BOARD_CPU_FREQUENCY
|
||||
|
||||
/* The desired timer interrupt frequency is provided by the definition
|
||||
* CLK_TCK (see include/time.h). CLK_TCK defines the desired number of
|
||||
* system clock ticks per second. That value is a user configurable setting
|
||||
* that defaults to 100 (100 ticks per second = 10 MS interval).
|
||||
*/
|
||||
|
||||
#define SYSTICK_RELOAD ((IMX9_SYSTICK_CLOCK / CLK_TCK) - 1)
|
||||
|
||||
/* The size of the reload field is 24 bits. Verify that the reload value
|
||||
* will fit in the reload register.
|
||||
*/
|
||||
|
||||
#if SYSTICK_RELOAD > 0x00ffffff
|
||||
# error SYSTICK_RELOAD exceeds the range of the RELOAD register
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Private Function Prototypes
|
||||
****************************************************************************/
|
||||
|
||||
static int imx9_timerisr(int irq, uint32_t *regs, void *arg);
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
static void up_pm_notify(struct pm_callback_s *cb, int dowmin,
|
||||
enum pm_state_e pmstate);
|
||||
static int up_pm_prepare(struct pm_callback_s *cb, int domain,
|
||||
enum pm_state_e pmstate);
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Private Data
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
static struct pm_callback_s g_timer_pmcb =
|
||||
{
|
||||
.notify = up_pm_notify,
|
||||
.prepare = up_pm_prepare,
|
||||
};
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Private Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Function: imx9_timerisr
|
||||
*
|
||||
* Description:
|
||||
* The timer ISR will perform a variety of services for various portions
|
||||
* of the systems.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int imx9_timerisr(int irq, uint32_t *regs, void *arg)
|
||||
{
|
||||
/* Process timer interrupt */
|
||||
|
||||
nxsched_process_timer();
|
||||
return 0;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: up_pm_notify
|
||||
*
|
||||
* Description:
|
||||
* Notify the driver of new power state. This callback is called after
|
||||
* all drivers have had the opportunity to prepare for the new power state.
|
||||
*
|
||||
* Input Parameters:
|
||||
*
|
||||
* cb - Returned to the driver. The driver version of the callback
|
||||
* structure may include additional, driver-specific state data at
|
||||
* the end of the structure.
|
||||
*
|
||||
* pmstate - Identifies the new PM state
|
||||
*
|
||||
* Returned Value:
|
||||
* None - The driver already agreed to transition to the low power
|
||||
* consumption state when when it returned OK to the prepare() call.
|
||||
*
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
static void up_pm_notify(struct pm_callback_s *cb, int domain,
|
||||
enum pm_state_e pmstate)
|
||||
{
|
||||
switch (pmstate)
|
||||
{
|
||||
case(PM_NORMAL):
|
||||
{
|
||||
/* Logic for PM_NORMAL goes here */
|
||||
}
|
||||
break;
|
||||
|
||||
case(PM_IDLE):
|
||||
{
|
||||
/* Logic for PM_IDLE goes here */
|
||||
}
|
||||
break;
|
||||
|
||||
case(PM_STANDBY):
|
||||
{
|
||||
/* Logic for PM_STANDBY goes here */
|
||||
}
|
||||
break;
|
||||
|
||||
case(PM_SLEEP):
|
||||
{
|
||||
/* Logic for PM_SLEEP goes here */
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
/* Should not get here */
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Function: up_timer_initialize
|
||||
*
|
||||
* Description:
|
||||
* This function is called during start-up to initialize the timer
|
||||
* interrupt.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
void up_timer_initialize(void)
|
||||
{
|
||||
uint32_t regval;
|
||||
#ifdef CONFIG_PM
|
||||
int ret;
|
||||
#endif
|
||||
|
||||
/* Configure SysTick to interrupt at the requested rate */
|
||||
|
||||
putreg32(SYSTICK_RELOAD, NVIC_SYSTICK_RELOAD);
|
||||
putreg32(0, NVIC_SYSTICK_CURRENT);
|
||||
|
||||
/* Attach the timer interrupt vector */
|
||||
|
||||
irq_attach(IMX9_IRQ_SYSTICK, (xcpt_t)imx9_timerisr, NULL);
|
||||
|
||||
/* Enable SysTick interrupts */
|
||||
|
||||
regval = (NVIC_SYSTICK_CTRL_CLKSOURCE | NVIC_SYSTICK_CTRL_TICKINT |
|
||||
NVIC_SYSTICK_CTRL_ENABLE);
|
||||
putreg32(regval, NVIC_SYSTICK_CTRL);
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
/* Register to receive power management callbacks */
|
||||
|
||||
ret = pm_register(&g_timer_pmcb);
|
||||
DEBUGASSERT(ret == OK);
|
||||
UNUSED(ret);
|
||||
#endif
|
||||
|
||||
/* And enable the timer interrupt */
|
||||
|
||||
up_enable_irq(IMX9_IRQ_SYSTICK);
|
||||
}
|
93
arch/arm/src/imx9/imx9_userspace.c
Normal file
93
arch/arm/src/imx9/imx9_userspace.c
Normal file
|
@ -0,0 +1,93 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/imx9_userspace.c
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#include <stdint.h>
|
||||
#include <assert.h>
|
||||
|
||||
#include <nuttx/userspace.h>
|
||||
|
||||
#include "imx9_mpuinit.h"
|
||||
#include "imx9_userspace.h"
|
||||
|
||||
#ifdef CONFIG_BUILD_PROTECTED
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_userspace
|
||||
*
|
||||
* Description:
|
||||
* For the case of the separate user-/kernel-space build, perform whatever
|
||||
* platform specific initialization of the user memory is required.
|
||||
* Normally this just means initializing the user space .data and .bss
|
||||
* segments.
|
||||
*
|
||||
* Assumptions:
|
||||
* The D-Cache has not yet been enabled.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
void imx9_userspace(void)
|
||||
{
|
||||
uint8_t *src;
|
||||
uint8_t *dest;
|
||||
uint8_t *end;
|
||||
|
||||
/* Clear all of user-space .bss */
|
||||
|
||||
DEBUGASSERT(USERSPACE->us_bssstart != 0 && USERSPACE->us_bssend != 0 &&
|
||||
USERSPACE->us_bssstart <= USERSPACE->us_bssend);
|
||||
|
||||
dest = (uint8_t *)USERSPACE->us_bssstart;
|
||||
end = (uint8_t *)USERSPACE->us_bssend;
|
||||
|
||||
while (dest != end)
|
||||
{
|
||||
*dest++ = 0;
|
||||
}
|
||||
|
||||
/* Initialize all of user-space .data */
|
||||
|
||||
DEBUGASSERT(USERSPACE->us_datasource != 0 &&
|
||||
USERSPACE->us_datastart != 0 && USERSPACE->us_dataend != 0 &&
|
||||
USERSPACE->us_datastart <= USERSPACE->us_dataend);
|
||||
|
||||
src = (uint8_t *)USERSPACE->us_datasource;
|
||||
dest = (uint8_t *)USERSPACE->us_datastart;
|
||||
end = (uint8_t *)USERSPACE->us_dataend;
|
||||
|
||||
while (dest != end)
|
||||
{
|
||||
*dest++ = *src++;
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* CONFIG_BUILD_PROTECTED */
|
81
arch/arm/src/imx9/imx9_userspace.h
Normal file
81
arch/arm/src/imx9/imx9_userspace.h
Normal file
|
@ -0,0 +1,81 @@
|
|||
/****************************************************************************
|
||||
* arch/arm/src/imx9/imx9_userspace.h
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* SPDX-FileCopyrightText: 2024 NXP
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ARCH_ARM_SRC_IMX9_IMX9_USERSPACE_H
|
||||
#define __ARCH_ARM_SRC_IMX9_IMX9_USERSPACE_H
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
#include <nuttx/compiler.h>
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
#include "arm_internal.h"
|
||||
#include "chip.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Public Data
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
#undef EXTERN
|
||||
#if defined(__cplusplus)
|
||||
#define EXTERN extern "C"
|
||||
extern "C"
|
||||
{
|
||||
#else
|
||||
#define EXTERN extern
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Public Function Prototypes
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: imx9_userspace
|
||||
*
|
||||
* Description:
|
||||
* For the case of the separate user-/kernel-space build, perform whatever
|
||||
* platform specific initialization of the user memory is required.
|
||||
* Normally this just means initializing the user space .data and .bss
|
||||
* segments.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_BUILD_PROTECTED
|
||||
void imx9_userspace(void);
|
||||
#endif
|
||||
|
||||
#undef EXTERN
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
#endif /* __ARCH_ARM_SRC_IMX9_IMX9_USERSPACE_H */
|
Loading…
Reference in a new issue