18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0+
28c2ecf20Sopenharmony_ci//
38c2ecf20Sopenharmony_ci// imx27 pinctrl driver based on imx pinmux core
48c2ecf20Sopenharmony_ci//
58c2ecf20Sopenharmony_ci// Copyright (C) 2013 Pengutronix
68c2ecf20Sopenharmony_ci//
78c2ecf20Sopenharmony_ci// Author: Markus Pargmann <mpa@pengutronix.de>
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_ci#include <linux/err.h>
108c2ecf20Sopenharmony_ci#include <linux/init.h>
118c2ecf20Sopenharmony_ci#include <linux/io.h>
128c2ecf20Sopenharmony_ci#include <linux/of.h>
138c2ecf20Sopenharmony_ci#include <linux/of_device.h>
148c2ecf20Sopenharmony_ci#include <linux/pinctrl/pinctrl.h>
158c2ecf20Sopenharmony_ci
168c2ecf20Sopenharmony_ci#include "pinctrl-imx1.h"
178c2ecf20Sopenharmony_ci
188c2ecf20Sopenharmony_ci#define PAD_ID(port, pin) (port*32 + pin)
198c2ecf20Sopenharmony_ci#define PA 0
208c2ecf20Sopenharmony_ci#define PB 1
218c2ecf20Sopenharmony_ci#define PC 2
228c2ecf20Sopenharmony_ci#define PD 3
238c2ecf20Sopenharmony_ci#define PE 4
248c2ecf20Sopenharmony_ci#define PF 5
258c2ecf20Sopenharmony_ci
268c2ecf20Sopenharmony_cienum imx27_pads {
278c2ecf20Sopenharmony_ci	MX27_PAD_USBH2_CLK = PAD_ID(PA, 0),
288c2ecf20Sopenharmony_ci	MX27_PAD_USBH2_DIR = PAD_ID(PA, 1),
298c2ecf20Sopenharmony_ci	MX27_PAD_USBH2_DATA7 = PAD_ID(PA, 2),
308c2ecf20Sopenharmony_ci	MX27_PAD_USBH2_NXT = PAD_ID(PA, 3),
318c2ecf20Sopenharmony_ci	MX27_PAD_USBH2_STP = PAD_ID(PA, 4),
328c2ecf20Sopenharmony_ci	MX27_PAD_LSCLK = PAD_ID(PA, 5),
338c2ecf20Sopenharmony_ci	MX27_PAD_LD0 = PAD_ID(PA, 6),
348c2ecf20Sopenharmony_ci	MX27_PAD_LD1 = PAD_ID(PA, 7),
358c2ecf20Sopenharmony_ci	MX27_PAD_LD2 = PAD_ID(PA, 8),
368c2ecf20Sopenharmony_ci	MX27_PAD_LD3 = PAD_ID(PA, 9),
378c2ecf20Sopenharmony_ci	MX27_PAD_LD4 = PAD_ID(PA, 10),
388c2ecf20Sopenharmony_ci	MX27_PAD_LD5 = PAD_ID(PA, 11),
398c2ecf20Sopenharmony_ci	MX27_PAD_LD6 = PAD_ID(PA, 12),
408c2ecf20Sopenharmony_ci	MX27_PAD_LD7 = PAD_ID(PA, 13),
418c2ecf20Sopenharmony_ci	MX27_PAD_LD8 = PAD_ID(PA, 14),
428c2ecf20Sopenharmony_ci	MX27_PAD_LD9 = PAD_ID(PA, 15),
438c2ecf20Sopenharmony_ci	MX27_PAD_LD10 = PAD_ID(PA, 16),
448c2ecf20Sopenharmony_ci	MX27_PAD_LD11 = PAD_ID(PA, 17),
458c2ecf20Sopenharmony_ci	MX27_PAD_LD12 = PAD_ID(PA, 18),
468c2ecf20Sopenharmony_ci	MX27_PAD_LD13 = PAD_ID(PA, 19),
478c2ecf20Sopenharmony_ci	MX27_PAD_LD14 = PAD_ID(PA, 20),
488c2ecf20Sopenharmony_ci	MX27_PAD_LD15 = PAD_ID(PA, 21),
498c2ecf20Sopenharmony_ci	MX27_PAD_LD16 = PAD_ID(PA, 22),
508c2ecf20Sopenharmony_ci	MX27_PAD_LD17 = PAD_ID(PA, 23),
518c2ecf20Sopenharmony_ci	MX27_PAD_REV = PAD_ID(PA, 24),
528c2ecf20Sopenharmony_ci	MX27_PAD_CLS = PAD_ID(PA, 25),
538c2ecf20Sopenharmony_ci	MX27_PAD_PS = PAD_ID(PA, 26),
548c2ecf20Sopenharmony_ci	MX27_PAD_SPL_SPR = PAD_ID(PA, 27),
558c2ecf20Sopenharmony_ci	MX27_PAD_HSYNC = PAD_ID(PA, 28),
568c2ecf20Sopenharmony_ci	MX27_PAD_VSYNC = PAD_ID(PA, 29),
578c2ecf20Sopenharmony_ci	MX27_PAD_CONTRAST = PAD_ID(PA, 30),
588c2ecf20Sopenharmony_ci	MX27_PAD_OE_ACD = PAD_ID(PA, 31),
598c2ecf20Sopenharmony_ci
608c2ecf20Sopenharmony_ci	MX27_PAD_SD2_D0 = PAD_ID(PB, 4),
618c2ecf20Sopenharmony_ci	MX27_PAD_SD2_D1 = PAD_ID(PB, 5),
628c2ecf20Sopenharmony_ci	MX27_PAD_SD2_D2 = PAD_ID(PB, 6),
638c2ecf20Sopenharmony_ci	MX27_PAD_SD2_D3 = PAD_ID(PB, 7),
648c2ecf20Sopenharmony_ci	MX27_PAD_SD2_CMD = PAD_ID(PB, 8),
658c2ecf20Sopenharmony_ci	MX27_PAD_SD2_CLK = PAD_ID(PB, 9),
668c2ecf20Sopenharmony_ci	MX27_PAD_CSI_D0 = PAD_ID(PB, 10),
678c2ecf20Sopenharmony_ci	MX27_PAD_CSI_D1 = PAD_ID(PB, 11),
688c2ecf20Sopenharmony_ci	MX27_PAD_CSI_D2 = PAD_ID(PB, 12),
698c2ecf20Sopenharmony_ci	MX27_PAD_CSI_D3 = PAD_ID(PB, 13),
708c2ecf20Sopenharmony_ci	MX27_PAD_CSI_D4 = PAD_ID(PB, 14),
718c2ecf20Sopenharmony_ci	MX27_PAD_CSI_MCLK = PAD_ID(PB, 15),
728c2ecf20Sopenharmony_ci	MX27_PAD_CSI_PIXCLK = PAD_ID(PB, 16),
738c2ecf20Sopenharmony_ci	MX27_PAD_CSI_D5 = PAD_ID(PB, 17),
748c2ecf20Sopenharmony_ci	MX27_PAD_CSI_D6 = PAD_ID(PB, 18),
758c2ecf20Sopenharmony_ci	MX27_PAD_CSI_D7 = PAD_ID(PB, 19),
768c2ecf20Sopenharmony_ci	MX27_PAD_CSI_VSYNC = PAD_ID(PB, 20),
778c2ecf20Sopenharmony_ci	MX27_PAD_CSI_HSYNC = PAD_ID(PB, 21),
788c2ecf20Sopenharmony_ci	MX27_PAD_USBH1_SUSP = PAD_ID(PB, 22),
798c2ecf20Sopenharmony_ci	MX27_PAD_USB_PWR = PAD_ID(PB, 23),
808c2ecf20Sopenharmony_ci	MX27_PAD_USB_OC_B = PAD_ID(PB, 24),
818c2ecf20Sopenharmony_ci	MX27_PAD_USBH1_RCV = PAD_ID(PB, 25),
828c2ecf20Sopenharmony_ci	MX27_PAD_USBH1_FS = PAD_ID(PB, 26),
838c2ecf20Sopenharmony_ci	MX27_PAD_USBH1_OE_B = PAD_ID(PB, 27),
848c2ecf20Sopenharmony_ci	MX27_PAD_USBH1_TXDM = PAD_ID(PB, 28),
858c2ecf20Sopenharmony_ci	MX27_PAD_USBH1_TXDP = PAD_ID(PB, 29),
868c2ecf20Sopenharmony_ci	MX27_PAD_USBH1_RXDM = PAD_ID(PB, 30),
878c2ecf20Sopenharmony_ci	MX27_PAD_USBH1_RXDP = PAD_ID(PB, 31),
888c2ecf20Sopenharmony_ci
898c2ecf20Sopenharmony_ci	MX27_PAD_I2C2_SDA = PAD_ID(PC, 5),
908c2ecf20Sopenharmony_ci	MX27_PAD_I2C2_SCL = PAD_ID(PC, 6),
918c2ecf20Sopenharmony_ci	MX27_PAD_USBOTG_DATA5 = PAD_ID(PC, 7),
928c2ecf20Sopenharmony_ci	MX27_PAD_USBOTG_DATA6 = PAD_ID(PC, 8),
938c2ecf20Sopenharmony_ci	MX27_PAD_USBOTG_DATA0 = PAD_ID(PC, 9),
948c2ecf20Sopenharmony_ci	MX27_PAD_USBOTG_DATA2 = PAD_ID(PC, 10),
958c2ecf20Sopenharmony_ci	MX27_PAD_USBOTG_DATA1 = PAD_ID(PC, 11),
968c2ecf20Sopenharmony_ci	MX27_PAD_USBOTG_DATA4 = PAD_ID(PC, 12),
978c2ecf20Sopenharmony_ci	MX27_PAD_USBOTG_DATA3 = PAD_ID(PC, 13),
988c2ecf20Sopenharmony_ci	MX27_PAD_TOUT = PAD_ID(PC, 14),
998c2ecf20Sopenharmony_ci	MX27_PAD_TIN = PAD_ID(PC, 15),
1008c2ecf20Sopenharmony_ci	MX27_PAD_SSI4_FS = PAD_ID(PC, 16),
1018c2ecf20Sopenharmony_ci	MX27_PAD_SSI4_RXDAT = PAD_ID(PC, 17),
1028c2ecf20Sopenharmony_ci	MX27_PAD_SSI4_TXDAT = PAD_ID(PC, 18),
1038c2ecf20Sopenharmony_ci	MX27_PAD_SSI4_CLK = PAD_ID(PC, 19),
1048c2ecf20Sopenharmony_ci	MX27_PAD_SSI1_FS = PAD_ID(PC, 20),
1058c2ecf20Sopenharmony_ci	MX27_PAD_SSI1_RXDAT = PAD_ID(PC, 21),
1068c2ecf20Sopenharmony_ci	MX27_PAD_SSI1_TXDAT = PAD_ID(PC, 22),
1078c2ecf20Sopenharmony_ci	MX27_PAD_SSI1_CLK = PAD_ID(PC, 23),
1088c2ecf20Sopenharmony_ci	MX27_PAD_SSI2_FS = PAD_ID(PC, 24),
1098c2ecf20Sopenharmony_ci	MX27_PAD_SSI2_RXDAT = PAD_ID(PC, 25),
1108c2ecf20Sopenharmony_ci	MX27_PAD_SSI2_TXDAT = PAD_ID(PC, 26),
1118c2ecf20Sopenharmony_ci	MX27_PAD_SSI2_CLK = PAD_ID(PC, 27),
1128c2ecf20Sopenharmony_ci	MX27_PAD_SSI3_FS = PAD_ID(PC, 28),
1138c2ecf20Sopenharmony_ci	MX27_PAD_SSI3_RXDAT = PAD_ID(PC, 29),
1148c2ecf20Sopenharmony_ci	MX27_PAD_SSI3_TXDAT = PAD_ID(PC, 30),
1158c2ecf20Sopenharmony_ci	MX27_PAD_SSI3_CLK = PAD_ID(PC, 31),
1168c2ecf20Sopenharmony_ci
1178c2ecf20Sopenharmony_ci	MX27_PAD_SD3_CMD = PAD_ID(PD, 0),
1188c2ecf20Sopenharmony_ci	MX27_PAD_SD3_CLK = PAD_ID(PD, 1),
1198c2ecf20Sopenharmony_ci	MX27_PAD_ATA_DATA0 = PAD_ID(PD, 2),
1208c2ecf20Sopenharmony_ci	MX27_PAD_ATA_DATA1 = PAD_ID(PD, 3),
1218c2ecf20Sopenharmony_ci	MX27_PAD_ATA_DATA2 = PAD_ID(PD, 4),
1228c2ecf20Sopenharmony_ci	MX27_PAD_ATA_DATA3 = PAD_ID(PD, 5),
1238c2ecf20Sopenharmony_ci	MX27_PAD_ATA_DATA4 = PAD_ID(PD, 6),
1248c2ecf20Sopenharmony_ci	MX27_PAD_ATA_DATA5 = PAD_ID(PD, 7),
1258c2ecf20Sopenharmony_ci	MX27_PAD_ATA_DATA6 = PAD_ID(PD, 8),
1268c2ecf20Sopenharmony_ci	MX27_PAD_ATA_DATA7 = PAD_ID(PD, 9),
1278c2ecf20Sopenharmony_ci	MX27_PAD_ATA_DATA8 = PAD_ID(PD, 10),
1288c2ecf20Sopenharmony_ci	MX27_PAD_ATA_DATA9 = PAD_ID(PD, 11),
1298c2ecf20Sopenharmony_ci	MX27_PAD_ATA_DATA10 = PAD_ID(PD, 12),
1308c2ecf20Sopenharmony_ci	MX27_PAD_ATA_DATA11 = PAD_ID(PD, 13),
1318c2ecf20Sopenharmony_ci	MX27_PAD_ATA_DATA12 = PAD_ID(PD, 14),
1328c2ecf20Sopenharmony_ci	MX27_PAD_ATA_DATA13 = PAD_ID(PD, 15),
1338c2ecf20Sopenharmony_ci	MX27_PAD_ATA_DATA14 = PAD_ID(PD, 16),
1348c2ecf20Sopenharmony_ci	MX27_PAD_I2C_DATA = PAD_ID(PD, 17),
1358c2ecf20Sopenharmony_ci	MX27_PAD_I2C_CLK = PAD_ID(PD, 18),
1368c2ecf20Sopenharmony_ci	MX27_PAD_CSPI2_SS2 = PAD_ID(PD, 19),
1378c2ecf20Sopenharmony_ci	MX27_PAD_CSPI2_SS1 = PAD_ID(PD, 20),
1388c2ecf20Sopenharmony_ci	MX27_PAD_CSPI2_SS0 = PAD_ID(PD, 21),
1398c2ecf20Sopenharmony_ci	MX27_PAD_CSPI2_SCLK = PAD_ID(PD, 22),
1408c2ecf20Sopenharmony_ci	MX27_PAD_CSPI2_MISO = PAD_ID(PD, 23),
1418c2ecf20Sopenharmony_ci	MX27_PAD_CSPI2_MOSI = PAD_ID(PD, 24),
1428c2ecf20Sopenharmony_ci	MX27_PAD_CSPI1_RDY = PAD_ID(PD, 25),
1438c2ecf20Sopenharmony_ci	MX27_PAD_CSPI1_SS2 = PAD_ID(PD, 26),
1448c2ecf20Sopenharmony_ci	MX27_PAD_CSPI1_SS1 = PAD_ID(PD, 27),
1458c2ecf20Sopenharmony_ci	MX27_PAD_CSPI1_SS0 = PAD_ID(PD, 28),
1468c2ecf20Sopenharmony_ci	MX27_PAD_CSPI1_SCLK = PAD_ID(PD, 29),
1478c2ecf20Sopenharmony_ci	MX27_PAD_CSPI1_MISO = PAD_ID(PD, 30),
1488c2ecf20Sopenharmony_ci	MX27_PAD_CSPI1_MOSI = PAD_ID(PD, 31),
1498c2ecf20Sopenharmony_ci
1508c2ecf20Sopenharmony_ci	MX27_PAD_USBOTG_NXT = PAD_ID(PE, 0),
1518c2ecf20Sopenharmony_ci	MX27_PAD_USBOTG_STP = PAD_ID(PE, 1),
1528c2ecf20Sopenharmony_ci	MX27_PAD_USBOTG_DIR = PAD_ID(PE, 2),
1538c2ecf20Sopenharmony_ci	MX27_PAD_UART2_CTS = PAD_ID(PE, 3),
1548c2ecf20Sopenharmony_ci	MX27_PAD_UART2_RTS = PAD_ID(PE, 4),
1558c2ecf20Sopenharmony_ci	MX27_PAD_PWMO = PAD_ID(PE, 5),
1568c2ecf20Sopenharmony_ci	MX27_PAD_UART2_TXD = PAD_ID(PE, 6),
1578c2ecf20Sopenharmony_ci	MX27_PAD_UART2_RXD = PAD_ID(PE, 7),
1588c2ecf20Sopenharmony_ci	MX27_PAD_UART3_TXD = PAD_ID(PE, 8),
1598c2ecf20Sopenharmony_ci	MX27_PAD_UART3_RXD = PAD_ID(PE, 9),
1608c2ecf20Sopenharmony_ci	MX27_PAD_UART3_CTS = PAD_ID(PE, 10),
1618c2ecf20Sopenharmony_ci	MX27_PAD_UART3_RTS = PAD_ID(PE, 11),
1628c2ecf20Sopenharmony_ci	MX27_PAD_UART1_TXD = PAD_ID(PE, 12),
1638c2ecf20Sopenharmony_ci	MX27_PAD_UART1_RXD = PAD_ID(PE, 13),
1648c2ecf20Sopenharmony_ci	MX27_PAD_UART1_CTS = PAD_ID(PE, 14),
1658c2ecf20Sopenharmony_ci	MX27_PAD_UART1_RTS = PAD_ID(PE, 15),
1668c2ecf20Sopenharmony_ci	MX27_PAD_RTCK = PAD_ID(PE, 16),
1678c2ecf20Sopenharmony_ci	MX27_PAD_RESET_OUT_B = PAD_ID(PE, 17),
1688c2ecf20Sopenharmony_ci	MX27_PAD_SD1_D0 = PAD_ID(PE, 18),
1698c2ecf20Sopenharmony_ci	MX27_PAD_SD1_D1 = PAD_ID(PE, 19),
1708c2ecf20Sopenharmony_ci	MX27_PAD_SD1_D2 = PAD_ID(PE, 20),
1718c2ecf20Sopenharmony_ci	MX27_PAD_SD1_D3 = PAD_ID(PE, 21),
1728c2ecf20Sopenharmony_ci	MX27_PAD_SD1_CMD = PAD_ID(PE, 22),
1738c2ecf20Sopenharmony_ci	MX27_PAD_SD1_CLK = PAD_ID(PE, 23),
1748c2ecf20Sopenharmony_ci	MX27_PAD_USBOTG_CLK = PAD_ID(PE, 24),
1758c2ecf20Sopenharmony_ci	MX27_PAD_USBOTG_DATA7 = PAD_ID(PE, 25),
1768c2ecf20Sopenharmony_ci
1778c2ecf20Sopenharmony_ci	MX27_PAD_NFRB = PAD_ID(PF, 0),
1788c2ecf20Sopenharmony_ci	MX27_PAD_NFCLE = PAD_ID(PF, 1),
1798c2ecf20Sopenharmony_ci	MX27_PAD_NFWP_B = PAD_ID(PF, 2),
1808c2ecf20Sopenharmony_ci	MX27_PAD_NFCE_B = PAD_ID(PF, 3),
1818c2ecf20Sopenharmony_ci	MX27_PAD_NFALE = PAD_ID(PF, 4),
1828c2ecf20Sopenharmony_ci	MX27_PAD_NFRE_B = PAD_ID(PF, 5),
1838c2ecf20Sopenharmony_ci	MX27_PAD_NFWE_B = PAD_ID(PF, 6),
1848c2ecf20Sopenharmony_ci	MX27_PAD_PC_POE = PAD_ID(PF, 7),
1858c2ecf20Sopenharmony_ci	MX27_PAD_PC_RW_B = PAD_ID(PF, 8),
1868c2ecf20Sopenharmony_ci	MX27_PAD_IOIS16 = PAD_ID(PF, 9),
1878c2ecf20Sopenharmony_ci	MX27_PAD_PC_RST = PAD_ID(PF, 10),
1888c2ecf20Sopenharmony_ci	MX27_PAD_PC_BVD2 = PAD_ID(PF, 11),
1898c2ecf20Sopenharmony_ci	MX27_PAD_PC_BVD1 = PAD_ID(PF, 12),
1908c2ecf20Sopenharmony_ci	MX27_PAD_PC_VS2 = PAD_ID(PF, 13),
1918c2ecf20Sopenharmony_ci	MX27_PAD_PC_VS1 = PAD_ID(PF, 14),
1928c2ecf20Sopenharmony_ci	MX27_PAD_CLKO = PAD_ID(PF, 15),
1938c2ecf20Sopenharmony_ci	MX27_PAD_PC_PWRON = PAD_ID(PF, 16),
1948c2ecf20Sopenharmony_ci	MX27_PAD_PC_READY = PAD_ID(PF, 17),
1958c2ecf20Sopenharmony_ci	MX27_PAD_PC_WAIT_B = PAD_ID(PF, 18),
1968c2ecf20Sopenharmony_ci	MX27_PAD_PC_CD2_B = PAD_ID(PF, 19),
1978c2ecf20Sopenharmony_ci	MX27_PAD_PC_CD1_B = PAD_ID(PF, 20),
1988c2ecf20Sopenharmony_ci	MX27_PAD_CS4_B = PAD_ID(PF, 21),
1998c2ecf20Sopenharmony_ci	MX27_PAD_CS5_B = PAD_ID(PF, 22),
2008c2ecf20Sopenharmony_ci	MX27_PAD_ATA_DATA15 = PAD_ID(PF, 23),
2018c2ecf20Sopenharmony_ci};
2028c2ecf20Sopenharmony_ci
2038c2ecf20Sopenharmony_ci/* Pad names for the pinmux subsystem */
2048c2ecf20Sopenharmony_cistatic const struct pinctrl_pin_desc imx27_pinctrl_pads[] = {
2058c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_USBH2_CLK),
2068c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_USBH2_DIR),
2078c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_USBH2_DATA7),
2088c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_USBH2_NXT),
2098c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_USBH2_STP),
2108c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_LSCLK),
2118c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_LD0),
2128c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_LD1),
2138c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_LD2),
2148c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_LD3),
2158c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_LD4),
2168c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_LD5),
2178c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_LD6),
2188c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_LD7),
2198c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_LD8),
2208c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_LD9),
2218c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_LD10),
2228c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_LD11),
2238c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_LD12),
2248c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_LD13),
2258c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_LD14),
2268c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_LD15),
2278c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_LD16),
2288c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_LD17),
2298c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_REV),
2308c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_CLS),
2318c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_PS),
2328c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_SPL_SPR),
2338c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_HSYNC),
2348c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_VSYNC),
2358c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_CONTRAST),
2368c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_OE_ACD),
2378c2ecf20Sopenharmony_ci
2388c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_SD2_D0),
2398c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_SD2_D1),
2408c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_SD2_D2),
2418c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_SD2_D3),
2428c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_SD2_CMD),
2438c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_SD2_CLK),
2448c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_CSI_D0),
2458c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_CSI_D1),
2468c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_CSI_D2),
2478c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_CSI_D3),
2488c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_CSI_D4),
2498c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_CSI_MCLK),
2508c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_CSI_PIXCLK),
2518c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_CSI_D5),
2528c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_CSI_D6),
2538c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_CSI_D7),
2548c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_CSI_VSYNC),
2558c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_CSI_HSYNC),
2568c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_USBH1_SUSP),
2578c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_USB_PWR),
2588c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_USB_OC_B),
2598c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_USBH1_RCV),
2608c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_USBH1_FS),
2618c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_USBH1_OE_B),
2628c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_USBH1_TXDM),
2638c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_USBH1_TXDP),
2648c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_USBH1_RXDM),
2658c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_USBH1_RXDP),
2668c2ecf20Sopenharmony_ci
2678c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_I2C2_SDA),
2688c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_I2C2_SCL),
2698c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_USBOTG_DATA5),
2708c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_USBOTG_DATA6),
2718c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_USBOTG_DATA0),
2728c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_USBOTG_DATA2),
2738c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_USBOTG_DATA1),
2748c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_USBOTG_DATA4),
2758c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_USBOTG_DATA3),
2768c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_TOUT),
2778c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_TIN),
2788c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_SSI4_FS),
2798c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_SSI4_RXDAT),
2808c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_SSI4_TXDAT),
2818c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_SSI4_CLK),
2828c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_SSI1_FS),
2838c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_SSI1_RXDAT),
2848c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_SSI1_TXDAT),
2858c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_SSI1_CLK),
2868c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_SSI2_FS),
2878c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_SSI2_RXDAT),
2888c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_SSI2_TXDAT),
2898c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_SSI2_CLK),
2908c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_SSI3_FS),
2918c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_SSI3_RXDAT),
2928c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_SSI3_TXDAT),
2938c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_SSI3_CLK),
2948c2ecf20Sopenharmony_ci
2958c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_SD3_CMD),
2968c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_SD3_CLK),
2978c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_ATA_DATA0),
2988c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_ATA_DATA1),
2998c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_ATA_DATA2),
3008c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_ATA_DATA3),
3018c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_ATA_DATA4),
3028c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_ATA_DATA5),
3038c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_ATA_DATA6),
3048c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_ATA_DATA7),
3058c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_ATA_DATA8),
3068c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_ATA_DATA9),
3078c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_ATA_DATA10),
3088c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_ATA_DATA11),
3098c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_ATA_DATA12),
3108c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_ATA_DATA13),
3118c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_ATA_DATA14),
3128c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_I2C_DATA),
3138c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_I2C_CLK),
3148c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_CSPI2_SS2),
3158c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_CSPI2_SS1),
3168c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_CSPI2_SS0),
3178c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_CSPI2_SCLK),
3188c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_CSPI2_MISO),
3198c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_CSPI2_MOSI),
3208c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_CSPI1_RDY),
3218c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_CSPI1_SS2),
3228c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_CSPI1_SS1),
3238c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_CSPI1_SS0),
3248c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_CSPI1_SCLK),
3258c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_CSPI1_MISO),
3268c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_CSPI1_MOSI),
3278c2ecf20Sopenharmony_ci
3288c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_USBOTG_NXT),
3298c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_USBOTG_STP),
3308c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_USBOTG_DIR),
3318c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_UART2_CTS),
3328c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_UART2_RTS),
3338c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_PWMO),
3348c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_UART2_TXD),
3358c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_UART2_RXD),
3368c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_UART3_TXD),
3378c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_UART3_RXD),
3388c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_UART3_CTS),
3398c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_UART3_RTS),
3408c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_UART1_TXD),
3418c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_UART1_RXD),
3428c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_UART1_CTS),
3438c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_UART1_RTS),
3448c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_RTCK),
3458c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_RESET_OUT_B),
3468c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_SD1_D0),
3478c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_SD1_D1),
3488c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_SD1_D2),
3498c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_SD1_D3),
3508c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_SD1_CMD),
3518c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_SD1_CLK),
3528c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_USBOTG_CLK),
3538c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_USBOTG_DATA7),
3548c2ecf20Sopenharmony_ci
3558c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_NFRB),
3568c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_NFCLE),
3578c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_NFWP_B),
3588c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_NFCE_B),
3598c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_NFALE),
3608c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_NFRE_B),
3618c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_NFWE_B),
3628c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_PC_POE),
3638c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_PC_RW_B),
3648c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_IOIS16),
3658c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_PC_RST),
3668c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_PC_BVD2),
3678c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_PC_BVD1),
3688c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_PC_VS2),
3698c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_PC_VS1),
3708c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_CLKO),
3718c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_PC_PWRON),
3728c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_PC_READY),
3738c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_PC_WAIT_B),
3748c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_PC_CD2_B),
3758c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_PC_CD1_B),
3768c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_CS4_B),
3778c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_CS5_B),
3788c2ecf20Sopenharmony_ci	IMX_PINCTRL_PIN(MX27_PAD_ATA_DATA15),
3798c2ecf20Sopenharmony_ci};
3808c2ecf20Sopenharmony_ci
3818c2ecf20Sopenharmony_cistatic struct imx1_pinctrl_soc_info imx27_pinctrl_info = {
3828c2ecf20Sopenharmony_ci	.pins = imx27_pinctrl_pads,
3838c2ecf20Sopenharmony_ci	.npins = ARRAY_SIZE(imx27_pinctrl_pads),
3848c2ecf20Sopenharmony_ci};
3858c2ecf20Sopenharmony_ci
3868c2ecf20Sopenharmony_cistatic const struct of_device_id imx27_pinctrl_of_match[] = {
3878c2ecf20Sopenharmony_ci	{ .compatible = "fsl,imx27-iomuxc", },
3888c2ecf20Sopenharmony_ci	{ /* sentinel */ }
3898c2ecf20Sopenharmony_ci};
3908c2ecf20Sopenharmony_ci
3918c2ecf20Sopenharmony_cistatic int imx27_pinctrl_probe(struct platform_device *pdev)
3928c2ecf20Sopenharmony_ci{
3938c2ecf20Sopenharmony_ci	return imx1_pinctrl_core_probe(pdev, &imx27_pinctrl_info);
3948c2ecf20Sopenharmony_ci}
3958c2ecf20Sopenharmony_ci
3968c2ecf20Sopenharmony_cistatic struct platform_driver imx27_pinctrl_driver = {
3978c2ecf20Sopenharmony_ci	.driver = {
3988c2ecf20Sopenharmony_ci		.name = "imx27-pinctrl",
3998c2ecf20Sopenharmony_ci		.of_match_table = of_match_ptr(imx27_pinctrl_of_match),
4008c2ecf20Sopenharmony_ci	},
4018c2ecf20Sopenharmony_ci	.probe = imx27_pinctrl_probe,
4028c2ecf20Sopenharmony_ci};
4038c2ecf20Sopenharmony_ci
4048c2ecf20Sopenharmony_cistatic int __init imx27_pinctrl_init(void)
4058c2ecf20Sopenharmony_ci{
4068c2ecf20Sopenharmony_ci	return platform_driver_register(&imx27_pinctrl_driver);
4078c2ecf20Sopenharmony_ci}
4088c2ecf20Sopenharmony_ciarch_initcall(imx27_pinctrl_init);
409