mirror of
https://github.com/apache/nuttx.git
synced 2026-10-04 04:38:10 +00:00
arch/arm/imxrt: Fix GPIO / IOMUX macros for imxrt1180
There were some bits erroneously copied from imx9. For IMXRT1180, the GPIO_AD* and GPIO_AON* pads should have SRE, DSE, PUE, PUS and ODE bits on SW_PAD_CTL_PAD register. The GPIO_EMC_*, GPIO_SD_*, GPIO_B1_* and GPIO_B2_* have a bit different fields, PDRV, PULL and ODE. Signed-off-by: Jukka Laitinen <jukka.laitinen@tii.ae>
This commit is contained in:
parent
88a4331348
commit
f55525b0fa
2 changed files with 34 additions and 31 deletions
|
|
@ -41,13 +41,22 @@
|
|||
* [3:0] MUX_MODE (alternate function 0..12)
|
||||
* [4] SION (force input path)
|
||||
*
|
||||
* SW_PAD_CTL_PAD register:
|
||||
* [1] PDRV (0 = high driver, 1 = normal driver)
|
||||
* [3:2] PULL (00 = keep, 01 = pull-up, 10 = pull-down, 11 = disabled)
|
||||
* SW_PAD_CTL_PAD registers use two layouts:
|
||||
*
|
||||
* GPIO_AD_* and GPIO_AON_*:
|
||||
* [0] SRE (0 = fast slew, 1 = slow slew)
|
||||
* [1] DSE (0 = normal driver, 1 = high driver)
|
||||
* [2] PUE (0 = pull disabled, 1 = pull enabled)
|
||||
* [3] PUS (0 = pull-down, 1 = pull-up)
|
||||
* [4] ODE (open drain enable)
|
||||
* [7] IBE_OFF (GPIO_AD_* only; force input buffer off)
|
||||
*
|
||||
* GPIO_EMC_*, GPIO_SD_*, GPIO_B1_* and GPIO_B2_*:
|
||||
* [0] Reserved
|
||||
* [1] PDRV (0 = high driver, 1 = normal driver)
|
||||
* [3:2] PULL (00 = forbidden, 01 = pull-up, 10 = pull-down,
|
||||
* 11 = disabled)
|
||||
* [4] ODE (open drain enable)
|
||||
* [5] HYS (Schmitt trigger / hysteresis enable)
|
||||
* [6] FSEL_APC (fast/slow slew select)
|
||||
* [7] DDR_MODE (DDR input mode; only implemented on selected pads)
|
||||
*/
|
||||
|
||||
/* MUX_CTL fields */
|
||||
|
|
@ -74,7 +83,18 @@
|
|||
# define IOMUXC_MUX_SION_OFF (0u << IOMUXC_MUX_SION_SHIFT)
|
||||
# define IOMUXC_MUX_SION_ON (1u << IOMUXC_MUX_SION_SHIFT)
|
||||
|
||||
/* PAD_CTL fields */
|
||||
/* GPIO_AD_* and GPIO_AON_* PAD_CTL fields */
|
||||
|
||||
#define IOMUXC_PAD_SRE (1u << 0) /* Slow slew rate */
|
||||
#define IOMUXC_PAD_DSE (1u << 1) /* High drive strength */
|
||||
#define IOMUXC_PAD_PUE (1u << 2) /* Pull enable */
|
||||
#define IOMUXC_PAD_PUS (1u << 3) /* Pull up, else pull down */
|
||||
|
||||
/* IBE_OFF is available on GPIO_AD_* pads */
|
||||
|
||||
#define IOMUXC_PAD_IBE_OFF (1u << 7) /* Input buffer disable */
|
||||
|
||||
/* GPIO_EMC_*, GPIO_SD_*, GPIO_B1_* and GPIO_B2_* PAD_CTL fields */
|
||||
|
||||
#define IOMUXC_PAD_PDRV_SHIFT (1)
|
||||
#define IOMUXC_PAD_PDRV_MASK (0x01u << IOMUXC_PAD_PDRV_SHIFT)
|
||||
|
|
@ -83,30 +103,13 @@
|
|||
|
||||
#define IOMUXC_PAD_PULL_SHIFT (2)
|
||||
#define IOMUXC_PAD_PULL_MASK (0x03u << IOMUXC_PAD_PULL_SHIFT)
|
||||
# define IOMUXC_PAD_PULL_KEEP (0u << IOMUXC_PAD_PULL_SHIFT)
|
||||
# define IOMUXC_PAD_PULL_UP (1u << IOMUXC_PAD_PULL_SHIFT)
|
||||
# define IOMUXC_PAD_PULL_DOWN (2u << IOMUXC_PAD_PULL_SHIFT)
|
||||
# define IOMUXC_PAD_PULL_NONE (3u << IOMUXC_PAD_PULL_SHIFT)
|
||||
|
||||
#define IOMUXC_PAD_ODE_SHIFT (4)
|
||||
#define IOMUXC_PAD_ODE_MASK (0x01u << IOMUXC_PAD_ODE_SHIFT)
|
||||
# define IOMUXC_PAD_ODE_OFF (0u << IOMUXC_PAD_ODE_SHIFT)
|
||||
# define IOMUXC_PAD_ODE_ON (1u << IOMUXC_PAD_ODE_SHIFT)
|
||||
/* ODE has the same location and meaning in both PAD_CTL layouts */
|
||||
|
||||
#define IOMUXC_PAD_HYS_SHIFT (5)
|
||||
#define IOMUXC_PAD_HYS_MASK (0x01u << IOMUXC_PAD_HYS_SHIFT)
|
||||
# define IOMUXC_PAD_HYS_OFF (0u << IOMUXC_PAD_HYS_SHIFT)
|
||||
# define IOMUXC_PAD_HYS_ON (1u << IOMUXC_PAD_HYS_SHIFT)
|
||||
|
||||
#define IOMUXC_PAD_FSEL_SHIFT (6)
|
||||
#define IOMUXC_PAD_FSEL_MASK (0x01u << IOMUXC_PAD_FSEL_SHIFT)
|
||||
# define IOMUXC_PAD_FSEL_SLOW (0u << IOMUXC_PAD_FSEL_SHIFT)
|
||||
# define IOMUXC_PAD_FSEL_FAST (1u << IOMUXC_PAD_FSEL_SHIFT)
|
||||
|
||||
#define IOMUXC_PAD_DDR_SHIFT (7)
|
||||
#define IOMUXC_PAD_DDR_MASK (0x01u << IOMUXC_PAD_DDR_SHIFT)
|
||||
# define IOMUXC_PAD_DDR_OFF (0u << IOMUXC_PAD_DDR_SHIFT)
|
||||
# define IOMUXC_PAD_DDR_ON (1u << IOMUXC_PAD_DDR_SHIFT)
|
||||
#define IOMUXC_PAD_ODE (1u << 4) /* Open drain enable */
|
||||
|
||||
/****************************************************************************
|
||||
* IMXRT_PADCFG packed encoding
|
||||
|
|
|
|||
|
|
@ -74,7 +74,7 @@
|
|||
* LPUART: no pull, high drive strength.
|
||||
*/
|
||||
|
||||
#define IOMUX_LPUART_DEFAULT (IOMUXC_PAD_PDRV_HIGH | IOMUXC_PAD_PULL_NONE)
|
||||
#define IOMUX_LPUART_DEFAULT (IOMUXC_PAD_DSE)
|
||||
|
||||
#define GPIO_LPUART1_TX IOMUX_PIN(IOMUXC_PAD_GPIO_AON_08_LPUART1_TX, \
|
||||
IOMUX_LPUART_DEFAULT, 0)
|
||||
|
|
@ -85,7 +85,7 @@
|
|||
* D7 (red) on GPIO_AD_26 = RGPIO4.26.
|
||||
*/
|
||||
|
||||
#define IOMUX_LED_DEFAULT (IOMUXC_PAD_PDRV_HIGH | IOMUXC_PAD_PULL_NONE)
|
||||
#define IOMUX_LED_DEFAULT (IOMUXC_PAD_DSE)
|
||||
|
||||
#define GPIO_LED1 IOMUX_GPIO(IOMUXC_PAD_GPIO_AD_27_GPIO4_IO27, \
|
||||
IOMUX_LED_DEFAULT, \
|
||||
|
|
@ -101,8 +101,8 @@
|
|||
* GPIO_AON_16 -> LPI2C2_SCL
|
||||
*/
|
||||
|
||||
#define IOMUX_LPI2C_DEFAULT (IOMUXC_PAD_PDRV_HIGH | IOMUXC_PAD_PULL_UP | \
|
||||
IOMUXC_PAD_ODE_ON)
|
||||
#define IOMUX_LPI2C_DEFAULT (IOMUXC_PAD_DSE | IOMUXC_PAD_PUE | \
|
||||
IOMUXC_PAD_PUS | IOMUXC_PAD_ODE)
|
||||
|
||||
#define GPIO_LPI2C2_SDA IOMUX_PIN(IOMUXC_PAD_GPIO_AON_15_LPI2C2_SDA, \
|
||||
IOMUX_LPI2C_DEFAULT, IOMUXC_MUX_SION_ON)
|
||||
|
|
@ -116,7 +116,7 @@
|
|||
* GPIO_AON_07 -> LPSPI1_SDI
|
||||
*/
|
||||
|
||||
#define IOMUX_LPSPI_DEFAULT (IOMUXC_PAD_PDRV_HIGH | IOMUXC_PAD_PULL_NONE)
|
||||
#define IOMUX_LPSPI_DEFAULT (IOMUXC_PAD_DSE)
|
||||
|
||||
#define GPIO_LPSPI1_SCK IOMUX_PIN(IOMUXC_PAD_GPIO_AON_04_LPSPI1_SCK, \
|
||||
IOMUX_LPSPI_DEFAULT, 0)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue