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