Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0+
0002 //
0003 // imx27 pinctrl driver based on imx pinmux core
0004 //
0005 // Copyright (C) 2013 Pengutronix
0006 //
0007 // Author: Markus Pargmann <mpa@pengutronix.de>
0008 
0009 #include <linux/err.h>
0010 #include <linux/init.h>
0011 #include <linux/io.h>
0012 #include <linux/of.h>
0013 #include <linux/of_device.h>
0014 #include <linux/pinctrl/pinctrl.h>
0015 
0016 #include "pinctrl-imx1.h"
0017 
0018 #define PAD_ID(port, pin) (port*32 + pin)
0019 #define PA 0
0020 #define PB 1
0021 #define PC 2
0022 #define PD 3
0023 #define PE 4
0024 #define PF 5
0025 
0026 enum imx27_pads {
0027     MX27_PAD_USBH2_CLK = PAD_ID(PA, 0),
0028     MX27_PAD_USBH2_DIR = PAD_ID(PA, 1),
0029     MX27_PAD_USBH2_DATA7 = PAD_ID(PA, 2),
0030     MX27_PAD_USBH2_NXT = PAD_ID(PA, 3),
0031     MX27_PAD_USBH2_STP = PAD_ID(PA, 4),
0032     MX27_PAD_LSCLK = PAD_ID(PA, 5),
0033     MX27_PAD_LD0 = PAD_ID(PA, 6),
0034     MX27_PAD_LD1 = PAD_ID(PA, 7),
0035     MX27_PAD_LD2 = PAD_ID(PA, 8),
0036     MX27_PAD_LD3 = PAD_ID(PA, 9),
0037     MX27_PAD_LD4 = PAD_ID(PA, 10),
0038     MX27_PAD_LD5 = PAD_ID(PA, 11),
0039     MX27_PAD_LD6 = PAD_ID(PA, 12),
0040     MX27_PAD_LD7 = PAD_ID(PA, 13),
0041     MX27_PAD_LD8 = PAD_ID(PA, 14),
0042     MX27_PAD_LD9 = PAD_ID(PA, 15),
0043     MX27_PAD_LD10 = PAD_ID(PA, 16),
0044     MX27_PAD_LD11 = PAD_ID(PA, 17),
0045     MX27_PAD_LD12 = PAD_ID(PA, 18),
0046     MX27_PAD_LD13 = PAD_ID(PA, 19),
0047     MX27_PAD_LD14 = PAD_ID(PA, 20),
0048     MX27_PAD_LD15 = PAD_ID(PA, 21),
0049     MX27_PAD_LD16 = PAD_ID(PA, 22),
0050     MX27_PAD_LD17 = PAD_ID(PA, 23),
0051     MX27_PAD_REV = PAD_ID(PA, 24),
0052     MX27_PAD_CLS = PAD_ID(PA, 25),
0053     MX27_PAD_PS = PAD_ID(PA, 26),
0054     MX27_PAD_SPL_SPR = PAD_ID(PA, 27),
0055     MX27_PAD_HSYNC = PAD_ID(PA, 28),
0056     MX27_PAD_VSYNC = PAD_ID(PA, 29),
0057     MX27_PAD_CONTRAST = PAD_ID(PA, 30),
0058     MX27_PAD_OE_ACD = PAD_ID(PA, 31),
0059 
0060     MX27_PAD_SD2_D0 = PAD_ID(PB, 4),
0061     MX27_PAD_SD2_D1 = PAD_ID(PB, 5),
0062     MX27_PAD_SD2_D2 = PAD_ID(PB, 6),
0063     MX27_PAD_SD2_D3 = PAD_ID(PB, 7),
0064     MX27_PAD_SD2_CMD = PAD_ID(PB, 8),
0065     MX27_PAD_SD2_CLK = PAD_ID(PB, 9),
0066     MX27_PAD_CSI_D0 = PAD_ID(PB, 10),
0067     MX27_PAD_CSI_D1 = PAD_ID(PB, 11),
0068     MX27_PAD_CSI_D2 = PAD_ID(PB, 12),
0069     MX27_PAD_CSI_D3 = PAD_ID(PB, 13),
0070     MX27_PAD_CSI_D4 = PAD_ID(PB, 14),
0071     MX27_PAD_CSI_MCLK = PAD_ID(PB, 15),
0072     MX27_PAD_CSI_PIXCLK = PAD_ID(PB, 16),
0073     MX27_PAD_CSI_D5 = PAD_ID(PB, 17),
0074     MX27_PAD_CSI_D6 = PAD_ID(PB, 18),
0075     MX27_PAD_CSI_D7 = PAD_ID(PB, 19),
0076     MX27_PAD_CSI_VSYNC = PAD_ID(PB, 20),
0077     MX27_PAD_CSI_HSYNC = PAD_ID(PB, 21),
0078     MX27_PAD_USBH1_SUSP = PAD_ID(PB, 22),
0079     MX27_PAD_USB_PWR = PAD_ID(PB, 23),
0080     MX27_PAD_USB_OC_B = PAD_ID(PB, 24),
0081     MX27_PAD_USBH1_RCV = PAD_ID(PB, 25),
0082     MX27_PAD_USBH1_FS = PAD_ID(PB, 26),
0083     MX27_PAD_USBH1_OE_B = PAD_ID(PB, 27),
0084     MX27_PAD_USBH1_TXDM = PAD_ID(PB, 28),
0085     MX27_PAD_USBH1_TXDP = PAD_ID(PB, 29),
0086     MX27_PAD_USBH1_RXDM = PAD_ID(PB, 30),
0087     MX27_PAD_USBH1_RXDP = PAD_ID(PB, 31),
0088 
0089     MX27_PAD_I2C2_SDA = PAD_ID(PC, 5),
0090     MX27_PAD_I2C2_SCL = PAD_ID(PC, 6),
0091     MX27_PAD_USBOTG_DATA5 = PAD_ID(PC, 7),
0092     MX27_PAD_USBOTG_DATA6 = PAD_ID(PC, 8),
0093     MX27_PAD_USBOTG_DATA0 = PAD_ID(PC, 9),
0094     MX27_PAD_USBOTG_DATA2 = PAD_ID(PC, 10),
0095     MX27_PAD_USBOTG_DATA1 = PAD_ID(PC, 11),
0096     MX27_PAD_USBOTG_DATA4 = PAD_ID(PC, 12),
0097     MX27_PAD_USBOTG_DATA3 = PAD_ID(PC, 13),
0098     MX27_PAD_TOUT = PAD_ID(PC, 14),
0099     MX27_PAD_TIN = PAD_ID(PC, 15),
0100     MX27_PAD_SSI4_FS = PAD_ID(PC, 16),
0101     MX27_PAD_SSI4_RXDAT = PAD_ID(PC, 17),
0102     MX27_PAD_SSI4_TXDAT = PAD_ID(PC, 18),
0103     MX27_PAD_SSI4_CLK = PAD_ID(PC, 19),
0104     MX27_PAD_SSI1_FS = PAD_ID(PC, 20),
0105     MX27_PAD_SSI1_RXDAT = PAD_ID(PC, 21),
0106     MX27_PAD_SSI1_TXDAT = PAD_ID(PC, 22),
0107     MX27_PAD_SSI1_CLK = PAD_ID(PC, 23),
0108     MX27_PAD_SSI2_FS = PAD_ID(PC, 24),
0109     MX27_PAD_SSI2_RXDAT = PAD_ID(PC, 25),
0110     MX27_PAD_SSI2_TXDAT = PAD_ID(PC, 26),
0111     MX27_PAD_SSI2_CLK = PAD_ID(PC, 27),
0112     MX27_PAD_SSI3_FS = PAD_ID(PC, 28),
0113     MX27_PAD_SSI3_RXDAT = PAD_ID(PC, 29),
0114     MX27_PAD_SSI3_TXDAT = PAD_ID(PC, 30),
0115     MX27_PAD_SSI3_CLK = PAD_ID(PC, 31),
0116 
0117     MX27_PAD_SD3_CMD = PAD_ID(PD, 0),
0118     MX27_PAD_SD3_CLK = PAD_ID(PD, 1),
0119     MX27_PAD_ATA_DATA0 = PAD_ID(PD, 2),
0120     MX27_PAD_ATA_DATA1 = PAD_ID(PD, 3),
0121     MX27_PAD_ATA_DATA2 = PAD_ID(PD, 4),
0122     MX27_PAD_ATA_DATA3 = PAD_ID(PD, 5),
0123     MX27_PAD_ATA_DATA4 = PAD_ID(PD, 6),
0124     MX27_PAD_ATA_DATA5 = PAD_ID(PD, 7),
0125     MX27_PAD_ATA_DATA6 = PAD_ID(PD, 8),
0126     MX27_PAD_ATA_DATA7 = PAD_ID(PD, 9),
0127     MX27_PAD_ATA_DATA8 = PAD_ID(PD, 10),
0128     MX27_PAD_ATA_DATA9 = PAD_ID(PD, 11),
0129     MX27_PAD_ATA_DATA10 = PAD_ID(PD, 12),
0130     MX27_PAD_ATA_DATA11 = PAD_ID(PD, 13),
0131     MX27_PAD_ATA_DATA12 = PAD_ID(PD, 14),
0132     MX27_PAD_ATA_DATA13 = PAD_ID(PD, 15),
0133     MX27_PAD_ATA_DATA14 = PAD_ID(PD, 16),
0134     MX27_PAD_I2C_DATA = PAD_ID(PD, 17),
0135     MX27_PAD_I2C_CLK = PAD_ID(PD, 18),
0136     MX27_PAD_CSPI2_SS2 = PAD_ID(PD, 19),
0137     MX27_PAD_CSPI2_SS1 = PAD_ID(PD, 20),
0138     MX27_PAD_CSPI2_SS0 = PAD_ID(PD, 21),
0139     MX27_PAD_CSPI2_SCLK = PAD_ID(PD, 22),
0140     MX27_PAD_CSPI2_MISO = PAD_ID(PD, 23),
0141     MX27_PAD_CSPI2_MOSI = PAD_ID(PD, 24),
0142     MX27_PAD_CSPI1_RDY = PAD_ID(PD, 25),
0143     MX27_PAD_CSPI1_SS2 = PAD_ID(PD, 26),
0144     MX27_PAD_CSPI1_SS1 = PAD_ID(PD, 27),
0145     MX27_PAD_CSPI1_SS0 = PAD_ID(PD, 28),
0146     MX27_PAD_CSPI1_SCLK = PAD_ID(PD, 29),
0147     MX27_PAD_CSPI1_MISO = PAD_ID(PD, 30),
0148     MX27_PAD_CSPI1_MOSI = PAD_ID(PD, 31),
0149 
0150     MX27_PAD_USBOTG_NXT = PAD_ID(PE, 0),
0151     MX27_PAD_USBOTG_STP = PAD_ID(PE, 1),
0152     MX27_PAD_USBOTG_DIR = PAD_ID(PE, 2),
0153     MX27_PAD_UART2_CTS = PAD_ID(PE, 3),
0154     MX27_PAD_UART2_RTS = PAD_ID(PE, 4),
0155     MX27_PAD_PWMO = PAD_ID(PE, 5),
0156     MX27_PAD_UART2_TXD = PAD_ID(PE, 6),
0157     MX27_PAD_UART2_RXD = PAD_ID(PE, 7),
0158     MX27_PAD_UART3_TXD = PAD_ID(PE, 8),
0159     MX27_PAD_UART3_RXD = PAD_ID(PE, 9),
0160     MX27_PAD_UART3_CTS = PAD_ID(PE, 10),
0161     MX27_PAD_UART3_RTS = PAD_ID(PE, 11),
0162     MX27_PAD_UART1_TXD = PAD_ID(PE, 12),
0163     MX27_PAD_UART1_RXD = PAD_ID(PE, 13),
0164     MX27_PAD_UART1_CTS = PAD_ID(PE, 14),
0165     MX27_PAD_UART1_RTS = PAD_ID(PE, 15),
0166     MX27_PAD_RTCK = PAD_ID(PE, 16),
0167     MX27_PAD_RESET_OUT_B = PAD_ID(PE, 17),
0168     MX27_PAD_SD1_D0 = PAD_ID(PE, 18),
0169     MX27_PAD_SD1_D1 = PAD_ID(PE, 19),
0170     MX27_PAD_SD1_D2 = PAD_ID(PE, 20),
0171     MX27_PAD_SD1_D3 = PAD_ID(PE, 21),
0172     MX27_PAD_SD1_CMD = PAD_ID(PE, 22),
0173     MX27_PAD_SD1_CLK = PAD_ID(PE, 23),
0174     MX27_PAD_USBOTG_CLK = PAD_ID(PE, 24),
0175     MX27_PAD_USBOTG_DATA7 = PAD_ID(PE, 25),
0176 
0177     MX27_PAD_NFRB = PAD_ID(PF, 0),
0178     MX27_PAD_NFCLE = PAD_ID(PF, 1),
0179     MX27_PAD_NFWP_B = PAD_ID(PF, 2),
0180     MX27_PAD_NFCE_B = PAD_ID(PF, 3),
0181     MX27_PAD_NFALE = PAD_ID(PF, 4),
0182     MX27_PAD_NFRE_B = PAD_ID(PF, 5),
0183     MX27_PAD_NFWE_B = PAD_ID(PF, 6),
0184     MX27_PAD_PC_POE = PAD_ID(PF, 7),
0185     MX27_PAD_PC_RW_B = PAD_ID(PF, 8),
0186     MX27_PAD_IOIS16 = PAD_ID(PF, 9),
0187     MX27_PAD_PC_RST = PAD_ID(PF, 10),
0188     MX27_PAD_PC_BVD2 = PAD_ID(PF, 11),
0189     MX27_PAD_PC_BVD1 = PAD_ID(PF, 12),
0190     MX27_PAD_PC_VS2 = PAD_ID(PF, 13),
0191     MX27_PAD_PC_VS1 = PAD_ID(PF, 14),
0192     MX27_PAD_CLKO = PAD_ID(PF, 15),
0193     MX27_PAD_PC_PWRON = PAD_ID(PF, 16),
0194     MX27_PAD_PC_READY = PAD_ID(PF, 17),
0195     MX27_PAD_PC_WAIT_B = PAD_ID(PF, 18),
0196     MX27_PAD_PC_CD2_B = PAD_ID(PF, 19),
0197     MX27_PAD_PC_CD1_B = PAD_ID(PF, 20),
0198     MX27_PAD_CS4_B = PAD_ID(PF, 21),
0199     MX27_PAD_CS5_B = PAD_ID(PF, 22),
0200     MX27_PAD_ATA_DATA15 = PAD_ID(PF, 23),
0201 };
0202 
0203 /* Pad names for the pinmux subsystem */
0204 static const struct pinctrl_pin_desc imx27_pinctrl_pads[] = {
0205     IMX_PINCTRL_PIN(MX27_PAD_USBH2_CLK),
0206     IMX_PINCTRL_PIN(MX27_PAD_USBH2_DIR),
0207     IMX_PINCTRL_PIN(MX27_PAD_USBH2_DATA7),
0208     IMX_PINCTRL_PIN(MX27_PAD_USBH2_NXT),
0209     IMX_PINCTRL_PIN(MX27_PAD_USBH2_STP),
0210     IMX_PINCTRL_PIN(MX27_PAD_LSCLK),
0211     IMX_PINCTRL_PIN(MX27_PAD_LD0),
0212     IMX_PINCTRL_PIN(MX27_PAD_LD1),
0213     IMX_PINCTRL_PIN(MX27_PAD_LD2),
0214     IMX_PINCTRL_PIN(MX27_PAD_LD3),
0215     IMX_PINCTRL_PIN(MX27_PAD_LD4),
0216     IMX_PINCTRL_PIN(MX27_PAD_LD5),
0217     IMX_PINCTRL_PIN(MX27_PAD_LD6),
0218     IMX_PINCTRL_PIN(MX27_PAD_LD7),
0219     IMX_PINCTRL_PIN(MX27_PAD_LD8),
0220     IMX_PINCTRL_PIN(MX27_PAD_LD9),
0221     IMX_PINCTRL_PIN(MX27_PAD_LD10),
0222     IMX_PINCTRL_PIN(MX27_PAD_LD11),
0223     IMX_PINCTRL_PIN(MX27_PAD_LD12),
0224     IMX_PINCTRL_PIN(MX27_PAD_LD13),
0225     IMX_PINCTRL_PIN(MX27_PAD_LD14),
0226     IMX_PINCTRL_PIN(MX27_PAD_LD15),
0227     IMX_PINCTRL_PIN(MX27_PAD_LD16),
0228     IMX_PINCTRL_PIN(MX27_PAD_LD17),
0229     IMX_PINCTRL_PIN(MX27_PAD_REV),
0230     IMX_PINCTRL_PIN(MX27_PAD_CLS),
0231     IMX_PINCTRL_PIN(MX27_PAD_PS),
0232     IMX_PINCTRL_PIN(MX27_PAD_SPL_SPR),
0233     IMX_PINCTRL_PIN(MX27_PAD_HSYNC),
0234     IMX_PINCTRL_PIN(MX27_PAD_VSYNC),
0235     IMX_PINCTRL_PIN(MX27_PAD_CONTRAST),
0236     IMX_PINCTRL_PIN(MX27_PAD_OE_ACD),
0237 
0238     IMX_PINCTRL_PIN(MX27_PAD_SD2_D0),
0239     IMX_PINCTRL_PIN(MX27_PAD_SD2_D1),
0240     IMX_PINCTRL_PIN(MX27_PAD_SD2_D2),
0241     IMX_PINCTRL_PIN(MX27_PAD_SD2_D3),
0242     IMX_PINCTRL_PIN(MX27_PAD_SD2_CMD),
0243     IMX_PINCTRL_PIN(MX27_PAD_SD2_CLK),
0244     IMX_PINCTRL_PIN(MX27_PAD_CSI_D0),
0245     IMX_PINCTRL_PIN(MX27_PAD_CSI_D1),
0246     IMX_PINCTRL_PIN(MX27_PAD_CSI_D2),
0247     IMX_PINCTRL_PIN(MX27_PAD_CSI_D3),
0248     IMX_PINCTRL_PIN(MX27_PAD_CSI_D4),
0249     IMX_PINCTRL_PIN(MX27_PAD_CSI_MCLK),
0250     IMX_PINCTRL_PIN(MX27_PAD_CSI_PIXCLK),
0251     IMX_PINCTRL_PIN(MX27_PAD_CSI_D5),
0252     IMX_PINCTRL_PIN(MX27_PAD_CSI_D6),
0253     IMX_PINCTRL_PIN(MX27_PAD_CSI_D7),
0254     IMX_PINCTRL_PIN(MX27_PAD_CSI_VSYNC),
0255     IMX_PINCTRL_PIN(MX27_PAD_CSI_HSYNC),
0256     IMX_PINCTRL_PIN(MX27_PAD_USBH1_SUSP),
0257     IMX_PINCTRL_PIN(MX27_PAD_USB_PWR),
0258     IMX_PINCTRL_PIN(MX27_PAD_USB_OC_B),
0259     IMX_PINCTRL_PIN(MX27_PAD_USBH1_RCV),
0260     IMX_PINCTRL_PIN(MX27_PAD_USBH1_FS),
0261     IMX_PINCTRL_PIN(MX27_PAD_USBH1_OE_B),
0262     IMX_PINCTRL_PIN(MX27_PAD_USBH1_TXDM),
0263     IMX_PINCTRL_PIN(MX27_PAD_USBH1_TXDP),
0264     IMX_PINCTRL_PIN(MX27_PAD_USBH1_RXDM),
0265     IMX_PINCTRL_PIN(MX27_PAD_USBH1_RXDP),
0266 
0267     IMX_PINCTRL_PIN(MX27_PAD_I2C2_SDA),
0268     IMX_PINCTRL_PIN(MX27_PAD_I2C2_SCL),
0269     IMX_PINCTRL_PIN(MX27_PAD_USBOTG_DATA5),
0270     IMX_PINCTRL_PIN(MX27_PAD_USBOTG_DATA6),
0271     IMX_PINCTRL_PIN(MX27_PAD_USBOTG_DATA0),
0272     IMX_PINCTRL_PIN(MX27_PAD_USBOTG_DATA2),
0273     IMX_PINCTRL_PIN(MX27_PAD_USBOTG_DATA1),
0274     IMX_PINCTRL_PIN(MX27_PAD_USBOTG_DATA4),
0275     IMX_PINCTRL_PIN(MX27_PAD_USBOTG_DATA3),
0276     IMX_PINCTRL_PIN(MX27_PAD_TOUT),
0277     IMX_PINCTRL_PIN(MX27_PAD_TIN),
0278     IMX_PINCTRL_PIN(MX27_PAD_SSI4_FS),
0279     IMX_PINCTRL_PIN(MX27_PAD_SSI4_RXDAT),
0280     IMX_PINCTRL_PIN(MX27_PAD_SSI4_TXDAT),
0281     IMX_PINCTRL_PIN(MX27_PAD_SSI4_CLK),
0282     IMX_PINCTRL_PIN(MX27_PAD_SSI1_FS),
0283     IMX_PINCTRL_PIN(MX27_PAD_SSI1_RXDAT),
0284     IMX_PINCTRL_PIN(MX27_PAD_SSI1_TXDAT),
0285     IMX_PINCTRL_PIN(MX27_PAD_SSI1_CLK),
0286     IMX_PINCTRL_PIN(MX27_PAD_SSI2_FS),
0287     IMX_PINCTRL_PIN(MX27_PAD_SSI2_RXDAT),
0288     IMX_PINCTRL_PIN(MX27_PAD_SSI2_TXDAT),
0289     IMX_PINCTRL_PIN(MX27_PAD_SSI2_CLK),
0290     IMX_PINCTRL_PIN(MX27_PAD_SSI3_FS),
0291     IMX_PINCTRL_PIN(MX27_PAD_SSI3_RXDAT),
0292     IMX_PINCTRL_PIN(MX27_PAD_SSI3_TXDAT),
0293     IMX_PINCTRL_PIN(MX27_PAD_SSI3_CLK),
0294 
0295     IMX_PINCTRL_PIN(MX27_PAD_SD3_CMD),
0296     IMX_PINCTRL_PIN(MX27_PAD_SD3_CLK),
0297     IMX_PINCTRL_PIN(MX27_PAD_ATA_DATA0),
0298     IMX_PINCTRL_PIN(MX27_PAD_ATA_DATA1),
0299     IMX_PINCTRL_PIN(MX27_PAD_ATA_DATA2),
0300     IMX_PINCTRL_PIN(MX27_PAD_ATA_DATA3),
0301     IMX_PINCTRL_PIN(MX27_PAD_ATA_DATA4),
0302     IMX_PINCTRL_PIN(MX27_PAD_ATA_DATA5),
0303     IMX_PINCTRL_PIN(MX27_PAD_ATA_DATA6),
0304     IMX_PINCTRL_PIN(MX27_PAD_ATA_DATA7),
0305     IMX_PINCTRL_PIN(MX27_PAD_ATA_DATA8),
0306     IMX_PINCTRL_PIN(MX27_PAD_ATA_DATA9),
0307     IMX_PINCTRL_PIN(MX27_PAD_ATA_DATA10),
0308     IMX_PINCTRL_PIN(MX27_PAD_ATA_DATA11),
0309     IMX_PINCTRL_PIN(MX27_PAD_ATA_DATA12),
0310     IMX_PINCTRL_PIN(MX27_PAD_ATA_DATA13),
0311     IMX_PINCTRL_PIN(MX27_PAD_ATA_DATA14),
0312     IMX_PINCTRL_PIN(MX27_PAD_I2C_DATA),
0313     IMX_PINCTRL_PIN(MX27_PAD_I2C_CLK),
0314     IMX_PINCTRL_PIN(MX27_PAD_CSPI2_SS2),
0315     IMX_PINCTRL_PIN(MX27_PAD_CSPI2_SS1),
0316     IMX_PINCTRL_PIN(MX27_PAD_CSPI2_SS0),
0317     IMX_PINCTRL_PIN(MX27_PAD_CSPI2_SCLK),
0318     IMX_PINCTRL_PIN(MX27_PAD_CSPI2_MISO),
0319     IMX_PINCTRL_PIN(MX27_PAD_CSPI2_MOSI),
0320     IMX_PINCTRL_PIN(MX27_PAD_CSPI1_RDY),
0321     IMX_PINCTRL_PIN(MX27_PAD_CSPI1_SS2),
0322     IMX_PINCTRL_PIN(MX27_PAD_CSPI1_SS1),
0323     IMX_PINCTRL_PIN(MX27_PAD_CSPI1_SS0),
0324     IMX_PINCTRL_PIN(MX27_PAD_CSPI1_SCLK),
0325     IMX_PINCTRL_PIN(MX27_PAD_CSPI1_MISO),
0326     IMX_PINCTRL_PIN(MX27_PAD_CSPI1_MOSI),
0327 
0328     IMX_PINCTRL_PIN(MX27_PAD_USBOTG_NXT),
0329     IMX_PINCTRL_PIN(MX27_PAD_USBOTG_STP),
0330     IMX_PINCTRL_PIN(MX27_PAD_USBOTG_DIR),
0331     IMX_PINCTRL_PIN(MX27_PAD_UART2_CTS),
0332     IMX_PINCTRL_PIN(MX27_PAD_UART2_RTS),
0333     IMX_PINCTRL_PIN(MX27_PAD_PWMO),
0334     IMX_PINCTRL_PIN(MX27_PAD_UART2_TXD),
0335     IMX_PINCTRL_PIN(MX27_PAD_UART2_RXD),
0336     IMX_PINCTRL_PIN(MX27_PAD_UART3_TXD),
0337     IMX_PINCTRL_PIN(MX27_PAD_UART3_RXD),
0338     IMX_PINCTRL_PIN(MX27_PAD_UART3_CTS),
0339     IMX_PINCTRL_PIN(MX27_PAD_UART3_RTS),
0340     IMX_PINCTRL_PIN(MX27_PAD_UART1_TXD),
0341     IMX_PINCTRL_PIN(MX27_PAD_UART1_RXD),
0342     IMX_PINCTRL_PIN(MX27_PAD_UART1_CTS),
0343     IMX_PINCTRL_PIN(MX27_PAD_UART1_RTS),
0344     IMX_PINCTRL_PIN(MX27_PAD_RTCK),
0345     IMX_PINCTRL_PIN(MX27_PAD_RESET_OUT_B),
0346     IMX_PINCTRL_PIN(MX27_PAD_SD1_D0),
0347     IMX_PINCTRL_PIN(MX27_PAD_SD1_D1),
0348     IMX_PINCTRL_PIN(MX27_PAD_SD1_D2),
0349     IMX_PINCTRL_PIN(MX27_PAD_SD1_D3),
0350     IMX_PINCTRL_PIN(MX27_PAD_SD1_CMD),
0351     IMX_PINCTRL_PIN(MX27_PAD_SD1_CLK),
0352     IMX_PINCTRL_PIN(MX27_PAD_USBOTG_CLK),
0353     IMX_PINCTRL_PIN(MX27_PAD_USBOTG_DATA7),
0354 
0355     IMX_PINCTRL_PIN(MX27_PAD_NFRB),
0356     IMX_PINCTRL_PIN(MX27_PAD_NFCLE),
0357     IMX_PINCTRL_PIN(MX27_PAD_NFWP_B),
0358     IMX_PINCTRL_PIN(MX27_PAD_NFCE_B),
0359     IMX_PINCTRL_PIN(MX27_PAD_NFALE),
0360     IMX_PINCTRL_PIN(MX27_PAD_NFRE_B),
0361     IMX_PINCTRL_PIN(MX27_PAD_NFWE_B),
0362     IMX_PINCTRL_PIN(MX27_PAD_PC_POE),
0363     IMX_PINCTRL_PIN(MX27_PAD_PC_RW_B),
0364     IMX_PINCTRL_PIN(MX27_PAD_IOIS16),
0365     IMX_PINCTRL_PIN(MX27_PAD_PC_RST),
0366     IMX_PINCTRL_PIN(MX27_PAD_PC_BVD2),
0367     IMX_PINCTRL_PIN(MX27_PAD_PC_BVD1),
0368     IMX_PINCTRL_PIN(MX27_PAD_PC_VS2),
0369     IMX_PINCTRL_PIN(MX27_PAD_PC_VS1),
0370     IMX_PINCTRL_PIN(MX27_PAD_CLKO),
0371     IMX_PINCTRL_PIN(MX27_PAD_PC_PWRON),
0372     IMX_PINCTRL_PIN(MX27_PAD_PC_READY),
0373     IMX_PINCTRL_PIN(MX27_PAD_PC_WAIT_B),
0374     IMX_PINCTRL_PIN(MX27_PAD_PC_CD2_B),
0375     IMX_PINCTRL_PIN(MX27_PAD_PC_CD1_B),
0376     IMX_PINCTRL_PIN(MX27_PAD_CS4_B),
0377     IMX_PINCTRL_PIN(MX27_PAD_CS5_B),
0378     IMX_PINCTRL_PIN(MX27_PAD_ATA_DATA15),
0379 };
0380 
0381 static struct imx1_pinctrl_soc_info imx27_pinctrl_info = {
0382     .pins = imx27_pinctrl_pads,
0383     .npins = ARRAY_SIZE(imx27_pinctrl_pads),
0384 };
0385 
0386 static const struct of_device_id imx27_pinctrl_of_match[] = {
0387     { .compatible = "fsl,imx27-iomuxc", },
0388     { /* sentinel */ }
0389 };
0390 
0391 static int imx27_pinctrl_probe(struct platform_device *pdev)
0392 {
0393     return imx1_pinctrl_core_probe(pdev, &imx27_pinctrl_info);
0394 }
0395 
0396 static struct platform_driver imx27_pinctrl_driver = {
0397     .driver = {
0398         .name = "imx27-pinctrl",
0399         .of_match_table = imx27_pinctrl_of_match,
0400         .suppress_bind_attrs = true,
0401     },
0402     .probe = imx27_pinctrl_probe,
0403 };
0404 
0405 static int __init imx27_pinctrl_init(void)
0406 {
0407     return platform_driver_register(&imx27_pinctrl_driver);
0408 }
0409 arch_initcall(imx27_pinctrl_init);