Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0+
0002 //
0003 // Copyright (C) 2019 Socionext Inc.
0004 //   Author: Masahiro Yamada <yamada.masahiro@socionext.com>
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,         /* PORT0x */
0356     72, 73, 74, 75, 76, 77, 0, 1,           /* PORT1x */
0357     2, 3, 4, 5, 6, 7, 8, 9,             /* PORT2x */
0358     10, 78, 79, 80, 81,             /* PORT30-34 */
0359 };
0360 static const unsigned int gpio_range1_pins[] = {
0361     11, 12, 13,                 /* PORT61-63 */
0362 };
0363 static const unsigned int gpio_range2_pins[] = {
0364     15, 16, 17,                 /* PORT65-67 */
0365     18, 19, 20, 21, 22, 23, 24, 25,         /* PORT7x */
0366     26, 27, 28, 29, 30, 31, 32, 33,         /* PORT8x */
0367     34, 35, 36, 37, 38, 39, 40, 41,         /* PORT9x */
0368     42, 43, 44, 45, 46, 47, 48, 49,         /* PORT10x */
0369 };
0370 static const unsigned int gpio_range3_pins[] = {
0371     58, 59, 60, 61, 62, 63,             /* PORT12x */
0372 };
0373 static const unsigned int gpio_range4_pins[] = {
0374     58, 59, 60, 61, 62, 63,             /* XIRQ0-5 */
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) /* XIRQx */
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     { /* sentinel */ }
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);