// SPDX-License-Identifier: GPL-2.0
/*
 * Copyright 2017-2018 NXP
 */

#include <linux/err.h>
#include <linux/init.h>
#include <linux/module.h>
#include <linux/of_device.h>
#include <linux/pinctrl/pinctrl.h>
#include <linux/platform_device.h>

#include "pinctrl-imx.h"

enum imx8mm_pads {
	MX8MM_PAD_RESERVE0 = 0,
	MX8MM_PAD_RESERVE1 = 1,
	MX8MM_PAD_RESERVE2 = 2,
	MX8MM_PAD_RESERVE3 = 3,
	MX8MM_PAD_RESERVE4 = 4,
	MX8MM_PAD_RESERVE5 = 5,
	MX8MM_PAD_RESERVE6 = 6,
	MX8MM_PAD_RESERVE7 = 7,
	MX8MM_PAD_RESERVE8 = 8,
	MX8MM_PAD_RESERVE9 = 9,
	MX8MM_IOMUXC_GPIO1_IO00 = 10,
	MX8MM_IOMUXC_GPIO1_IO01 = 11,
	MX8MM_IOMUXC_GPIO1_IO02 = 12,
	MX8MM_IOMUXC_GPIO1_IO03 = 13,
	MX8MM_IOMUXC_GPIO1_IO04 = 14,
	MX8MM_IOMUXC_GPIO1_IO05 = 15,
	MX8MM_IOMUXC_GPIO1_IO06 = 16,
	MX8MM_IOMUXC_GPIO1_IO07 = 17,
	MX8MM_IOMUXC_GPIO1_IO08 = 18,
	MX8MM_IOMUXC_GPIO1_IO09 = 19,
	MX8MM_IOMUXC_GPIO1_IO10 = 20,
	MX8MM_IOMUXC_GPIO1_IO11 = 21,
	MX8MM_IOMUXC_GPIO1_IO12 = 22,
	MX8MM_IOMUXC_GPIO1_IO13 = 23,
	MX8MM_IOMUXC_GPIO1_IO14 = 24,
	MX8MM_IOMUXC_GPIO1_IO15 = 25,
	MX8MM_IOMUXC_ENET_MDC = 26,
	MX8MM_IOMUXC_ENET_MDIO = 27,
	MX8MM_IOMUXC_ENET_TD3 = 28,
	MX8MM_IOMUXC_ENET_TD2 = 29,
	MX8MM_IOMUXC_ENET_TD1 = 30,
	MX8MM_IOMUXC_ENET_TD0 = 31,
	MX8MM_IOMUXC_ENET_TX_CTL = 32,
	MX8MM_IOMUXC_ENET_TXC = 33,
	MX8MM_IOMUXC_ENET_RX_CTL = 34,
	MX8MM_IOMUXC_ENET_RXC = 35,
	MX8MM_IOMUXC_ENET_RD0 = 36,
	MX8MM_IOMUXC_ENET_RD1 = 37,
	MX8MM_IOMUXC_ENET_RD2 = 38,
	MX8MM_IOMUXC_ENET_RD3 = 39,
	MX8MM_IOMUXC_SD1_CLK = 40,
	MX8MM_IOMUXC_SD1_CMD = 41,
	MX8MM_IOMUXC_SD1_DATA0 = 42,
	MX8MM_IOMUXC_SD1_DATA1 = 43,
	MX8MM_IOMUXC_SD1_DATA2 = 44,
	MX8MM_IOMUXC_SD1_DATA3 = 45,
	MX8MM_IOMUXC_SD1_DATA4 = 46,
	MX8MM_IOMUXC_SD1_DATA5 = 47,
	MX8MM_IOMUXC_SD1_DATA6 = 48,
	MX8MM_IOMUXC_SD1_DATA7 = 49,
	MX8MM_IOMUXC_SD1_RESET_B = 50,
	MX8MM_IOMUXC_SD1_STROBE = 51,
	MX8MM_IOMUXC_SD2_CD_B = 52,
	MX8MM_IOMUXC_SD2_CLK = 53,
	MX8MM_IOMUXC_SD2_CMD = 54,
	MX8MM_IOMUXC_SD2_DATA0 = 55,
	MX8MM_IOMUXC_SD2_DATA1 = 56,
	MX8MM_IOMUXC_SD2_DATA2 = 57,
	MX8MM_IOMUXC_SD2_DATA3 = 58,
	MX8MM_IOMUXC_SD2_RESET_B = 59,
	MX8MM_IOMUXC_SD2_WP = 60,
	MX8MM_IOMUXC_NAND_ALE = 61,
	MX8MM_IOMUXC_NAND_CE0 = 62,
	MX8MM_IOMUXC_NAND_CE1 = 63,
	MX8MM_IOMUXC_NAND_CE2 = 64,
	MX8MM_IOMUXC_NAND_CE3 = 65,
	MX8MM_IOMUXC_NAND_CLE = 66,
	MX8MM_IOMUXC_NAND_DATA00 = 67,
	MX8MM_IOMUXC_NAND_DATA01 = 68,
	MX8MM_IOMUXC_NAND_DATA02 = 69,
	MX8MM_IOMUXC_NAND_DATA03 = 70,
	MX8MM_IOMUXC_NAND_DATA04 = 71,
	MX8MM_IOMUXC_NAND_DATA05 = 72,
	MX8MM_IOMUXC_NAND_DATA06 = 73,
	MX8MM_IOMUXC_NAND_DATA07 = 74,
	MX8MM_IOMUXC_NAND_DQS = 75,
	MX8MM_IOMUXC_NAND_RE_B = 76,
	MX8MM_IOMUXC_NAND_READY_B = 77,
	MX8MM_IOMUXC_NAND_WE_B = 78,
	MX8MM_IOMUXC_NAND_WP_B = 79,
	MX8MM_IOMUXC_SAI5_RXFS = 80,
	MX8MM_IOMUXC_SAI5_RXC = 81,
	MX8MM_IOMUXC_SAI5_RXD0 = 82,
	MX8MM_IOMUXC_SAI5_RXD1 = 83,
	MX8MM_IOMUXC_SAI5_RXD2 = 84,
	MX8MM_IOMUXC_SAI5_RXD3 = 85,
	MX8MM_IOMUXC_SAI5_MCLK = 86,
	MX8MM_IOMUXC_SAI1_RXFS = 87,
	MX8MM_IOMUXC_SAI1_RXC = 88,
	MX8MM_IOMUXC_SAI1_RXD0 = 89,
	MX8MM_IOMUXC_SAI1_RXD1 = 90,
	MX8MM_IOMUXC_SAI1_RXD2 = 91,
	MX8MM_IOMUXC_SAI1_RXD3 = 92,
	MX8MM_IOMUXC_SAI1_RXD4 = 93,
	MX8MM_IOMUXC_SAI1_RXD5 = 94,
	MX8MM_IOMUXC_SAI1_RXD6 = 95,
	MX8MM_IOMUXC_SAI1_RXD7 = 96,
	MX8MM_IOMUXC_SAI1_TXFS = 97,
	MX8MM_IOMUXC_SAI1_TXC = 98,
	MX8MM_IOMUXC_SAI1_TXD0 = 99,
	MX8MM_IOMUXC_SAI1_TXD1 = 100,
	MX8MM_IOMUXC_SAI1_TXD2 = 101,
	MX8MM_IOMUXC_SAI1_TXD3 = 102,
	MX8MM_IOMUXC_SAI1_TXD4 = 103,
	MX8MM_IOMUXC_SAI1_TXD5 = 104,
	MX8MM_IOMUXC_SAI1_TXD6 = 105,
	MX8MM_IOMUXC_SAI1_TXD7 = 106,
	MX8MM_IOMUXC_SAI1_MCLK = 107,
	MX8MM_IOMUXC_SAI2_RXFS = 108,
	MX8MM_IOMUXC_SAI2_RXC = 109,
	MX8MM_IOMUXC_SAI2_RXD0 = 110,
	MX8MM_IOMUXC_SAI2_TXFS = 111,
	MX8MM_IOMUXC_SAI2_TXC = 112,
	MX8MM_IOMUXC_SAI2_TXD0 = 113,
	MX8MM_IOMUXC_SAI2_MCLK = 114,
	MX8MM_IOMUXC_SAI3_RXFS = 115,
	MX8MM_IOMUXC_SAI3_RXC = 116,
	MX8MM_IOMUXC_SAI3_RXD = 117,
	MX8MM_IOMUXC_SAI3_TXFS = 118,
	MX8MM_IOMUXC_SAI3_TXC = 119,
	MX8MM_IOMUXC_SAI3_TXD = 120,
	MX8MM_IOMUXC_SAI3_MCLK = 121,
	MX8MM_IOMUXC_SPDIF_TX = 122,
	MX8MM_IOMUXC_SPDIF_RX = 123,
	MX8MM_IOMUXC_SPDIF_EXT_CLK = 124,
	MX8MM_IOMUXC_ECSPI1_SCLK = 125,
	MX8MM_IOMUXC_ECSPI1_MOSI = 126,
	MX8MM_IOMUXC_ECSPI1_MISO = 127,
	MX8MM_IOMUXC_ECSPI1_SS0 = 128,
	MX8MM_IOMUXC_ECSPI2_SCLK = 129,
	MX8MM_IOMUXC_ECSPI2_MOSI = 130,
	MX8MM_IOMUXC_ECSPI2_MISO = 131,
	MX8MM_IOMUXC_ECSPI2_SS0 = 132,
	MX8MM_IOMUXC_I2C1_SCL = 133,
	MX8MM_IOMUXC_I2C1_SDA = 134,
	MX8MM_IOMUXC_I2C2_SCL = 135,
	MX8MM_IOMUXC_I2C2_SDA = 136,
	MX8MM_IOMUXC_I2C3_SCL = 137,
	MX8MM_IOMUXC_I2C3_SDA = 138,
	MX8MM_IOMUXC_I2C4_SCL = 139,
	MX8MM_IOMUXC_I2C4_SDA = 140,
	MX8MM_IOMUXC_UART1_RXD = 141,
	MX8MM_IOMUXC_UART1_TXD = 142,
	MX8MM_IOMUXC_UART2_RXD = 143,
	MX8MM_IOMUXC_UART2_TXD = 144,
	MX8MM_IOMUXC_UART3_RXD = 145,
	MX8MM_IOMUXC_UART3_TXD = 146,
	MX8MM_IOMUXC_UART4_RXD = 147,
	MX8MM_IOMUXC_UART4_TXD = 148,
};

/* Pad names for the pinmux subsystem */
static const struct pinctrl_pin_desc imx8mm_pinctrl_pads[] = {
	IMX_PINCTRL_PIN(MX8MM_PAD_RESERVE0),
	IMX_PINCTRL_PIN(MX8MM_PAD_RESERVE1),
	IMX_PINCTRL_PIN(MX8MM_PAD_RESERVE2),
	IMX_PINCTRL_PIN(MX8MM_PAD_RESERVE3),
	IMX_PINCTRL_PIN(MX8MM_PAD_RESERVE4),
	IMX_PINCTRL_PIN(MX8MM_PAD_RESERVE5),
	IMX_PINCTRL_PIN(MX8MM_PAD_RESERVE6),
	IMX_PINCTRL_PIN(MX8MM_PAD_RESERVE7),
	IMX_PINCTRL_PIN(MX8MM_PAD_RESERVE8),
	IMX_PINCTRL_PIN(MX8MM_PAD_RESERVE9),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_GPIO1_IO00),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_GPIO1_IO01),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_GPIO1_IO02),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_GPIO1_IO03),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_GPIO1_IO04),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_GPIO1_IO05),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_GPIO1_IO06),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_GPIO1_IO07),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_GPIO1_IO08),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_GPIO1_IO09),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_GPIO1_IO10),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_GPIO1_IO11),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_GPIO1_IO12),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_GPIO1_IO13),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_GPIO1_IO14),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_GPIO1_IO15),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_ENET_MDC),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_ENET_MDIO),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_ENET_TD3),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_ENET_TD2),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_ENET_TD1),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_ENET_TD0),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_ENET_TX_CTL),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_ENET_TXC),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_ENET_RX_CTL),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_ENET_RXC),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_ENET_RD0),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_ENET_RD1),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_ENET_RD2),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_ENET_RD3),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SD1_CLK),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SD1_CMD),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SD1_DATA0),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SD1_DATA1),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SD1_DATA2),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SD1_DATA3),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SD1_DATA4),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SD1_DATA5),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SD1_DATA6),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SD1_DATA7),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SD1_RESET_B),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SD1_STROBE),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SD2_CD_B),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SD2_CLK),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SD2_CMD),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SD2_DATA0),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SD2_DATA1),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SD2_DATA2),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SD2_DATA3),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SD2_RESET_B),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SD2_WP),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_NAND_ALE),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_NAND_CE0),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_NAND_CE1),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_NAND_CE2),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_NAND_CE3),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_NAND_CLE),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_NAND_DATA00),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_NAND_DATA01),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_NAND_DATA02),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_NAND_DATA03),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_NAND_DATA04),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_NAND_DATA05),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_NAND_DATA06),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_NAND_DATA07),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_NAND_DQS),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_NAND_RE_B),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_NAND_READY_B),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_NAND_WE_B),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_NAND_WP_B),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI5_RXFS),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI5_RXC),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI5_RXD0),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI5_RXD1),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI5_RXD2),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI5_RXD3),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI5_MCLK),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI1_RXFS),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI1_RXC),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI1_RXD0),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI1_RXD1),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI1_RXD2),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI1_RXD3),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI1_RXD4),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI1_RXD5),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI1_RXD6),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI1_RXD7),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI1_TXFS),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI1_TXC),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI1_TXD0),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI1_TXD1),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI1_TXD2),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI1_TXD3),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI1_TXD4),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI1_TXD5),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI1_TXD6),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI1_TXD7),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI1_MCLK),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI2_RXFS),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI2_RXC),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI2_RXD0),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI2_TXFS),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI2_TXC),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI2_TXD0),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI2_MCLK),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI3_RXFS),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI3_RXC),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI3_RXD),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI3_TXFS),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI3_TXC),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI3_TXD),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SAI3_MCLK),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SPDIF_TX),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SPDIF_RX),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_SPDIF_EXT_CLK),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_ECSPI1_SCLK),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_ECSPI1_MOSI),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_ECSPI1_MISO),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_ECSPI1_SS0),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_ECSPI2_SCLK),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_ECSPI2_MOSI),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_ECSPI2_MISO),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_ECSPI2_SS0),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_I2C1_SCL),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_I2C1_SDA),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_I2C2_SCL),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_I2C2_SDA),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_I2C3_SCL),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_I2C3_SDA),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_I2C4_SCL),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_I2C4_SDA),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_UART1_RXD),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_UART1_TXD),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_UART2_RXD),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_UART2_TXD),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_UART3_RXD),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_UART3_TXD),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_UART4_RXD),
	IMX_PINCTRL_PIN(MX8MM_IOMUXC_UART4_TXD),
};

static const struct imx_pinctrl_soc_info imx8mm_pinctrl_info = {
	.pins = imx8mm_pinctrl_pads,
	.npins = ARRAY_SIZE(imx8mm_pinctrl_pads),
	.gpr_compatible = "fsl,imx8mm-iomuxc-gpr",
};

static const struct of_device_id imx8mm_pinctrl_of_match[] = {
	{ .compatible = "fsl,imx8mm-iomuxc", .data = &imx8mm_pinctrl_info, },
	{ /* sentinel */ }
};
MODULE_DEVICE_TABLE(of, imx8mm_pinctrl_of_match);

static int imx8mm_pinctrl_probe(struct platform_device *pdev)
{
	return imx_pinctrl_probe(pdev, &imx8mm_pinctrl_info);
}

static struct platform_driver imx8mm_pinctrl_driver = {
	.driver = {
		.name = "imx8mm-pinctrl",
		.of_match_table = imx8mm_pinctrl_of_match,
		.suppress_bind_attrs = true,
	},
	.probe = imx8mm_pinctrl_probe,
};

static int __init imx8mm_pinctrl_init(void)
{
	return platform_driver_register(&imx8mm_pinctrl_driver);
}
arch_initcall(imx8mm_pinctrl_init);

MODULE_AUTHOR("Bai Ping <ping.bai@nxp.com>");
MODULE_DESCRIPTION("NXP i.MX8MM pinctrl driver");
MODULE_LICENSE("GPL v2");
