1*9612327cSFrank Li /* 2*9612327cSFrank Li * Copyright (C) 2015 Freescale Semiconductor, Inc. 3*9612327cSFrank Li * 4*9612327cSFrank Li * This program is free software; you can redistribute it and/or modify 5*9612327cSFrank Li * it under the terms of the GNU General Public License version 2 as 6*9612327cSFrank Li * published by the Free Software Foundation. 7*9612327cSFrank Li */ 8*9612327cSFrank Li 9*9612327cSFrank Li #include <linux/err.h> 10*9612327cSFrank Li #include <linux/init.h> 11*9612327cSFrank Li #include <linux/io.h> 12*9612327cSFrank Li #include <linux/module.h> 13*9612327cSFrank Li #include <linux/of.h> 14*9612327cSFrank Li #include <linux/of_device.h> 15*9612327cSFrank Li #include <linux/pinctrl/pinctrl.h> 16*9612327cSFrank Li 17*9612327cSFrank Li #include "pinctrl-imx.h" 18*9612327cSFrank Li 19*9612327cSFrank Li enum imx6ul_pads { 20*9612327cSFrank Li MX6UL_PAD_RESERVE0 = 0, 21*9612327cSFrank Li MX6UL_PAD_RESERVE1 = 1, 22*9612327cSFrank Li MX6UL_PAD_RESERVE2 = 2, 23*9612327cSFrank Li MX6UL_PAD_RESERVE3 = 3, 24*9612327cSFrank Li MX6UL_PAD_RESERVE4 = 4, 25*9612327cSFrank Li MX6UL_PAD_RESERVE5 = 5, 26*9612327cSFrank Li MX6UL_PAD_RESERVE6 = 6, 27*9612327cSFrank Li MX6UL_PAD_RESERVE7 = 7, 28*9612327cSFrank Li MX6UL_PAD_RESERVE8 = 8, 29*9612327cSFrank Li MX6UL_PAD_RESERVE9 = 9, 30*9612327cSFrank Li MX6UL_PAD_RESERVE10 = 10, 31*9612327cSFrank Li MX6UL_PAD_SNVS_TAMPER4 = 11, 32*9612327cSFrank Li MX6UL_PAD_RESERVE12 = 12, 33*9612327cSFrank Li MX6UL_PAD_RESERVE13 = 13, 34*9612327cSFrank Li MX6UL_PAD_RESERVE14 = 14, 35*9612327cSFrank Li MX6UL_PAD_RESERVE15 = 15, 36*9612327cSFrank Li MX6UL_PAD_RESERVE16 = 16, 37*9612327cSFrank Li MX6UL_PAD_JTAG_MOD = 17, 38*9612327cSFrank Li MX6UL_PAD_JTAG_TMS = 18, 39*9612327cSFrank Li MX6UL_PAD_JTAG_TDO = 19, 40*9612327cSFrank Li MX6UL_PAD_JTAG_TDI = 20, 41*9612327cSFrank Li MX6UL_PAD_JTAG_TCK = 21, 42*9612327cSFrank Li MX6UL_PAD_JTAG_TRST_B = 22, 43*9612327cSFrank Li MX6UL_PAD_GPIO1_IO00 = 23, 44*9612327cSFrank Li MX6UL_PAD_GPIO1_IO01 = 24, 45*9612327cSFrank Li MX6UL_PAD_GPIO1_IO02 = 25, 46*9612327cSFrank Li MX6UL_PAD_GPIO1_IO03 = 26, 47*9612327cSFrank Li MX6UL_PAD_GPIO1_IO04 = 27, 48*9612327cSFrank Li MX6UL_PAD_GPIO1_IO05 = 28, 49*9612327cSFrank Li MX6UL_PAD_GPIO1_IO06 = 29, 50*9612327cSFrank Li MX6UL_PAD_GPIO1_IO07 = 30, 51*9612327cSFrank Li MX6UL_PAD_GPIO1_IO08 = 31, 52*9612327cSFrank Li MX6UL_PAD_GPIO1_IO09 = 32, 53*9612327cSFrank Li MX6UL_PAD_UART1_TX_DATA = 33, 54*9612327cSFrank Li MX6UL_PAD_UART1_RX_DATA = 34, 55*9612327cSFrank Li MX6UL_PAD_UART1_CTS_B = 35, 56*9612327cSFrank Li MX6UL_PAD_UART1_RTS_B = 36, 57*9612327cSFrank Li MX6UL_PAD_UART2_TX_DATA = 37, 58*9612327cSFrank Li MX6UL_PAD_UART2_RX_DATA = 38, 59*9612327cSFrank Li MX6UL_PAD_UART2_CTS_B = 39, 60*9612327cSFrank Li MX6UL_PAD_UART2_RTS_B = 40, 61*9612327cSFrank Li MX6UL_PAD_UART3_TX_DATA = 41, 62*9612327cSFrank Li MX6UL_PAD_UART3_RX_DATA = 42, 63*9612327cSFrank Li MX6UL_PAD_UART3_CTS_B = 43, 64*9612327cSFrank Li MX6UL_PAD_UART3_RTS_B = 44, 65*9612327cSFrank Li MX6UL_PAD_UART4_TX_DATA = 45, 66*9612327cSFrank Li MX6UL_PAD_UART4_RX_DATA = 46, 67*9612327cSFrank Li MX6UL_PAD_UART5_TX_DATA = 47, 68*9612327cSFrank Li MX6UL_PAD_UART5_RX_DATA = 48, 69*9612327cSFrank Li MX6UL_PAD_ENET1_RX_DATA0 = 49, 70*9612327cSFrank Li MX6UL_PAD_ENET1_RX_DATA1 = 50, 71*9612327cSFrank Li MX6UL_PAD_ENET1_RX_EN = 51, 72*9612327cSFrank Li MX6UL_PAD_ENET1_TX_DATA0 = 52, 73*9612327cSFrank Li MX6UL_PAD_ENET1_TX_DATA1 = 53, 74*9612327cSFrank Li MX6UL_PAD_ENET1_TX_EN = 54, 75*9612327cSFrank Li MX6UL_PAD_ENET1_TX_CLK = 55, 76*9612327cSFrank Li MX6UL_PAD_ENET1_RX_ER = 56, 77*9612327cSFrank Li MX6UL_PAD_ENET2_RX_DATA0 = 57, 78*9612327cSFrank Li MX6UL_PAD_ENET2_RX_DATA1 = 58, 79*9612327cSFrank Li MX6UL_PAD_ENET2_RX_EN = 59, 80*9612327cSFrank Li MX6UL_PAD_ENET2_TX_DATA0 = 60, 81*9612327cSFrank Li MX6UL_PAD_ENET2_TX_DATA1 = 61, 82*9612327cSFrank Li MX6UL_PAD_ENET2_TX_EN = 62, 83*9612327cSFrank Li MX6UL_PAD_ENET2_TX_CLK = 63, 84*9612327cSFrank Li MX6UL_PAD_ENET2_RX_ER = 64, 85*9612327cSFrank Li MX6UL_PAD_LCD_CLK = 65, 86*9612327cSFrank Li MX6UL_PAD_LCD_ENABLE = 66, 87*9612327cSFrank Li MX6UL_PAD_LCD_HSYNC = 67, 88*9612327cSFrank Li MX6UL_PAD_LCD_VSYNC = 68, 89*9612327cSFrank Li MX6UL_PAD_LCD_RESET = 69, 90*9612327cSFrank Li MX6UL_PAD_LCD_DATA00 = 70, 91*9612327cSFrank Li MX6UL_PAD_LCD_DATA01 = 71, 92*9612327cSFrank Li MX6UL_PAD_LCD_DATA02 = 72, 93*9612327cSFrank Li MX6UL_PAD_LCD_DATA03 = 73, 94*9612327cSFrank Li MX6UL_PAD_LCD_DATA04 = 74, 95*9612327cSFrank Li MX6UL_PAD_LCD_DATA05 = 75, 96*9612327cSFrank Li MX6UL_PAD_LCD_DATA06 = 76, 97*9612327cSFrank Li MX6UL_PAD_LCD_DATA07 = 77, 98*9612327cSFrank Li MX6UL_PAD_LCD_DATA08 = 78, 99*9612327cSFrank Li MX6UL_PAD_LCD_DATA09 = 79, 100*9612327cSFrank Li MX6UL_PAD_LCD_DATA10 = 80, 101*9612327cSFrank Li MX6UL_PAD_LCD_DATA11 = 81, 102*9612327cSFrank Li MX6UL_PAD_LCD_DATA12 = 82, 103*9612327cSFrank Li MX6UL_PAD_LCD_DATA13 = 83, 104*9612327cSFrank Li MX6UL_PAD_LCD_DATA14 = 84, 105*9612327cSFrank Li MX6UL_PAD_LCD_DATA15 = 85, 106*9612327cSFrank Li MX6UL_PAD_LCD_DATA16 = 86, 107*9612327cSFrank Li MX6UL_PAD_LCD_DATA17 = 87, 108*9612327cSFrank Li MX6UL_PAD_LCD_DATA18 = 88, 109*9612327cSFrank Li MX6UL_PAD_LCD_DATA19 = 89, 110*9612327cSFrank Li MX6UL_PAD_LCD_DATA20 = 90, 111*9612327cSFrank Li MX6UL_PAD_LCD_DATA21 = 91, 112*9612327cSFrank Li MX6UL_PAD_LCD_DATA22 = 92, 113*9612327cSFrank Li MX6UL_PAD_LCD_DATA23 = 93, 114*9612327cSFrank Li MX6UL_PAD_NAND_RE_B = 94, 115*9612327cSFrank Li MX6UL_PAD_NAND_WE_B = 95, 116*9612327cSFrank Li MX6UL_PAD_NAND_DATA00 = 96, 117*9612327cSFrank Li MX6UL_PAD_NAND_DATA01 = 97, 118*9612327cSFrank Li MX6UL_PAD_NAND_DATA02 = 98, 119*9612327cSFrank Li MX6UL_PAD_NAND_DATA03 = 99, 120*9612327cSFrank Li MX6UL_PAD_NAND_DATA04 = 100, 121*9612327cSFrank Li MX6UL_PAD_NAND_DATA05 = 101, 122*9612327cSFrank Li MX6UL_PAD_NAND_DATA06 = 102, 123*9612327cSFrank Li MX6UL_PAD_NAND_DATA07 = 103, 124*9612327cSFrank Li MX6UL_PAD_NAND_ALE = 104, 125*9612327cSFrank Li MX6UL_PAD_NAND_WP_B = 105, 126*9612327cSFrank Li MX6UL_PAD_NAND_READY_B = 106, 127*9612327cSFrank Li MX6UL_PAD_NAND_CE0_B = 107, 128*9612327cSFrank Li MX6UL_PAD_NAND_CE1_B = 108, 129*9612327cSFrank Li MX6UL_PAD_NAND_CLE = 109, 130*9612327cSFrank Li MX6UL_PAD_NAND_DQS = 110, 131*9612327cSFrank Li MX6UL_PAD_SD1_CMD = 111, 132*9612327cSFrank Li MX6UL_PAD_SD1_CLK = 112, 133*9612327cSFrank Li MX6UL_PAD_SD1_DATA0 = 113, 134*9612327cSFrank Li MX6UL_PAD_SD1_DATA1 = 114, 135*9612327cSFrank Li MX6UL_PAD_SD1_DATA2 = 115, 136*9612327cSFrank Li MX6UL_PAD_SD1_DATA3 = 116, 137*9612327cSFrank Li MX6UL_PAD_CSI_MCLK = 117, 138*9612327cSFrank Li MX6UL_PAD_CSI_PIXCLK = 118, 139*9612327cSFrank Li MX6UL_PAD_CSI_VSYNC = 119, 140*9612327cSFrank Li MX6UL_PAD_CSI_HSYNC = 120, 141*9612327cSFrank Li MX6UL_PAD_CSI_DATA00 = 121, 142*9612327cSFrank Li MX6UL_PAD_CSI_DATA01 = 122, 143*9612327cSFrank Li MX6UL_PAD_CSI_DATA02 = 123, 144*9612327cSFrank Li MX6UL_PAD_CSI_DATA03 = 124, 145*9612327cSFrank Li MX6UL_PAD_CSI_DATA04 = 125, 146*9612327cSFrank Li MX6UL_PAD_CSI_DATA05 = 126, 147*9612327cSFrank Li MX6UL_PAD_CSI_DATA06 = 127, 148*9612327cSFrank Li MX6UL_PAD_CSI_DATA07 = 128, 149*9612327cSFrank Li }; 150*9612327cSFrank Li 151*9612327cSFrank Li /* Pad names for the pinmux subsystem */ 152*9612327cSFrank Li static const struct pinctrl_pin_desc imx6ul_pinctrl_pads[] = { 153*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_RESERVE0), 154*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_RESERVE1), 155*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_RESERVE2), 156*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_RESERVE3), 157*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_RESERVE4), 158*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_RESERVE5), 159*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_RESERVE6), 160*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_RESERVE7), 161*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_RESERVE8), 162*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_RESERVE9), 163*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_RESERVE10), 164*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_SNVS_TAMPER4), 165*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_RESERVE12), 166*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_RESERVE13), 167*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_RESERVE14), 168*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_RESERVE15), 169*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_RESERVE16), 170*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_JTAG_MOD), 171*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_JTAG_TMS), 172*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_JTAG_TDO), 173*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_JTAG_TDI), 174*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_JTAG_TCK), 175*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_JTAG_TRST_B), 176*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_GPIO1_IO00), 177*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_GPIO1_IO01), 178*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_GPIO1_IO02), 179*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_GPIO1_IO03), 180*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_GPIO1_IO04), 181*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_GPIO1_IO05), 182*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_GPIO1_IO06), 183*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_GPIO1_IO07), 184*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_GPIO1_IO08), 185*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_GPIO1_IO09), 186*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_UART1_TX_DATA), 187*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_UART1_RX_DATA), 188*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_UART1_CTS_B), 189*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_UART1_RTS_B), 190*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_UART2_TX_DATA), 191*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_UART2_RX_DATA), 192*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_UART2_CTS_B), 193*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_UART2_RTS_B), 194*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_UART3_TX_DATA), 195*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_UART3_RX_DATA), 196*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_UART3_CTS_B), 197*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_UART3_RTS_B), 198*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_UART4_TX_DATA), 199*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_UART4_RX_DATA), 200*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_UART5_TX_DATA), 201*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_UART5_RX_DATA), 202*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_ENET1_RX_DATA0), 203*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_ENET1_RX_DATA1), 204*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_ENET1_RX_EN), 205*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_ENET1_TX_DATA0), 206*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_ENET1_TX_DATA1), 207*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_ENET1_TX_EN), 208*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_ENET1_TX_CLK), 209*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_ENET1_RX_ER), 210*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_ENET2_RX_DATA0), 211*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_ENET2_RX_DATA1), 212*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_ENET2_RX_EN), 213*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_ENET2_TX_DATA0), 214*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_ENET2_TX_DATA1), 215*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_ENET2_TX_EN), 216*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_ENET2_TX_CLK), 217*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_ENET2_RX_ER), 218*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_LCD_CLK), 219*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_LCD_ENABLE), 220*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_LCD_HSYNC), 221*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_LCD_VSYNC), 222*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_LCD_RESET), 223*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_LCD_DATA00), 224*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_LCD_DATA01), 225*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_LCD_DATA02), 226*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_LCD_DATA03), 227*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_LCD_DATA04), 228*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_LCD_DATA05), 229*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_LCD_DATA06), 230*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_LCD_DATA07), 231*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_LCD_DATA08), 232*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_LCD_DATA09), 233*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_LCD_DATA10), 234*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_LCD_DATA11), 235*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_LCD_DATA12), 236*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_LCD_DATA13), 237*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_LCD_DATA14), 238*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_LCD_DATA15), 239*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_LCD_DATA16), 240*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_LCD_DATA17), 241*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_LCD_DATA18), 242*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_LCD_DATA19), 243*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_LCD_DATA20), 244*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_LCD_DATA21), 245*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_LCD_DATA22), 246*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_LCD_DATA23), 247*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_NAND_RE_B), 248*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_NAND_WE_B), 249*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_NAND_DATA00), 250*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_NAND_DATA01), 251*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_NAND_DATA02), 252*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_NAND_DATA03), 253*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_NAND_DATA04), 254*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_NAND_DATA05), 255*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_NAND_DATA06), 256*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_NAND_DATA07), 257*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_NAND_ALE), 258*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_NAND_WP_B), 259*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_NAND_READY_B), 260*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_NAND_CE0_B), 261*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_NAND_CE1_B), 262*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_NAND_CLE), 263*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_NAND_DQS), 264*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_SD1_CMD), 265*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_SD1_CLK), 266*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_SD1_DATA0), 267*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_SD1_DATA1), 268*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_SD1_DATA2), 269*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_SD1_DATA3), 270*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_CSI_MCLK), 271*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_CSI_PIXCLK), 272*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_CSI_VSYNC), 273*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_CSI_HSYNC), 274*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_CSI_DATA00), 275*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_CSI_DATA01), 276*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_CSI_DATA02), 277*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_CSI_DATA03), 278*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_CSI_DATA04), 279*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_CSI_DATA05), 280*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_CSI_DATA06), 281*9612327cSFrank Li IMX_PINCTRL_PIN(MX6UL_PAD_CSI_DATA07), 282*9612327cSFrank Li }; 283*9612327cSFrank Li 284*9612327cSFrank Li static struct imx_pinctrl_soc_info imx6ul_pinctrl_info = { 285*9612327cSFrank Li .pins = imx6ul_pinctrl_pads, 286*9612327cSFrank Li .npins = ARRAY_SIZE(imx6ul_pinctrl_pads), 287*9612327cSFrank Li }; 288*9612327cSFrank Li 289*9612327cSFrank Li static struct of_device_id imx6ul_pinctrl_of_match[] = { 290*9612327cSFrank Li { .compatible = "fsl,imx6ul-iomuxc", }, 291*9612327cSFrank Li { /* sentinel */ } 292*9612327cSFrank Li }; 293*9612327cSFrank Li 294*9612327cSFrank Li static int imx6ul_pinctrl_probe(struct platform_device *pdev) 295*9612327cSFrank Li { 296*9612327cSFrank Li return imx_pinctrl_probe(pdev, &imx6ul_pinctrl_info); 297*9612327cSFrank Li } 298*9612327cSFrank Li 299*9612327cSFrank Li static struct platform_driver imx6ul_pinctrl_driver = { 300*9612327cSFrank Li .driver = { 301*9612327cSFrank Li .name = "imx6ul-pinctrl", 302*9612327cSFrank Li .owner = THIS_MODULE, 303*9612327cSFrank Li .of_match_table = of_match_ptr(imx6ul_pinctrl_of_match), 304*9612327cSFrank Li }, 305*9612327cSFrank Li .probe = imx6ul_pinctrl_probe, 306*9612327cSFrank Li .remove = imx_pinctrl_remove, 307*9612327cSFrank Li }; 308*9612327cSFrank Li 309*9612327cSFrank Li static int __init imx6ul_pinctrl_init(void) 310*9612327cSFrank Li { 311*9612327cSFrank Li return platform_driver_register(&imx6ul_pinctrl_driver); 312*9612327cSFrank Li } 313*9612327cSFrank Li arch_initcall(imx6ul_pinctrl_init); 314*9612327cSFrank Li 315*9612327cSFrank Li static void __exit imx6ul_pinctrl_exit(void) 316*9612327cSFrank Li { 317*9612327cSFrank Li platform_driver_unregister(&imx6ul_pinctrl_driver); 318*9612327cSFrank Li } 319*9612327cSFrank Li module_exit(imx6ul_pinctrl_exit); 320*9612327cSFrank Li 321*9612327cSFrank Li MODULE_AUTHOR("Anson Huang <Anson.Huang@freescale.com>"); 322*9612327cSFrank Li MODULE_DESCRIPTION("Freescale imx6ul pinctrl driver"); 323*9612327cSFrank Li MODULE_LICENSE("GPL v2"); 324