0001
0002
0003
0004
0005
0006
0007 #include <linux/module.h>
0008 #include <linux/platform_device.h>
0009 #include <linux/of.h>
0010 #include <linux/of_device.h>
0011 #include <linux/pinctrl/pinctrl.h>
0012
0013 #include "pinctrl-pxa2xx.h"
0014
0015 static const struct pxa_desc_pin pxa27x_pins[] = {
0016 PXA_GPIO_ONLY_PIN(PXA_PINCTRL_PIN(0)),
0017 PXA_GPIO_ONLY_PIN(PXA_PINCTRL_PIN(1)),
0018 PXA_GPIO_PIN(PXA_PINCTRL_PIN(9),
0019 PXA_FUNCTION(0, 3, "FFCTS"),
0020 PXA_FUNCTION(1, 1, "HZ_CLK"),
0021 PXA_FUNCTION(1, 3, "CHOUT<0>")),
0022 PXA_GPIO_PIN(PXA_PINCTRL_PIN(10),
0023 PXA_FUNCTION(0, 1, "FFDCD"),
0024 PXA_FUNCTION(0, 3, "USB_P3_5"),
0025 PXA_FUNCTION(1, 1, "HZ_CLK"),
0026 PXA_FUNCTION(1, 3, "CHOUT<1>")),
0027 PXA_GPIO_PIN(PXA_PINCTRL_PIN(11),
0028 PXA_FUNCTION(0, 1, "EXT_SYNC<0>"),
0029 PXA_FUNCTION(0, 2, "SSPRXD2"),
0030 PXA_FUNCTION(0, 3, "USB_P3_1"),
0031 PXA_FUNCTION(1, 1, "CHOUT<0>"),
0032 PXA_FUNCTION(1, 1, "PWM_OUT<2>"),
0033 PXA_FUNCTION(1, 3, "48_MHz")),
0034 PXA_GPIO_PIN(PXA_PINCTRL_PIN(12),
0035 PXA_FUNCTION(0, 1, "EXT_SYNC<1>"),
0036 PXA_FUNCTION(0, 2, "CIF_DD<7>"),
0037 PXA_FUNCTION(1, 1, "CHOUT<1>"),
0038 PXA_FUNCTION(1, 1, "PWM_OUT<3>"),
0039 PXA_FUNCTION(1, 3, "48_MHz")),
0040 PXA_GPIO_PIN(PXA_PINCTRL_PIN(13),
0041 PXA_FUNCTION(0, 1, "CLK_EXT"),
0042 PXA_FUNCTION(0, 2, "KP_DKIN<7>"),
0043 PXA_FUNCTION(0, 3, "KP_MKIN<7>"),
0044 PXA_FUNCTION(1, 1, "SSPTXD2")),
0045 PXA_GPIO_PIN(PXA_PINCTRL_PIN(14),
0046 PXA_FUNCTION(0, 1, "L_VSYNC"),
0047 PXA_FUNCTION(0, 2, "SSPSFRM2"),
0048 PXA_FUNCTION(1, 1, "SSPSFRM2"),
0049 PXA_FUNCTION(1, 3, "UCLK")),
0050 PXA_GPIO_ONLY_PIN(PXA_PINCTRL_PIN(15)),
0051 PXA_GPIO_PIN(PXA_PINCTRL_PIN(16),
0052 PXA_FUNCTION(0, 1, "KP_MKIN<5>"),
0053 PXA_FUNCTION(1, 2, "PWM_OUT<0>"),
0054 PXA_FUNCTION(1, 3, "FFTXD")),
0055 PXA_GPIO_PIN(PXA_PINCTRL_PIN(17),
0056 PXA_FUNCTION(0, 1, "KP_MKIN<6>"),
0057 PXA_FUNCTION(0, 2, "CIF_DD<6>"),
0058 PXA_FUNCTION(1, 2, "PWM_OUT<1>")),
0059 PXA_GPIO_PIN(PXA_PINCTRL_PIN(18),
0060 PXA_FUNCTION(0, 1, "RDY")),
0061 PXA_GPIO_PIN(PXA_PINCTRL_PIN(19),
0062 PXA_FUNCTION(0, 1, "SSPSCLK2"),
0063 PXA_FUNCTION(0, 3, "FFRXD"),
0064 PXA_FUNCTION(1, 1, "SSPSCLK2"),
0065 PXA_FUNCTION(1, 2, "L_CS"),
0066 PXA_FUNCTION(1, 3, "nURST")),
0067 PXA_GPIO_PIN(PXA_PINCTRL_PIN(20),
0068 PXA_FUNCTION(0, 1, "DREQ<0>"),
0069 PXA_FUNCTION(0, 2, "MBREQ"),
0070 PXA_FUNCTION(1, 1, "nSDCS<2>")),
0071 PXA_GPIO_PIN(PXA_PINCTRL_PIN(21),
0072 PXA_FUNCTION(1, 1, "nSDCS<3>"),
0073 PXA_FUNCTION(1, 2, "DVAL<0>"),
0074 PXA_FUNCTION(1, 3, "MBGNT")),
0075 PXA_GPIO_PIN(PXA_PINCTRL_PIN(22),
0076 PXA_FUNCTION(0, 1, "SSPEXTCLK2"),
0077 PXA_FUNCTION(0, 2, "SSPSCLKEN2"),
0078 PXA_FUNCTION(0, 3, "SSPSCLK2"),
0079 PXA_FUNCTION(1, 1, "KP_MKOUT<7>"),
0080 PXA_FUNCTION(1, 2, "SSPSYSCLK2"),
0081 PXA_FUNCTION(1, 3, "SSPSCLK2")),
0082 PXA_GPIO_PIN(PXA_PINCTRL_PIN(23),
0083 PXA_FUNCTION(0, 2, "SSPSCLK"),
0084 PXA_FUNCTION(1, 1, "CIF_MCLK"),
0085 PXA_FUNCTION(1, 1, "SSPSCLK")),
0086 PXA_GPIO_PIN(PXA_PINCTRL_PIN(24),
0087 PXA_FUNCTION(0, 1, "CIF_FV"),
0088 PXA_FUNCTION(0, 2, "SSPSFRM"),
0089 PXA_FUNCTION(1, 1, "CIF_FV"),
0090 PXA_FUNCTION(1, 2, "SSPSFRM")),
0091 PXA_GPIO_PIN(PXA_PINCTRL_PIN(25),
0092 PXA_FUNCTION(0, 1, "CIF_LV"),
0093 PXA_FUNCTION(1, 1, "CIF_LV"),
0094 PXA_FUNCTION(1, 2, "SSPTXD")),
0095 PXA_GPIO_PIN(PXA_PINCTRL_PIN(26),
0096 PXA_FUNCTION(0, 1, "SSPRXD"),
0097 PXA_FUNCTION(0, 2, "CIF_PCLK"),
0098 PXA_FUNCTION(0, 3, "FFCTS")),
0099 PXA_GPIO_PIN(PXA_PINCTRL_PIN(27),
0100 PXA_FUNCTION(0, 1, "SSPEXTCLK"),
0101 PXA_FUNCTION(0, 2, "SSPSCLKEN"),
0102 PXA_FUNCTION(0, 3, "CIF_DD<0>"),
0103 PXA_FUNCTION(1, 1, "SSPSYSCLK"),
0104 PXA_FUNCTION(1, 3, "FFRTS")),
0105 PXA_GPIO_PIN(PXA_PINCTRL_PIN(28),
0106 PXA_FUNCTION(0, 1, "AC97_BITCLK"),
0107 PXA_FUNCTION(0, 2, "I2S_BITCLK"),
0108 PXA_FUNCTION(0, 3, "SSPSFRM"),
0109 PXA_FUNCTION(1, 1, "I2S_BITCLK"),
0110 PXA_FUNCTION(1, 3, "SSPSFRM")),
0111 PXA_GPIO_PIN(PXA_PINCTRL_PIN(29),
0112 PXA_FUNCTION(0, 1, "AC97_SDATA_IN_0"),
0113 PXA_FUNCTION(0, 2, "I2S_SDATA_IN"),
0114 PXA_FUNCTION(0, 3, "SSPSCLK"),
0115 PXA_FUNCTION(1, 1, "SSPRXD2"),
0116 PXA_FUNCTION(1, 3, "SSPSCLK")),
0117 PXA_GPIO_PIN(PXA_PINCTRL_PIN(30),
0118 PXA_FUNCTION(1, 1, "I2S_SDATA_OUT"),
0119 PXA_FUNCTION(1, 2, "AC97_SDATA_OUT"),
0120 PXA_FUNCTION(1, 3, "USB_P3_2")),
0121 PXA_GPIO_PIN(PXA_PINCTRL_PIN(31),
0122 PXA_FUNCTION(1, 1, "I2S_SYNC"),
0123 PXA_FUNCTION(1, 2, "AC97_SYNC"),
0124 PXA_FUNCTION(1, 3, "USB_P3_6")),
0125 PXA_GPIO_PIN(PXA_PINCTRL_PIN(32),
0126 PXA_FUNCTION(1, 1, "MSSCLK"),
0127 PXA_FUNCTION(1, 2, "MMCLK")),
0128 PXA_GPIO_PIN(PXA_PINCTRL_PIN(33),
0129 PXA_FUNCTION(0, 1, "FFRXD"),
0130 PXA_FUNCTION(0, 2, "FFDSR"),
0131 PXA_FUNCTION(1, 1, "DVAL<1>"),
0132 PXA_FUNCTION(1, 2, "nCS<5>"),
0133 PXA_FUNCTION(1, 3, "MBGNT")),
0134 PXA_GPIO_PIN(PXA_PINCTRL_PIN(34),
0135 PXA_FUNCTION(0, 1, "FFRXD"),
0136 PXA_FUNCTION(0, 2, "KP_MKIN<3>"),
0137 PXA_FUNCTION(0, 3, "SSPSCLK3"),
0138 PXA_FUNCTION(1, 1, "USB_P2_2"),
0139 PXA_FUNCTION(1, 3, "SSPSCLK3")),
0140 PXA_GPIO_PIN(PXA_PINCTRL_PIN(35),
0141 PXA_FUNCTION(0, 1, "FFCTS"),
0142 PXA_FUNCTION(0, 2, "USB_P2_1"),
0143 PXA_FUNCTION(0, 3, "SSPSFRM3"),
0144 PXA_FUNCTION(1, 2, "KP_MKOUT<6>"),
0145 PXA_FUNCTION(1, 3, "SSPTXD3")),
0146 PXA_GPIO_PIN(PXA_PINCTRL_PIN(36),
0147 PXA_FUNCTION(0, 1, "FFDCD"),
0148 PXA_FUNCTION(0, 2, "SSPSCLK2"),
0149 PXA_FUNCTION(0, 3, "KP_MKIN<7>"),
0150 PXA_FUNCTION(1, 1, "USB_P2_4"),
0151 PXA_FUNCTION(1, 2, "SSPSCLK2")),
0152 PXA_GPIO_PIN(PXA_PINCTRL_PIN(37),
0153 PXA_FUNCTION(0, 1, "FFDSR"),
0154 PXA_FUNCTION(0, 2, "SSPSFRM2"),
0155 PXA_FUNCTION(0, 3, "KP_MKIN<3>"),
0156 PXA_FUNCTION(1, 1, "USB_P2_8"),
0157 PXA_FUNCTION(1, 2, "SSPSFRM2"),
0158 PXA_FUNCTION(1, 3, "FFTXD")),
0159 PXA_GPIO_PIN(PXA_PINCTRL_PIN(38),
0160 PXA_FUNCTION(0, 1, "FFRI"),
0161 PXA_FUNCTION(0, 2, "KP_MKIN<4>"),
0162 PXA_FUNCTION(0, 3, "USB_P2_3"),
0163 PXA_FUNCTION(1, 1, "SSPTXD3"),
0164 PXA_FUNCTION(1, 2, "SSPTXD2"),
0165 PXA_FUNCTION(1, 3, "PWM_OUT<0>")),
0166 PXA_GPIO_PIN(PXA_PINCTRL_PIN(39),
0167 PXA_FUNCTION(0, 1, "KP_MKIN<4>"),
0168 PXA_FUNCTION(0, 3, "SSPSFRM3"),
0169 PXA_FUNCTION(1, 1, "USB_P2_6"),
0170 PXA_FUNCTION(1, 2, "FFTXD"),
0171 PXA_FUNCTION(1, 3, "SSPSFRM3")),
0172 PXA_GPIO_PIN(PXA_PINCTRL_PIN(40),
0173 PXA_FUNCTION(0, 1, "SSPRXD2"),
0174 PXA_FUNCTION(0, 3, "USB_P2_5"),
0175 PXA_FUNCTION(1, 1, "KP_MKOUT<6>"),
0176 PXA_FUNCTION(1, 2, "FFDTR"),
0177 PXA_FUNCTION(1, 3, "SSPSCLK3")),
0178 PXA_GPIO_PIN(PXA_PINCTRL_PIN(41),
0179 PXA_FUNCTION(0, 1, "FFRXD"),
0180 PXA_FUNCTION(0, 2, "USB_P2_7"),
0181 PXA_FUNCTION(0, 3, "SSPRXD3"),
0182 PXA_FUNCTION(1, 1, "KP_MKOUT<7>"),
0183 PXA_FUNCTION(1, 2, "FFRTS")),
0184 PXA_GPIO_PIN(PXA_PINCTRL_PIN(42),
0185 PXA_FUNCTION(0, 1, "BTRXD"),
0186 PXA_FUNCTION(0, 2, "ICP_RXD"),
0187 PXA_FUNCTION(1, 3, "CIF_MCLK")),
0188 PXA_GPIO_PIN(PXA_PINCTRL_PIN(43),
0189 PXA_FUNCTION(0, 3, "CIF_FV"),
0190 PXA_FUNCTION(1, 1, "ICP_TXD"),
0191 PXA_FUNCTION(1, 2, "BTTXD"),
0192 PXA_FUNCTION(1, 3, "CIF_FV")),
0193 PXA_GPIO_PIN(PXA_PINCTRL_PIN(44),
0194 PXA_FUNCTION(0, 1, "BTCTS"),
0195 PXA_FUNCTION(0, 3, "CIF_LV"),
0196 PXA_FUNCTION(1, 3, "CIF_LV")),
0197 PXA_GPIO_PIN(PXA_PINCTRL_PIN(45),
0198 PXA_FUNCTION(0, 3, "CIF_PCLK"),
0199 PXA_FUNCTION(1, 1, "AC97_SYSCLK"),
0200 PXA_FUNCTION(1, 2, "BTRTS"),
0201 PXA_FUNCTION(1, 3, "SSPSYSCLK3")),
0202 PXA_GPIO_PIN(PXA_PINCTRL_PIN(46),
0203 PXA_FUNCTION(0, 1, "ICP_RXD"),
0204 PXA_FUNCTION(0, 2, "STD_RXD"),
0205 PXA_FUNCTION(1, 2, "PWM_OUT<2>")),
0206 PXA_GPIO_PIN(PXA_PINCTRL_PIN(47),
0207 PXA_FUNCTION(0, 1, "CIF_DD<0>"),
0208 PXA_FUNCTION(1, 1, "STD_TXD"),
0209 PXA_FUNCTION(1, 2, "ICP_TXD"),
0210 PXA_FUNCTION(1, 3, "PWM_OUT<3>")),
0211 PXA_GPIO_PIN(PXA_PINCTRL_PIN(48),
0212 PXA_FUNCTION(0, 1, "CIF_DD<5>"),
0213 PXA_FUNCTION(1, 1, "BB_OB_DAT<1>"),
0214 PXA_FUNCTION(1, 2, "nPOE")),
0215 PXA_GPIO_PIN(PXA_PINCTRL_PIN(49),
0216 PXA_FUNCTION(1, 2, "nPWE")),
0217 PXA_GPIO_PIN(PXA_PINCTRL_PIN(50),
0218 PXA_FUNCTION(0, 1, "CIF_DD<3>"),
0219 PXA_FUNCTION(0, 3, "SSPSCLK2"),
0220 PXA_FUNCTION(1, 1, "BB_OB_DAT<2>"),
0221 PXA_FUNCTION(1, 2, "nPIOR"),
0222 PXA_FUNCTION(1, 3, "SSPSCLK2")),
0223 PXA_GPIO_PIN(PXA_PINCTRL_PIN(51),
0224 PXA_FUNCTION(0, 1, "CIF_DD<2>"),
0225 PXA_FUNCTION(1, 1, "BB_OB_DAT<3>"),
0226 PXA_FUNCTION(1, 2, "nPIOW")),
0227 PXA_GPIO_PIN(PXA_PINCTRL_PIN(52),
0228 PXA_FUNCTION(0, 1, "CIF_DD<4>"),
0229 PXA_FUNCTION(0, 2, "SSPSCLK3"),
0230 PXA_FUNCTION(1, 1, "BB_OB_CLK"),
0231 PXA_FUNCTION(1, 2, "SSPSCLK3")),
0232 PXA_GPIO_PIN(PXA_PINCTRL_PIN(53),
0233 PXA_FUNCTION(0, 1, "FFRXD"),
0234 PXA_FUNCTION(0, 2, "USB_P2_3"),
0235 PXA_FUNCTION(1, 1, "BB_OB_STB"),
0236 PXA_FUNCTION(1, 2, "CIF_MCLK"),
0237 PXA_FUNCTION(1, 3, "SSPSYSCLK")),
0238 PXA_GPIO_PIN(PXA_PINCTRL_PIN(54),
0239 PXA_FUNCTION(0, 2, "BB_OB_WAIT"),
0240 PXA_FUNCTION(0, 3, "CIF_PCLK"),
0241 PXA_FUNCTION(1, 2, "nPCE<2>")),
0242 PXA_GPIO_PIN(PXA_PINCTRL_PIN(55),
0243 PXA_FUNCTION(0, 1, "CIF_DD<1>"),
0244 PXA_FUNCTION(0, 2, "BB_IB_DAT<1>"),
0245 PXA_FUNCTION(1, 2, "nPREG")),
0246 PXA_GPIO_PIN(PXA_PINCTRL_PIN(56),
0247 PXA_FUNCTION(0, 1, "nPWAIT"),
0248 PXA_FUNCTION(0, 2, "BB_IB_DAT<2>"),
0249 PXA_FUNCTION(1, 1, "USB_P3_4")),
0250 PXA_GPIO_PIN(PXA_PINCTRL_PIN(57),
0251 PXA_FUNCTION(0, 1, "nIOS16"),
0252 PXA_FUNCTION(0, 2, "BB_IB_DAT<3>"),
0253 PXA_FUNCTION(1, 3, "SSPTXD")),
0254 PXA_GPIO_PIN(PXA_PINCTRL_PIN(58),
0255 PXA_FUNCTION(0, 2, "LDD<0>"),
0256 PXA_FUNCTION(1, 2, "LDD<0>")),
0257 PXA_GPIO_PIN(PXA_PINCTRL_PIN(59),
0258 PXA_FUNCTION(0, 2, "LDD<1>"),
0259 PXA_FUNCTION(1, 2, "LDD<1>")),
0260 PXA_GPIO_PIN(PXA_PINCTRL_PIN(60),
0261 PXA_FUNCTION(0, 2, "LDD<2>"),
0262 PXA_FUNCTION(1, 2, "LDD<2>")),
0263 PXA_GPIO_PIN(PXA_PINCTRL_PIN(61),
0264 PXA_FUNCTION(0, 2, "LDD<3>"),
0265 PXA_FUNCTION(1, 2, "LDD<3>")),
0266 PXA_GPIO_PIN(PXA_PINCTRL_PIN(62),
0267 PXA_FUNCTION(0, 2, "LDD<4>"),
0268 PXA_FUNCTION(1, 2, "LDD<4>")),
0269 PXA_GPIO_PIN(PXA_PINCTRL_PIN(63),
0270 PXA_FUNCTION(0, 2, "LDD<5>"),
0271 PXA_FUNCTION(1, 2, "LDD<5>")),
0272 PXA_GPIO_PIN(PXA_PINCTRL_PIN(64),
0273 PXA_FUNCTION(0, 2, "LDD<6>"),
0274 PXA_FUNCTION(1, 2, "LDD<6>")),
0275 PXA_GPIO_PIN(PXA_PINCTRL_PIN(65),
0276 PXA_FUNCTION(0, 2, "LDD<7>"),
0277 PXA_FUNCTION(1, 2, "LDD<7>")),
0278 PXA_GPIO_PIN(PXA_PINCTRL_PIN(66),
0279 PXA_FUNCTION(0, 2, "LDD<8>"),
0280 PXA_FUNCTION(1, 2, "LDD<8>")),
0281 PXA_GPIO_PIN(PXA_PINCTRL_PIN(67),
0282 PXA_FUNCTION(0, 2, "LDD<9>"),
0283 PXA_FUNCTION(1, 2, "LDD<9>")),
0284 PXA_GPIO_PIN(PXA_PINCTRL_PIN(68),
0285 PXA_FUNCTION(0, 2, "LDD<10>"),
0286 PXA_FUNCTION(1, 2, "LDD<10>")),
0287 PXA_GPIO_PIN(PXA_PINCTRL_PIN(69),
0288 PXA_FUNCTION(0, 2, "LDD<11>"),
0289 PXA_FUNCTION(1, 2, "LDD<11>")),
0290 PXA_GPIO_PIN(PXA_PINCTRL_PIN(70),
0291 PXA_FUNCTION(0, 2, "LDD<12>"),
0292 PXA_FUNCTION(1, 2, "LDD<12>")),
0293 PXA_GPIO_PIN(PXA_PINCTRL_PIN(71),
0294 PXA_FUNCTION(0, 2, "LDD<13>"),
0295 PXA_FUNCTION(1, 2, "LDD<13>")),
0296 PXA_GPIO_PIN(PXA_PINCTRL_PIN(72),
0297 PXA_FUNCTION(0, 2, "LDD<14>"),
0298 PXA_FUNCTION(1, 2, "LDD<14>")),
0299 PXA_GPIO_PIN(PXA_PINCTRL_PIN(73),
0300 PXA_FUNCTION(0, 2, "LDD<15>"),
0301 PXA_FUNCTION(1, 2, "LDD<15>")),
0302 PXA_GPIO_PIN(PXA_PINCTRL_PIN(74),
0303 PXA_FUNCTION(1, 2, "L_FCLK_RD")),
0304 PXA_GPIO_PIN(PXA_PINCTRL_PIN(75),
0305 PXA_FUNCTION(1, 2, "L_LCLK_A0")),
0306 PXA_GPIO_PIN(PXA_PINCTRL_PIN(76),
0307 PXA_FUNCTION(1, 2, "L_PCLK_WR")),
0308 PXA_GPIO_PIN(PXA_PINCTRL_PIN(77),
0309 PXA_FUNCTION(1, 2, "L_BIAS")),
0310 PXA_GPIO_PIN(PXA_PINCTRL_PIN(78),
0311 PXA_FUNCTION(1, 1, "nPCE<2>"),
0312 PXA_FUNCTION(1, 2, "nCS<2>")),
0313 PXA_GPIO_PIN(PXA_PINCTRL_PIN(79),
0314 PXA_FUNCTION(1, 1, "PSKTSEL"),
0315 PXA_FUNCTION(1, 2, "nCS<3>"),
0316 PXA_FUNCTION(1, 3, "PWM_OUT<2>")),
0317 PXA_GPIO_PIN(PXA_PINCTRL_PIN(80),
0318 PXA_FUNCTION(0, 1, "DREQ<1>"),
0319 PXA_FUNCTION(0, 2, "MBREQ"),
0320 PXA_FUNCTION(1, 2, "nCS<4>"),
0321 PXA_FUNCTION(1, 3, "PWM_OUT<3>")),
0322 PXA_GPIO_PIN(PXA_PINCTRL_PIN(81),
0323 PXA_FUNCTION(0, 2, "CIF_DD<0>"),
0324 PXA_FUNCTION(1, 1, "SSPTXD3"),
0325 PXA_FUNCTION(1, 2, "BB_OB_DAT<0>")),
0326 PXA_GPIO_PIN(PXA_PINCTRL_PIN(82),
0327 PXA_FUNCTION(0, 1, "SSPRXD3"),
0328 PXA_FUNCTION(0, 2, "BB_IB_DAT<0>"),
0329 PXA_FUNCTION(0, 3, "CIF_DD<5>"),
0330 PXA_FUNCTION(1, 3, "FFDTR")),
0331 PXA_GPIO_PIN(PXA_PINCTRL_PIN(83),
0332 PXA_FUNCTION(0, 1, "SSPSFRM3"),
0333 PXA_FUNCTION(0, 2, "BB_IB_CLK"),
0334 PXA_FUNCTION(0, 3, "CIF_DD<5>"),
0335 PXA_FUNCTION(1, 1, "SSPSFRM3"),
0336 PXA_FUNCTION(1, 2, "FFTXD"),
0337 PXA_FUNCTION(1, 3, "FFRTS")),
0338 PXA_GPIO_PIN(PXA_PINCTRL_PIN(84),
0339 PXA_FUNCTION(0, 1, "SSPCLK3"),
0340 PXA_FUNCTION(0, 2, "BB_IB_STB"),
0341 PXA_FUNCTION(0, 3, "CIF_FV"),
0342 PXA_FUNCTION(1, 1, "SSPCLK3"),
0343 PXA_FUNCTION(1, 3, "CIF_FV")),
0344 PXA_GPIO_PIN(PXA_PINCTRL_PIN(85),
0345 PXA_FUNCTION(0, 1, "FFRXD"),
0346 PXA_FUNCTION(0, 2, "DREQ<2>"),
0347 PXA_FUNCTION(0, 3, "CIF_LV"),
0348 PXA_FUNCTION(1, 1, "nPCE<1>"),
0349 PXA_FUNCTION(1, 2, "BB_IB_WAIT"),
0350 PXA_FUNCTION(1, 3, "CIF_LV")),
0351 PXA_GPIO_PIN(PXA_PINCTRL_PIN(86),
0352 PXA_FUNCTION(0, 1, "SSPRXD2"),
0353 PXA_FUNCTION(0, 2, "LDD<16>"),
0354 PXA_FUNCTION(0, 3, "USB_P3_5"),
0355 PXA_FUNCTION(1, 1, "nPCE<1>"),
0356 PXA_FUNCTION(1, 2, "LDD<16>")),
0357 PXA_GPIO_PIN(PXA_PINCTRL_PIN(87),
0358 PXA_FUNCTION(0, 1, "nPCE<2>"),
0359 PXA_FUNCTION(0, 2, "LDD<17>"),
0360 PXA_FUNCTION(0, 3, "USB_P3_1"),
0361 PXA_FUNCTION(1, 1, "SSPTXD2"),
0362 PXA_FUNCTION(1, 2, "LDD<17>"),
0363 PXA_FUNCTION(1, 3, "SSPSFRM2")),
0364 PXA_GPIO_PIN(PXA_PINCTRL_PIN(88),
0365 PXA_FUNCTION(0, 1, "USBHPWR<1>"),
0366 PXA_FUNCTION(0, 2, "SSPRXD2"),
0367 PXA_FUNCTION(0, 3, "SSPSFRM2"),
0368 PXA_FUNCTION(1, 2, "SSPTXD2"),
0369 PXA_FUNCTION(1, 3, "SSPSFRM2")),
0370 PXA_GPIO_PIN(PXA_PINCTRL_PIN(89),
0371 PXA_FUNCTION(0, 1, "SSPRXD3"),
0372 PXA_FUNCTION(0, 3, "FFRI"),
0373 PXA_FUNCTION(1, 1, "AC97_SYSCLK"),
0374 PXA_FUNCTION(1, 2, "USBHPEN<1>"),
0375 PXA_FUNCTION(1, 3, "SSPTXD2")),
0376 PXA_GPIO_PIN(PXA_PINCTRL_PIN(90),
0377 PXA_FUNCTION(0, 1, "KP_MKIN<5>"),
0378 PXA_FUNCTION(0, 3, "USB_P3_5"),
0379 PXA_FUNCTION(1, 1, "CIF_DD<4>"),
0380 PXA_FUNCTION(1, 2, "nURST")),
0381 PXA_GPIO_PIN(PXA_PINCTRL_PIN(91),
0382 PXA_FUNCTION(0, 1, "KP_MKIN<6>"),
0383 PXA_FUNCTION(0, 3, "USB_P3_1"),
0384 PXA_FUNCTION(1, 1, "CIF_DD<5>"),
0385 PXA_FUNCTION(1, 2, "UCLK")),
0386 PXA_GPIO_PIN(PXA_PINCTRL_PIN(92),
0387 PXA_FUNCTION(0, 1, "MMDAT<0>"),
0388 PXA_FUNCTION(1, 1, "MMDAT<0>"),
0389 PXA_FUNCTION(1, 2, "MSBS")),
0390 PXA_GPIO_PIN(PXA_PINCTRL_PIN(93),
0391 PXA_FUNCTION(0, 1, "KP_DKIN<0>"),
0392 PXA_FUNCTION(0, 2, "CIF_DD<6>"),
0393 PXA_FUNCTION(1, 1, "AC97_SDATA_OUT")),
0394 PXA_GPIO_PIN(PXA_PINCTRL_PIN(94),
0395 PXA_FUNCTION(0, 1, "KP_DKIN<1>"),
0396 PXA_FUNCTION(0, 2, "CIF_DD<5>"),
0397 PXA_FUNCTION(1, 1, "AC97_SYNC")),
0398 PXA_GPIO_PIN(PXA_PINCTRL_PIN(95),
0399 PXA_FUNCTION(0, 1, "KP_DKIN<2>"),
0400 PXA_FUNCTION(0, 2, "CIF_DD<4>"),
0401 PXA_FUNCTION(0, 3, "KP_MKIN<6>"),
0402 PXA_FUNCTION(1, 1, "AC97_RESET_n")),
0403 PXA_GPIO_PIN(PXA_PINCTRL_PIN(96),
0404 PXA_FUNCTION(0, 1, "KP_DKIN<3>"),
0405 PXA_FUNCTION(0, 2, "MBREQ"),
0406 PXA_FUNCTION(0, 3, "FFRXD"),
0407 PXA_FUNCTION(1, 2, "DVAL<1>"),
0408 PXA_FUNCTION(1, 3, "KP_MKOUT<6>")),
0409 PXA_GPIO_PIN(PXA_PINCTRL_PIN(97),
0410 PXA_FUNCTION(0, 1, "KP_DKIN<4>"),
0411 PXA_FUNCTION(0, 2, "DREQ<1>"),
0412 PXA_FUNCTION(0, 3, "KP_MKIN<3>"),
0413 PXA_FUNCTION(1, 2, "MBGNT")),
0414 PXA_GPIO_PIN(PXA_PINCTRL_PIN(98),
0415 PXA_FUNCTION(0, 1, "KP_DKIN<5>"),
0416 PXA_FUNCTION(0, 2, "CIF_DD<0>"),
0417 PXA_FUNCTION(0, 3, "KP_MKIN<4>"),
0418 PXA_FUNCTION(1, 1, "AC97_SYSCLK"),
0419 PXA_FUNCTION(1, 3, "FFRTS")),
0420 PXA_GPIO_PIN(PXA_PINCTRL_PIN(99),
0421 PXA_FUNCTION(0, 1, "KP_DKIN<6>"),
0422 PXA_FUNCTION(0, 2, "AC97_SDATA_IN_1"),
0423 PXA_FUNCTION(0, 3, "KP_MKIN<5>"),
0424 PXA_FUNCTION(1, 3, "FFTXD")),
0425 PXA_GPIO_PIN(PXA_PINCTRL_PIN(100),
0426 PXA_FUNCTION(0, 1, "KP_MKIN<0>"),
0427 PXA_FUNCTION(0, 2, "DREQ<2>"),
0428 PXA_FUNCTION(0, 3, "FFCTS")),
0429 PXA_GPIO_PIN(PXA_PINCTRL_PIN(101),
0430 PXA_FUNCTION(0, 1, "KP_MKIN<1>")),
0431 PXA_GPIO_PIN(PXA_PINCTRL_PIN(102),
0432 PXA_FUNCTION(0, 1, "KP_MKIN<2>"),
0433 PXA_FUNCTION(0, 3, "FFRXD"),
0434 PXA_FUNCTION(1, 1, "nPCE<1>")),
0435 PXA_GPIO_PIN(PXA_PINCTRL_PIN(103),
0436 PXA_FUNCTION(0, 1, "CIF_DD<3>"),
0437 PXA_FUNCTION(1, 2, "KP_MKOUT<0>")),
0438 PXA_GPIO_PIN(PXA_PINCTRL_PIN(104),
0439 PXA_FUNCTION(0, 1, "CIF_DD<2>"),
0440 PXA_FUNCTION(1, 1, "PSKTSEL"),
0441 PXA_FUNCTION(1, 2, "KP_MKOUT<1>")),
0442 PXA_GPIO_PIN(PXA_PINCTRL_PIN(105),
0443 PXA_FUNCTION(0, 1, "CIF_DD<1>"),
0444 PXA_FUNCTION(1, 1, "nPCE<2>"),
0445 PXA_FUNCTION(1, 2, "KP_MKOUT<2>")),
0446 PXA_GPIO_PIN(PXA_PINCTRL_PIN(106),
0447 PXA_FUNCTION(0, 1, "CIF_DD<9>"),
0448 PXA_FUNCTION(1, 2, "KP_MKOUT<3>")),
0449 PXA_GPIO_PIN(PXA_PINCTRL_PIN(107),
0450 PXA_FUNCTION(0, 1, "CIF_DD<8>"),
0451 PXA_FUNCTION(1, 2, "KP_MKOUT<4>")),
0452 PXA_GPIO_PIN(PXA_PINCTRL_PIN(108),
0453 PXA_FUNCTION(0, 1, "CIF_DD<7>"),
0454 PXA_FUNCTION(1, 1, "CHOUT<0>"),
0455 PXA_FUNCTION(1, 2, "KP_MKOUT<5>")),
0456 PXA_GPIO_PIN(PXA_PINCTRL_PIN(109),
0457 PXA_FUNCTION(0, 1, "MMDAT<1>"),
0458 PXA_FUNCTION(0, 2, "MSSDIO"),
0459 PXA_FUNCTION(1, 1, "MMDAT<1>"),
0460 PXA_FUNCTION(1, 2, "MSSDIO")),
0461 PXA_GPIO_PIN(PXA_PINCTRL_PIN(110),
0462 PXA_FUNCTION(0, 1, "MMDAT<2>"),
0463 PXA_FUNCTION(1, 1, "MMDAT<2>")),
0464 PXA_GPIO_PIN(PXA_PINCTRL_PIN(111),
0465 PXA_FUNCTION(0, 1, "MMDAT<3>"),
0466 PXA_FUNCTION(1, 1, "MMDAT<3>")),
0467 PXA_GPIO_PIN(PXA_PINCTRL_PIN(112),
0468 PXA_FUNCTION(0, 1, "MMCMD"),
0469 PXA_FUNCTION(0, 2, "nMSINS"),
0470 PXA_FUNCTION(1, 1, "MMCMD")),
0471 PXA_GPIO_PIN(PXA_PINCTRL_PIN(113),
0472 PXA_FUNCTION(0, 3, "USB_P3_3"),
0473 PXA_FUNCTION(1, 1, "I2S_SYSCLK"),
0474 PXA_FUNCTION(1, 2, "AC97_RESET_n")),
0475 PXA_GPIO_PIN(PXA_PINCTRL_PIN(114),
0476 PXA_FUNCTION(0, 1, "CIF_DD<1>"),
0477 PXA_FUNCTION(1, 1, "UEN"),
0478 PXA_FUNCTION(1, 2, "UVS0")),
0479 PXA_GPIO_PIN(PXA_PINCTRL_PIN(115),
0480 PXA_FUNCTION(0, 1, "DREQ<0>"),
0481 PXA_FUNCTION(0, 2, "CIF_DD<3>"),
0482 PXA_FUNCTION(0, 3, "MBREQ"),
0483 PXA_FUNCTION(1, 1, "UEN"),
0484 PXA_FUNCTION(1, 2, "nUVS1"),
0485 PXA_FUNCTION(1, 3, "PWM_OUT<1>")),
0486 PXA_GPIO_PIN(PXA_PINCTRL_PIN(116),
0487 PXA_FUNCTION(0, 1, "CIF_DD<2>"),
0488 PXA_FUNCTION(0, 2, "AC97_SDATA_IN_0"),
0489 PXA_FUNCTION(0, 3, "UDET"),
0490 PXA_FUNCTION(1, 1, "DVAL<0>"),
0491 PXA_FUNCTION(1, 2, "nUVS2"),
0492 PXA_FUNCTION(1, 3, "MBGNT")),
0493 PXA_GPIO_PIN(PXA_PINCTRL_PIN(117),
0494 PXA_FUNCTION(0, 1, "SCL"),
0495 PXA_FUNCTION(1, 1, "SCL")),
0496 PXA_GPIO_PIN(PXA_PINCTRL_PIN(118),
0497 PXA_FUNCTION(0, 1, "SDA"),
0498 PXA_FUNCTION(1, 1, "SDA")),
0499 PXA_GPIO_PIN(PXA_PINCTRL_PIN(119),
0500 PXA_FUNCTION(0, 1, "USBHPWR<2>")),
0501 PXA_GPIO_PIN(PXA_PINCTRL_PIN(120),
0502 PXA_FUNCTION(1, 2, "USBHPEN<2>")),
0503 };
0504
0505 static int pxa27x_pinctrl_probe(struct platform_device *pdev)
0506 {
0507 int i;
0508 void __iomem *base_af[8];
0509 void __iomem *base_dir[4];
0510 void __iomem *base_sleep[4];
0511
0512 base_af[0] = devm_platform_ioremap_resource(pdev, 0);
0513 if (IS_ERR(base_af[0]))
0514 return PTR_ERR(base_af[0]);
0515
0516 base_dir[0] = devm_platform_ioremap_resource(pdev, 1);
0517 if (IS_ERR(base_dir[0]))
0518 return PTR_ERR(base_dir[0]);
0519
0520 base_dir[3] = devm_platform_ioremap_resource(pdev, 2);
0521 if (IS_ERR(base_dir[3]))
0522 return PTR_ERR(base_dir[3]);
0523
0524 base_sleep[0] = devm_platform_ioremap_resource(pdev, 3);
0525 if (IS_ERR(base_sleep[0]))
0526 return PTR_ERR(base_sleep[0]);
0527
0528 for (i = 0; i < ARRAY_SIZE(base_af); i++)
0529 base_af[i] = base_af[0] + sizeof(base_af[0]) * i;
0530 for (i = 0; i < 3; i++)
0531 base_dir[i] = base_dir[0] + sizeof(base_dir[0]) * i;
0532 for (i = 0; i < ARRAY_SIZE(base_sleep); i++)
0533 base_sleep[i] = base_sleep[0] + sizeof(base_af[0]) * i;
0534
0535 return pxa2xx_pinctrl_init(pdev, pxa27x_pins, ARRAY_SIZE(pxa27x_pins),
0536 base_af, base_dir, base_sleep);
0537 }
0538
0539 static const struct of_device_id pxa27x_pinctrl_match[] = {
0540 { .compatible = "marvell,pxa27x-pinctrl", },
0541 {}
0542 };
0543 MODULE_DEVICE_TABLE(of, pxa27x_pinctrl_match);
0544
0545 static struct platform_driver pxa27x_pinctrl_driver = {
0546 .probe = pxa27x_pinctrl_probe,
0547 .driver = {
0548 .name = "pxa27x-pinctrl",
0549 .of_match_table = pxa27x_pinctrl_match,
0550 },
0551 };
0552 module_platform_driver(pxa27x_pinctrl_driver);
0553
0554 MODULE_AUTHOR("Robert Jarzmik <robert.jarzmik@free.fr>");
0555 MODULE_DESCRIPTION("Marvell PXA27x pinctrl driver");
0556 MODULE_LICENSE("GPL v2");