0001
0002
0003
0004
0005
0006 #include <linux/kernel.h>
0007 #include <linux/init.h>
0008 #include <linux/mod_devicetable.h>
0009 #include <linux/pinctrl/pinctrl.h>
0010 #include <linux/platform_device.h>
0011
0012 #include "pinctrl-uniphier.h"
0013
0014 static const struct pinctrl_pin_desc uniphier_sld8_pins[] = {
0015 UNIPHIER_PINCTRL_PIN(0, "PCA00", 0,
0016 15, UNIPHIER_PIN_DRV_1BIT,
0017 15, UNIPHIER_PIN_PULL_DOWN),
0018 UNIPHIER_PINCTRL_PIN(1, "PCA01", 0,
0019 16, UNIPHIER_PIN_DRV_1BIT,
0020 16, UNIPHIER_PIN_PULL_DOWN),
0021 UNIPHIER_PINCTRL_PIN(2, "PCA02", 0,
0022 17, UNIPHIER_PIN_DRV_1BIT,
0023 17, UNIPHIER_PIN_PULL_DOWN),
0024 UNIPHIER_PINCTRL_PIN(3, "PCA03", 0,
0025 18, UNIPHIER_PIN_DRV_1BIT,
0026 18, UNIPHIER_PIN_PULL_DOWN),
0027 UNIPHIER_PINCTRL_PIN(4, "PCA04", 0,
0028 19, UNIPHIER_PIN_DRV_1BIT,
0029 19, UNIPHIER_PIN_PULL_DOWN),
0030 UNIPHIER_PINCTRL_PIN(5, "PCA05", 0,
0031 20, UNIPHIER_PIN_DRV_1BIT,
0032 20, UNIPHIER_PIN_PULL_DOWN),
0033 UNIPHIER_PINCTRL_PIN(6, "PCA06", 0,
0034 21, UNIPHIER_PIN_DRV_1BIT,
0035 21, UNIPHIER_PIN_PULL_DOWN),
0036 UNIPHIER_PINCTRL_PIN(7, "PCA07", 0,
0037 22, UNIPHIER_PIN_DRV_1BIT,
0038 22, UNIPHIER_PIN_PULL_DOWN),
0039 UNIPHIER_PINCTRL_PIN(8, "PCA08", 0,
0040 23, UNIPHIER_PIN_DRV_1BIT,
0041 23, UNIPHIER_PIN_PULL_DOWN),
0042 UNIPHIER_PINCTRL_PIN(9, "PCA09", 0,
0043 24, UNIPHIER_PIN_DRV_1BIT,
0044 24, UNIPHIER_PIN_PULL_DOWN),
0045 UNIPHIER_PINCTRL_PIN(10, "PCA10", 0,
0046 25, UNIPHIER_PIN_DRV_1BIT,
0047 25, UNIPHIER_PIN_PULL_DOWN),
0048 UNIPHIER_PINCTRL_PIN(11, "PCA11", 0,
0049 26, UNIPHIER_PIN_DRV_1BIT,
0050 26, UNIPHIER_PIN_PULL_DOWN),
0051 UNIPHIER_PINCTRL_PIN(12, "PCA12", 0,
0052 27, UNIPHIER_PIN_DRV_1BIT,
0053 27, UNIPHIER_PIN_PULL_DOWN),
0054 UNIPHIER_PINCTRL_PIN(13, "PCA13", 0,
0055 28, UNIPHIER_PIN_DRV_1BIT,
0056 28, UNIPHIER_PIN_PULL_DOWN),
0057 UNIPHIER_PINCTRL_PIN(14, "PCA14", 0,
0058 29, UNIPHIER_PIN_DRV_1BIT,
0059 29, UNIPHIER_PIN_PULL_DOWN),
0060 UNIPHIER_PINCTRL_PIN(15, "XNFRE_GB", UNIPHIER_PIN_IECTRL_NONE,
0061 30, UNIPHIER_PIN_DRV_1BIT,
0062 30, UNIPHIER_PIN_PULL_UP),
0063 UNIPHIER_PINCTRL_PIN(16, "XNFWE_GB", UNIPHIER_PIN_IECTRL_NONE,
0064 31, UNIPHIER_PIN_DRV_1BIT,
0065 31, UNIPHIER_PIN_PULL_UP),
0066 UNIPHIER_PINCTRL_PIN(17, "NFALE_GB", UNIPHIER_PIN_IECTRL_NONE,
0067 32, UNIPHIER_PIN_DRV_1BIT,
0068 32, UNIPHIER_PIN_PULL_DOWN),
0069 UNIPHIER_PINCTRL_PIN(18, "NFCLE_GB", UNIPHIER_PIN_IECTRL_NONE,
0070 33, UNIPHIER_PIN_DRV_1BIT,
0071 33, UNIPHIER_PIN_PULL_DOWN),
0072 UNIPHIER_PINCTRL_PIN(19, "XNFWP_GB", UNIPHIER_PIN_IECTRL_NONE,
0073 34, UNIPHIER_PIN_DRV_1BIT,
0074 34, UNIPHIER_PIN_PULL_DOWN),
0075 UNIPHIER_PINCTRL_PIN(20, "XNFCE0_GB", UNIPHIER_PIN_IECTRL_NONE,
0076 35, UNIPHIER_PIN_DRV_1BIT,
0077 35, UNIPHIER_PIN_PULL_UP),
0078 UNIPHIER_PINCTRL_PIN(21, "NANDRYBY0_GB", UNIPHIER_PIN_IECTRL_NONE,
0079 36, UNIPHIER_PIN_DRV_1BIT,
0080 36, UNIPHIER_PIN_PULL_UP),
0081 UNIPHIER_PINCTRL_PIN(22, "XNFCE1_GB", UNIPHIER_PIN_IECTRL_NONE,
0082 0, UNIPHIER_PIN_DRV_2BIT,
0083 119, UNIPHIER_PIN_PULL_UP),
0084 UNIPHIER_PINCTRL_PIN(23, "NANDRYBY1_GB", UNIPHIER_PIN_IECTRL_NONE,
0085 1, UNIPHIER_PIN_DRV_2BIT,
0086 120, UNIPHIER_PIN_PULL_UP),
0087 UNIPHIER_PINCTRL_PIN(24, "NFD0_GB", UNIPHIER_PIN_IECTRL_NONE,
0088 2, UNIPHIER_PIN_DRV_2BIT,
0089 121, UNIPHIER_PIN_PULL_UP),
0090 UNIPHIER_PINCTRL_PIN(25, "NFD1_GB", UNIPHIER_PIN_IECTRL_NONE,
0091 3, UNIPHIER_PIN_DRV_2BIT,
0092 122, UNIPHIER_PIN_PULL_UP),
0093 UNIPHIER_PINCTRL_PIN(26, "NFD2_GB", UNIPHIER_PIN_IECTRL_NONE,
0094 4, UNIPHIER_PIN_DRV_2BIT,
0095 123, UNIPHIER_PIN_PULL_UP),
0096 UNIPHIER_PINCTRL_PIN(27, "NFD3_GB", UNIPHIER_PIN_IECTRL_NONE,
0097 5, UNIPHIER_PIN_DRV_2BIT,
0098 124, UNIPHIER_PIN_PULL_UP),
0099 UNIPHIER_PINCTRL_PIN(28, "NFD4_GB", UNIPHIER_PIN_IECTRL_NONE,
0100 6, UNIPHIER_PIN_DRV_2BIT,
0101 125, UNIPHIER_PIN_PULL_UP),
0102 UNIPHIER_PINCTRL_PIN(29, "NFD5_GB", UNIPHIER_PIN_IECTRL_NONE,
0103 7, UNIPHIER_PIN_DRV_2BIT,
0104 126, UNIPHIER_PIN_PULL_UP),
0105 UNIPHIER_PINCTRL_PIN(30, "NFD6_GB", UNIPHIER_PIN_IECTRL_NONE,
0106 8, UNIPHIER_PIN_DRV_2BIT,
0107 127, UNIPHIER_PIN_PULL_UP),
0108 UNIPHIER_PINCTRL_PIN(31, "NFD7_GB", UNIPHIER_PIN_IECTRL_NONE,
0109 9, UNIPHIER_PIN_DRV_2BIT,
0110 128, UNIPHIER_PIN_PULL_UP),
0111 UNIPHIER_PINCTRL_PIN(32, "SDCLK", 8,
0112 10, UNIPHIER_PIN_DRV_2BIT,
0113 -1, UNIPHIER_PIN_PULL_NONE),
0114 UNIPHIER_PINCTRL_PIN(33, "SDCMD", 8,
0115 11, UNIPHIER_PIN_DRV_2BIT,
0116 -1, UNIPHIER_PIN_PULL_NONE),
0117 UNIPHIER_PINCTRL_PIN(34, "SDDAT0", 8,
0118 12, UNIPHIER_PIN_DRV_2BIT,
0119 -1, UNIPHIER_PIN_PULL_NONE),
0120 UNIPHIER_PINCTRL_PIN(35, "SDDAT1", 8,
0121 13, UNIPHIER_PIN_DRV_2BIT,
0122 -1, UNIPHIER_PIN_PULL_NONE),
0123 UNIPHIER_PINCTRL_PIN(36, "SDDAT2", 8,
0124 14, UNIPHIER_PIN_DRV_2BIT,
0125 -1, UNIPHIER_PIN_PULL_NONE),
0126 UNIPHIER_PINCTRL_PIN(37, "SDDAT3", 8,
0127 15, UNIPHIER_PIN_DRV_2BIT,
0128 -1, UNIPHIER_PIN_PULL_NONE),
0129 UNIPHIER_PINCTRL_PIN(38, "SDCD", 8,
0130 -1, UNIPHIER_PIN_DRV_FIXED4,
0131 129, UNIPHIER_PIN_PULL_DOWN),
0132 UNIPHIER_PINCTRL_PIN(39, "SDWP", 8,
0133 -1, UNIPHIER_PIN_DRV_FIXED4,
0134 130, UNIPHIER_PIN_PULL_DOWN),
0135 UNIPHIER_PINCTRL_PIN(40, "SDVOLC", 9,
0136 -1, UNIPHIER_PIN_DRV_FIXED4,
0137 131, UNIPHIER_PIN_PULL_DOWN),
0138 UNIPHIER_PINCTRL_PIN(41, "USB0VBUS", 0,
0139 37, UNIPHIER_PIN_DRV_1BIT,
0140 37, UNIPHIER_PIN_PULL_DOWN),
0141 UNIPHIER_PINCTRL_PIN(42, "USB0OD", 0,
0142 38, UNIPHIER_PIN_DRV_1BIT,
0143 38, UNIPHIER_PIN_PULL_DOWN),
0144 UNIPHIER_PINCTRL_PIN(43, "USB1VBUS", 0,
0145 39, UNIPHIER_PIN_DRV_1BIT,
0146 39, UNIPHIER_PIN_PULL_DOWN),
0147 UNIPHIER_PINCTRL_PIN(44, "USB1OD", 0,
0148 40, UNIPHIER_PIN_DRV_1BIT,
0149 40, UNIPHIER_PIN_PULL_DOWN),
0150 UNIPHIER_PINCTRL_PIN(45, "PCRESET", 0,
0151 41, UNIPHIER_PIN_DRV_1BIT,
0152 41, UNIPHIER_PIN_PULL_DOWN),
0153 UNIPHIER_PINCTRL_PIN(46, "PCREG", 0,
0154 42, UNIPHIER_PIN_DRV_1BIT,
0155 42, UNIPHIER_PIN_PULL_DOWN),
0156 UNIPHIER_PINCTRL_PIN(47, "PCCE2", 0,
0157 43, UNIPHIER_PIN_DRV_1BIT,
0158 43, UNIPHIER_PIN_PULL_DOWN),
0159 UNIPHIER_PINCTRL_PIN(48, "PCVS1", 0,
0160 44, UNIPHIER_PIN_DRV_1BIT,
0161 44, UNIPHIER_PIN_PULL_DOWN),
0162 UNIPHIER_PINCTRL_PIN(49, "PCCD2", 0,
0163 45, UNIPHIER_PIN_DRV_1BIT,
0164 45, UNIPHIER_PIN_PULL_DOWN),
0165 UNIPHIER_PINCTRL_PIN(50, "PCCD1", 0,
0166 46, UNIPHIER_PIN_DRV_1BIT,
0167 46, UNIPHIER_PIN_PULL_DOWN),
0168 UNIPHIER_PINCTRL_PIN(51, "PCREADY", 0,
0169 47, UNIPHIER_PIN_DRV_1BIT,
0170 47, UNIPHIER_PIN_PULL_DOWN),
0171 UNIPHIER_PINCTRL_PIN(52, "PCDOE", 0,
0172 48, UNIPHIER_PIN_DRV_1BIT,
0173 48, UNIPHIER_PIN_PULL_DOWN),
0174 UNIPHIER_PINCTRL_PIN(53, "PCCE1", 0,
0175 49, UNIPHIER_PIN_DRV_1BIT,
0176 49, UNIPHIER_PIN_PULL_DOWN),
0177 UNIPHIER_PINCTRL_PIN(54, "PCWE", 0,
0178 50, UNIPHIER_PIN_DRV_1BIT,
0179 50, UNIPHIER_PIN_PULL_DOWN),
0180 UNIPHIER_PINCTRL_PIN(55, "PCOE", 0,
0181 51, UNIPHIER_PIN_DRV_1BIT,
0182 51, UNIPHIER_PIN_PULL_DOWN),
0183 UNIPHIER_PINCTRL_PIN(56, "PCWAIT", 0,
0184 52, UNIPHIER_PIN_DRV_1BIT,
0185 52, UNIPHIER_PIN_PULL_DOWN),
0186 UNIPHIER_PINCTRL_PIN(57, "PCIOWR", 0,
0187 53, UNIPHIER_PIN_DRV_1BIT,
0188 53, UNIPHIER_PIN_PULL_DOWN),
0189 UNIPHIER_PINCTRL_PIN(58, "PCIORD", 0,
0190 54, UNIPHIER_PIN_DRV_1BIT,
0191 54, UNIPHIER_PIN_PULL_DOWN),
0192 UNIPHIER_PINCTRL_PIN(59, "HS0DIN0", 0,
0193 55, UNIPHIER_PIN_DRV_1BIT,
0194 55, UNIPHIER_PIN_PULL_DOWN),
0195 UNIPHIER_PINCTRL_PIN(60, "HS0DIN1", 0,
0196 56, UNIPHIER_PIN_DRV_1BIT,
0197 56, UNIPHIER_PIN_PULL_DOWN),
0198 UNIPHIER_PINCTRL_PIN(61, "HS0DIN2", 0,
0199 57, UNIPHIER_PIN_DRV_1BIT,
0200 57, UNIPHIER_PIN_PULL_DOWN),
0201 UNIPHIER_PINCTRL_PIN(62, "HS0DIN3", 0,
0202 58, UNIPHIER_PIN_DRV_1BIT,
0203 58, UNIPHIER_PIN_PULL_DOWN),
0204 UNIPHIER_PINCTRL_PIN(63, "HS0DIN4", 0,
0205 59, UNIPHIER_PIN_DRV_1BIT,
0206 59, UNIPHIER_PIN_PULL_DOWN),
0207 UNIPHIER_PINCTRL_PIN(64, "HS0DIN5", 0,
0208 60, UNIPHIER_PIN_DRV_1BIT,
0209 60, UNIPHIER_PIN_PULL_DOWN),
0210 UNIPHIER_PINCTRL_PIN(65, "HS0DIN6", 0,
0211 61, UNIPHIER_PIN_DRV_1BIT,
0212 61, UNIPHIER_PIN_PULL_DOWN),
0213 UNIPHIER_PINCTRL_PIN(66, "HS0DIN7", 0,
0214 62, UNIPHIER_PIN_DRV_1BIT,
0215 62, UNIPHIER_PIN_PULL_DOWN),
0216 UNIPHIER_PINCTRL_PIN(67, "HS0BCLKIN", 0,
0217 63, UNIPHIER_PIN_DRV_1BIT,
0218 63, UNIPHIER_PIN_PULL_DOWN),
0219 UNIPHIER_PINCTRL_PIN(68, "HS0VALIN", 0,
0220 64, UNIPHIER_PIN_DRV_1BIT,
0221 64, UNIPHIER_PIN_PULL_DOWN),
0222 UNIPHIER_PINCTRL_PIN(69, "HS0SYNCIN", 0,
0223 65, UNIPHIER_PIN_DRV_1BIT,
0224 65, UNIPHIER_PIN_PULL_DOWN),
0225 UNIPHIER_PINCTRL_PIN(70, "HSDOUT0", 0,
0226 66, UNIPHIER_PIN_DRV_1BIT,
0227 66, UNIPHIER_PIN_PULL_DOWN),
0228 UNIPHIER_PINCTRL_PIN(71, "HSDOUT1", 0,
0229 67, UNIPHIER_PIN_DRV_1BIT,
0230 67, UNIPHIER_PIN_PULL_DOWN),
0231 UNIPHIER_PINCTRL_PIN(72, "HSDOUT2", 0,
0232 68, UNIPHIER_PIN_DRV_1BIT,
0233 68, UNIPHIER_PIN_PULL_DOWN),
0234 UNIPHIER_PINCTRL_PIN(73, "HSDOUT3", 0,
0235 69, UNIPHIER_PIN_DRV_1BIT,
0236 69, UNIPHIER_PIN_PULL_DOWN),
0237 UNIPHIER_PINCTRL_PIN(74, "HSDOUT4", 0,
0238 70, UNIPHIER_PIN_DRV_1BIT,
0239 70, UNIPHIER_PIN_PULL_DOWN),
0240 UNIPHIER_PINCTRL_PIN(75, "HSDOUT5", 0,
0241 71, UNIPHIER_PIN_DRV_1BIT,
0242 71, UNIPHIER_PIN_PULL_DOWN),
0243 UNIPHIER_PINCTRL_PIN(76, "HSDOUT6", 0,
0244 72, UNIPHIER_PIN_DRV_1BIT,
0245 72, UNIPHIER_PIN_PULL_DOWN),
0246 UNIPHIER_PINCTRL_PIN(77, "HSDOUT7", 0,
0247 73, UNIPHIER_PIN_DRV_1BIT,
0248 73, UNIPHIER_PIN_PULL_DOWN),
0249 UNIPHIER_PINCTRL_PIN(78, "HSBCLKOUT", 0,
0250 74, UNIPHIER_PIN_DRV_1BIT,
0251 74, UNIPHIER_PIN_PULL_DOWN),
0252 UNIPHIER_PINCTRL_PIN(79, "HSVALOUT", 0,
0253 75, UNIPHIER_PIN_DRV_1BIT,
0254 75, UNIPHIER_PIN_PULL_DOWN),
0255 UNIPHIER_PINCTRL_PIN(80, "HSSYNCOUT", 0,
0256 76, UNIPHIER_PIN_DRV_1BIT,
0257 76, UNIPHIER_PIN_PULL_DOWN),
0258 UNIPHIER_PINCTRL_PIN(81, "HS1DIN0", 0,
0259 77, UNIPHIER_PIN_DRV_1BIT,
0260 77, UNIPHIER_PIN_PULL_DOWN),
0261 UNIPHIER_PINCTRL_PIN(82, "HS1DIN1", 0,
0262 78, UNIPHIER_PIN_DRV_1BIT,
0263 78, UNIPHIER_PIN_PULL_DOWN),
0264 UNIPHIER_PINCTRL_PIN(83, "HS1DIN2", 0,
0265 79, UNIPHIER_PIN_DRV_1BIT,
0266 79, UNIPHIER_PIN_PULL_DOWN),
0267 UNIPHIER_PINCTRL_PIN(84, "HS1DIN3", 0,
0268 80, UNIPHIER_PIN_DRV_1BIT,
0269 80, UNIPHIER_PIN_PULL_DOWN),
0270 UNIPHIER_PINCTRL_PIN(85, "HS1DIN4", 0,
0271 81, UNIPHIER_PIN_DRV_1BIT,
0272 81, UNIPHIER_PIN_PULL_DOWN),
0273 UNIPHIER_PINCTRL_PIN(86, "HS1DIN5", 0,
0274 82, UNIPHIER_PIN_DRV_1BIT,
0275 82, UNIPHIER_PIN_PULL_DOWN),
0276 UNIPHIER_PINCTRL_PIN(87, "HS1DIN6", 0,
0277 83, UNIPHIER_PIN_DRV_1BIT,
0278 83, UNIPHIER_PIN_PULL_DOWN),
0279 UNIPHIER_PINCTRL_PIN(88, "HS1DIN7", 0,
0280 84, UNIPHIER_PIN_DRV_1BIT,
0281 84, UNIPHIER_PIN_PULL_DOWN),
0282 UNIPHIER_PINCTRL_PIN(89, "HS1BCLKIN", 0,
0283 85, UNIPHIER_PIN_DRV_1BIT,
0284 85, UNIPHIER_PIN_PULL_DOWN),
0285 UNIPHIER_PINCTRL_PIN(90, "HS1VALIN", 0,
0286 86, UNIPHIER_PIN_DRV_1BIT,
0287 86, UNIPHIER_PIN_PULL_DOWN),
0288 UNIPHIER_PINCTRL_PIN(91, "HS1SYNCIN", 0,
0289 87, UNIPHIER_PIN_DRV_1BIT,
0290 87, UNIPHIER_PIN_PULL_DOWN),
0291 UNIPHIER_PINCTRL_PIN(92, "AGCI", 3,
0292 -1, UNIPHIER_PIN_DRV_FIXED4,
0293 132, UNIPHIER_PIN_PULL_DOWN),
0294 UNIPHIER_PINCTRL_PIN(93, "AGCR", 4,
0295 -1, UNIPHIER_PIN_DRV_FIXED4,
0296 133, UNIPHIER_PIN_PULL_DOWN),
0297 UNIPHIER_PINCTRL_PIN(94, "AGCBS", 5,
0298 -1, UNIPHIER_PIN_DRV_FIXED4,
0299 134, UNIPHIER_PIN_PULL_DOWN),
0300 UNIPHIER_PINCTRL_PIN(95, "IECOUT", 0,
0301 88, UNIPHIER_PIN_DRV_1BIT,
0302 88, UNIPHIER_PIN_PULL_DOWN),
0303 UNIPHIER_PINCTRL_PIN(96, "ASMCK", 0,
0304 89, UNIPHIER_PIN_DRV_1BIT,
0305 89, UNIPHIER_PIN_PULL_DOWN),
0306 UNIPHIER_PINCTRL_PIN(97, "ABCKO", UNIPHIER_PIN_IECTRL_NONE,
0307 90, UNIPHIER_PIN_DRV_1BIT,
0308 90, UNIPHIER_PIN_PULL_DOWN),
0309 UNIPHIER_PINCTRL_PIN(98, "ALRCKO", UNIPHIER_PIN_IECTRL_NONE,
0310 91, UNIPHIER_PIN_DRV_1BIT,
0311 91, UNIPHIER_PIN_PULL_DOWN),
0312 UNIPHIER_PINCTRL_PIN(99, "ASDOUT0", UNIPHIER_PIN_IECTRL_NONE,
0313 92, UNIPHIER_PIN_DRV_1BIT,
0314 92, UNIPHIER_PIN_PULL_DOWN),
0315 UNIPHIER_PINCTRL_PIN(100, "ASDOUT1", UNIPHIER_PIN_IECTRL_NONE,
0316 93, UNIPHIER_PIN_DRV_1BIT,
0317 93, UNIPHIER_PIN_PULL_UP),
0318 UNIPHIER_PINCTRL_PIN(101, "ARCOUT", 0,
0319 94, UNIPHIER_PIN_DRV_1BIT,
0320 94, UNIPHIER_PIN_PULL_DOWN),
0321 UNIPHIER_PINCTRL_PIN(102, "SDA0", 10,
0322 -1, UNIPHIER_PIN_DRV_FIXED4,
0323 -1, UNIPHIER_PIN_PULL_NONE),
0324 UNIPHIER_PINCTRL_PIN(103, "SCL0", 10,
0325 -1, UNIPHIER_PIN_DRV_FIXED4,
0326 -1, UNIPHIER_PIN_PULL_NONE),
0327 UNIPHIER_PINCTRL_PIN(104, "SDA1", 11,
0328 -1, UNIPHIER_PIN_DRV_FIXED4,
0329 -1, UNIPHIER_PIN_PULL_NONE),
0330 UNIPHIER_PINCTRL_PIN(105, "SCL1", 11,
0331 -1, UNIPHIER_PIN_DRV_FIXED4,
0332 -1, UNIPHIER_PIN_PULL_NONE),
0333 UNIPHIER_PINCTRL_PIN(106, "DMDSDA0", 12,
0334 -1, UNIPHIER_PIN_DRV_FIXED4,
0335 -1, UNIPHIER_PIN_PULL_NONE),
0336 UNIPHIER_PINCTRL_PIN(107, "DMDSCL0", 12,
0337 -1, UNIPHIER_PIN_DRV_FIXED4,
0338 -1, UNIPHIER_PIN_PULL_NONE),
0339 UNIPHIER_PINCTRL_PIN(108, "DMDSDA1", 13,
0340 -1, UNIPHIER_PIN_DRV_FIXED4,
0341 -1, UNIPHIER_PIN_PULL_NONE),
0342 UNIPHIER_PINCTRL_PIN(109, "DMDSCL1", 13,
0343 -1, UNIPHIER_PIN_DRV_FIXED4,
0344 -1, UNIPHIER_PIN_PULL_NONE),
0345 UNIPHIER_PINCTRL_PIN(110, "SBO0", UNIPHIER_PIN_IECTRL_NONE,
0346 95, UNIPHIER_PIN_DRV_1BIT,
0347 95, UNIPHIER_PIN_PULL_UP),
0348 UNIPHIER_PINCTRL_PIN(111, "SBI0", UNIPHIER_PIN_IECTRL_NONE,
0349 96, UNIPHIER_PIN_DRV_1BIT,
0350 96, UNIPHIER_PIN_PULL_UP),
0351 UNIPHIER_PINCTRL_PIN(112, "SBO1", 0,
0352 97, UNIPHIER_PIN_DRV_1BIT,
0353 97, UNIPHIER_PIN_PULL_UP),
0354 UNIPHIER_PINCTRL_PIN(113, "SBI1", 0,
0355 98, UNIPHIER_PIN_DRV_1BIT,
0356 98, UNIPHIER_PIN_PULL_UP),
0357 UNIPHIER_PINCTRL_PIN(114, "TXD1", 0,
0358 99, UNIPHIER_PIN_DRV_1BIT,
0359 99, UNIPHIER_PIN_PULL_UP),
0360 UNIPHIER_PINCTRL_PIN(115, "RXD1", 0,
0361 100, UNIPHIER_PIN_DRV_1BIT,
0362 100, UNIPHIER_PIN_PULL_UP),
0363 UNIPHIER_PINCTRL_PIN(116, "HIN", 1,
0364 -1, UNIPHIER_PIN_DRV_FIXED5,
0365 -1, UNIPHIER_PIN_PULL_NONE),
0366 UNIPHIER_PINCTRL_PIN(117, "VIN", 2,
0367 -1, UNIPHIER_PIN_DRV_FIXED5,
0368 -1, UNIPHIER_PIN_PULL_NONE),
0369 UNIPHIER_PINCTRL_PIN(118, "TCON0", 0,
0370 101, UNIPHIER_PIN_DRV_1BIT,
0371 101, UNIPHIER_PIN_PULL_DOWN),
0372 UNIPHIER_PINCTRL_PIN(119, "TCON1", 0,
0373 102, UNIPHIER_PIN_DRV_1BIT,
0374 102, UNIPHIER_PIN_PULL_DOWN),
0375 UNIPHIER_PINCTRL_PIN(120, "TCON2", 0,
0376 103, UNIPHIER_PIN_DRV_1BIT,
0377 103, UNIPHIER_PIN_PULL_DOWN),
0378 UNIPHIER_PINCTRL_PIN(121, "TCON3", 0,
0379 104, UNIPHIER_PIN_DRV_1BIT,
0380 104, UNIPHIER_PIN_PULL_DOWN),
0381 UNIPHIER_PINCTRL_PIN(122, "TCON4", 0,
0382 105, UNIPHIER_PIN_DRV_1BIT,
0383 105, UNIPHIER_PIN_PULL_DOWN),
0384 UNIPHIER_PINCTRL_PIN(123, "TCON5", 0,
0385 106, UNIPHIER_PIN_DRV_1BIT,
0386 106, UNIPHIER_PIN_PULL_DOWN),
0387 UNIPHIER_PINCTRL_PIN(124, "TCON6", 0,
0388 107, UNIPHIER_PIN_DRV_1BIT,
0389 107, UNIPHIER_PIN_PULL_DOWN),
0390 UNIPHIER_PINCTRL_PIN(125, "TCON7", 0,
0391 108, UNIPHIER_PIN_DRV_1BIT,
0392 108, UNIPHIER_PIN_PULL_DOWN),
0393 UNIPHIER_PINCTRL_PIN(126, "TCON8", 0,
0394 109, UNIPHIER_PIN_DRV_1BIT,
0395 109, UNIPHIER_PIN_PULL_DOWN),
0396 UNIPHIER_PINCTRL_PIN(127, "PWMA", 0,
0397 110, UNIPHIER_PIN_DRV_1BIT,
0398 110, UNIPHIER_PIN_PULL_DOWN),
0399 UNIPHIER_PINCTRL_PIN(128, "XIRQ0", 0,
0400 111, UNIPHIER_PIN_DRV_1BIT,
0401 111, UNIPHIER_PIN_PULL_DOWN),
0402 UNIPHIER_PINCTRL_PIN(129, "XIRQ1", 0,
0403 112, UNIPHIER_PIN_DRV_1BIT,
0404 112, UNIPHIER_PIN_PULL_DOWN),
0405 UNIPHIER_PINCTRL_PIN(130, "XIRQ2", 0,
0406 113, UNIPHIER_PIN_DRV_1BIT,
0407 113, UNIPHIER_PIN_PULL_DOWN),
0408 UNIPHIER_PINCTRL_PIN(131, "XIRQ3", 0,
0409 114, UNIPHIER_PIN_DRV_1BIT,
0410 114, UNIPHIER_PIN_PULL_DOWN),
0411 UNIPHIER_PINCTRL_PIN(132, "XIRQ4", 0,
0412 115, UNIPHIER_PIN_DRV_1BIT,
0413 115, UNIPHIER_PIN_PULL_DOWN),
0414 UNIPHIER_PINCTRL_PIN(133, "XIRQ5", 0,
0415 116, UNIPHIER_PIN_DRV_1BIT,
0416 116, UNIPHIER_PIN_PULL_DOWN),
0417 UNIPHIER_PINCTRL_PIN(134, "XIRQ6", 0,
0418 117, UNIPHIER_PIN_DRV_1BIT,
0419 117, UNIPHIER_PIN_PULL_DOWN),
0420 UNIPHIER_PINCTRL_PIN(135, "XIRQ7", 0,
0421 118, UNIPHIER_PIN_DRV_1BIT,
0422 118, UNIPHIER_PIN_PULL_DOWN),
0423
0424 UNIPHIER_PINCTRL_PIN(136, "ED0", -1,
0425 0, UNIPHIER_PIN_DRV_1BIT,
0426 0, UNIPHIER_PIN_PULL_DOWN),
0427 UNIPHIER_PINCTRL_PIN(137, "ED1", -1,
0428 1, UNIPHIER_PIN_DRV_1BIT,
0429 1, UNIPHIER_PIN_PULL_DOWN),
0430 UNIPHIER_PINCTRL_PIN(138, "ED2", -1,
0431 2, UNIPHIER_PIN_DRV_1BIT,
0432 2, UNIPHIER_PIN_PULL_DOWN),
0433 UNIPHIER_PINCTRL_PIN(139, "ED3", -1,
0434 3, UNIPHIER_PIN_DRV_1BIT,
0435 3, UNIPHIER_PIN_PULL_DOWN),
0436 UNIPHIER_PINCTRL_PIN(140, "ED4", -1,
0437 4, UNIPHIER_PIN_DRV_1BIT,
0438 4, UNIPHIER_PIN_PULL_DOWN),
0439 UNIPHIER_PINCTRL_PIN(141, "ED5", -1,
0440 5, UNIPHIER_PIN_DRV_1BIT,
0441 5, UNIPHIER_PIN_PULL_DOWN),
0442 UNIPHIER_PINCTRL_PIN(142, "ED6", -1,
0443 6, UNIPHIER_PIN_DRV_1BIT,
0444 6, UNIPHIER_PIN_PULL_DOWN),
0445 UNIPHIER_PINCTRL_PIN(143, "ED7", -1,
0446 7, UNIPHIER_PIN_DRV_1BIT,
0447 7, UNIPHIER_PIN_PULL_DOWN),
0448 UNIPHIER_PINCTRL_PIN(144, "XERWE0", -1,
0449 8, UNIPHIER_PIN_DRV_1BIT,
0450 8, UNIPHIER_PIN_PULL_UP),
0451 UNIPHIER_PINCTRL_PIN(145, "XERWE1", -1,
0452 9, UNIPHIER_PIN_DRV_1BIT,
0453 9, UNIPHIER_PIN_PULL_UP),
0454 UNIPHIER_PINCTRL_PIN(146, "ERXW", -1,
0455 10, UNIPHIER_PIN_DRV_1BIT,
0456 10, UNIPHIER_PIN_PULL_UP),
0457 UNIPHIER_PINCTRL_PIN(147, "ES0", -1,
0458 11, UNIPHIER_PIN_DRV_1BIT,
0459 11, UNIPHIER_PIN_PULL_UP),
0460 UNIPHIER_PINCTRL_PIN(148, "ES1", -1,
0461 12, UNIPHIER_PIN_DRV_1BIT,
0462 12, UNIPHIER_PIN_PULL_UP),
0463 UNIPHIER_PINCTRL_PIN(149, "ES2", -1,
0464 13, UNIPHIER_PIN_DRV_1BIT,
0465 13, UNIPHIER_PIN_PULL_UP),
0466 UNIPHIER_PINCTRL_PIN(150, "XECS1", -1,
0467 14, UNIPHIER_PIN_DRV_1BIT,
0468 14, UNIPHIER_PIN_PULL_DOWN),
0469 };
0470
0471 static const unsigned emmc_pins[] = {21, 22, 23, 24, 25, 26, 27};
0472 static const int emmc_muxvals[] = {1, 1, 1, 1, 1, 1, 1};
0473 static const unsigned emmc_dat8_pins[] = {28, 29, 30, 31};
0474 static const int emmc_dat8_muxvals[] = {1, 1, 1, 1};
0475 static const unsigned ether_mii_pins[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 13, 14,
0476 61, 63, 64, 65, 66, 67, 68};
0477 static const int ether_mii_muxvals[] = {13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
0478 13, 13, 27, 27, 27, 27, 27, 27, 27};
0479 static const unsigned ether_rmii_pins[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 13,
0480 14};
0481 static const int ether_rmii_muxvals[] = {13, 13, 13, 13, 13, 13, 13, 13, 13,
0482 13, 13, 13};
0483 static const unsigned i2c0_pins[] = {102, 103};
0484 static const int i2c0_muxvals[] = {0, 0};
0485 static const unsigned i2c1_pins[] = {104, 105};
0486 static const int i2c1_muxvals[] = {0, 0};
0487 static const unsigned i2c2_pins[] = {108, 109};
0488 static const int i2c2_muxvals[] = {2, 2};
0489 static const unsigned i2c3_pins[] = {108, 109};
0490 static const int i2c3_muxvals[] = {3, 3};
0491 static const unsigned nand_pins[] = {15, 16, 17, 18, 19, 20, 21, 24, 25, 26,
0492 27, 28, 29, 30, 31};
0493 static const int nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
0494 static const unsigned nand_cs1_pins[] = {22, 23};
0495 static const int nand_cs1_muxvals[] = {0, 0};
0496 static const unsigned sd_pins[] = {32, 33, 34, 35, 36, 37, 38, 39, 40};
0497 static const int sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
0498 static const unsigned spi0_pins[] = {118, 119, 120, 121};
0499 static const int spi0_muxvals[] = {3, 3, 3, 3};
0500 static const unsigned system_bus_pins[] = {136, 137, 138, 139, 140, 141, 142,
0501 143, 144, 145, 146, 147, 148, 149};
0502 static const int system_bus_muxvals[] = {-1, -1, -1, -1, -1, -1, -1, -1, -1,
0503 -1, -1, -1, -1, -1};
0504 static const unsigned system_bus_cs1_pins[] = {150};
0505 static const int system_bus_cs1_muxvals[] = {-1};
0506 static const unsigned system_bus_cs2_pins[] = {10};
0507 static const int system_bus_cs2_muxvals[] = {1};
0508 static const unsigned system_bus_cs3_pins[] = {11};
0509 static const int system_bus_cs3_muxvals[] = {1};
0510 static const unsigned system_bus_cs4_pins[] = {12};
0511 static const int system_bus_cs4_muxvals[] = {1};
0512 static const unsigned system_bus_cs5_pins[] = {13};
0513 static const int system_bus_cs5_muxvals[] = {1};
0514 static const unsigned uart0_pins[] = {70, 71};
0515 static const int uart0_muxvals[] = {3, 3};
0516 static const unsigned uart0_ctsrts_pins[] = {72, 74};
0517 static const int uart0_ctsrts_muxvals[] = {3, 3};
0518 static const unsigned uart0_modem_pins[] = {73};
0519 static const int uart0_modem_muxvals[] = {3};
0520 static const unsigned uart1_pins[] = {114, 115};
0521 static const int uart1_muxvals[] = {0, 0};
0522 static const unsigned uart2_pins[] = {112, 113};
0523 static const int uart2_muxvals[] = {1, 1};
0524 static const unsigned uart3_pins[] = {110, 111};
0525 static const int uart3_muxvals[] = {1, 1};
0526 static const unsigned usb0_pins[] = {41, 42};
0527 static const int usb0_muxvals[] = {0, 0};
0528 static const unsigned usb1_pins[] = {43, 44};
0529 static const int usb1_muxvals[] = {0, 0};
0530 static const unsigned usb2_pins[] = {114, 115};
0531 static const int usb2_muxvals[] = {1, 1};
0532 static const unsigned int gpio_range0_pins[] = {
0533 0, 1, 2, 3, 4, 5, 6, 7,
0534 8, 9, 10, 11, 12, 13, 14, 15,
0535 32, 33, 34, 35, 36, 37, 38, 39,
0536 59, 60, 61, 62, 63, 64, 65, 66,
0537 95, 96, 97, 98, 99, 100, 101, 57,
0538 70, 71, 72, 73, 74, 75, 76, 77,
0539 81, 83, 84, 85, 86, 89, 90, 91,
0540 118, 119, 120, 121, 122, 53, 54, 55,
0541 41, 42, 43, 44, 79, 80, 18, 19,
0542 110, 111, 112, 113, 114, 115, 16, 17,
0543 40, 67, 68, 69, 78, 92, 93, 94,
0544 48, 49, 46, 45, 123, 124, 125, 126,
0545 47, 127, 20, 56, 22,
0546 };
0547 static const unsigned int gpio_range1_pins[] = {
0548 116, 117,
0549 };
0550 static const unsigned int gpio_range2_pins[] = {
0551 102, 103, 104, 105, 106, 107, 108, 109,
0552 128, 129, 130, 131, 132, 133, 134, 135,
0553 82, 87, 88, 50, 51, 23, 52, 58,
0554 };
0555
0556 static const struct uniphier_pinctrl_group uniphier_sld8_groups[] = {
0557 UNIPHIER_PINCTRL_GROUP(emmc),
0558 UNIPHIER_PINCTRL_GROUP(emmc_dat8),
0559 UNIPHIER_PINCTRL_GROUP(ether_mii),
0560 UNIPHIER_PINCTRL_GROUP(ether_rmii),
0561 UNIPHIER_PINCTRL_GROUP(i2c0),
0562 UNIPHIER_PINCTRL_GROUP(i2c1),
0563 UNIPHIER_PINCTRL_GROUP(i2c2),
0564 UNIPHIER_PINCTRL_GROUP(i2c3),
0565 UNIPHIER_PINCTRL_GROUP(nand),
0566 UNIPHIER_PINCTRL_GROUP(nand_cs1),
0567 UNIPHIER_PINCTRL_GROUP(sd),
0568 UNIPHIER_PINCTRL_GROUP(spi0),
0569 UNIPHIER_PINCTRL_GROUP(system_bus),
0570 UNIPHIER_PINCTRL_GROUP(system_bus_cs1),
0571 UNIPHIER_PINCTRL_GROUP(system_bus_cs2),
0572 UNIPHIER_PINCTRL_GROUP(system_bus_cs3),
0573 UNIPHIER_PINCTRL_GROUP(system_bus_cs4),
0574 UNIPHIER_PINCTRL_GROUP(system_bus_cs5),
0575 UNIPHIER_PINCTRL_GROUP(uart0),
0576 UNIPHIER_PINCTRL_GROUP(uart0_ctsrts),
0577 UNIPHIER_PINCTRL_GROUP(uart0_modem),
0578 UNIPHIER_PINCTRL_GROUP(uart1),
0579 UNIPHIER_PINCTRL_GROUP(uart2),
0580 UNIPHIER_PINCTRL_GROUP(uart3),
0581 UNIPHIER_PINCTRL_GROUP(usb0),
0582 UNIPHIER_PINCTRL_GROUP(usb1),
0583 UNIPHIER_PINCTRL_GROUP(usb2),
0584 UNIPHIER_PINCTRL_GROUP_GPIO(gpio_range0),
0585 UNIPHIER_PINCTRL_GROUP_GPIO(gpio_range1),
0586 UNIPHIER_PINCTRL_GROUP_GPIO(gpio_range2),
0587 };
0588
0589 static const char * const emmc_groups[] = {"emmc", "emmc_dat8"};
0590 static const char * const ether_mii_groups[] = {"ether_mii"};
0591 static const char * const ether_rmii_groups[] = {"ether_rmii"};
0592 static const char * const i2c0_groups[] = {"i2c0"};
0593 static const char * const i2c1_groups[] = {"i2c1"};
0594 static const char * const i2c2_groups[] = {"i2c2"};
0595 static const char * const i2c3_groups[] = {"i2c3"};
0596 static const char * const nand_groups[] = {"nand", "nand_cs1"};
0597 static const char * const sd_groups[] = {"sd"};
0598 static const char * const spi0_groups[] = {"spi0"};
0599 static const char * const system_bus_groups[] = {"system_bus",
0600 "system_bus_cs1",
0601 "system_bus_cs2",
0602 "system_bus_cs3",
0603 "system_bus_cs4",
0604 "system_bus_cs5"};
0605 static const char * const uart0_groups[] = {"uart0", "uart0_ctsrts",
0606 "uart0_modem"};
0607 static const char * const uart1_groups[] = {"uart1"};
0608 static const char * const uart2_groups[] = {"uart2"};
0609 static const char * const uart3_groups[] = {"uart3"};
0610 static const char * const usb0_groups[] = {"usb0"};
0611 static const char * const usb1_groups[] = {"usb1"};
0612 static const char * const usb2_groups[] = {"usb2"};
0613
0614 static const struct uniphier_pinmux_function uniphier_sld8_functions[] = {
0615 UNIPHIER_PINMUX_FUNCTION(emmc),
0616 UNIPHIER_PINMUX_FUNCTION(ether_mii),
0617 UNIPHIER_PINMUX_FUNCTION(ether_rmii),
0618 UNIPHIER_PINMUX_FUNCTION(i2c0),
0619 UNIPHIER_PINMUX_FUNCTION(i2c1),
0620 UNIPHIER_PINMUX_FUNCTION(i2c2),
0621 UNIPHIER_PINMUX_FUNCTION(i2c3),
0622 UNIPHIER_PINMUX_FUNCTION(nand),
0623 UNIPHIER_PINMUX_FUNCTION(sd),
0624 UNIPHIER_PINMUX_FUNCTION(spi0),
0625 UNIPHIER_PINMUX_FUNCTION(system_bus),
0626 UNIPHIER_PINMUX_FUNCTION(uart0),
0627 UNIPHIER_PINMUX_FUNCTION(uart1),
0628 UNIPHIER_PINMUX_FUNCTION(uart2),
0629 UNIPHIER_PINMUX_FUNCTION(uart3),
0630 UNIPHIER_PINMUX_FUNCTION(usb0),
0631 UNIPHIER_PINMUX_FUNCTION(usb1),
0632 UNIPHIER_PINMUX_FUNCTION(usb2),
0633 };
0634
0635 static int uniphier_sld8_get_gpio_muxval(unsigned int pin,
0636 unsigned int gpio_offset)
0637 {
0638 switch (gpio_offset) {
0639 case 120 ... 127:
0640 return 0;
0641 case 128 ... 132:
0642 case 134 ... 135:
0643 return 14;
0644 default:
0645 return 15;
0646 }
0647 }
0648
0649 static const struct uniphier_pinctrl_socdata uniphier_sld8_pindata = {
0650 .pins = uniphier_sld8_pins,
0651 .npins = ARRAY_SIZE(uniphier_sld8_pins),
0652 .groups = uniphier_sld8_groups,
0653 .groups_count = ARRAY_SIZE(uniphier_sld8_groups),
0654 .functions = uniphier_sld8_functions,
0655 .functions_count = ARRAY_SIZE(uniphier_sld8_functions),
0656 .get_gpio_muxval = uniphier_sld8_get_gpio_muxval,
0657 .caps = 0,
0658 };
0659
0660 static int uniphier_sld8_pinctrl_probe(struct platform_device *pdev)
0661 {
0662 return uniphier_pinctrl_probe(pdev, &uniphier_sld8_pindata);
0663 }
0664
0665 static const struct of_device_id uniphier_sld8_pinctrl_match[] = {
0666 { .compatible = "socionext,uniphier-sld8-pinctrl" },
0667 { }
0668 };
0669
0670 static struct platform_driver uniphier_sld8_pinctrl_driver = {
0671 .probe = uniphier_sld8_pinctrl_probe,
0672 .driver = {
0673 .name = "uniphier-sld8-pinctrl",
0674 .of_match_table = uniphier_sld8_pinctrl_match,
0675 .pm = &uniphier_pinctrl_pm_ops,
0676 },
0677 };
0678 builtin_platform_driver(uniphier_sld8_pinctrl_driver);