0001
0002
0003
0004
0005
0006 #include <linux/init.h>
0007 #include <linux/kernel.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_nx1_pins[] = {
0015 UNIPHIER_PINCTRL_PIN(0, "LPST", UNIPHIER_PIN_IECTRL_EXIST,
0016 0, UNIPHIER_PIN_DRV_3BIT,
0017 0, UNIPHIER_PIN_PULL_DOWN),
0018 UNIPHIER_PINCTRL_PIN(1, "SDCLK", UNIPHIER_PIN_IECTRL_EXIST,
0019 12, UNIPHIER_PIN_DRV_2BIT,
0020 1, UNIPHIER_PIN_PULL_UP),
0021 UNIPHIER_PINCTRL_PIN(2, "SDCMD", UNIPHIER_PIN_IECTRL_EXIST,
0022 13, UNIPHIER_PIN_DRV_2BIT,
0023 2, UNIPHIER_PIN_PULL_UP),
0024 UNIPHIER_PINCTRL_PIN(3, "SDDAT0", UNIPHIER_PIN_IECTRL_EXIST,
0025 14, UNIPHIER_PIN_DRV_2BIT,
0026 3, UNIPHIER_PIN_PULL_UP),
0027 UNIPHIER_PINCTRL_PIN(4, "SDDAT1", UNIPHIER_PIN_IECTRL_EXIST,
0028 15, UNIPHIER_PIN_DRV_2BIT,
0029 4, UNIPHIER_PIN_PULL_UP),
0030 UNIPHIER_PINCTRL_PIN(5, "SDDAT2", UNIPHIER_PIN_IECTRL_EXIST,
0031 16, UNIPHIER_PIN_DRV_2BIT,
0032 5, UNIPHIER_PIN_PULL_UP),
0033 UNIPHIER_PINCTRL_PIN(6, "SDDAT3", UNIPHIER_PIN_IECTRL_EXIST,
0034 17, UNIPHIER_PIN_DRV_2BIT,
0035 6, UNIPHIER_PIN_PULL_UP),
0036 UNIPHIER_PINCTRL_PIN(7, "SDCD", UNIPHIER_PIN_IECTRL_EXIST,
0037 1, UNIPHIER_PIN_DRV_3BIT,
0038 7, UNIPHIER_PIN_PULL_UP),
0039 UNIPHIER_PINCTRL_PIN(8, "SDWP", UNIPHIER_PIN_IECTRL_EXIST,
0040 2, UNIPHIER_PIN_DRV_3BIT,
0041 8, UNIPHIER_PIN_PULL_UP),
0042 UNIPHIER_PINCTRL_PIN(9, "SDVOLC", UNIPHIER_PIN_IECTRL_EXIST,
0043 3, UNIPHIER_PIN_DRV_3BIT,
0044 9, UNIPHIER_PIN_PULL_UP),
0045 UNIPHIER_PINCTRL_PIN(10, "XERST", UNIPHIER_PIN_IECTRL_EXIST,
0046 0, UNIPHIER_PIN_DRV_2BIT,
0047 10, UNIPHIER_PIN_PULL_DOWN),
0048 UNIPHIER_PINCTRL_PIN(11, "MDC", UNIPHIER_PIN_IECTRL_EXIST,
0049 18, UNIPHIER_PIN_DRV_2BIT,
0050 11, UNIPHIER_PIN_PULL_UP),
0051 UNIPHIER_PINCTRL_PIN(12, "MDIO", UNIPHIER_PIN_IECTRL_EXIST,
0052 19, UNIPHIER_PIN_DRV_2BIT,
0053 12, UNIPHIER_PIN_PULL_UP),
0054 UNIPHIER_PINCTRL_PIN(13, "MDIO_INTL", UNIPHIER_PIN_IECTRL_EXIST,
0055 20, UNIPHIER_PIN_DRV_2BIT,
0056 13, UNIPHIER_PIN_PULL_UP),
0057 UNIPHIER_PINCTRL_PIN(14, "PHYRSTL", UNIPHIER_PIN_IECTRL_EXIST,
0058 -1, UNIPHIER_PIN_DRV_FIXED4,
0059 -1, UNIPHIER_PIN_PULL_NONE),
0060 UNIPHIER_PINCTRL_PIN(15, "RGMII_RXCLK", UNIPHIER_PIN_IECTRL_EXIST,
0061 22, UNIPHIER_PIN_DRV_2BIT,
0062 15, UNIPHIER_PIN_PULL_UP),
0063 UNIPHIER_PINCTRL_PIN(16, "RGMII_RXD0", UNIPHIER_PIN_IECTRL_EXIST,
0064 23, UNIPHIER_PIN_DRV_2BIT,
0065 16, UNIPHIER_PIN_PULL_UP),
0066 UNIPHIER_PINCTRL_PIN(17, "RGMII_RXD1", UNIPHIER_PIN_IECTRL_EXIST,
0067 24, UNIPHIER_PIN_DRV_2BIT,
0068 17, UNIPHIER_PIN_PULL_UP),
0069 UNIPHIER_PINCTRL_PIN(18, "RGMII_RXD2", UNIPHIER_PIN_IECTRL_EXIST,
0070 25, UNIPHIER_PIN_DRV_2BIT,
0071 18, UNIPHIER_PIN_PULL_UP),
0072 UNIPHIER_PINCTRL_PIN(19, "RGMII_RXD3", UNIPHIER_PIN_IECTRL_EXIST,
0073 26, UNIPHIER_PIN_DRV_2BIT,
0074 19, UNIPHIER_PIN_PULL_UP),
0075 UNIPHIER_PINCTRL_PIN(20, "RGMII_RXCTL", UNIPHIER_PIN_IECTRL_EXIST,
0076 27, UNIPHIER_PIN_DRV_2BIT,
0077 20, UNIPHIER_PIN_PULL_UP),
0078 UNIPHIER_PINCTRL_PIN(21, "RGMII_TXCLK", UNIPHIER_PIN_IECTRL_EXIST,
0079 28, UNIPHIER_PIN_DRV_2BIT,
0080 21, UNIPHIER_PIN_PULL_DOWN),
0081 UNIPHIER_PINCTRL_PIN(22, "RGMII_TXD0", UNIPHIER_PIN_IECTRL_EXIST,
0082 29, UNIPHIER_PIN_DRV_2BIT,
0083 22, UNIPHIER_PIN_PULL_DOWN),
0084 UNIPHIER_PINCTRL_PIN(23, "RGMII_TXD1", UNIPHIER_PIN_IECTRL_EXIST,
0085 30, UNIPHIER_PIN_DRV_2BIT,
0086 23, UNIPHIER_PIN_PULL_DOWN),
0087 UNIPHIER_PINCTRL_PIN(24, "RGMII_TXD2", UNIPHIER_PIN_IECTRL_EXIST,
0088 31, UNIPHIER_PIN_DRV_2BIT,
0089 24, UNIPHIER_PIN_PULL_DOWN),
0090 UNIPHIER_PINCTRL_PIN(25, "RGMII_TXD3", UNIPHIER_PIN_IECTRL_EXIST,
0091 32, UNIPHIER_PIN_DRV_2BIT,
0092 25, UNIPHIER_PIN_PULL_DOWN),
0093 UNIPHIER_PINCTRL_PIN(26, "RGMII_TXCTL", UNIPHIER_PIN_IECTRL_EXIST,
0094 33, UNIPHIER_PIN_DRV_2BIT,
0095 26, UNIPHIER_PIN_PULL_DOWN),
0096 UNIPHIER_PINCTRL_PIN(27, "TXD0", UNIPHIER_PIN_IECTRL_EXIST,
0097 4, UNIPHIER_PIN_DRV_3BIT,
0098 27, UNIPHIER_PIN_PULL_UP),
0099 UNIPHIER_PINCTRL_PIN(28, "RXD0", UNIPHIER_PIN_IECTRL_EXIST,
0100 5, UNIPHIER_PIN_DRV_3BIT,
0101 28, UNIPHIER_PIN_PULL_UP),
0102 UNIPHIER_PINCTRL_PIN(29, "TXD1", UNIPHIER_PIN_IECTRL_EXIST,
0103 6, UNIPHIER_PIN_DRV_3BIT,
0104 29, UNIPHIER_PIN_PULL_UP),
0105 UNIPHIER_PINCTRL_PIN(30, "RXD1", UNIPHIER_PIN_IECTRL_EXIST,
0106 7, UNIPHIER_PIN_DRV_3BIT,
0107 30, UNIPHIER_PIN_PULL_UP),
0108 UNIPHIER_PINCTRL_PIN(31, "XRTS1", UNIPHIER_PIN_IECTRL_EXIST,
0109 8, UNIPHIER_PIN_DRV_3BIT,
0110 31, UNIPHIER_PIN_PULL_UP),
0111 UNIPHIER_PINCTRL_PIN(32, "XDTR1", UNIPHIER_PIN_IECTRL_EXIST,
0112 9, UNIPHIER_PIN_DRV_3BIT,
0113 32, UNIPHIER_PIN_PULL_UP),
0114 UNIPHIER_PINCTRL_PIN(33, "XCTS1", UNIPHIER_PIN_IECTRL_EXIST,
0115 10, UNIPHIER_PIN_DRV_3BIT,
0116 33, UNIPHIER_PIN_PULL_UP),
0117 UNIPHIER_PINCTRL_PIN(34, "XDSR1", UNIPHIER_PIN_IECTRL_EXIST,
0118 11, UNIPHIER_PIN_DRV_3BIT,
0119 34, UNIPHIER_PIN_PULL_UP),
0120 UNIPHIER_PINCTRL_PIN(35, "XDCD1", UNIPHIER_PIN_IECTRL_EXIST,
0121 12, UNIPHIER_PIN_DRV_3BIT,
0122 35, UNIPHIER_PIN_PULL_UP),
0123 UNIPHIER_PINCTRL_PIN(36, "TXD2", UNIPHIER_PIN_IECTRL_EXIST,
0124 13, UNIPHIER_PIN_DRV_3BIT,
0125 36, UNIPHIER_PIN_PULL_UP),
0126 UNIPHIER_PINCTRL_PIN(37, "RXD2", UNIPHIER_PIN_IECTRL_EXIST,
0127 14, UNIPHIER_PIN_DRV_3BIT,
0128 37, UNIPHIER_PIN_PULL_UP),
0129 UNIPHIER_PINCTRL_PIN(38, "XRTS2", UNIPHIER_PIN_IECTRL_EXIST,
0130 15, UNIPHIER_PIN_DRV_3BIT,
0131 38, UNIPHIER_PIN_PULL_UP),
0132 UNIPHIER_PINCTRL_PIN(39, "XCTS2", UNIPHIER_PIN_IECTRL_EXIST,
0133 16, UNIPHIER_PIN_DRV_3BIT,
0134 39, UNIPHIER_PIN_PULL_UP),
0135 UNIPHIER_PINCTRL_PIN(40, "TXD3", UNIPHIER_PIN_IECTRL_EXIST,
0136 17, UNIPHIER_PIN_DRV_3BIT,
0137 40, UNIPHIER_PIN_PULL_UP),
0138 UNIPHIER_PINCTRL_PIN(41, "RXD3", UNIPHIER_PIN_IECTRL_EXIST,
0139 18, UNIPHIER_PIN_DRV_3BIT,
0140 41, UNIPHIER_PIN_PULL_UP),
0141 UNIPHIER_PINCTRL_PIN(42, "SPISYNC0", UNIPHIER_PIN_IECTRL_EXIST,
0142 19, UNIPHIER_PIN_DRV_3BIT,
0143 42, UNIPHIER_PIN_PULL_UP),
0144 UNIPHIER_PINCTRL_PIN(43, "SPISCLK0", UNIPHIER_PIN_IECTRL_EXIST,
0145 20, UNIPHIER_PIN_DRV_3BIT,
0146 43, UNIPHIER_PIN_PULL_DOWN),
0147 UNIPHIER_PINCTRL_PIN(44, "SPITXD0", UNIPHIER_PIN_IECTRL_EXIST,
0148 21, UNIPHIER_PIN_DRV_3BIT,
0149 44, UNIPHIER_PIN_PULL_DOWN),
0150 UNIPHIER_PINCTRL_PIN(45, "SPIRXD0", UNIPHIER_PIN_IECTRL_EXIST,
0151 22, UNIPHIER_PIN_DRV_3BIT,
0152 45, UNIPHIER_PIN_PULL_DOWN),
0153 UNIPHIER_PINCTRL_PIN(46, "SPISYNC1", UNIPHIER_PIN_IECTRL_EXIST,
0154 23, UNIPHIER_PIN_DRV_3BIT,
0155 46, UNIPHIER_PIN_PULL_UP),
0156 UNIPHIER_PINCTRL_PIN(47, "SPISCLK1", UNIPHIER_PIN_IECTRL_EXIST,
0157 24, UNIPHIER_PIN_DRV_3BIT,
0158 47, UNIPHIER_PIN_PULL_DOWN),
0159 UNIPHIER_PINCTRL_PIN(48, "SPITXD1", UNIPHIER_PIN_IECTRL_EXIST,
0160 25, UNIPHIER_PIN_DRV_3BIT,
0161 48, UNIPHIER_PIN_PULL_DOWN),
0162 UNIPHIER_PINCTRL_PIN(49, "SPIRXD1", UNIPHIER_PIN_IECTRL_EXIST,
0163 26, UNIPHIER_PIN_DRV_3BIT,
0164 49, UNIPHIER_PIN_PULL_DOWN),
0165 UNIPHIER_PINCTRL_PIN(50, "SDA0", UNIPHIER_PIN_IECTRL_EXIST,
0166 -1, UNIPHIER_PIN_DRV_FIXED4,
0167 -1, UNIPHIER_PIN_PULL_NONE),
0168 UNIPHIER_PINCTRL_PIN(51, "SCL0", UNIPHIER_PIN_IECTRL_EXIST,
0169 -1, UNIPHIER_PIN_DRV_FIXED4,
0170 -1, UNIPHIER_PIN_PULL_NONE),
0171 UNIPHIER_PINCTRL_PIN(52, "SDA1", UNIPHIER_PIN_IECTRL_EXIST,
0172 -1, UNIPHIER_PIN_DRV_FIXED4,
0173 -1, UNIPHIER_PIN_PULL_NONE),
0174 UNIPHIER_PINCTRL_PIN(53, "SCL1", UNIPHIER_PIN_IECTRL_EXIST,
0175 -1, UNIPHIER_PIN_DRV_FIXED4,
0176 -1, UNIPHIER_PIN_PULL_NONE),
0177 UNIPHIER_PINCTRL_PIN(54, "SDA2", UNIPHIER_PIN_IECTRL_EXIST,
0178 -1, UNIPHIER_PIN_DRV_FIXED4,
0179 -1, UNIPHIER_PIN_PULL_NONE),
0180 UNIPHIER_PINCTRL_PIN(55, "SCL2", UNIPHIER_PIN_IECTRL_EXIST,
0181 -1, UNIPHIER_PIN_DRV_FIXED4,
0182 -1, UNIPHIER_PIN_PULL_NONE),
0183 UNIPHIER_PINCTRL_PIN(56, "SDA3", UNIPHIER_PIN_IECTRL_EXIST,
0184 -1, UNIPHIER_PIN_DRV_FIXED4,
0185 -1, UNIPHIER_PIN_PULL_NONE),
0186 UNIPHIER_PINCTRL_PIN(57, "SCL3", UNIPHIER_PIN_IECTRL_EXIST,
0187 -1, UNIPHIER_PIN_DRV_FIXED4,
0188 -1, UNIPHIER_PIN_PULL_NONE),
0189 UNIPHIER_PINCTRL_PIN(58, "XIRQ0", UNIPHIER_PIN_IECTRL_EXIST,
0190 27, UNIPHIER_PIN_DRV_3BIT,
0191 58, UNIPHIER_PIN_PULL_DOWN),
0192 UNIPHIER_PINCTRL_PIN(59, "XIRQ1", UNIPHIER_PIN_IECTRL_EXIST,
0193 28, UNIPHIER_PIN_DRV_3BIT,
0194 59, UNIPHIER_PIN_PULL_DOWN),
0195 UNIPHIER_PINCTRL_PIN(60, "XIRQ2", UNIPHIER_PIN_IECTRL_EXIST,
0196 29, UNIPHIER_PIN_DRV_3BIT,
0197 60, UNIPHIER_PIN_PULL_DOWN),
0198 UNIPHIER_PINCTRL_PIN(61, "XIRQ3", UNIPHIER_PIN_IECTRL_EXIST,
0199 30, UNIPHIER_PIN_DRV_3BIT,
0200 61, UNIPHIER_PIN_PULL_DOWN),
0201 UNIPHIER_PINCTRL_PIN(62, "XIRQ4", UNIPHIER_PIN_IECTRL_EXIST,
0202 31, UNIPHIER_PIN_DRV_3BIT,
0203 62, UNIPHIER_PIN_PULL_DOWN),
0204 UNIPHIER_PINCTRL_PIN(63, "XIRQ5", UNIPHIER_PIN_IECTRL_EXIST,
0205 32, UNIPHIER_PIN_DRV_3BIT,
0206 63, UNIPHIER_PIN_PULL_DOWN),
0207 UNIPHIER_PINCTRL_PIN(64, "PORT00", UNIPHIER_PIN_IECTRL_EXIST,
0208 33, UNIPHIER_PIN_DRV_3BIT,
0209 64, UNIPHIER_PIN_PULL_DOWN),
0210 UNIPHIER_PINCTRL_PIN(65, "PORT01", UNIPHIER_PIN_IECTRL_EXIST,
0211 34, UNIPHIER_PIN_DRV_3BIT,
0212 65, UNIPHIER_PIN_PULL_DOWN),
0213 UNIPHIER_PINCTRL_PIN(66, "PORT02", UNIPHIER_PIN_IECTRL_EXIST,
0214 35, UNIPHIER_PIN_DRV_3BIT,
0215 66, UNIPHIER_PIN_PULL_DOWN),
0216 UNIPHIER_PINCTRL_PIN(67, "PORT03", UNIPHIER_PIN_IECTRL_EXIST,
0217 36, UNIPHIER_PIN_DRV_3BIT,
0218 67, UNIPHIER_PIN_PULL_DOWN),
0219 UNIPHIER_PINCTRL_PIN(68, "PORT04", UNIPHIER_PIN_IECTRL_EXIST,
0220 37, UNIPHIER_PIN_DRV_3BIT,
0221 68, UNIPHIER_PIN_PULL_DOWN),
0222 UNIPHIER_PINCTRL_PIN(69, "PORT05", UNIPHIER_PIN_IECTRL_EXIST,
0223 38, UNIPHIER_PIN_DRV_3BIT,
0224 69, UNIPHIER_PIN_PULL_DOWN),
0225 UNIPHIER_PINCTRL_PIN(70, "PORT06", UNIPHIER_PIN_IECTRL_EXIST,
0226 39, UNIPHIER_PIN_DRV_3BIT,
0227 70, UNIPHIER_PIN_PULL_DOWN),
0228 UNIPHIER_PINCTRL_PIN(71, "PORT07", UNIPHIER_PIN_IECTRL_EXIST,
0229 40, UNIPHIER_PIN_DRV_3BIT,
0230 71, UNIPHIER_PIN_PULL_DOWN),
0231 UNIPHIER_PINCTRL_PIN(72, "PORT10", UNIPHIER_PIN_IECTRL_EXIST,
0232 41, UNIPHIER_PIN_DRV_3BIT,
0233 72, UNIPHIER_PIN_PULL_DOWN),
0234 UNIPHIER_PINCTRL_PIN(73, "PORT11", UNIPHIER_PIN_IECTRL_EXIST,
0235 42, UNIPHIER_PIN_DRV_3BIT,
0236 73, UNIPHIER_PIN_PULL_DOWN),
0237 UNIPHIER_PINCTRL_PIN(74, "PORT12", UNIPHIER_PIN_IECTRL_EXIST,
0238 43, UNIPHIER_PIN_DRV_3BIT,
0239 74, UNIPHIER_PIN_PULL_DOWN),
0240 UNIPHIER_PINCTRL_PIN(75, "PORT13", UNIPHIER_PIN_IECTRL_EXIST,
0241 44, UNIPHIER_PIN_DRV_3BIT,
0242 75, UNIPHIER_PIN_PULL_DOWN),
0243 UNIPHIER_PINCTRL_PIN(76, "PORT14", UNIPHIER_PIN_IECTRL_EXIST,
0244 45, UNIPHIER_PIN_DRV_3BIT,
0245 76, UNIPHIER_PIN_PULL_DOWN),
0246 UNIPHIER_PINCTRL_PIN(77, "PORT15", UNIPHIER_PIN_IECTRL_EXIST,
0247 46, UNIPHIER_PIN_DRV_3BIT,
0248 77, UNIPHIER_PIN_PULL_DOWN),
0249 UNIPHIER_PINCTRL_PIN(78, "USBAVBUS", UNIPHIER_PIN_IECTRL_EXIST,
0250 47, UNIPHIER_PIN_DRV_3BIT,
0251 78, UNIPHIER_PIN_PULL_DOWN),
0252 UNIPHIER_PINCTRL_PIN(79, "USBAOD", UNIPHIER_PIN_IECTRL_EXIST,
0253 48, UNIPHIER_PIN_DRV_3BIT,
0254 79, UNIPHIER_PIN_PULL_UP),
0255 UNIPHIER_PINCTRL_PIN(80, "USBBVBUS", UNIPHIER_PIN_IECTRL_EXIST,
0256 49, UNIPHIER_PIN_DRV_3BIT,
0257 80, UNIPHIER_PIN_PULL_DOWN),
0258 UNIPHIER_PINCTRL_PIN(81, "USBBOD", UNIPHIER_PIN_IECTRL_EXIST,
0259 50, UNIPHIER_PIN_DRV_3BIT,
0260 81, UNIPHIER_PIN_PULL_UP),
0261 UNIPHIER_PINCTRL_PIN(82, "HTDDCSDA0", UNIPHIER_PIN_IECTRL_EXIST,
0262 -1, UNIPHIER_PIN_DRV_FIXED4,
0263 -1, UNIPHIER_PIN_PULL_NONE),
0264 UNIPHIER_PINCTRL_PIN(83, "HTDDCSCL0", UNIPHIER_PIN_IECTRL_EXIST,
0265 -1, UNIPHIER_PIN_DRV_FIXED4,
0266 -1, UNIPHIER_PIN_PULL_NONE),
0267 UNIPHIER_PINCTRL_PIN(84, "HTHPDI0", UNIPHIER_PIN_IECTRL_EXIST,
0268 -1, UNIPHIER_PIN_DRV_FIXED4,
0269 -1, UNIPHIER_PIN_PULL_NONE),
0270 UNIPHIER_PINCTRL_PIN(85, "MMCCLK", UNIPHIER_PIN_IECTRL_EXIST,
0271 1, UNIPHIER_PIN_DRV_2BIT,
0272 85, UNIPHIER_PIN_PULL_DOWN),
0273 UNIPHIER_PINCTRL_PIN(86, "MMCCMD", UNIPHIER_PIN_IECTRL_EXIST,
0274 2, UNIPHIER_PIN_DRV_2BIT,
0275 86, UNIPHIER_PIN_PULL_UP),
0276 UNIPHIER_PINCTRL_PIN(87, "MMCDS", UNIPHIER_PIN_IECTRL_EXIST,
0277 3, UNIPHIER_PIN_DRV_2BIT,
0278 87, UNIPHIER_PIN_PULL_DOWN),
0279 UNIPHIER_PINCTRL_PIN(88, "MMCDAT0", UNIPHIER_PIN_IECTRL_EXIST,
0280 4, UNIPHIER_PIN_DRV_2BIT,
0281 88, UNIPHIER_PIN_PULL_UP),
0282 UNIPHIER_PINCTRL_PIN(89, "MMCDAT1", UNIPHIER_PIN_IECTRL_EXIST,
0283 5, UNIPHIER_PIN_DRV_2BIT,
0284 89, UNIPHIER_PIN_PULL_UP),
0285 UNIPHIER_PINCTRL_PIN(90, "MMCDAT2", UNIPHIER_PIN_IECTRL_EXIST,
0286 6, UNIPHIER_PIN_DRV_2BIT,
0287 90, UNIPHIER_PIN_PULL_UP),
0288 UNIPHIER_PINCTRL_PIN(91, "MMCDAT3", UNIPHIER_PIN_IECTRL_EXIST,
0289 7, UNIPHIER_PIN_DRV_2BIT,
0290 91, UNIPHIER_PIN_PULL_UP),
0291 UNIPHIER_PINCTRL_PIN(92, "MMCDAT4", UNIPHIER_PIN_IECTRL_EXIST,
0292 8, UNIPHIER_PIN_DRV_2BIT,
0293 92, UNIPHIER_PIN_PULL_UP),
0294 UNIPHIER_PINCTRL_PIN(93, "MMCDAT5", UNIPHIER_PIN_IECTRL_EXIST,
0295 9, UNIPHIER_PIN_DRV_2BIT,
0296 93, UNIPHIER_PIN_PULL_UP),
0297 UNIPHIER_PINCTRL_PIN(94, "MMCDAT6", UNIPHIER_PIN_IECTRL_EXIST,
0298 10, UNIPHIER_PIN_DRV_2BIT,
0299 94, UNIPHIER_PIN_PULL_UP),
0300 UNIPHIER_PINCTRL_PIN(95, "MMCDAT7", UNIPHIER_PIN_IECTRL_EXIST,
0301 11, UNIPHIER_PIN_DRV_2BIT,
0302 95, UNIPHIER_PIN_PULL_UP),
0303 };
0304
0305 static const unsigned int emmc_pins[] = {85, 86, 87, 88, 89, 90, 91};
0306 static const int emmc_muxvals[] = {-1, -1, -1, -1, -1, -1, -1};
0307 static const unsigned int emmc_dat8_pins[] = {92, 93, 94, 95};
0308 static const int emmc_dat8_muxvals[] = {-1, -1, -1, -1};
0309 static const unsigned int ether_rgmii_pins[] = {11, 12, 13, 14, 15, 16, 17, 18,
0310 19, 20, 21, 22, 23, 24, 25, 26};
0311 static const int ether_rgmii_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0312 0, 0, 0};
0313 static const unsigned int ether_rmii_pins[] = {11, 12, 13, 14, 15, 16, 17, 18,
0314 20, 22, 23, 26};
0315 static const int ether_rmii_muxvals[] = {0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1};
0316 static const unsigned int i2c0_pins[] = {50, 51};
0317 static const int i2c0_muxvals[] = {0, 0};
0318 static const unsigned int i2c1_pins[] = {52, 53};
0319 static const int i2c1_muxvals[] = {0, 0};
0320 static const unsigned int i2c2_pins[] = {54, 55};
0321 static const int i2c2_muxvals[] = {0, 0};
0322 static const unsigned int i2c3_pins[] = {56, 57};
0323 static const int i2c3_muxvals[] = {0, 0};
0324 static const unsigned int i2c4_pins[] = {72, 73};
0325 static const int i2c4_muxvals[] = {1, 1};
0326 static const unsigned int i2c5_pins[] = {74, 75};
0327 static const int i2c5_muxvals[] = {1, 1};
0328 static const unsigned int i2c6_pins[] = {82, 83};
0329 static const int i2c6_muxvals[] = {1, 1};
0330 static const unsigned int sd_pins[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
0331 static const int sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
0332 static const unsigned spi0_pins[] = {42, 43, 44, 45};
0333 static const int spi0_muxvals[] = {0, 0, 0, 0};
0334 static const unsigned spi1_pins[] = {46, 47, 48, 49};
0335 static const int spi1_muxvals[] = {0, 0, 0, 0};
0336 static const unsigned int uart0_pins[] = {27, 28};
0337 static const int uart0_muxvals[] = {0, 0};
0338 static const unsigned int uart1_pins[] = {29, 30};
0339 static const int uart1_muxvals[] = {0, 0};
0340 static const unsigned int uart1_ctsrts_pins[] = {31, 33};
0341 static const int uart1_ctsrts_muxvals[] = {0, 0};
0342 static const unsigned int uart1_modem_pins[] = {32, 34, 35};
0343 static const int uart1_modem_muxvals[] = {0, 0, 0};
0344 static const unsigned int uart2_pins[] = {36, 37};
0345 static const int uart2_muxvals[] = {0, 0};
0346 static const unsigned int uart2_ctsrts_pins[] = {38, 39};
0347 static const int uart2_ctsrts_muxvals[] = {0, 0};
0348 static const unsigned int uart3_pins[] = {40, 41};
0349 static const int uart3_muxvals[] = {0, 0};
0350 static const unsigned int usb0_pins[] = {78, 79};
0351 static const int usb0_muxvals[] = {0, 0};
0352 static const unsigned int usb1_pins[] = {80, 81};
0353 static const int usb1_muxvals[] = {0, 0};
0354 static const unsigned int gpio_range0_pins[] = {
0355 64, 65, 66, 67, 68, 69, 70, 71,
0356 72, 73, 74, 75, 76, 77, 0, 1,
0357 2, 3, 4, 5, 6, 7, 8, 9,
0358 10, 78, 79, 80, 81,
0359 };
0360 static const unsigned int gpio_range1_pins[] = {
0361 11, 12, 13,
0362 };
0363 static const unsigned int gpio_range2_pins[] = {
0364 15, 16, 17,
0365 18, 19, 20, 21, 22, 23, 24, 25,
0366 26, 27, 28, 29, 30, 31, 32, 33,
0367 34, 35, 36, 37, 38, 39, 40, 41,
0368 42, 43, 44, 45, 46, 47, 48, 49,
0369 };
0370 static const unsigned int gpio_range3_pins[] = {
0371 58, 59, 60, 61, 62, 63,
0372 };
0373 static const unsigned int gpio_range4_pins[] = {
0374 58, 59, 60, 61, 62, 63,
0375 };
0376
0377 static const struct uniphier_pinctrl_group uniphier_nx1_groups[] = {
0378 UNIPHIER_PINCTRL_GROUP(emmc),
0379 UNIPHIER_PINCTRL_GROUP(emmc_dat8),
0380 UNIPHIER_PINCTRL_GROUP(ether_rgmii),
0381 UNIPHIER_PINCTRL_GROUP(ether_rmii),
0382 UNIPHIER_PINCTRL_GROUP(i2c0),
0383 UNIPHIER_PINCTRL_GROUP(i2c1),
0384 UNIPHIER_PINCTRL_GROUP(i2c2),
0385 UNIPHIER_PINCTRL_GROUP(i2c3),
0386 UNIPHIER_PINCTRL_GROUP(i2c4),
0387 UNIPHIER_PINCTRL_GROUP(i2c5),
0388 UNIPHIER_PINCTRL_GROUP(i2c6),
0389 UNIPHIER_PINCTRL_GROUP(sd),
0390 UNIPHIER_PINCTRL_GROUP(spi0),
0391 UNIPHIER_PINCTRL_GROUP(spi1),
0392 UNIPHIER_PINCTRL_GROUP(uart0),
0393 UNIPHIER_PINCTRL_GROUP(uart1),
0394 UNIPHIER_PINCTRL_GROUP(uart1_ctsrts),
0395 UNIPHIER_PINCTRL_GROUP(uart1_modem),
0396 UNIPHIER_PINCTRL_GROUP(uart2),
0397 UNIPHIER_PINCTRL_GROUP(uart2_ctsrts),
0398 UNIPHIER_PINCTRL_GROUP(uart3),
0399 UNIPHIER_PINCTRL_GROUP(usb0),
0400 UNIPHIER_PINCTRL_GROUP(usb1),
0401 UNIPHIER_PINCTRL_GROUP_GPIO(gpio_range0),
0402 UNIPHIER_PINCTRL_GROUP_GPIO(gpio_range1),
0403 UNIPHIER_PINCTRL_GROUP_GPIO(gpio_range2),
0404 UNIPHIER_PINCTRL_GROUP_GPIO(gpio_range3),
0405 UNIPHIER_PINCTRL_GROUP_GPIO(gpio_range4),
0406 };
0407
0408 static const char * const emmc_groups[] = {"emmc", "emmc_dat8"};
0409 static const char * const ether_rgmii_groups[] = {"ether_rgmii"};
0410 static const char * const ether_rmii_groups[] = {"ether_rmii"};
0411 static const char * const i2c0_groups[] = {"i2c0"};
0412 static const char * const i2c1_groups[] = {"i2c1"};
0413 static const char * const i2c2_groups[] = {"i2c2"};
0414 static const char * const i2c3_groups[] = {"i2c3"};
0415 static const char * const i2c4_groups[] = {"i2c4"};
0416 static const char * const i2c5_groups[] = {"i2c5"};
0417 static const char * const i2c6_groups[] = {"i2c6"};
0418 static const char * const sd_groups[] = {"sd"};
0419 static const char * const spi0_groups[] = {"spi0"};
0420 static const char * const spi1_groups[] = {"spi1"};
0421 static const char * const uart0_groups[] = {"uart0"};
0422 static const char * const uart1_groups[] = {"uart1", "uart1_ctsrts",
0423 "uart1_modem"};
0424 static const char * const uart2_groups[] = {"uart2", "uart2_ctsrts"};
0425 static const char * const uart3_groups[] = {"uart3"};
0426 static const char * const usb0_groups[] = {"usb0"};
0427 static const char * const usb1_groups[] = {"usb1"};
0428
0429 static const struct uniphier_pinmux_function uniphier_nx1_functions[] = {
0430 UNIPHIER_PINMUX_FUNCTION(emmc),
0431 UNIPHIER_PINMUX_FUNCTION(ether_rgmii),
0432 UNIPHIER_PINMUX_FUNCTION(ether_rmii),
0433 UNIPHIER_PINMUX_FUNCTION(i2c0),
0434 UNIPHIER_PINMUX_FUNCTION(i2c1),
0435 UNIPHIER_PINMUX_FUNCTION(i2c2),
0436 UNIPHIER_PINMUX_FUNCTION(i2c3),
0437 UNIPHIER_PINMUX_FUNCTION(i2c4),
0438 UNIPHIER_PINMUX_FUNCTION(i2c5),
0439 UNIPHIER_PINMUX_FUNCTION(i2c6),
0440 UNIPHIER_PINMUX_FUNCTION(sd),
0441 UNIPHIER_PINMUX_FUNCTION(spi0),
0442 UNIPHIER_PINMUX_FUNCTION(spi1),
0443 UNIPHIER_PINMUX_FUNCTION(uart0),
0444 UNIPHIER_PINMUX_FUNCTION(uart1),
0445 UNIPHIER_PINMUX_FUNCTION(uart2),
0446 UNIPHIER_PINMUX_FUNCTION(uart3),
0447 UNIPHIER_PINMUX_FUNCTION(usb0),
0448 UNIPHIER_PINMUX_FUNCTION(usb1),
0449 };
0450
0451 static int uniphier_nx1_get_gpio_muxval(unsigned int pin,
0452 unsigned int gpio_offset)
0453 {
0454 if (gpio_offset >= 120)
0455 return 14;
0456
0457 return 15;
0458 }
0459
0460 static const struct uniphier_pinctrl_socdata uniphier_nx1_pindata = {
0461 .pins = uniphier_nx1_pins,
0462 .npins = ARRAY_SIZE(uniphier_nx1_pins),
0463 .groups = uniphier_nx1_groups,
0464 .groups_count = ARRAY_SIZE(uniphier_nx1_groups),
0465 .functions = uniphier_nx1_functions,
0466 .functions_count = ARRAY_SIZE(uniphier_nx1_functions),
0467 .get_gpio_muxval = uniphier_nx1_get_gpio_muxval,
0468 .caps = UNIPHIER_PINCTRL_CAPS_PERPIN_IECTRL,
0469 };
0470
0471 static int uniphier_nx1_pinctrl_probe(struct platform_device *pdev)
0472 {
0473 return uniphier_pinctrl_probe(pdev, &uniphier_nx1_pindata);
0474 }
0475
0476 static const struct of_device_id uniphier_nx1_pinctrl_match[] = {
0477 { .compatible = "socionext,uniphier-nx1-pinctrl" },
0478 { }
0479 };
0480
0481 static struct platform_driver uniphier_nx1_pinctrl_driver = {
0482 .probe = uniphier_nx1_pinctrl_probe,
0483 .driver = {
0484 .name = "uniphier-nx1-pinctrl",
0485 .of_match_table = uniphier_nx1_pinctrl_match,
0486 .pm = &uniphier_pinctrl_pm_ops,
0487 },
0488 };
0489 builtin_platform_driver(uniphier_nx1_pinctrl_driver);