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