xref: /linux/drivers/pinctrl/freescale/pinctrl-imx8mm.c (revision f6b6db2dfd617522de702d85095d6d33e3b86e93)
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>
8a302b0e1SAnson 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 };
330a302b0e1SAnson 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",
340*f6b6db2dSFabio Estevam 		.of_match_table = 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);
351a302b0e1SAnson Huang 
352a302b0e1SAnson Huang MODULE_AUTHOR("Bai Ping <ping.bai@nxp.com>");
353a302b0e1SAnson Huang MODULE_DESCRIPTION("NXP i.MX8MM pinctrl driver");
354a302b0e1SAnson Huang MODULE_LICENSE("GPL v2");
355