Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0+
0002 //
0003 // imx50 pinctrl driver based on imx pinmux core
0004 //
0005 // Copyright (C) 2013 Greg Ungerer <gerg@uclinux.org>
0006 // Copyright (C) 2012 Freescale Semiconductor, Inc.
0007 // Copyright (C) 2012 Linaro, Inc.
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-imx.h"
0017 
0018 enum imx50_pads {
0019     MX50_PAD_RESERVE0 = 0,
0020     MX50_PAD_RESERVE1 = 1,
0021     MX50_PAD_RESERVE2 = 2,
0022     MX50_PAD_RESERVE3 = 3,
0023     MX50_PAD_RESERVE4 = 4,
0024     MX50_PAD_RESERVE5 = 5,
0025     MX50_PAD_RESERVE6 = 6,
0026     MX50_PAD_RESERVE7 = 7,
0027     MX50_PAD_KEY_COL0 = 8,
0028     MX50_PAD_KEY_ROW0 = 9,
0029     MX50_PAD_KEY_COL1 = 10,
0030     MX50_PAD_KEY_ROW1 = 11,
0031     MX50_PAD_KEY_COL2 = 12,
0032     MX50_PAD_KEY_ROW2 = 13,
0033     MX50_PAD_KEY_COL3 = 14,
0034     MX50_PAD_KEY_ROW3 = 15,
0035     MX50_PAD_I2C1_SCL = 16,
0036     MX50_PAD_I2C1_SDA = 17,
0037     MX50_PAD_I2C2_SCL = 18,
0038     MX50_PAD_I2C2_SDA = 19,
0039     MX50_PAD_I2C3_SCL = 20,
0040     MX50_PAD_I2C3_SDA = 21,
0041     MX50_PAD_PWM1 = 22,
0042     MX50_PAD_PWM2 = 23,
0043     MX50_PAD_0WIRE = 24,
0044     MX50_PAD_EPITO = 25,
0045     MX50_PAD_WDOG = 26,
0046     MX50_PAD_SSI_TXFS = 27,
0047     MX50_PAD_SSI_TXC = 28,
0048     MX50_PAD_SSI_TXD = 29,
0049     MX50_PAD_SSI_RXD = 30,
0050     MX50_PAD_SSI_RXF = 31,
0051     MX50_PAD_SSI_RXC = 32,
0052     MX50_PAD_UART1_TXD = 33,
0053     MX50_PAD_UART1_RXD = 34,
0054     MX50_PAD_UART1_CTS = 35,
0055     MX50_PAD_UART1_RTS = 36,
0056     MX50_PAD_UART2_TXD = 37,
0057     MX50_PAD_UART2_RXD = 38,
0058     MX50_PAD_UART2_CTS = 39,
0059     MX50_PAD_UART2_RTS = 40,
0060     MX50_PAD_UART3_TXD = 41,
0061     MX50_PAD_UART3_RXD = 42,
0062     MX50_PAD_UART4_TXD = 43,
0063     MX50_PAD_UART4_RXD = 44,
0064     MX50_PAD_CSPI_CLK = 45,
0065     MX50_PAD_CSPI_MOSI = 46,
0066     MX50_PAD_CSPI_MISO = 47,
0067     MX50_PAD_CSPI_SS0 = 48,
0068     MX50_PAD_ECSPI1_CLK = 49,
0069     MX50_PAD_ECSPI1_MOSI = 50,
0070     MX50_PAD_ECSPI1_MISO = 51,
0071     MX50_PAD_ECSPI1_SS0 = 52,
0072     MX50_PAD_ECSPI2_CLK = 53,
0073     MX50_PAD_ECSPI2_MOSI = 54,
0074     MX50_PAD_ECSPI2_MISO = 55,
0075     MX50_PAD_ECSPI2_SS0 = 56,
0076     MX50_PAD_SD1_CLK = 57,
0077     MX50_PAD_SD1_CMD = 58,
0078     MX50_PAD_SD1_D0 = 59,
0079     MX50_PAD_SD1_D1 = 60,
0080     MX50_PAD_SD1_D2 = 61,
0081     MX50_PAD_SD1_D3 = 62,
0082     MX50_PAD_SD2_CLK = 63,
0083     MX50_PAD_SD2_CMD = 64,
0084     MX50_PAD_SD2_D0 = 65,
0085     MX50_PAD_SD2_D1 = 66,
0086     MX50_PAD_SD2_D2 = 67,
0087     MX50_PAD_SD2_D3 = 68,
0088     MX50_PAD_SD2_D4 = 69,
0089     MX50_PAD_SD2_D5 = 70,
0090     MX50_PAD_SD2_D6 = 71,
0091     MX50_PAD_SD2_D7 = 72,
0092     MX50_PAD_SD2_WP = 73,
0093     MX50_PAD_SD2_CD = 74,
0094     MX50_PAD_DISP_D0 = 75,
0095     MX50_PAD_DISP_D1 = 76,
0096     MX50_PAD_DISP_D2 = 77,
0097     MX50_PAD_DISP_D3 = 78,
0098     MX50_PAD_DISP_D4 = 79,
0099     MX50_PAD_DISP_D5 = 80,
0100     MX50_PAD_DISP_D6 = 81,
0101     MX50_PAD_DISP_D7 = 82,
0102     MX50_PAD_DISP_WR = 83,
0103     MX50_PAD_DISP_RD = 84,
0104     MX50_PAD_DISP_RS = 85,
0105     MX50_PAD_DISP_CS = 86,
0106     MX50_PAD_DISP_BUSY = 87,
0107     MX50_PAD_DISP_RESET = 88,
0108     MX50_PAD_SD3_CLK = 89,
0109     MX50_PAD_SD3_CMD = 90,
0110     MX50_PAD_SD3_D0 = 91,
0111     MX50_PAD_SD3_D1 = 92,
0112     MX50_PAD_SD3_D2 = 93,
0113     MX50_PAD_SD3_D3 = 94,
0114     MX50_PAD_SD3_D4 = 95,
0115     MX50_PAD_SD3_D5 = 96,
0116     MX50_PAD_SD3_D6 = 97,
0117     MX50_PAD_SD3_D7 = 98,
0118     MX50_PAD_SD3_WP = 99,
0119     MX50_PAD_DISP_D8 = 100,
0120     MX50_PAD_DISP_D9 = 101,
0121     MX50_PAD_DISP_D10 = 102,
0122     MX50_PAD_DISP_D11 = 103,
0123     MX50_PAD_DISP_D12 = 104,
0124     MX50_PAD_DISP_D13 = 105,
0125     MX50_PAD_DISP_D14 = 106,
0126     MX50_PAD_DISP_D15 = 107,
0127     MX50_PAD_EPDC_D0 = 108,
0128     MX50_PAD_EPDC_D1 = 109,
0129     MX50_PAD_EPDC_D2 = 110,
0130     MX50_PAD_EPDC_D3 = 111,
0131     MX50_PAD_EPDC_D4 = 112,
0132     MX50_PAD_EPDC_D5 = 113,
0133     MX50_PAD_EPDC_D6 = 114,
0134     MX50_PAD_EPDC_D7 = 115,
0135     MX50_PAD_EPDC_D8 = 116,
0136     MX50_PAD_EPDC_D9 = 117,
0137     MX50_PAD_EPDC_D10 = 118,
0138     MX50_PAD_EPDC_D11 = 119,
0139     MX50_PAD_EPDC_D12 = 120,
0140     MX50_PAD_EPDC_D13 = 121,
0141     MX50_PAD_EPDC_D14 = 122,
0142     MX50_PAD_EPDC_D15 = 123,
0143     MX50_PAD_EPDC_GDCLK = 124,
0144     MX50_PAD_EPDC_GDSP = 125,
0145     MX50_PAD_EPDC_GDOE = 126,
0146     MX50_PAD_EPDC_GDRL = 127,
0147     MX50_PAD_EPDC_SDCLK = 128,
0148     MX50_PAD_EPDC_SDOEZ = 129,
0149     MX50_PAD_EPDC_SDOED = 130,
0150     MX50_PAD_EPDC_SDOE = 131,
0151     MX50_PAD_EPDC_SDLE = 132,
0152     MX50_PAD_EPDC_SDCLKN = 133,
0153     MX50_PAD_EPDC_SDSHR = 134,
0154     MX50_PAD_EPDC_PWRCOM = 135,
0155     MX50_PAD_EPDC_PWRSTAT = 136,
0156     MX50_PAD_EPDC_PWRCTRL0 = 137,
0157     MX50_PAD_EPDC_PWRCTRL1 = 138,
0158     MX50_PAD_EPDC_PWRCTRL2 = 139,
0159     MX50_PAD_EPDC_PWRCTRL3 = 140,
0160     MX50_PAD_EPDC_VCOM0 = 141,
0161     MX50_PAD_EPDC_VCOM1 = 142,
0162     MX50_PAD_EPDC_BDR0 = 143,
0163     MX50_PAD_EPDC_BDR1 = 144,
0164     MX50_PAD_EPDC_SDCE0 = 145,
0165     MX50_PAD_EPDC_SDCE1 = 146,
0166     MX50_PAD_EPDC_SDCE2 = 147,
0167     MX50_PAD_EPDC_SDCE3 = 148,
0168     MX50_PAD_EPDC_SDCE4 = 149,
0169     MX50_PAD_EPDC_SDCE5 = 150,
0170     MX50_PAD_EIM_DA0 = 151,
0171     MX50_PAD_EIM_DA1 = 152,
0172     MX50_PAD_EIM_DA2 = 153,
0173     MX50_PAD_EIM_DA3 = 154,
0174     MX50_PAD_EIM_DA4 = 155,
0175     MX50_PAD_EIM_DA5 = 156,
0176     MX50_PAD_EIM_DA6 = 157,
0177     MX50_PAD_EIM_DA7 = 158,
0178     MX50_PAD_EIM_DA8 = 159,
0179     MX50_PAD_EIM_DA9 = 160,
0180     MX50_PAD_EIM_DA10 = 161,
0181     MX50_PAD_EIM_DA11 = 162,
0182     MX50_PAD_EIM_DA12 = 163,
0183     MX50_PAD_EIM_DA13 = 164,
0184     MX50_PAD_EIM_DA14 = 165,
0185     MX50_PAD_EIM_DA15 = 166,
0186     MX50_PAD_EIM_CS2 = 167,
0187     MX50_PAD_EIM_CS1 = 168,
0188     MX50_PAD_EIM_CS0 = 169,
0189     MX50_PAD_EIM_EB0 = 170,
0190     MX50_PAD_EIM_EB1 = 171,
0191     MX50_PAD_EIM_WAIT = 172,
0192     MX50_PAD_EIM_BCLK = 173,
0193     MX50_PAD_EIM_RDY = 174,
0194     MX50_PAD_EIM_OE = 175,
0195     MX50_PAD_EIM_RW = 176,
0196     MX50_PAD_EIM_LBA = 177,
0197     MX50_PAD_EIM_CRE = 178,
0198 };
0199 
0200 /* Pad names for the pinmux subsystem */
0201 static const struct pinctrl_pin_desc imx50_pinctrl_pads[] = {
0202     IMX_PINCTRL_PIN(MX50_PAD_RESERVE0),
0203     IMX_PINCTRL_PIN(MX50_PAD_RESERVE1),
0204     IMX_PINCTRL_PIN(MX50_PAD_RESERVE2),
0205     IMX_PINCTRL_PIN(MX50_PAD_RESERVE3),
0206     IMX_PINCTRL_PIN(MX50_PAD_RESERVE4),
0207     IMX_PINCTRL_PIN(MX50_PAD_RESERVE5),
0208     IMX_PINCTRL_PIN(MX50_PAD_RESERVE6),
0209     IMX_PINCTRL_PIN(MX50_PAD_RESERVE7),
0210     IMX_PINCTRL_PIN(MX50_PAD_KEY_COL0),
0211     IMX_PINCTRL_PIN(MX50_PAD_KEY_ROW0),
0212     IMX_PINCTRL_PIN(MX50_PAD_KEY_COL1),
0213     IMX_PINCTRL_PIN(MX50_PAD_KEY_ROW1),
0214     IMX_PINCTRL_PIN(MX50_PAD_KEY_COL2),
0215     IMX_PINCTRL_PIN(MX50_PAD_KEY_ROW2),
0216     IMX_PINCTRL_PIN(MX50_PAD_KEY_COL3),
0217     IMX_PINCTRL_PIN(MX50_PAD_KEY_ROW3),
0218     IMX_PINCTRL_PIN(MX50_PAD_I2C1_SCL),
0219     IMX_PINCTRL_PIN(MX50_PAD_I2C1_SDA),
0220     IMX_PINCTRL_PIN(MX50_PAD_I2C2_SCL),
0221     IMX_PINCTRL_PIN(MX50_PAD_I2C2_SDA),
0222     IMX_PINCTRL_PIN(MX50_PAD_I2C3_SCL),
0223     IMX_PINCTRL_PIN(MX50_PAD_I2C3_SDA),
0224     IMX_PINCTRL_PIN(MX50_PAD_PWM1),
0225     IMX_PINCTRL_PIN(MX50_PAD_PWM2),
0226     IMX_PINCTRL_PIN(MX50_PAD_0WIRE),
0227     IMX_PINCTRL_PIN(MX50_PAD_EPITO),
0228     IMX_PINCTRL_PIN(MX50_PAD_WDOG),
0229     IMX_PINCTRL_PIN(MX50_PAD_SSI_TXFS),
0230     IMX_PINCTRL_PIN(MX50_PAD_SSI_TXC),
0231     IMX_PINCTRL_PIN(MX50_PAD_SSI_TXD),
0232     IMX_PINCTRL_PIN(MX50_PAD_SSI_RXD),
0233     IMX_PINCTRL_PIN(MX50_PAD_SSI_RXF),
0234     IMX_PINCTRL_PIN(MX50_PAD_SSI_RXC),
0235     IMX_PINCTRL_PIN(MX50_PAD_UART1_TXD),
0236     IMX_PINCTRL_PIN(MX50_PAD_UART1_RXD),
0237     IMX_PINCTRL_PIN(MX50_PAD_UART1_CTS),
0238     IMX_PINCTRL_PIN(MX50_PAD_UART1_RTS),
0239     IMX_PINCTRL_PIN(MX50_PAD_UART2_TXD),
0240     IMX_PINCTRL_PIN(MX50_PAD_UART2_RXD),
0241     IMX_PINCTRL_PIN(MX50_PAD_UART2_CTS),
0242     IMX_PINCTRL_PIN(MX50_PAD_UART2_RTS),
0243     IMX_PINCTRL_PIN(MX50_PAD_UART3_TXD),
0244     IMX_PINCTRL_PIN(MX50_PAD_UART3_RXD),
0245     IMX_PINCTRL_PIN(MX50_PAD_UART4_TXD),
0246     IMX_PINCTRL_PIN(MX50_PAD_UART4_RXD),
0247     IMX_PINCTRL_PIN(MX50_PAD_CSPI_CLK),
0248     IMX_PINCTRL_PIN(MX50_PAD_CSPI_MOSI),
0249     IMX_PINCTRL_PIN(MX50_PAD_CSPI_MISO),
0250     IMX_PINCTRL_PIN(MX50_PAD_CSPI_SS0),
0251     IMX_PINCTRL_PIN(MX50_PAD_ECSPI1_CLK),
0252     IMX_PINCTRL_PIN(MX50_PAD_ECSPI1_MOSI),
0253     IMX_PINCTRL_PIN(MX50_PAD_ECSPI1_MISO),
0254     IMX_PINCTRL_PIN(MX50_PAD_ECSPI1_SS0),
0255     IMX_PINCTRL_PIN(MX50_PAD_ECSPI2_CLK),
0256     IMX_PINCTRL_PIN(MX50_PAD_ECSPI2_MOSI),
0257     IMX_PINCTRL_PIN(MX50_PAD_ECSPI2_MISO),
0258     IMX_PINCTRL_PIN(MX50_PAD_ECSPI2_SS0),
0259     IMX_PINCTRL_PIN(MX50_PAD_SD1_CLK),
0260     IMX_PINCTRL_PIN(MX50_PAD_SD1_CMD),
0261     IMX_PINCTRL_PIN(MX50_PAD_SD1_D0),
0262     IMX_PINCTRL_PIN(MX50_PAD_SD1_D1),
0263     IMX_PINCTRL_PIN(MX50_PAD_SD1_D2),
0264     IMX_PINCTRL_PIN(MX50_PAD_SD1_D3),
0265     IMX_PINCTRL_PIN(MX50_PAD_SD2_CLK),
0266     IMX_PINCTRL_PIN(MX50_PAD_SD2_CMD),
0267     IMX_PINCTRL_PIN(MX50_PAD_SD2_D0),
0268     IMX_PINCTRL_PIN(MX50_PAD_SD2_D1),
0269     IMX_PINCTRL_PIN(MX50_PAD_SD2_D2),
0270     IMX_PINCTRL_PIN(MX50_PAD_SD2_D3),
0271     IMX_PINCTRL_PIN(MX50_PAD_SD2_D4),
0272     IMX_PINCTRL_PIN(MX50_PAD_SD2_D5),
0273     IMX_PINCTRL_PIN(MX50_PAD_SD2_D6),
0274     IMX_PINCTRL_PIN(MX50_PAD_SD2_D7),
0275     IMX_PINCTRL_PIN(MX50_PAD_SD2_WP),
0276     IMX_PINCTRL_PIN(MX50_PAD_SD2_CD),
0277     IMX_PINCTRL_PIN(MX50_PAD_DISP_D0),
0278     IMX_PINCTRL_PIN(MX50_PAD_DISP_D1),
0279     IMX_PINCTRL_PIN(MX50_PAD_DISP_D2),
0280     IMX_PINCTRL_PIN(MX50_PAD_DISP_D3),
0281     IMX_PINCTRL_PIN(MX50_PAD_DISP_D4),
0282     IMX_PINCTRL_PIN(MX50_PAD_DISP_D5),
0283     IMX_PINCTRL_PIN(MX50_PAD_DISP_D6),
0284     IMX_PINCTRL_PIN(MX50_PAD_DISP_D7),
0285     IMX_PINCTRL_PIN(MX50_PAD_DISP_WR),
0286     IMX_PINCTRL_PIN(MX50_PAD_DISP_RD),
0287     IMX_PINCTRL_PIN(MX50_PAD_DISP_RS),
0288     IMX_PINCTRL_PIN(MX50_PAD_DISP_CS),
0289     IMX_PINCTRL_PIN(MX50_PAD_DISP_BUSY),
0290     IMX_PINCTRL_PIN(MX50_PAD_DISP_RESET),
0291     IMX_PINCTRL_PIN(MX50_PAD_SD3_CLK),
0292     IMX_PINCTRL_PIN(MX50_PAD_SD3_CMD),
0293     IMX_PINCTRL_PIN(MX50_PAD_SD3_D0),
0294     IMX_PINCTRL_PIN(MX50_PAD_SD3_D1),
0295     IMX_PINCTRL_PIN(MX50_PAD_SD3_D2),
0296     IMX_PINCTRL_PIN(MX50_PAD_SD3_D3),
0297     IMX_PINCTRL_PIN(MX50_PAD_SD3_D4),
0298     IMX_PINCTRL_PIN(MX50_PAD_SD3_D5),
0299     IMX_PINCTRL_PIN(MX50_PAD_SD3_D6),
0300     IMX_PINCTRL_PIN(MX50_PAD_SD3_D7),
0301     IMX_PINCTRL_PIN(MX50_PAD_SD3_WP),
0302     IMX_PINCTRL_PIN(MX50_PAD_DISP_D8),
0303     IMX_PINCTRL_PIN(MX50_PAD_DISP_D9),
0304     IMX_PINCTRL_PIN(MX50_PAD_DISP_D10),
0305     IMX_PINCTRL_PIN(MX50_PAD_DISP_D11),
0306     IMX_PINCTRL_PIN(MX50_PAD_DISP_D12),
0307     IMX_PINCTRL_PIN(MX50_PAD_DISP_D13),
0308     IMX_PINCTRL_PIN(MX50_PAD_DISP_D14),
0309     IMX_PINCTRL_PIN(MX50_PAD_DISP_D15),
0310     IMX_PINCTRL_PIN(MX50_PAD_EPDC_D0),
0311     IMX_PINCTRL_PIN(MX50_PAD_EPDC_D1),
0312     IMX_PINCTRL_PIN(MX50_PAD_EPDC_D2),
0313     IMX_PINCTRL_PIN(MX50_PAD_EPDC_D3),
0314     IMX_PINCTRL_PIN(MX50_PAD_EPDC_D4),
0315     IMX_PINCTRL_PIN(MX50_PAD_EPDC_D5),
0316     IMX_PINCTRL_PIN(MX50_PAD_EPDC_D6),
0317     IMX_PINCTRL_PIN(MX50_PAD_EPDC_D7),
0318     IMX_PINCTRL_PIN(MX50_PAD_EPDC_D8),
0319     IMX_PINCTRL_PIN(MX50_PAD_EPDC_D9),
0320     IMX_PINCTRL_PIN(MX50_PAD_EPDC_D10),
0321     IMX_PINCTRL_PIN(MX50_PAD_EPDC_D11),
0322     IMX_PINCTRL_PIN(MX50_PAD_EPDC_D12),
0323     IMX_PINCTRL_PIN(MX50_PAD_EPDC_D13),
0324     IMX_PINCTRL_PIN(MX50_PAD_EPDC_D14),
0325     IMX_PINCTRL_PIN(MX50_PAD_EPDC_D15),
0326     IMX_PINCTRL_PIN(MX50_PAD_EPDC_GDCLK),
0327     IMX_PINCTRL_PIN(MX50_PAD_EPDC_GDSP),
0328     IMX_PINCTRL_PIN(MX50_PAD_EPDC_GDOE),
0329     IMX_PINCTRL_PIN(MX50_PAD_EPDC_GDRL),
0330     IMX_PINCTRL_PIN(MX50_PAD_EPDC_SDCLK),
0331     IMX_PINCTRL_PIN(MX50_PAD_EPDC_SDOEZ),
0332     IMX_PINCTRL_PIN(MX50_PAD_EPDC_SDOED),
0333     IMX_PINCTRL_PIN(MX50_PAD_EPDC_SDOE),
0334     IMX_PINCTRL_PIN(MX50_PAD_EPDC_SDLE),
0335     IMX_PINCTRL_PIN(MX50_PAD_EPDC_SDCLKN),
0336     IMX_PINCTRL_PIN(MX50_PAD_EPDC_SDSHR),
0337     IMX_PINCTRL_PIN(MX50_PAD_EPDC_PWRCOM),
0338     IMX_PINCTRL_PIN(MX50_PAD_EPDC_PWRSTAT),
0339     IMX_PINCTRL_PIN(MX50_PAD_EPDC_PWRCTRL0),
0340     IMX_PINCTRL_PIN(MX50_PAD_EPDC_PWRCTRL1),
0341     IMX_PINCTRL_PIN(MX50_PAD_EPDC_PWRCTRL2),
0342     IMX_PINCTRL_PIN(MX50_PAD_EPDC_PWRCTRL3),
0343     IMX_PINCTRL_PIN(MX50_PAD_EPDC_VCOM0),
0344     IMX_PINCTRL_PIN(MX50_PAD_EPDC_VCOM1),
0345     IMX_PINCTRL_PIN(MX50_PAD_EPDC_BDR0),
0346     IMX_PINCTRL_PIN(MX50_PAD_EPDC_BDR1),
0347     IMX_PINCTRL_PIN(MX50_PAD_EPDC_SDCE0),
0348     IMX_PINCTRL_PIN(MX50_PAD_EPDC_SDCE1),
0349     IMX_PINCTRL_PIN(MX50_PAD_EPDC_SDCE2),
0350     IMX_PINCTRL_PIN(MX50_PAD_EPDC_SDCE3),
0351     IMX_PINCTRL_PIN(MX50_PAD_EPDC_SDCE4),
0352     IMX_PINCTRL_PIN(MX50_PAD_EPDC_SDCE5),
0353     IMX_PINCTRL_PIN(MX50_PAD_EIM_DA0),
0354     IMX_PINCTRL_PIN(MX50_PAD_EIM_DA1),
0355     IMX_PINCTRL_PIN(MX50_PAD_EIM_DA2),
0356     IMX_PINCTRL_PIN(MX50_PAD_EIM_DA3),
0357     IMX_PINCTRL_PIN(MX50_PAD_EIM_DA4),
0358     IMX_PINCTRL_PIN(MX50_PAD_EIM_DA5),
0359     IMX_PINCTRL_PIN(MX50_PAD_EIM_DA6),
0360     IMX_PINCTRL_PIN(MX50_PAD_EIM_DA7),
0361     IMX_PINCTRL_PIN(MX50_PAD_EIM_DA8),
0362     IMX_PINCTRL_PIN(MX50_PAD_EIM_DA9),
0363     IMX_PINCTRL_PIN(MX50_PAD_EIM_DA10),
0364     IMX_PINCTRL_PIN(MX50_PAD_EIM_DA11),
0365     IMX_PINCTRL_PIN(MX50_PAD_EIM_DA12),
0366     IMX_PINCTRL_PIN(MX50_PAD_EIM_DA13),
0367     IMX_PINCTRL_PIN(MX50_PAD_EIM_DA14),
0368     IMX_PINCTRL_PIN(MX50_PAD_EIM_DA15),
0369     IMX_PINCTRL_PIN(MX50_PAD_EIM_CS2),
0370     IMX_PINCTRL_PIN(MX50_PAD_EIM_CS1),
0371     IMX_PINCTRL_PIN(MX50_PAD_EIM_CS0),
0372     IMX_PINCTRL_PIN(MX50_PAD_EIM_EB0),
0373     IMX_PINCTRL_PIN(MX50_PAD_EIM_EB1),
0374     IMX_PINCTRL_PIN(MX50_PAD_EIM_WAIT),
0375     IMX_PINCTRL_PIN(MX50_PAD_EIM_BCLK),
0376     IMX_PINCTRL_PIN(MX50_PAD_EIM_RDY),
0377     IMX_PINCTRL_PIN(MX50_PAD_EIM_OE),
0378     IMX_PINCTRL_PIN(MX50_PAD_EIM_RW),
0379     IMX_PINCTRL_PIN(MX50_PAD_EIM_LBA),
0380     IMX_PINCTRL_PIN(MX50_PAD_EIM_CRE),
0381 };
0382 
0383 static const struct imx_pinctrl_soc_info imx50_pinctrl_info = {
0384     .pins = imx50_pinctrl_pads,
0385     .npins = ARRAY_SIZE(imx50_pinctrl_pads),
0386     .gpr_compatible = "fsl,imx50-iomuxc-gpr",
0387 };
0388 
0389 static const struct of_device_id imx50_pinctrl_of_match[] = {
0390     { .compatible = "fsl,imx50-iomuxc", },
0391     { /* sentinel */ }
0392 };
0393 
0394 static int imx50_pinctrl_probe(struct platform_device *pdev)
0395 {
0396     return imx_pinctrl_probe(pdev, &imx50_pinctrl_info);
0397 }
0398 
0399 static struct platform_driver imx50_pinctrl_driver = {
0400     .driver = {
0401         .name = "imx50-pinctrl",
0402         .of_match_table = imx50_pinctrl_of_match,
0403         .suppress_bind_attrs = true,
0404     },
0405     .probe = imx50_pinctrl_probe,
0406 };
0407 
0408 static int __init imx50_pinctrl_init(void)
0409 {
0410     return platform_driver_register(&imx50_pinctrl_driver);
0411 }
0412 arch_initcall(imx50_pinctrl_init);