1 /* 2 * Copyright (C) 2015-2017 Socionext Inc. 3 * Author: Masahiro Yamada <yamada.masahiro@socionext.com> 4 * 5 * This program is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation; either version 2 of the License, or 8 * (at your option) any later version. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 */ 15 16 #include <linux/kernel.h> 17 #include <linux/init.h> 18 #include <linux/pinctrl/pinctrl.h> 19 #include <linux/platform_device.h> 20 21 #include "pinctrl-uniphier.h" 22 23 static const struct pinctrl_pin_desc uniphier_sld8_pins[] = { 24 UNIPHIER_PINCTRL_PIN(0, "PCA00", 0, 25 15, UNIPHIER_PIN_DRV_1BIT, 26 15, UNIPHIER_PIN_PULL_DOWN), 27 UNIPHIER_PINCTRL_PIN(1, "PCA01", 0, 28 16, UNIPHIER_PIN_DRV_1BIT, 29 16, UNIPHIER_PIN_PULL_DOWN), 30 UNIPHIER_PINCTRL_PIN(2, "PCA02", 0, 31 17, UNIPHIER_PIN_DRV_1BIT, 32 17, UNIPHIER_PIN_PULL_DOWN), 33 UNIPHIER_PINCTRL_PIN(3, "PCA03", 0, 34 18, UNIPHIER_PIN_DRV_1BIT, 35 18, UNIPHIER_PIN_PULL_DOWN), 36 UNIPHIER_PINCTRL_PIN(4, "PCA04", 0, 37 19, UNIPHIER_PIN_DRV_1BIT, 38 19, UNIPHIER_PIN_PULL_DOWN), 39 UNIPHIER_PINCTRL_PIN(5, "PCA05", 0, 40 20, UNIPHIER_PIN_DRV_1BIT, 41 20, UNIPHIER_PIN_PULL_DOWN), 42 UNIPHIER_PINCTRL_PIN(6, "PCA06", 0, 43 21, UNIPHIER_PIN_DRV_1BIT, 44 21, UNIPHIER_PIN_PULL_DOWN), 45 UNIPHIER_PINCTRL_PIN(7, "PCA07", 0, 46 22, UNIPHIER_PIN_DRV_1BIT, 47 22, UNIPHIER_PIN_PULL_DOWN), 48 UNIPHIER_PINCTRL_PIN(8, "PCA08", 0, 49 23, UNIPHIER_PIN_DRV_1BIT, 50 23, UNIPHIER_PIN_PULL_DOWN), 51 UNIPHIER_PINCTRL_PIN(9, "PCA09", 0, 52 24, UNIPHIER_PIN_DRV_1BIT, 53 24, UNIPHIER_PIN_PULL_DOWN), 54 UNIPHIER_PINCTRL_PIN(10, "PCA10", 0, 55 25, UNIPHIER_PIN_DRV_1BIT, 56 25, UNIPHIER_PIN_PULL_DOWN), 57 UNIPHIER_PINCTRL_PIN(11, "PCA11", 0, 58 26, UNIPHIER_PIN_DRV_1BIT, 59 26, UNIPHIER_PIN_PULL_DOWN), 60 UNIPHIER_PINCTRL_PIN(12, "PCA12", 0, 61 27, UNIPHIER_PIN_DRV_1BIT, 62 27, UNIPHIER_PIN_PULL_DOWN), 63 UNIPHIER_PINCTRL_PIN(13, "PCA13", 0, 64 28, UNIPHIER_PIN_DRV_1BIT, 65 28, UNIPHIER_PIN_PULL_DOWN), 66 UNIPHIER_PINCTRL_PIN(14, "PCA14", 0, 67 29, UNIPHIER_PIN_DRV_1BIT, 68 29, UNIPHIER_PIN_PULL_DOWN), 69 UNIPHIER_PINCTRL_PIN(15, "XNFRE_GB", UNIPHIER_PIN_IECTRL_NONE, 70 30, UNIPHIER_PIN_DRV_1BIT, 71 30, UNIPHIER_PIN_PULL_UP), 72 UNIPHIER_PINCTRL_PIN(16, "XNFWE_GB", UNIPHIER_PIN_IECTRL_NONE, 73 31, UNIPHIER_PIN_DRV_1BIT, 74 31, UNIPHIER_PIN_PULL_UP), 75 UNIPHIER_PINCTRL_PIN(17, "NFALE_GB", UNIPHIER_PIN_IECTRL_NONE, 76 32, UNIPHIER_PIN_DRV_1BIT, 77 32, UNIPHIER_PIN_PULL_DOWN), 78 UNIPHIER_PINCTRL_PIN(18, "NFCLE_GB", UNIPHIER_PIN_IECTRL_NONE, 79 33, UNIPHIER_PIN_DRV_1BIT, 80 33, UNIPHIER_PIN_PULL_DOWN), 81 UNIPHIER_PINCTRL_PIN(19, "XNFWP_GB", UNIPHIER_PIN_IECTRL_NONE, 82 34, UNIPHIER_PIN_DRV_1BIT, 83 34, UNIPHIER_PIN_PULL_DOWN), 84 UNIPHIER_PINCTRL_PIN(20, "XNFCE0_GB", UNIPHIER_PIN_IECTRL_NONE, 85 35, UNIPHIER_PIN_DRV_1BIT, 86 35, UNIPHIER_PIN_PULL_UP), 87 UNIPHIER_PINCTRL_PIN(21, "NANDRYBY0_GB", UNIPHIER_PIN_IECTRL_NONE, 88 36, UNIPHIER_PIN_DRV_1BIT, 89 36, UNIPHIER_PIN_PULL_UP), 90 UNIPHIER_PINCTRL_PIN(22, "XNFCE1_GB", UNIPHIER_PIN_IECTRL_NONE, 91 0, UNIPHIER_PIN_DRV_2BIT, 92 119, UNIPHIER_PIN_PULL_UP), 93 UNIPHIER_PINCTRL_PIN(23, "NANDRYBY1_GB", UNIPHIER_PIN_IECTRL_NONE, 94 1, UNIPHIER_PIN_DRV_2BIT, 95 120, UNIPHIER_PIN_PULL_UP), 96 UNIPHIER_PINCTRL_PIN(24, "NFD0_GB", UNIPHIER_PIN_IECTRL_NONE, 97 2, UNIPHIER_PIN_DRV_2BIT, 98 121, UNIPHIER_PIN_PULL_UP), 99 UNIPHIER_PINCTRL_PIN(25, "NFD1_GB", UNIPHIER_PIN_IECTRL_NONE, 100 3, UNIPHIER_PIN_DRV_2BIT, 101 122, UNIPHIER_PIN_PULL_UP), 102 UNIPHIER_PINCTRL_PIN(26, "NFD2_GB", UNIPHIER_PIN_IECTRL_NONE, 103 4, UNIPHIER_PIN_DRV_2BIT, 104 123, UNIPHIER_PIN_PULL_UP), 105 UNIPHIER_PINCTRL_PIN(27, "NFD3_GB", UNIPHIER_PIN_IECTRL_NONE, 106 5, UNIPHIER_PIN_DRV_2BIT, 107 124, UNIPHIER_PIN_PULL_UP), 108 UNIPHIER_PINCTRL_PIN(28, "NFD4_GB", UNIPHIER_PIN_IECTRL_NONE, 109 6, UNIPHIER_PIN_DRV_2BIT, 110 125, UNIPHIER_PIN_PULL_UP), 111 UNIPHIER_PINCTRL_PIN(29, "NFD5_GB", UNIPHIER_PIN_IECTRL_NONE, 112 7, UNIPHIER_PIN_DRV_2BIT, 113 126, UNIPHIER_PIN_PULL_UP), 114 UNIPHIER_PINCTRL_PIN(30, "NFD6_GB", UNIPHIER_PIN_IECTRL_NONE, 115 8, UNIPHIER_PIN_DRV_2BIT, 116 127, UNIPHIER_PIN_PULL_UP), 117 UNIPHIER_PINCTRL_PIN(31, "NFD7_GB", UNIPHIER_PIN_IECTRL_NONE, 118 9, UNIPHIER_PIN_DRV_2BIT, 119 128, UNIPHIER_PIN_PULL_UP), 120 UNIPHIER_PINCTRL_PIN(32, "SDCLK", 8, 121 10, UNIPHIER_PIN_DRV_2BIT, 122 -1, UNIPHIER_PIN_PULL_NONE), 123 UNIPHIER_PINCTRL_PIN(33, "SDCMD", 8, 124 11, UNIPHIER_PIN_DRV_2BIT, 125 -1, UNIPHIER_PIN_PULL_NONE), 126 UNIPHIER_PINCTRL_PIN(34, "SDDAT0", 8, 127 12, UNIPHIER_PIN_DRV_2BIT, 128 -1, UNIPHIER_PIN_PULL_NONE), 129 UNIPHIER_PINCTRL_PIN(35, "SDDAT1", 8, 130 13, UNIPHIER_PIN_DRV_2BIT, 131 -1, UNIPHIER_PIN_PULL_NONE), 132 UNIPHIER_PINCTRL_PIN(36, "SDDAT2", 8, 133 14, UNIPHIER_PIN_DRV_2BIT, 134 -1, UNIPHIER_PIN_PULL_NONE), 135 UNIPHIER_PINCTRL_PIN(37, "SDDAT3", 8, 136 15, UNIPHIER_PIN_DRV_2BIT, 137 -1, UNIPHIER_PIN_PULL_NONE), 138 UNIPHIER_PINCTRL_PIN(38, "SDCD", 8, 139 -1, UNIPHIER_PIN_DRV_FIXED4, 140 129, UNIPHIER_PIN_PULL_DOWN), 141 UNIPHIER_PINCTRL_PIN(39, "SDWP", 8, 142 -1, UNIPHIER_PIN_DRV_FIXED4, 143 130, UNIPHIER_PIN_PULL_DOWN), 144 UNIPHIER_PINCTRL_PIN(40, "SDVOLC", 9, 145 -1, UNIPHIER_PIN_DRV_FIXED4, 146 131, UNIPHIER_PIN_PULL_DOWN), 147 UNIPHIER_PINCTRL_PIN(41, "USB0VBUS", 0, 148 37, UNIPHIER_PIN_DRV_1BIT, 149 37, UNIPHIER_PIN_PULL_DOWN), 150 UNIPHIER_PINCTRL_PIN(42, "USB0OD", 0, 151 38, UNIPHIER_PIN_DRV_1BIT, 152 38, UNIPHIER_PIN_PULL_DOWN), 153 UNIPHIER_PINCTRL_PIN(43, "USB1VBUS", 0, 154 39, UNIPHIER_PIN_DRV_1BIT, 155 39, UNIPHIER_PIN_PULL_DOWN), 156 UNIPHIER_PINCTRL_PIN(44, "USB1OD", 0, 157 40, UNIPHIER_PIN_DRV_1BIT, 158 40, UNIPHIER_PIN_PULL_DOWN), 159 UNIPHIER_PINCTRL_PIN(45, "PCRESET", 0, 160 41, UNIPHIER_PIN_DRV_1BIT, 161 41, UNIPHIER_PIN_PULL_DOWN), 162 UNIPHIER_PINCTRL_PIN(46, "PCREG", 0, 163 42, UNIPHIER_PIN_DRV_1BIT, 164 42, UNIPHIER_PIN_PULL_DOWN), 165 UNIPHIER_PINCTRL_PIN(47, "PCCE2", 0, 166 43, UNIPHIER_PIN_DRV_1BIT, 167 43, UNIPHIER_PIN_PULL_DOWN), 168 UNIPHIER_PINCTRL_PIN(48, "PCVS1", 0, 169 44, UNIPHIER_PIN_DRV_1BIT, 170 44, UNIPHIER_PIN_PULL_DOWN), 171 UNIPHIER_PINCTRL_PIN(49, "PCCD2", 0, 172 45, UNIPHIER_PIN_DRV_1BIT, 173 45, UNIPHIER_PIN_PULL_DOWN), 174 UNIPHIER_PINCTRL_PIN(50, "PCCD1", 0, 175 46, UNIPHIER_PIN_DRV_1BIT, 176 46, UNIPHIER_PIN_PULL_DOWN), 177 UNIPHIER_PINCTRL_PIN(51, "PCREADY", 0, 178 47, UNIPHIER_PIN_DRV_1BIT, 179 47, UNIPHIER_PIN_PULL_DOWN), 180 UNIPHIER_PINCTRL_PIN(52, "PCDOE", 0, 181 48, UNIPHIER_PIN_DRV_1BIT, 182 48, UNIPHIER_PIN_PULL_DOWN), 183 UNIPHIER_PINCTRL_PIN(53, "PCCE1", 0, 184 49, UNIPHIER_PIN_DRV_1BIT, 185 49, UNIPHIER_PIN_PULL_DOWN), 186 UNIPHIER_PINCTRL_PIN(54, "PCWE", 0, 187 50, UNIPHIER_PIN_DRV_1BIT, 188 50, UNIPHIER_PIN_PULL_DOWN), 189 UNIPHIER_PINCTRL_PIN(55, "PCOE", 0, 190 51, UNIPHIER_PIN_DRV_1BIT, 191 51, UNIPHIER_PIN_PULL_DOWN), 192 UNIPHIER_PINCTRL_PIN(56, "PCWAIT", 0, 193 52, UNIPHIER_PIN_DRV_1BIT, 194 52, UNIPHIER_PIN_PULL_DOWN), 195 UNIPHIER_PINCTRL_PIN(57, "PCIOWR", 0, 196 53, UNIPHIER_PIN_DRV_1BIT, 197 53, UNIPHIER_PIN_PULL_DOWN), 198 UNIPHIER_PINCTRL_PIN(58, "PCIORD", 0, 199 54, UNIPHIER_PIN_DRV_1BIT, 200 54, UNIPHIER_PIN_PULL_DOWN), 201 UNIPHIER_PINCTRL_PIN(59, "HS0DIN0", 0, 202 55, UNIPHIER_PIN_DRV_1BIT, 203 55, UNIPHIER_PIN_PULL_DOWN), 204 UNIPHIER_PINCTRL_PIN(60, "HS0DIN1", 0, 205 56, UNIPHIER_PIN_DRV_1BIT, 206 56, UNIPHIER_PIN_PULL_DOWN), 207 UNIPHIER_PINCTRL_PIN(61, "HS0DIN2", 0, 208 57, UNIPHIER_PIN_DRV_1BIT, 209 57, UNIPHIER_PIN_PULL_DOWN), 210 UNIPHIER_PINCTRL_PIN(62, "HS0DIN3", 0, 211 58, UNIPHIER_PIN_DRV_1BIT, 212 58, UNIPHIER_PIN_PULL_DOWN), 213 UNIPHIER_PINCTRL_PIN(63, "HS0DIN4", 0, 214 59, UNIPHIER_PIN_DRV_1BIT, 215 59, UNIPHIER_PIN_PULL_DOWN), 216 UNIPHIER_PINCTRL_PIN(64, "HS0DIN5", 0, 217 60, UNIPHIER_PIN_DRV_1BIT, 218 60, UNIPHIER_PIN_PULL_DOWN), 219 UNIPHIER_PINCTRL_PIN(65, "HS0DIN6", 0, 220 61, UNIPHIER_PIN_DRV_1BIT, 221 61, UNIPHIER_PIN_PULL_DOWN), 222 UNIPHIER_PINCTRL_PIN(66, "HS0DIN7", 0, 223 62, UNIPHIER_PIN_DRV_1BIT, 224 62, UNIPHIER_PIN_PULL_DOWN), 225 UNIPHIER_PINCTRL_PIN(67, "HS0BCLKIN", 0, 226 63, UNIPHIER_PIN_DRV_1BIT, 227 63, UNIPHIER_PIN_PULL_DOWN), 228 UNIPHIER_PINCTRL_PIN(68, "HS0VALIN", 0, 229 64, UNIPHIER_PIN_DRV_1BIT, 230 64, UNIPHIER_PIN_PULL_DOWN), 231 UNIPHIER_PINCTRL_PIN(69, "HS0SYNCIN", 0, 232 65, UNIPHIER_PIN_DRV_1BIT, 233 65, UNIPHIER_PIN_PULL_DOWN), 234 UNIPHIER_PINCTRL_PIN(70, "HSDOUT0", 0, 235 66, UNIPHIER_PIN_DRV_1BIT, 236 66, UNIPHIER_PIN_PULL_DOWN), 237 UNIPHIER_PINCTRL_PIN(71, "HSDOUT1", 0, 238 67, UNIPHIER_PIN_DRV_1BIT, 239 67, UNIPHIER_PIN_PULL_DOWN), 240 UNIPHIER_PINCTRL_PIN(72, "HSDOUT2", 0, 241 68, UNIPHIER_PIN_DRV_1BIT, 242 68, UNIPHIER_PIN_PULL_DOWN), 243 UNIPHIER_PINCTRL_PIN(73, "HSDOUT3", 0, 244 69, UNIPHIER_PIN_DRV_1BIT, 245 69, UNIPHIER_PIN_PULL_DOWN), 246 UNIPHIER_PINCTRL_PIN(74, "HSDOUT4", 0, 247 70, UNIPHIER_PIN_DRV_1BIT, 248 70, UNIPHIER_PIN_PULL_DOWN), 249 UNIPHIER_PINCTRL_PIN(75, "HSDOUT5", 0, 250 71, UNIPHIER_PIN_DRV_1BIT, 251 71, UNIPHIER_PIN_PULL_DOWN), 252 UNIPHIER_PINCTRL_PIN(76, "HSDOUT6", 0, 253 72, UNIPHIER_PIN_DRV_1BIT, 254 72, UNIPHIER_PIN_PULL_DOWN), 255 UNIPHIER_PINCTRL_PIN(77, "HSDOUT7", 0, 256 73, UNIPHIER_PIN_DRV_1BIT, 257 73, UNIPHIER_PIN_PULL_DOWN), 258 UNIPHIER_PINCTRL_PIN(78, "HSBCLKOUT", 0, 259 74, UNIPHIER_PIN_DRV_1BIT, 260 74, UNIPHIER_PIN_PULL_DOWN), 261 UNIPHIER_PINCTRL_PIN(79, "HSVALOUT", 0, 262 75, UNIPHIER_PIN_DRV_1BIT, 263 75, UNIPHIER_PIN_PULL_DOWN), 264 UNIPHIER_PINCTRL_PIN(80, "HSSYNCOUT", 0, 265 76, UNIPHIER_PIN_DRV_1BIT, 266 76, UNIPHIER_PIN_PULL_DOWN), 267 UNIPHIER_PINCTRL_PIN(81, "HS1DIN0", 0, 268 77, UNIPHIER_PIN_DRV_1BIT, 269 77, UNIPHIER_PIN_PULL_DOWN), 270 UNIPHIER_PINCTRL_PIN(82, "HS1DIN1", 0, 271 78, UNIPHIER_PIN_DRV_1BIT, 272 78, UNIPHIER_PIN_PULL_DOWN), 273 UNIPHIER_PINCTRL_PIN(83, "HS1DIN2", 0, 274 79, UNIPHIER_PIN_DRV_1BIT, 275 79, UNIPHIER_PIN_PULL_DOWN), 276 UNIPHIER_PINCTRL_PIN(84, "HS1DIN3", 0, 277 80, UNIPHIER_PIN_DRV_1BIT, 278 80, UNIPHIER_PIN_PULL_DOWN), 279 UNIPHIER_PINCTRL_PIN(85, "HS1DIN4", 0, 280 81, UNIPHIER_PIN_DRV_1BIT, 281 81, UNIPHIER_PIN_PULL_DOWN), 282 UNIPHIER_PINCTRL_PIN(86, "HS1DIN5", 0, 283 82, UNIPHIER_PIN_DRV_1BIT, 284 82, UNIPHIER_PIN_PULL_DOWN), 285 UNIPHIER_PINCTRL_PIN(87, "HS1DIN6", 0, 286 83, UNIPHIER_PIN_DRV_1BIT, 287 83, UNIPHIER_PIN_PULL_DOWN), 288 UNIPHIER_PINCTRL_PIN(88, "HS1DIN7", 0, 289 84, UNIPHIER_PIN_DRV_1BIT, 290 84, UNIPHIER_PIN_PULL_DOWN), 291 UNIPHIER_PINCTRL_PIN(89, "HS1BCLKIN", 0, 292 85, UNIPHIER_PIN_DRV_1BIT, 293 85, UNIPHIER_PIN_PULL_DOWN), 294 UNIPHIER_PINCTRL_PIN(90, "HS1VALIN", 0, 295 86, UNIPHIER_PIN_DRV_1BIT, 296 86, UNIPHIER_PIN_PULL_DOWN), 297 UNIPHIER_PINCTRL_PIN(91, "HS1SYNCIN", 0, 298 87, UNIPHIER_PIN_DRV_1BIT, 299 87, UNIPHIER_PIN_PULL_DOWN), 300 UNIPHIER_PINCTRL_PIN(92, "AGCI", 3, 301 -1, UNIPHIER_PIN_DRV_FIXED4, 302 132, UNIPHIER_PIN_PULL_DOWN), 303 UNIPHIER_PINCTRL_PIN(93, "AGCR", 4, 304 -1, UNIPHIER_PIN_DRV_FIXED4, 305 133, UNIPHIER_PIN_PULL_DOWN), 306 UNIPHIER_PINCTRL_PIN(94, "AGCBS", 5, 307 -1, UNIPHIER_PIN_DRV_FIXED4, 308 134, UNIPHIER_PIN_PULL_DOWN), 309 UNIPHIER_PINCTRL_PIN(95, "IECOUT", 0, 310 88, UNIPHIER_PIN_DRV_1BIT, 311 88, UNIPHIER_PIN_PULL_DOWN), 312 UNIPHIER_PINCTRL_PIN(96, "ASMCK", 0, 313 89, UNIPHIER_PIN_DRV_1BIT, 314 89, UNIPHIER_PIN_PULL_DOWN), 315 UNIPHIER_PINCTRL_PIN(97, "ABCKO", UNIPHIER_PIN_IECTRL_NONE, 316 90, UNIPHIER_PIN_DRV_1BIT, 317 90, UNIPHIER_PIN_PULL_DOWN), 318 UNIPHIER_PINCTRL_PIN(98, "ALRCKO", UNIPHIER_PIN_IECTRL_NONE, 319 91, UNIPHIER_PIN_DRV_1BIT, 320 91, UNIPHIER_PIN_PULL_DOWN), 321 UNIPHIER_PINCTRL_PIN(99, "ASDOUT0", UNIPHIER_PIN_IECTRL_NONE, 322 92, UNIPHIER_PIN_DRV_1BIT, 323 92, UNIPHIER_PIN_PULL_DOWN), 324 UNIPHIER_PINCTRL_PIN(100, "ASDOUT1", UNIPHIER_PIN_IECTRL_NONE, 325 93, UNIPHIER_PIN_DRV_1BIT, 326 93, UNIPHIER_PIN_PULL_UP), 327 UNIPHIER_PINCTRL_PIN(101, "ARCOUT", 0, 328 94, UNIPHIER_PIN_DRV_1BIT, 329 94, UNIPHIER_PIN_PULL_DOWN), 330 UNIPHIER_PINCTRL_PIN(102, "SDA0", 10, 331 -1, UNIPHIER_PIN_DRV_FIXED4, 332 -1, UNIPHIER_PIN_PULL_NONE), 333 UNIPHIER_PINCTRL_PIN(103, "SCL0", 10, 334 -1, UNIPHIER_PIN_DRV_FIXED4, 335 -1, UNIPHIER_PIN_PULL_NONE), 336 UNIPHIER_PINCTRL_PIN(104, "SDA1", 11, 337 -1, UNIPHIER_PIN_DRV_FIXED4, 338 -1, UNIPHIER_PIN_PULL_NONE), 339 UNIPHIER_PINCTRL_PIN(105, "SCL1", 11, 340 -1, UNIPHIER_PIN_DRV_FIXED4, 341 -1, UNIPHIER_PIN_PULL_NONE), 342 UNIPHIER_PINCTRL_PIN(106, "DMDSDA0", 12, 343 -1, UNIPHIER_PIN_DRV_FIXED4, 344 -1, UNIPHIER_PIN_PULL_NONE), 345 UNIPHIER_PINCTRL_PIN(107, "DMDSCL0", 12, 346 -1, UNIPHIER_PIN_DRV_FIXED4, 347 -1, UNIPHIER_PIN_PULL_NONE), 348 UNIPHIER_PINCTRL_PIN(108, "DMDSDA1", 13, 349 -1, UNIPHIER_PIN_DRV_FIXED4, 350 -1, UNIPHIER_PIN_PULL_NONE), 351 UNIPHIER_PINCTRL_PIN(109, "DMDSCL1", 13, 352 -1, UNIPHIER_PIN_DRV_FIXED4, 353 -1, UNIPHIER_PIN_PULL_NONE), 354 UNIPHIER_PINCTRL_PIN(110, "SBO0", UNIPHIER_PIN_IECTRL_NONE, 355 95, UNIPHIER_PIN_DRV_1BIT, 356 95, UNIPHIER_PIN_PULL_UP), 357 UNIPHIER_PINCTRL_PIN(111, "SBI0", UNIPHIER_PIN_IECTRL_NONE, 358 96, UNIPHIER_PIN_DRV_1BIT, 359 96, UNIPHIER_PIN_PULL_UP), 360 UNIPHIER_PINCTRL_PIN(112, "SBO1", 0, 361 97, UNIPHIER_PIN_DRV_1BIT, 362 97, UNIPHIER_PIN_PULL_UP), 363 UNIPHIER_PINCTRL_PIN(113, "SBI1", 0, 364 98, UNIPHIER_PIN_DRV_1BIT, 365 98, UNIPHIER_PIN_PULL_UP), 366 UNIPHIER_PINCTRL_PIN(114, "TXD1", 0, 367 99, UNIPHIER_PIN_DRV_1BIT, 368 99, UNIPHIER_PIN_PULL_UP), 369 UNIPHIER_PINCTRL_PIN(115, "RXD1", 0, 370 100, UNIPHIER_PIN_DRV_1BIT, 371 100, UNIPHIER_PIN_PULL_UP), 372 UNIPHIER_PINCTRL_PIN(116, "HIN", 1, 373 -1, UNIPHIER_PIN_DRV_FIXED5, 374 -1, UNIPHIER_PIN_PULL_NONE), 375 UNIPHIER_PINCTRL_PIN(117, "VIN", 2, 376 -1, UNIPHIER_PIN_DRV_FIXED5, 377 -1, UNIPHIER_PIN_PULL_NONE), 378 UNIPHIER_PINCTRL_PIN(118, "TCON0", 0, 379 101, UNIPHIER_PIN_DRV_1BIT, 380 101, UNIPHIER_PIN_PULL_DOWN), 381 UNIPHIER_PINCTRL_PIN(119, "TCON1", 0, 382 102, UNIPHIER_PIN_DRV_1BIT, 383 102, UNIPHIER_PIN_PULL_DOWN), 384 UNIPHIER_PINCTRL_PIN(120, "TCON2", 0, 385 103, UNIPHIER_PIN_DRV_1BIT, 386 103, UNIPHIER_PIN_PULL_DOWN), 387 UNIPHIER_PINCTRL_PIN(121, "TCON3", 0, 388 104, UNIPHIER_PIN_DRV_1BIT, 389 104, UNIPHIER_PIN_PULL_DOWN), 390 UNIPHIER_PINCTRL_PIN(122, "TCON4", 0, 391 105, UNIPHIER_PIN_DRV_1BIT, 392 105, UNIPHIER_PIN_PULL_DOWN), 393 UNIPHIER_PINCTRL_PIN(123, "TCON5", 0, 394 106, UNIPHIER_PIN_DRV_1BIT, 395 106, UNIPHIER_PIN_PULL_DOWN), 396 UNIPHIER_PINCTRL_PIN(124, "TCON6", 0, 397 107, UNIPHIER_PIN_DRV_1BIT, 398 107, UNIPHIER_PIN_PULL_DOWN), 399 UNIPHIER_PINCTRL_PIN(125, "TCON7", 0, 400 108, UNIPHIER_PIN_DRV_1BIT, 401 108, UNIPHIER_PIN_PULL_DOWN), 402 UNIPHIER_PINCTRL_PIN(126, "TCON8", 0, 403 109, UNIPHIER_PIN_DRV_1BIT, 404 109, UNIPHIER_PIN_PULL_DOWN), 405 UNIPHIER_PINCTRL_PIN(127, "PWMA", 0, 406 110, UNIPHIER_PIN_DRV_1BIT, 407 110, UNIPHIER_PIN_PULL_DOWN), 408 UNIPHIER_PINCTRL_PIN(128, "XIRQ0", 0, 409 111, UNIPHIER_PIN_DRV_1BIT, 410 111, UNIPHIER_PIN_PULL_DOWN), 411 UNIPHIER_PINCTRL_PIN(129, "XIRQ1", 0, 412 112, UNIPHIER_PIN_DRV_1BIT, 413 112, UNIPHIER_PIN_PULL_DOWN), 414 UNIPHIER_PINCTRL_PIN(130, "XIRQ2", 0, 415 113, UNIPHIER_PIN_DRV_1BIT, 416 113, UNIPHIER_PIN_PULL_DOWN), 417 UNIPHIER_PINCTRL_PIN(131, "XIRQ3", 0, 418 114, UNIPHIER_PIN_DRV_1BIT, 419 114, UNIPHIER_PIN_PULL_DOWN), 420 UNIPHIER_PINCTRL_PIN(132, "XIRQ4", 0, 421 115, UNIPHIER_PIN_DRV_1BIT, 422 115, UNIPHIER_PIN_PULL_DOWN), 423 UNIPHIER_PINCTRL_PIN(133, "XIRQ5", 0, 424 116, UNIPHIER_PIN_DRV_1BIT, 425 116, UNIPHIER_PIN_PULL_DOWN), 426 UNIPHIER_PINCTRL_PIN(134, "XIRQ6", 0, 427 117, UNIPHIER_PIN_DRV_1BIT, 428 117, UNIPHIER_PIN_PULL_DOWN), 429 UNIPHIER_PINCTRL_PIN(135, "XIRQ7", 0, 430 118, UNIPHIER_PIN_DRV_1BIT, 431 118, UNIPHIER_PIN_PULL_DOWN), 432 /* dedicated pins */ 433 UNIPHIER_PINCTRL_PIN(136, "ED0", -1, 434 0, UNIPHIER_PIN_DRV_1BIT, 435 0, UNIPHIER_PIN_PULL_DOWN), 436 UNIPHIER_PINCTRL_PIN(137, "ED1", -1, 437 1, UNIPHIER_PIN_DRV_1BIT, 438 1, UNIPHIER_PIN_PULL_DOWN), 439 UNIPHIER_PINCTRL_PIN(138, "ED2", -1, 440 2, UNIPHIER_PIN_DRV_1BIT, 441 2, UNIPHIER_PIN_PULL_DOWN), 442 UNIPHIER_PINCTRL_PIN(139, "ED3", -1, 443 3, UNIPHIER_PIN_DRV_1BIT, 444 3, UNIPHIER_PIN_PULL_DOWN), 445 UNIPHIER_PINCTRL_PIN(140, "ED4", -1, 446 4, UNIPHIER_PIN_DRV_1BIT, 447 4, UNIPHIER_PIN_PULL_DOWN), 448 UNIPHIER_PINCTRL_PIN(141, "ED5", -1, 449 5, UNIPHIER_PIN_DRV_1BIT, 450 5, UNIPHIER_PIN_PULL_DOWN), 451 UNIPHIER_PINCTRL_PIN(142, "ED6", -1, 452 6, UNIPHIER_PIN_DRV_1BIT, 453 6, UNIPHIER_PIN_PULL_DOWN), 454 UNIPHIER_PINCTRL_PIN(143, "ED7", -1, 455 7, UNIPHIER_PIN_DRV_1BIT, 456 7, UNIPHIER_PIN_PULL_DOWN), 457 UNIPHIER_PINCTRL_PIN(144, "XERWE0", -1, 458 8, UNIPHIER_PIN_DRV_1BIT, 459 8, UNIPHIER_PIN_PULL_UP), 460 UNIPHIER_PINCTRL_PIN(145, "XERWE1", -1, 461 9, UNIPHIER_PIN_DRV_1BIT, 462 9, UNIPHIER_PIN_PULL_UP), 463 UNIPHIER_PINCTRL_PIN(146, "ERXW", -1, 464 10, UNIPHIER_PIN_DRV_1BIT, 465 10, UNIPHIER_PIN_PULL_UP), 466 UNIPHIER_PINCTRL_PIN(147, "ES0", -1, 467 11, UNIPHIER_PIN_DRV_1BIT, 468 11, UNIPHIER_PIN_PULL_UP), 469 UNIPHIER_PINCTRL_PIN(148, "ES1", -1, 470 12, UNIPHIER_PIN_DRV_1BIT, 471 12, UNIPHIER_PIN_PULL_UP), 472 UNIPHIER_PINCTRL_PIN(149, "ES2", -1, 473 13, UNIPHIER_PIN_DRV_1BIT, 474 13, UNIPHIER_PIN_PULL_UP), 475 UNIPHIER_PINCTRL_PIN(150, "XECS1", -1, 476 14, UNIPHIER_PIN_DRV_1BIT, 477 14, UNIPHIER_PIN_PULL_DOWN), 478 }; 479 480 static const unsigned emmc_pins[] = {21, 22, 23, 24, 25, 26, 27}; 481 static const int emmc_muxvals[] = {1, 1, 1, 1, 1, 1, 1}; 482 static const unsigned emmc_dat8_pins[] = {28, 29, 30, 31}; 483 static const int emmc_dat8_muxvals[] = {1, 1, 1, 1}; 484 static const unsigned ether_mii_pins[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 13, 14, 485 61, 63, 64, 65, 66, 67, 68}; 486 static const int ether_mii_muxvals[] = {13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 487 13, 13, 27, 27, 27, 27, 27, 27, 27}; 488 static const unsigned ether_rmii_pins[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 13, 489 14}; 490 static const int ether_rmii_muxvals[] = {13, 13, 13, 13, 13, 13, 13, 13, 13, 491 13, 13, 13}; 492 static const unsigned i2c0_pins[] = {102, 103}; 493 static const int i2c0_muxvals[] = {0, 0}; 494 static const unsigned i2c1_pins[] = {104, 105}; 495 static const int i2c1_muxvals[] = {0, 0}; 496 static const unsigned i2c2_pins[] = {108, 109}; 497 static const int i2c2_muxvals[] = {2, 2}; 498 static const unsigned i2c3_pins[] = {108, 109}; 499 static const int i2c3_muxvals[] = {3, 3}; 500 static const unsigned nand_pins[] = {15, 16, 17, 18, 19, 20, 21, 24, 25, 26, 501 27, 28, 29, 30, 31}; 502 static const int nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; 503 static const unsigned nand_cs1_pins[] = {22, 23}; 504 static const int nand_cs1_muxvals[] = {0, 0}; 505 static const unsigned sd_pins[] = {32, 33, 34, 35, 36, 37, 38, 39, 40}; 506 static const int sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0}; 507 static const unsigned system_bus_pins[] = {136, 137, 138, 139, 140, 141, 142, 508 143, 144, 145, 146, 147, 148, 149}; 509 static const int system_bus_muxvals[] = {-1, -1, -1, -1, -1, -1, -1, -1, -1, 510 -1, -1, -1, -1, -1}; 511 static const unsigned system_bus_cs1_pins[] = {150}; 512 static const int system_bus_cs1_muxvals[] = {-1}; 513 static const unsigned system_bus_cs2_pins[] = {10}; 514 static const int system_bus_cs2_muxvals[] = {1}; 515 static const unsigned system_bus_cs3_pins[] = {11}; 516 static const int system_bus_cs3_muxvals[] = {1}; 517 static const unsigned system_bus_cs4_pins[] = {12}; 518 static const int system_bus_cs4_muxvals[] = {1}; 519 static const unsigned system_bus_cs5_pins[] = {13}; 520 static const int system_bus_cs5_muxvals[] = {1}; 521 static const unsigned uart0_pins[] = {70, 71}; 522 static const int uart0_muxvals[] = {3, 3}; 523 static const unsigned uart1_pins[] = {114, 115}; 524 static const int uart1_muxvals[] = {0, 0}; 525 static const unsigned uart2_pins[] = {112, 113}; 526 static const int uart2_muxvals[] = {1, 1}; 527 static const unsigned uart3_pins[] = {110, 111}; 528 static const int uart3_muxvals[] = {1, 1}; 529 static const unsigned usb0_pins[] = {41, 42}; 530 static const int usb0_muxvals[] = {0, 0}; 531 static const unsigned usb1_pins[] = {43, 44}; 532 static const int usb1_muxvals[] = {0, 0}; 533 static const unsigned usb2_pins[] = {114, 115}; 534 static const int usb2_muxvals[] = {1, 1}; 535 static const unsigned port_range0_pins[] = { 536 0, 1, 2, 3, 4, 5, 6, 7, /* PORT0x */ 537 8, 9, 10, 11, 12, 13, 14, 15, /* PORT1x */ 538 32, 33, 34, 35, 36, 37, 38, 39, /* PORT2x */ 539 59, 60, 61, 62, 63, 64, 65, 66, /* PORT3x */ 540 95, 96, 97, 98, 99, 100, 101, 57, /* PORT4x */ 541 70, 71, 72, 73, 74, 75, 76, 77, /* PORT5x */ 542 81, 83, 84, 85, 86, 89, 90, 91, /* PORT6x */ 543 118, 119, 120, 121, 122, 53, 54, 55, /* PORT7x */ 544 41, 42, 43, 44, 79, 80, 18, 19, /* PORT8x */ 545 110, 111, 112, 113, 114, 115, 16, 17, /* PORT9x */ 546 40, 67, 68, 69, 78, 92, 93, 94, /* PORT10x */ 547 48, 49, 46, 45, 123, 124, 125, 126, /* PORT11x */ 548 47, 127, 20, 56, 22, /* PORT120-124 */ 549 }; 550 static const int port_range0_muxvals[] = { 551 15, 15, 15, 15, 15, 15, 15, 15, /* PORT0x */ 552 15, 15, 15, 15, 15, 15, 15, 15, /* PORT1x */ 553 15, 15, 15, 15, 15, 15, 15, 15, /* PORT2x */ 554 15, 15, 15, 15, 15, 15, 15, 15, /* PORT3x */ 555 15, 15, 15, 15, 15, 15, 15, 15, /* PORT4x */ 556 15, 15, 15, 15, 15, 15, 15, 15, /* PORT5x */ 557 15, 15, 15, 15, 15, 15, 15, 15, /* PORT6x */ 558 15, 15, 15, 15, 15, 15, 15, 15, /* PORT7x */ 559 15, 15, 15, 15, 15, 15, 15, 15, /* PORT8x */ 560 15, 15, 15, 15, 15, 15, 15, 15, /* PORT9x */ 561 15, 15, 15, 15, 15, 15, 15, 15, /* PORT10x */ 562 15, 15, 15, 15, 15, 15, 15, 15, /* PORT11x */ 563 15, 15, 15, 15, 15, /* PORT120-124 */ 564 }; 565 static const unsigned port_range1_pins[] = { 566 116, 117, /* PORT130-131 */ 567 }; 568 static const int port_range1_muxvals[] = { 569 15, 15, /* PORT130-131 */ 570 }; 571 static const unsigned port_range2_pins[] = { 572 102, 103, 104, 105, 106, 107, 108, 109, /* PORT14x */ 573 }; 574 static const int port_range2_muxvals[] = { 575 15, 15, 15, 15, 15, 15, 15, 15, /* PORT14x */ 576 }; 577 static const unsigned port_range3_pins[] = { 578 23, /* PORT166 */ 579 }; 580 static const int port_range3_muxvals[] = { 581 15, /* PORT166 */ 582 }; 583 static const unsigned xirq_range0_pins[] = { 584 128, 129, 130, 131, 132, 133, 134, 135, /* XIRQ0-7 */ 585 82, 87, 88, 50, 51, /* XIRQ8-12 */ 586 }; 587 static const int xirq_range0_muxvals[] = { 588 0, 0, 0, 0, 0, 0, 0, 0, /* XIRQ0-7 */ 589 14, 14, 14, 14, 14, /* XIRQ8-12 */ 590 }; 591 static const unsigned xirq_range1_pins[] = { 592 52, 58, /* XIRQ14-15 */ 593 }; 594 static const int xirq_range1_muxvals[] = { 595 14, 14, /* XIRQ14-15 */ 596 }; 597 598 static const struct uniphier_pinctrl_group uniphier_sld8_groups[] = { 599 UNIPHIER_PINCTRL_GROUP(emmc), 600 UNIPHIER_PINCTRL_GROUP(emmc_dat8), 601 UNIPHIER_PINCTRL_GROUP(ether_mii), 602 UNIPHIER_PINCTRL_GROUP(ether_rmii), 603 UNIPHIER_PINCTRL_GROUP(i2c0), 604 UNIPHIER_PINCTRL_GROUP(i2c1), 605 UNIPHIER_PINCTRL_GROUP(i2c2), 606 UNIPHIER_PINCTRL_GROUP(i2c3), 607 UNIPHIER_PINCTRL_GROUP(nand), 608 UNIPHIER_PINCTRL_GROUP(nand_cs1), 609 UNIPHIER_PINCTRL_GROUP(sd), 610 UNIPHIER_PINCTRL_GROUP(system_bus), 611 UNIPHIER_PINCTRL_GROUP(system_bus_cs1), 612 UNIPHIER_PINCTRL_GROUP(system_bus_cs2), 613 UNIPHIER_PINCTRL_GROUP(system_bus_cs3), 614 UNIPHIER_PINCTRL_GROUP(system_bus_cs4), 615 UNIPHIER_PINCTRL_GROUP(system_bus_cs5), 616 UNIPHIER_PINCTRL_GROUP(uart0), 617 UNIPHIER_PINCTRL_GROUP(uart1), 618 UNIPHIER_PINCTRL_GROUP(uart2), 619 UNIPHIER_PINCTRL_GROUP(uart3), 620 UNIPHIER_PINCTRL_GROUP(usb0), 621 UNIPHIER_PINCTRL_GROUP(usb1), 622 UNIPHIER_PINCTRL_GROUP(usb2), 623 UNIPHIER_PINCTRL_GROUP_GPIO_RANGE_PORT(port_range0), 624 UNIPHIER_PINCTRL_GROUP_GPIO_RANGE_PORT(port_range1), 625 UNIPHIER_PINCTRL_GROUP_GPIO_RANGE_PORT(port_range2), 626 UNIPHIER_PINCTRL_GROUP_GPIO_RANGE_PORT(port_range3), 627 UNIPHIER_PINCTRL_GROUP_GPIO_RANGE_IRQ(xirq_range0), 628 UNIPHIER_PINCTRL_GROUP_GPIO_RANGE_IRQ(xirq_range1), 629 UNIPHIER_PINCTRL_GROUP_SINGLE(port00, port_range0, 0), 630 UNIPHIER_PINCTRL_GROUP_SINGLE(port01, port_range0, 1), 631 UNIPHIER_PINCTRL_GROUP_SINGLE(port02, port_range0, 2), 632 UNIPHIER_PINCTRL_GROUP_SINGLE(port03, port_range0, 3), 633 UNIPHIER_PINCTRL_GROUP_SINGLE(port04, port_range0, 4), 634 UNIPHIER_PINCTRL_GROUP_SINGLE(port05, port_range0, 5), 635 UNIPHIER_PINCTRL_GROUP_SINGLE(port06, port_range0, 6), 636 UNIPHIER_PINCTRL_GROUP_SINGLE(port07, port_range0, 7), 637 UNIPHIER_PINCTRL_GROUP_SINGLE(port10, port_range0, 8), 638 UNIPHIER_PINCTRL_GROUP_SINGLE(port11, port_range0, 9), 639 UNIPHIER_PINCTRL_GROUP_SINGLE(port12, port_range0, 10), 640 UNIPHIER_PINCTRL_GROUP_SINGLE(port13, port_range0, 11), 641 UNIPHIER_PINCTRL_GROUP_SINGLE(port14, port_range0, 12), 642 UNIPHIER_PINCTRL_GROUP_SINGLE(port15, port_range0, 13), 643 UNIPHIER_PINCTRL_GROUP_SINGLE(port16, port_range0, 14), 644 UNIPHIER_PINCTRL_GROUP_SINGLE(port17, port_range0, 15), 645 UNIPHIER_PINCTRL_GROUP_SINGLE(port20, port_range0, 16), 646 UNIPHIER_PINCTRL_GROUP_SINGLE(port21, port_range0, 17), 647 UNIPHIER_PINCTRL_GROUP_SINGLE(port22, port_range0, 18), 648 UNIPHIER_PINCTRL_GROUP_SINGLE(port23, port_range0, 19), 649 UNIPHIER_PINCTRL_GROUP_SINGLE(port24, port_range0, 20), 650 UNIPHIER_PINCTRL_GROUP_SINGLE(port25, port_range0, 21), 651 UNIPHIER_PINCTRL_GROUP_SINGLE(port26, port_range0, 22), 652 UNIPHIER_PINCTRL_GROUP_SINGLE(port27, port_range0, 23), 653 UNIPHIER_PINCTRL_GROUP_SINGLE(port30, port_range0, 24), 654 UNIPHIER_PINCTRL_GROUP_SINGLE(port31, port_range0, 25), 655 UNIPHIER_PINCTRL_GROUP_SINGLE(port32, port_range0, 26), 656 UNIPHIER_PINCTRL_GROUP_SINGLE(port33, port_range0, 27), 657 UNIPHIER_PINCTRL_GROUP_SINGLE(port34, port_range0, 28), 658 UNIPHIER_PINCTRL_GROUP_SINGLE(port35, port_range0, 29), 659 UNIPHIER_PINCTRL_GROUP_SINGLE(port36, port_range0, 30), 660 UNIPHIER_PINCTRL_GROUP_SINGLE(port37, port_range0, 31), 661 UNIPHIER_PINCTRL_GROUP_SINGLE(port40, port_range0, 32), 662 UNIPHIER_PINCTRL_GROUP_SINGLE(port41, port_range0, 33), 663 UNIPHIER_PINCTRL_GROUP_SINGLE(port42, port_range0, 34), 664 UNIPHIER_PINCTRL_GROUP_SINGLE(port43, port_range0, 35), 665 UNIPHIER_PINCTRL_GROUP_SINGLE(port44, port_range0, 36), 666 UNIPHIER_PINCTRL_GROUP_SINGLE(port45, port_range0, 37), 667 UNIPHIER_PINCTRL_GROUP_SINGLE(port46, port_range0, 38), 668 UNIPHIER_PINCTRL_GROUP_SINGLE(port47, port_range0, 39), 669 UNIPHIER_PINCTRL_GROUP_SINGLE(port50, port_range0, 40), 670 UNIPHIER_PINCTRL_GROUP_SINGLE(port51, port_range0, 41), 671 UNIPHIER_PINCTRL_GROUP_SINGLE(port52, port_range0, 42), 672 UNIPHIER_PINCTRL_GROUP_SINGLE(port53, port_range0, 43), 673 UNIPHIER_PINCTRL_GROUP_SINGLE(port54, port_range0, 44), 674 UNIPHIER_PINCTRL_GROUP_SINGLE(port55, port_range0, 45), 675 UNIPHIER_PINCTRL_GROUP_SINGLE(port56, port_range0, 46), 676 UNIPHIER_PINCTRL_GROUP_SINGLE(port57, port_range0, 47), 677 UNIPHIER_PINCTRL_GROUP_SINGLE(port60, port_range0, 48), 678 UNIPHIER_PINCTRL_GROUP_SINGLE(port61, port_range0, 49), 679 UNIPHIER_PINCTRL_GROUP_SINGLE(port62, port_range0, 50), 680 UNIPHIER_PINCTRL_GROUP_SINGLE(port63, port_range0, 51), 681 UNIPHIER_PINCTRL_GROUP_SINGLE(port64, port_range0, 52), 682 UNIPHIER_PINCTRL_GROUP_SINGLE(port65, port_range0, 53), 683 UNIPHIER_PINCTRL_GROUP_SINGLE(port66, port_range0, 54), 684 UNIPHIER_PINCTRL_GROUP_SINGLE(port67, port_range0, 55), 685 UNIPHIER_PINCTRL_GROUP_SINGLE(port70, port_range0, 56), 686 UNIPHIER_PINCTRL_GROUP_SINGLE(port71, port_range0, 57), 687 UNIPHIER_PINCTRL_GROUP_SINGLE(port72, port_range0, 58), 688 UNIPHIER_PINCTRL_GROUP_SINGLE(port73, port_range0, 59), 689 UNIPHIER_PINCTRL_GROUP_SINGLE(port74, port_range0, 60), 690 UNIPHIER_PINCTRL_GROUP_SINGLE(port75, port_range0, 61), 691 UNIPHIER_PINCTRL_GROUP_SINGLE(port76, port_range0, 62), 692 UNIPHIER_PINCTRL_GROUP_SINGLE(port77, port_range0, 63), 693 UNIPHIER_PINCTRL_GROUP_SINGLE(port80, port_range0, 64), 694 UNIPHIER_PINCTRL_GROUP_SINGLE(port81, port_range0, 65), 695 UNIPHIER_PINCTRL_GROUP_SINGLE(port82, port_range0, 66), 696 UNIPHIER_PINCTRL_GROUP_SINGLE(port83, port_range0, 67), 697 UNIPHIER_PINCTRL_GROUP_SINGLE(port84, port_range0, 68), 698 UNIPHIER_PINCTRL_GROUP_SINGLE(port85, port_range0, 69), 699 UNIPHIER_PINCTRL_GROUP_SINGLE(port86, port_range0, 70), 700 UNIPHIER_PINCTRL_GROUP_SINGLE(port87, port_range0, 71), 701 UNIPHIER_PINCTRL_GROUP_SINGLE(port90, port_range0, 72), 702 UNIPHIER_PINCTRL_GROUP_SINGLE(port91, port_range0, 73), 703 UNIPHIER_PINCTRL_GROUP_SINGLE(port92, port_range0, 74), 704 UNIPHIER_PINCTRL_GROUP_SINGLE(port93, port_range0, 75), 705 UNIPHIER_PINCTRL_GROUP_SINGLE(port94, port_range0, 76), 706 UNIPHIER_PINCTRL_GROUP_SINGLE(port95, port_range0, 77), 707 UNIPHIER_PINCTRL_GROUP_SINGLE(port96, port_range0, 78), 708 UNIPHIER_PINCTRL_GROUP_SINGLE(port97, port_range0, 79), 709 UNIPHIER_PINCTRL_GROUP_SINGLE(port100, port_range0, 80), 710 UNIPHIER_PINCTRL_GROUP_SINGLE(port101, port_range0, 81), 711 UNIPHIER_PINCTRL_GROUP_SINGLE(port102, port_range0, 82), 712 UNIPHIER_PINCTRL_GROUP_SINGLE(port103, port_range0, 83), 713 UNIPHIER_PINCTRL_GROUP_SINGLE(port104, port_range0, 84), 714 UNIPHIER_PINCTRL_GROUP_SINGLE(port105, port_range0, 85), 715 UNIPHIER_PINCTRL_GROUP_SINGLE(port106, port_range0, 86), 716 UNIPHIER_PINCTRL_GROUP_SINGLE(port107, port_range0, 87), 717 UNIPHIER_PINCTRL_GROUP_SINGLE(port110, port_range0, 88), 718 UNIPHIER_PINCTRL_GROUP_SINGLE(port111, port_range0, 89), 719 UNIPHIER_PINCTRL_GROUP_SINGLE(port112, port_range0, 90), 720 UNIPHIER_PINCTRL_GROUP_SINGLE(port113, port_range0, 91), 721 UNIPHIER_PINCTRL_GROUP_SINGLE(port114, port_range0, 92), 722 UNIPHIER_PINCTRL_GROUP_SINGLE(port115, port_range0, 93), 723 UNIPHIER_PINCTRL_GROUP_SINGLE(port116, port_range0, 94), 724 UNIPHIER_PINCTRL_GROUP_SINGLE(port117, port_range0, 95), 725 UNIPHIER_PINCTRL_GROUP_SINGLE(port120, port_range0, 96), 726 UNIPHIER_PINCTRL_GROUP_SINGLE(port121, port_range0, 97), 727 UNIPHIER_PINCTRL_GROUP_SINGLE(port122, port_range0, 98), 728 UNIPHIER_PINCTRL_GROUP_SINGLE(port123, port_range0, 99), 729 UNIPHIER_PINCTRL_GROUP_SINGLE(port124, port_range0, 100), 730 UNIPHIER_PINCTRL_GROUP_SINGLE(port130, port_range1, 0), 731 UNIPHIER_PINCTRL_GROUP_SINGLE(port131, port_range1, 1), 732 UNIPHIER_PINCTRL_GROUP_SINGLE(port140, port_range2, 0), 733 UNIPHIER_PINCTRL_GROUP_SINGLE(port141, port_range2, 1), 734 UNIPHIER_PINCTRL_GROUP_SINGLE(port142, port_range2, 2), 735 UNIPHIER_PINCTRL_GROUP_SINGLE(port143, port_range2, 3), 736 UNIPHIER_PINCTRL_GROUP_SINGLE(port144, port_range2, 4), 737 UNIPHIER_PINCTRL_GROUP_SINGLE(port145, port_range2, 5), 738 UNIPHIER_PINCTRL_GROUP_SINGLE(port146, port_range2, 6), 739 UNIPHIER_PINCTRL_GROUP_SINGLE(port147, port_range2, 7), 740 UNIPHIER_PINCTRL_GROUP_SINGLE(port166, port_range3, 0), 741 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq0, xirq_range0, 0), 742 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq1, xirq_range0, 1), 743 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq2, xirq_range0, 2), 744 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq3, xirq_range0, 3), 745 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq4, xirq_range0, 4), 746 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq5, xirq_range0, 5), 747 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq6, xirq_range0, 6), 748 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq7, xirq_range0, 7), 749 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq8, xirq_range0, 8), 750 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq9, xirq_range0, 9), 751 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq10, xirq_range0, 10), 752 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq11, xirq_range0, 11), 753 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq12, xirq_range0, 12), 754 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq14, xirq_range1, 0), 755 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq15, xirq_range1, 1), 756 }; 757 758 static const char * const emmc_groups[] = {"emmc", "emmc_dat8"}; 759 static const char * const ether_mii_groups[] = {"ether_mii"}; 760 static const char * const ether_rmii_groups[] = {"ether_rmii"}; 761 static const char * const i2c0_groups[] = {"i2c0"}; 762 static const char * const i2c1_groups[] = {"i2c1"}; 763 static const char * const i2c2_groups[] = {"i2c2"}; 764 static const char * const i2c3_groups[] = {"i2c3"}; 765 static const char * const nand_groups[] = {"nand", "nand_cs1"}; 766 static const char * const sd_groups[] = {"sd"}; 767 static const char * const system_bus_groups[] = {"system_bus", 768 "system_bus_cs1", 769 "system_bus_cs2", 770 "system_bus_cs3", 771 "system_bus_cs4", 772 "system_bus_cs5"}; 773 static const char * const uart0_groups[] = {"uart0"}; 774 static const char * const uart1_groups[] = {"uart1"}; 775 static const char * const uart2_groups[] = {"uart2"}; 776 static const char * const uart3_groups[] = {"uart3"}; 777 static const char * const usb0_groups[] = {"usb0"}; 778 static const char * const usb1_groups[] = {"usb1"}; 779 static const char * const usb2_groups[] = {"usb2"}; 780 static const char * const port_groups[] = { 781 "port00", "port01", "port02", "port03", 782 "port04", "port05", "port06", "port07", 783 "port10", "port11", "port12", "port13", 784 "port14", "port15", "port16", "port17", 785 "port20", "port21", "port22", "port23", 786 "port24", "port25", "port26", "port27", 787 "port30", "port31", "port32", "port33", 788 "port34", "port35", "port36", "port37", 789 "port40", "port41", "port42", "port43", 790 "port44", "port45", "port46", "port47", 791 "port50", "port51", "port52", "port53", 792 "port54", "port55", "port56", "port57", 793 "port60", "port61", "port62", "port63", 794 "port64", "port65", "port66", "port67", 795 "port70", "port71", "port72", "port73", 796 "port74", "port75", "port76", "port77", 797 "port80", "port81", "port82", "port83", 798 "port84", "port85", "port86", "port87", 799 "port90", "port91", "port92", "port93", 800 "port94", "port95", "port96", "port97", 801 "port100", "port101", "port102", "port103", 802 "port104", "port105", "port106", "port107", 803 "port110", "port111", "port112", "port113", 804 "port114", "port115", "port116", "port117", 805 "port120", "port121", "port122", "port123", 806 "port124", "port125", "port126", "port127", 807 "port130", "port131", "port132", "port133", 808 "port134", "port135", "port136", "port137", 809 "port140", "port141", "port142", "port143", 810 "port144", "port145", "port146", "port147", 811 /* port150-164 missing */ 812 /* none */ "port165", 813 }; 814 static const char * const xirq_groups[] = { 815 "xirq0", "xirq1", "xirq2", "xirq3", 816 "xirq4", "xirq5", "xirq6", "xirq7", 817 "xirq8", "xirq9", "xirq10", "xirq11", 818 "xirq12", /* none*/ "xirq14", "xirq15", 819 }; 820 821 static const struct uniphier_pinmux_function uniphier_sld8_functions[] = { 822 UNIPHIER_PINMUX_FUNCTION(emmc), 823 UNIPHIER_PINMUX_FUNCTION(ether_mii), 824 UNIPHIER_PINMUX_FUNCTION(ether_rmii), 825 UNIPHIER_PINMUX_FUNCTION(i2c0), 826 UNIPHIER_PINMUX_FUNCTION(i2c1), 827 UNIPHIER_PINMUX_FUNCTION(i2c2), 828 UNIPHIER_PINMUX_FUNCTION(i2c3), 829 UNIPHIER_PINMUX_FUNCTION(nand), 830 UNIPHIER_PINMUX_FUNCTION(sd), 831 UNIPHIER_PINMUX_FUNCTION(system_bus), 832 UNIPHIER_PINMUX_FUNCTION(uart0), 833 UNIPHIER_PINMUX_FUNCTION(uart1), 834 UNIPHIER_PINMUX_FUNCTION(uart2), 835 UNIPHIER_PINMUX_FUNCTION(uart3), 836 UNIPHIER_PINMUX_FUNCTION(usb0), 837 UNIPHIER_PINMUX_FUNCTION(usb1), 838 UNIPHIER_PINMUX_FUNCTION(usb2), 839 UNIPHIER_PINMUX_FUNCTION(port), 840 UNIPHIER_PINMUX_FUNCTION(xirq), 841 }; 842 843 static struct uniphier_pinctrl_socdata uniphier_sld8_pindata = { 844 .pins = uniphier_sld8_pins, 845 .npins = ARRAY_SIZE(uniphier_sld8_pins), 846 .groups = uniphier_sld8_groups, 847 .groups_count = ARRAY_SIZE(uniphier_sld8_groups), 848 .functions = uniphier_sld8_functions, 849 .functions_count = ARRAY_SIZE(uniphier_sld8_functions), 850 .caps = 0, 851 }; 852 853 static int uniphier_sld8_pinctrl_probe(struct platform_device *pdev) 854 { 855 return uniphier_pinctrl_probe(pdev, &uniphier_sld8_pindata); 856 } 857 858 static const struct of_device_id uniphier_sld8_pinctrl_match[] = { 859 { .compatible = "socionext,uniphier-sld8-pinctrl" }, 860 { /* sentinel */ } 861 }; 862 863 static struct platform_driver uniphier_sld8_pinctrl_driver = { 864 .probe = uniphier_sld8_pinctrl_probe, 865 .driver = { 866 .name = "uniphier-sld8-pinctrl", 867 .of_match_table = uniphier_sld8_pinctrl_match, 868 }, 869 }; 870 builtin_platform_driver(uniphier_sld8_pinctrl_driver); 871