185e4e688SBai Ping // SPDX-License-Identifier: GPL-2.0 285e4e688SBai Ping /* 385e4e688SBai Ping * Copyright 2017-2018 NXP 485e4e688SBai Ping */ 585e4e688SBai Ping 685e4e688SBai Ping #include <linux/err.h> 785e4e688SBai Ping #include <linux/init.h> 8*a302b0e1SAnson Huang #include <linux/module.h> 985e4e688SBai Ping #include <linux/of_device.h> 1085e4e688SBai Ping #include <linux/pinctrl/pinctrl.h> 1185e4e688SBai Ping #include <linux/platform_device.h> 1285e4e688SBai Ping 1385e4e688SBai Ping #include "pinctrl-imx.h" 1485e4e688SBai Ping 1585e4e688SBai Ping enum imx8mm_pads { 1685e4e688SBai Ping MX8MM_PAD_RESERVE0 = 0, 1785e4e688SBai Ping MX8MM_PAD_RESERVE1 = 1, 1885e4e688SBai Ping MX8MM_PAD_RESERVE2 = 2, 1985e4e688SBai Ping MX8MM_PAD_RESERVE3 = 3, 2085e4e688SBai Ping MX8MM_PAD_RESERVE4 = 4, 2185e4e688SBai Ping MX8MM_PAD_RESERVE5 = 5, 2285e4e688SBai Ping MX8MM_PAD_RESERVE6 = 6, 2385e4e688SBai Ping MX8MM_PAD_RESERVE7 = 7, 2485e4e688SBai Ping MX8MM_PAD_RESERVE8 = 8, 2585e4e688SBai Ping MX8MM_PAD_RESERVE9 = 9, 2685e4e688SBai Ping MX8MM_IOMUXC_GPIO1_IO00 = 10, 2785e4e688SBai Ping MX8MM_IOMUXC_GPIO1_IO01 = 11, 2885e4e688SBai Ping MX8MM_IOMUXC_GPIO1_IO02 = 12, 2985e4e688SBai Ping MX8MM_IOMUXC_GPIO1_IO03 = 13, 3085e4e688SBai Ping MX8MM_IOMUXC_GPIO1_IO04 = 14, 3185e4e688SBai Ping MX8MM_IOMUXC_GPIO1_IO05 = 15, 3285e4e688SBai Ping MX8MM_IOMUXC_GPIO1_IO06 = 16, 3385e4e688SBai Ping MX8MM_IOMUXC_GPIO1_IO07 = 17, 3485e4e688SBai Ping MX8MM_IOMUXC_GPIO1_IO08 = 18, 3585e4e688SBai Ping MX8MM_IOMUXC_GPIO1_IO09 = 19, 3685e4e688SBai Ping MX8MM_IOMUXC_GPIO1_IO10 = 20, 3785e4e688SBai Ping MX8MM_IOMUXC_GPIO1_IO11 = 21, 3885e4e688SBai Ping MX8MM_IOMUXC_GPIO1_IO12 = 22, 3985e4e688SBai Ping MX8MM_IOMUXC_GPIO1_IO13 = 23, 4085e4e688SBai Ping MX8MM_IOMUXC_GPIO1_IO14 = 24, 4185e4e688SBai Ping MX8MM_IOMUXC_GPIO1_IO15 = 25, 4285e4e688SBai Ping MX8MM_IOMUXC_ENET_MDC = 26, 4385e4e688SBai Ping MX8MM_IOMUXC_ENET_MDIO = 27, 4485e4e688SBai Ping MX8MM_IOMUXC_ENET_TD3 = 28, 4585e4e688SBai Ping MX8MM_IOMUXC_ENET_TD2 = 29, 4685e4e688SBai Ping MX8MM_IOMUXC_ENET_TD1 = 30, 4785e4e688SBai Ping MX8MM_IOMUXC_ENET_TD0 = 31, 4885e4e688SBai Ping MX8MM_IOMUXC_ENET_TX_CTL = 32, 4985e4e688SBai Ping MX8MM_IOMUXC_ENET_TXC = 33, 5085e4e688SBai Ping MX8MM_IOMUXC_ENET_RX_CTL = 34, 5185e4e688SBai Ping MX8MM_IOMUXC_ENET_RXC = 35, 5285e4e688SBai Ping MX8MM_IOMUXC_ENET_RD0 = 36, 5385e4e688SBai Ping MX8MM_IOMUXC_ENET_RD1 = 37, 5485e4e688SBai Ping MX8MM_IOMUXC_ENET_RD2 = 38, 5585e4e688SBai Ping MX8MM_IOMUXC_ENET_RD3 = 39, 5685e4e688SBai Ping MX8MM_IOMUXC_SD1_CLK = 40, 5785e4e688SBai Ping MX8MM_IOMUXC_SD1_CMD = 41, 5885e4e688SBai Ping MX8MM_IOMUXC_SD1_DATA0 = 42, 5985e4e688SBai Ping MX8MM_IOMUXC_SD1_DATA1 = 43, 6085e4e688SBai Ping MX8MM_IOMUXC_SD1_DATA2 = 44, 6185e4e688SBai Ping MX8MM_IOMUXC_SD1_DATA3 = 45, 6285e4e688SBai Ping MX8MM_IOMUXC_SD1_DATA4 = 46, 6385e4e688SBai Ping MX8MM_IOMUXC_SD1_DATA5 = 47, 6485e4e688SBai Ping MX8MM_IOMUXC_SD1_DATA6 = 48, 6585e4e688SBai Ping MX8MM_IOMUXC_SD1_DATA7 = 49, 6685e4e688SBai Ping MX8MM_IOMUXC_SD1_RESET_B = 50, 6785e4e688SBai Ping MX8MM_IOMUXC_SD1_STROBE = 51, 6885e4e688SBai Ping MX8MM_IOMUXC_SD2_CD_B = 52, 6985e4e688SBai Ping MX8MM_IOMUXC_SD2_CLK = 53, 7085e4e688SBai Ping MX8MM_IOMUXC_SD2_CMD = 54, 7185e4e688SBai Ping MX8MM_IOMUXC_SD2_DATA0 = 55, 7285e4e688SBai Ping MX8MM_IOMUXC_SD2_DATA1 = 56, 7385e4e688SBai Ping MX8MM_IOMUXC_SD2_DATA2 = 57, 7485e4e688SBai Ping MX8MM_IOMUXC_SD2_DATA3 = 58, 7585e4e688SBai Ping MX8MM_IOMUXC_SD2_RESET_B = 59, 7685e4e688SBai Ping MX8MM_IOMUXC_SD2_WP = 60, 7785e4e688SBai Ping MX8MM_IOMUXC_NAND_ALE = 61, 7885e4e688SBai Ping MX8MM_IOMUXC_NAND_CE0 = 62, 7985e4e688SBai Ping MX8MM_IOMUXC_NAND_CE1 = 63, 8085e4e688SBai Ping MX8MM_IOMUXC_NAND_CE2 = 64, 8185e4e688SBai Ping MX8MM_IOMUXC_NAND_CE3 = 65, 8285e4e688SBai Ping MX8MM_IOMUXC_NAND_CLE = 66, 8385e4e688SBai Ping MX8MM_IOMUXC_NAND_DATA00 = 67, 8485e4e688SBai Ping MX8MM_IOMUXC_NAND_DATA01 = 68, 8585e4e688SBai Ping MX8MM_IOMUXC_NAND_DATA02 = 69, 8685e4e688SBai Ping MX8MM_IOMUXC_NAND_DATA03 = 70, 8785e4e688SBai Ping MX8MM_IOMUXC_NAND_DATA04 = 71, 8885e4e688SBai Ping MX8MM_IOMUXC_NAND_DATA05 = 72, 8985e4e688SBai Ping MX8MM_IOMUXC_NAND_DATA06 = 73, 9085e4e688SBai Ping MX8MM_IOMUXC_NAND_DATA07 = 74, 9185e4e688SBai Ping MX8MM_IOMUXC_NAND_DQS = 75, 9285e4e688SBai Ping MX8MM_IOMUXC_NAND_RE_B = 76, 9385e4e688SBai Ping MX8MM_IOMUXC_NAND_READY_B = 77, 9485e4e688SBai Ping MX8MM_IOMUXC_NAND_WE_B = 78, 9585e4e688SBai Ping MX8MM_IOMUXC_NAND_WP_B = 79, 9685e4e688SBai Ping MX8MM_IOMUXC_SAI5_RXFS = 80, 9785e4e688SBai Ping MX8MM_IOMUXC_SAI5_RXC = 81, 9885e4e688SBai Ping MX8MM_IOMUXC_SAI5_RXD0 = 82, 9985e4e688SBai Ping MX8MM_IOMUXC_SAI5_RXD1 = 83, 10085e4e688SBai Ping MX8MM_IOMUXC_SAI5_RXD2 = 84, 10185e4e688SBai Ping MX8MM_IOMUXC_SAI5_RXD3 = 85, 10285e4e688SBai Ping MX8MM_IOMUXC_SAI5_MCLK = 86, 10385e4e688SBai Ping MX8MM_IOMUXC_SAI1_RXFS = 87, 10485e4e688SBai Ping MX8MM_IOMUXC_SAI1_RXC = 88, 10585e4e688SBai Ping MX8MM_IOMUXC_SAI1_RXD0 = 89, 10685e4e688SBai Ping MX8MM_IOMUXC_SAI1_RXD1 = 90, 10785e4e688SBai Ping MX8MM_IOMUXC_SAI1_RXD2 = 91, 10885e4e688SBai Ping MX8MM_IOMUXC_SAI1_RXD3 = 92, 10985e4e688SBai Ping MX8MM_IOMUXC_SAI1_RXD4 = 93, 11085e4e688SBai Ping MX8MM_IOMUXC_SAI1_RXD5 = 94, 11185e4e688SBai Ping MX8MM_IOMUXC_SAI1_RXD6 = 95, 11285e4e688SBai Ping MX8MM_IOMUXC_SAI1_RXD7 = 96, 11385e4e688SBai Ping MX8MM_IOMUXC_SAI1_TXFS = 97, 11485e4e688SBai Ping MX8MM_IOMUXC_SAI1_TXC = 98, 11585e4e688SBai Ping MX8MM_IOMUXC_SAI1_TXD0 = 99, 11685e4e688SBai Ping MX8MM_IOMUXC_SAI1_TXD1 = 100, 11785e4e688SBai Ping MX8MM_IOMUXC_SAI1_TXD2 = 101, 11885e4e688SBai Ping MX8MM_IOMUXC_SAI1_TXD3 = 102, 11985e4e688SBai Ping MX8MM_IOMUXC_SAI1_TXD4 = 103, 12085e4e688SBai Ping MX8MM_IOMUXC_SAI1_TXD5 = 104, 12185e4e688SBai Ping MX8MM_IOMUXC_SAI1_TXD6 = 105, 12285e4e688SBai Ping MX8MM_IOMUXC_SAI1_TXD7 = 106, 12385e4e688SBai Ping MX8MM_IOMUXC_SAI1_MCLK = 107, 12485e4e688SBai Ping MX8MM_IOMUXC_SAI2_RXFS = 108, 12585e4e688SBai Ping MX8MM_IOMUXC_SAI2_RXC = 109, 12685e4e688SBai Ping MX8MM_IOMUXC_SAI2_RXD0 = 110, 12785e4e688SBai Ping MX8MM_IOMUXC_SAI2_TXFS = 111, 12885e4e688SBai Ping MX8MM_IOMUXC_SAI2_TXC = 112, 12985e4e688SBai Ping MX8MM_IOMUXC_SAI2_TXD0 = 113, 13085e4e688SBai Ping MX8MM_IOMUXC_SAI2_MCLK = 114, 13185e4e688SBai Ping MX8MM_IOMUXC_SAI3_RXFS = 115, 13285e4e688SBai Ping MX8MM_IOMUXC_SAI3_RXC = 116, 13385e4e688SBai Ping MX8MM_IOMUXC_SAI3_RXD = 117, 13485e4e688SBai Ping MX8MM_IOMUXC_SAI3_TXFS = 118, 13585e4e688SBai Ping MX8MM_IOMUXC_SAI3_TXC = 119, 13685e4e688SBai Ping MX8MM_IOMUXC_SAI3_TXD = 120, 13785e4e688SBai Ping MX8MM_IOMUXC_SAI3_MCLK = 121, 13885e4e688SBai Ping MX8MM_IOMUXC_SPDIF_TX = 122, 13985e4e688SBai Ping MX8MM_IOMUXC_SPDIF_RX = 123, 14085e4e688SBai Ping MX8MM_IOMUXC_SPDIF_EXT_CLK = 124, 14185e4e688SBai Ping MX8MM_IOMUXC_ECSPI1_SCLK = 125, 14285e4e688SBai Ping MX8MM_IOMUXC_ECSPI1_MOSI = 126, 14385e4e688SBai Ping MX8MM_IOMUXC_ECSPI1_MISO = 127, 14485e4e688SBai Ping MX8MM_IOMUXC_ECSPI1_SS0 = 128, 14585e4e688SBai Ping MX8MM_IOMUXC_ECSPI2_SCLK = 129, 14685e4e688SBai Ping MX8MM_IOMUXC_ECSPI2_MOSI = 130, 14785e4e688SBai Ping MX8MM_IOMUXC_ECSPI2_MISO = 131, 14885e4e688SBai Ping MX8MM_IOMUXC_ECSPI2_SS0 = 132, 14985e4e688SBai Ping MX8MM_IOMUXC_I2C1_SCL = 133, 15085e4e688SBai Ping MX8MM_IOMUXC_I2C1_SDA = 134, 15185e4e688SBai Ping MX8MM_IOMUXC_I2C2_SCL = 135, 15285e4e688SBai Ping MX8MM_IOMUXC_I2C2_SDA = 136, 15385e4e688SBai Ping MX8MM_IOMUXC_I2C3_SCL = 137, 15485e4e688SBai Ping MX8MM_IOMUXC_I2C3_SDA = 138, 15585e4e688SBai Ping MX8MM_IOMUXC_I2C4_SCL = 139, 15685e4e688SBai Ping MX8MM_IOMUXC_I2C4_SDA = 140, 15785e4e688SBai Ping MX8MM_IOMUXC_UART1_RXD = 141, 15885e4e688SBai Ping MX8MM_IOMUXC_UART1_TXD = 142, 15985e4e688SBai Ping MX8MM_IOMUXC_UART2_RXD = 143, 16085e4e688SBai Ping MX8MM_IOMUXC_UART2_TXD = 144, 16185e4e688SBai Ping MX8MM_IOMUXC_UART3_RXD = 145, 16285e4e688SBai Ping MX8MM_IOMUXC_UART3_TXD = 146, 16385e4e688SBai Ping MX8MM_IOMUXC_UART4_RXD = 147, 16485e4e688SBai Ping MX8MM_IOMUXC_UART4_TXD = 148, 16585e4e688SBai Ping }; 16685e4e688SBai Ping 16785e4e688SBai Ping /* Pad names for the pinmux subsystem */ 16885e4e688SBai Ping static const struct pinctrl_pin_desc imx8mm_pinctrl_pads[] = { 16985e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_PAD_RESERVE0), 17085e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_PAD_RESERVE1), 17185e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_PAD_RESERVE2), 17285e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_PAD_RESERVE3), 17385e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_PAD_RESERVE4), 17485e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_PAD_RESERVE5), 17585e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_PAD_RESERVE6), 17685e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_PAD_RESERVE7), 17785e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_PAD_RESERVE8), 17885e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_PAD_RESERVE9), 17985e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_GPIO1_IO00), 18085e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_GPIO1_IO01), 18185e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_GPIO1_IO02), 18285e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_GPIO1_IO03), 18385e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_GPIO1_IO04), 18485e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_GPIO1_IO05), 18585e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_GPIO1_IO06), 18685e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_GPIO1_IO07), 18785e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_GPIO1_IO08), 18885e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_GPIO1_IO09), 18985e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_GPIO1_IO10), 19085e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_GPIO1_IO11), 19185e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_GPIO1_IO12), 19285e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_GPIO1_IO13), 19385e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_GPIO1_IO14), 19485e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_GPIO1_IO15), 19585e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_ENET_MDC), 19685e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_ENET_MDIO), 19785e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_ENET_TD3), 19885e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_ENET_TD2), 19985e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_ENET_TD1), 20085e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_ENET_TD0), 20185e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_ENET_TX_CTL), 20285e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_ENET_TXC), 20385e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_ENET_RX_CTL), 20485e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_ENET_RXC), 20585e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_ENET_RD0), 20685e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_ENET_RD1), 20785e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_ENET_RD2), 20885e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_ENET_RD3), 20985e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SD1_CLK), 21085e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SD1_CMD), 21185e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SD1_DATA0), 21285e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SD1_DATA1), 21385e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SD1_DATA2), 21485e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SD1_DATA3), 21585e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SD1_DATA4), 21685e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SD1_DATA5), 21785e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SD1_DATA6), 21885e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SD1_DATA7), 21985e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SD1_RESET_B), 22085e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SD1_STROBE), 22185e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SD2_CD_B), 22285e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SD2_CLK), 22385e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SD2_CMD), 22485e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SD2_DATA0), 22585e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SD2_DATA1), 22685e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SD2_DATA2), 22785e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SD2_DATA3), 22885e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SD2_RESET_B), 22985e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SD2_WP), 23085e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_NAND_ALE), 23185e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_NAND_CE0), 23285e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_NAND_CE1), 23385e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_NAND_CE2), 23485e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_NAND_CE3), 23585e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_NAND_CLE), 23685e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_NAND_DATA00), 23785e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_NAND_DATA01), 23885e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_NAND_DATA02), 23985e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_NAND_DATA03), 24085e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_NAND_DATA04), 24185e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_NAND_DATA05), 24285e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_NAND_DATA06), 24385e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_NAND_DATA07), 24485e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_NAND_DQS), 24585e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_NAND_RE_B), 24685e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_NAND_READY_B), 24785e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_NAND_WE_B), 24885e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_NAND_WP_B), 24985e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI5_RXFS), 25085e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI5_RXC), 25185e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI5_RXD0), 25285e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI5_RXD1), 25385e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI5_RXD2), 25485e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI5_RXD3), 25585e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI5_MCLK), 25685e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI1_RXFS), 25785e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI1_RXC), 25885e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI1_RXD0), 25985e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI1_RXD1), 26085e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI1_RXD2), 26185e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI1_RXD3), 26285e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI1_RXD4), 26385e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI1_RXD5), 26485e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI1_RXD6), 26585e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI1_RXD7), 26685e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI1_TXFS), 26785e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI1_TXC), 26885e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI1_TXD0), 26985e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI1_TXD1), 27085e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI1_TXD2), 27185e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI1_TXD3), 27285e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI1_TXD4), 27385e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI1_TXD5), 27485e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI1_TXD6), 27585e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI1_TXD7), 27685e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI1_MCLK), 27785e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI2_RXFS), 27885e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI2_RXC), 27985e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI2_RXD0), 28085e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI2_TXFS), 28185e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI2_TXC), 28285e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI2_TXD0), 28385e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI2_MCLK), 28485e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI3_RXFS), 28585e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI3_RXC), 28685e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI3_RXD), 28785e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI3_TXFS), 28885e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI3_TXC), 28985e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI3_TXD), 29085e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI3_MCLK), 29185e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SPDIF_TX), 29285e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SPDIF_RX), 29385e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_SPDIF_EXT_CLK), 29485e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_ECSPI1_SCLK), 29585e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_ECSPI1_MOSI), 29685e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_ECSPI1_MISO), 29785e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_ECSPI1_SS0), 29885e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_ECSPI2_SCLK), 29985e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_ECSPI2_MOSI), 30085e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_ECSPI2_MISO), 30185e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_ECSPI2_SS0), 30285e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_I2C1_SCL), 30385e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_I2C1_SDA), 30485e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_I2C2_SCL), 30585e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_I2C2_SDA), 30685e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_I2C3_SCL), 30785e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_I2C3_SDA), 30885e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_I2C4_SCL), 30985e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_I2C4_SDA), 31085e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_UART1_RXD), 31185e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_UART1_TXD), 31285e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_UART2_RXD), 31385e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_UART2_TXD), 31485e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_UART3_RXD), 31585e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_UART3_TXD), 31685e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_UART4_RXD), 31785e4e688SBai Ping IMX_PINCTRL_PIN(MX8MM_IOMUXC_UART4_TXD), 31885e4e688SBai Ping }; 31985e4e688SBai Ping 32085e4e688SBai Ping static const struct imx_pinctrl_soc_info imx8mm_pinctrl_info = { 32185e4e688SBai Ping .pins = imx8mm_pinctrl_pads, 32285e4e688SBai Ping .npins = ARRAY_SIZE(imx8mm_pinctrl_pads), 32385e4e688SBai Ping .gpr_compatible = "fsl,imx8mm-iomuxc-gpr", 32485e4e688SBai Ping }; 32585e4e688SBai Ping 32685e4e688SBai Ping static const struct of_device_id imx8mm_pinctrl_of_match[] = { 32785e4e688SBai Ping { .compatible = "fsl,imx8mm-iomuxc", .data = &imx8mm_pinctrl_info, }, 32885e4e688SBai Ping { /* sentinel */ } 32985e4e688SBai Ping }; 330*a302b0e1SAnson Huang MODULE_DEVICE_TABLE(of, imx8mm_pinctrl_of_match); 33185e4e688SBai Ping 33285e4e688SBai Ping static int imx8mm_pinctrl_probe(struct platform_device *pdev) 33385e4e688SBai Ping { 33485e4e688SBai Ping return imx_pinctrl_probe(pdev, &imx8mm_pinctrl_info); 33585e4e688SBai Ping } 33685e4e688SBai Ping 33785e4e688SBai Ping static struct platform_driver imx8mm_pinctrl_driver = { 33885e4e688SBai Ping .driver = { 33985e4e688SBai Ping .name = "imx8mm-pinctrl", 34085e4e688SBai Ping .of_match_table = of_match_ptr(imx8mm_pinctrl_of_match), 34185e4e688SBai Ping .suppress_bind_attrs = true, 34285e4e688SBai Ping }, 34385e4e688SBai Ping .probe = imx8mm_pinctrl_probe, 34485e4e688SBai Ping }; 34585e4e688SBai Ping 34685e4e688SBai Ping static int __init imx8mm_pinctrl_init(void) 34785e4e688SBai Ping { 34885e4e688SBai Ping return platform_driver_register(&imx8mm_pinctrl_driver); 34985e4e688SBai Ping } 35085e4e688SBai Ping arch_initcall(imx8mm_pinctrl_init); 351*a302b0e1SAnson Huang 352*a302b0e1SAnson Huang MODULE_AUTHOR("Bai Ping <ping.bai@nxp.com>"); 353*a302b0e1SAnson Huang MODULE_DESCRIPTION("NXP i.MX8MM pinctrl driver"); 354*a302b0e1SAnson Huang MODULE_LICENSE("GPL v2"); 355