Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0+
0002 //
0003 // Copyright (C) 2015-2017 Socionext Inc.
0004 //   Author: Masahiro Yamada <yamada.masahiro@socionext.com>
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_ld4_pins[] = {
0015     UNIPHIER_PINCTRL_PIN(0, "EA1", UNIPHIER_PIN_IECTRL_NONE,
0016                  8, UNIPHIER_PIN_DRV_1BIT,
0017                  8, UNIPHIER_PIN_PULL_DOWN),
0018     UNIPHIER_PINCTRL_PIN(1, "EA2", UNIPHIER_PIN_IECTRL_NONE,
0019                  9, UNIPHIER_PIN_DRV_1BIT,
0020                  9, UNIPHIER_PIN_PULL_DOWN),
0021     UNIPHIER_PINCTRL_PIN(2, "EA3", UNIPHIER_PIN_IECTRL_NONE,
0022                  10, UNIPHIER_PIN_DRV_1BIT,
0023                  10, UNIPHIER_PIN_PULL_DOWN),
0024     UNIPHIER_PINCTRL_PIN(3, "EA4", UNIPHIER_PIN_IECTRL_NONE,
0025                  11, UNIPHIER_PIN_DRV_1BIT,
0026                  11, UNIPHIER_PIN_PULL_DOWN),
0027     UNIPHIER_PINCTRL_PIN(4, "EA5", UNIPHIER_PIN_IECTRL_NONE,
0028                  12, UNIPHIER_PIN_DRV_1BIT,
0029                  12, UNIPHIER_PIN_PULL_DOWN),
0030     UNIPHIER_PINCTRL_PIN(5, "EA6", UNIPHIER_PIN_IECTRL_NONE,
0031                  13, UNIPHIER_PIN_DRV_1BIT,
0032                  13, UNIPHIER_PIN_PULL_DOWN),
0033     UNIPHIER_PINCTRL_PIN(6, "EA7", UNIPHIER_PIN_IECTRL_NONE,
0034                  14, UNIPHIER_PIN_DRV_1BIT,
0035                  14, UNIPHIER_PIN_PULL_DOWN),
0036     UNIPHIER_PINCTRL_PIN(7, "EA8", 0,
0037                  15, UNIPHIER_PIN_DRV_1BIT,
0038                  15, UNIPHIER_PIN_PULL_DOWN),
0039     UNIPHIER_PINCTRL_PIN(8, "EA9", 0,
0040                  16, UNIPHIER_PIN_DRV_1BIT,
0041                  16, UNIPHIER_PIN_PULL_DOWN),
0042     UNIPHIER_PINCTRL_PIN(9, "EA10", 0,
0043                  17, UNIPHIER_PIN_DRV_1BIT,
0044                  17, UNIPHIER_PIN_PULL_DOWN),
0045     UNIPHIER_PINCTRL_PIN(10, "EA11", 0,
0046                  18, UNIPHIER_PIN_DRV_1BIT,
0047                  18, UNIPHIER_PIN_PULL_DOWN),
0048     UNIPHIER_PINCTRL_PIN(11, "EA12", 0,
0049                  19, UNIPHIER_PIN_DRV_1BIT,
0050                  19, UNIPHIER_PIN_PULL_DOWN),
0051     UNIPHIER_PINCTRL_PIN(12, "EA13", 0,
0052                  20, UNIPHIER_PIN_DRV_1BIT,
0053                  20, UNIPHIER_PIN_PULL_DOWN),
0054     UNIPHIER_PINCTRL_PIN(13, "EA14", 0,
0055                  21, UNIPHIER_PIN_DRV_1BIT,
0056                  21, UNIPHIER_PIN_PULL_DOWN),
0057     UNIPHIER_PINCTRL_PIN(14, "EA15", 0,
0058                  22, UNIPHIER_PIN_DRV_1BIT,
0059                  22, UNIPHIER_PIN_PULL_DOWN),
0060     UNIPHIER_PINCTRL_PIN(15, "ECLK", UNIPHIER_PIN_IECTRL_NONE,
0061                  23, UNIPHIER_PIN_DRV_1BIT,
0062                  23, UNIPHIER_PIN_PULL_DOWN),
0063     UNIPHIER_PINCTRL_PIN(16, "XERWE0", UNIPHIER_PIN_IECTRL_NONE,
0064                  24, UNIPHIER_PIN_DRV_1BIT,
0065                  24, UNIPHIER_PIN_PULL_UP),
0066     UNIPHIER_PINCTRL_PIN(17, "XERWE1", UNIPHIER_PIN_IECTRL_NONE,
0067                  25, UNIPHIER_PIN_DRV_1BIT,
0068                  25, UNIPHIER_PIN_PULL_UP),
0069     UNIPHIER_PINCTRL_PIN(18, "ES0", UNIPHIER_PIN_IECTRL_NONE,
0070                  27, UNIPHIER_PIN_DRV_1BIT,
0071                  27, UNIPHIER_PIN_PULL_UP),
0072     UNIPHIER_PINCTRL_PIN(19, "ES1", UNIPHIER_PIN_IECTRL_NONE,
0073                  28, UNIPHIER_PIN_DRV_1BIT,
0074                  28, UNIPHIER_PIN_PULL_UP),
0075     UNIPHIER_PINCTRL_PIN(20, "ES2", UNIPHIER_PIN_IECTRL_NONE,
0076                  29, UNIPHIER_PIN_DRV_1BIT,
0077                  29, UNIPHIER_PIN_PULL_UP),
0078     UNIPHIER_PINCTRL_PIN(21, "XERST", UNIPHIER_PIN_IECTRL_NONE,
0079                  38, UNIPHIER_PIN_DRV_1BIT,
0080                  38, UNIPHIER_PIN_PULL_UP),
0081     UNIPHIER_PINCTRL_PIN(22, "MMCCLK", UNIPHIER_PIN_IECTRL_NONE,
0082                  0, UNIPHIER_PIN_DRV_2BIT,
0083                  146, UNIPHIER_PIN_PULL_UP),
0084     UNIPHIER_PINCTRL_PIN(23, "MMCCMD", UNIPHIER_PIN_IECTRL_NONE,
0085                  1, UNIPHIER_PIN_DRV_2BIT,
0086                  147, UNIPHIER_PIN_PULL_UP),
0087     UNIPHIER_PINCTRL_PIN(24, "MMCDAT0", UNIPHIER_PIN_IECTRL_NONE,
0088                  2, UNIPHIER_PIN_DRV_2BIT,
0089                  148, UNIPHIER_PIN_PULL_UP),
0090     UNIPHIER_PINCTRL_PIN(25, "MMCDAT1", UNIPHIER_PIN_IECTRL_NONE,
0091                  3, UNIPHIER_PIN_DRV_2BIT,
0092                  149, UNIPHIER_PIN_PULL_UP),
0093     UNIPHIER_PINCTRL_PIN(26, "MMCDAT2", UNIPHIER_PIN_IECTRL_NONE,
0094                  4, UNIPHIER_PIN_DRV_2BIT,
0095                  150, UNIPHIER_PIN_PULL_UP),
0096     UNIPHIER_PINCTRL_PIN(27, "MMCDAT3", UNIPHIER_PIN_IECTRL_NONE,
0097                  5, UNIPHIER_PIN_DRV_2BIT,
0098                  151, UNIPHIER_PIN_PULL_UP),
0099     UNIPHIER_PINCTRL_PIN(28, "MMCDAT4", UNIPHIER_PIN_IECTRL_NONE,
0100                  6, UNIPHIER_PIN_DRV_2BIT,
0101                  152, UNIPHIER_PIN_PULL_UP),
0102     UNIPHIER_PINCTRL_PIN(29, "MMCDAT5", UNIPHIER_PIN_IECTRL_NONE,
0103                  7, UNIPHIER_PIN_DRV_2BIT,
0104                  153, UNIPHIER_PIN_PULL_UP),
0105     UNIPHIER_PINCTRL_PIN(30, "MMCDAT6", UNIPHIER_PIN_IECTRL_NONE,
0106                  8, UNIPHIER_PIN_DRV_2BIT,
0107                  154, UNIPHIER_PIN_PULL_UP),
0108     UNIPHIER_PINCTRL_PIN(31, "MMCDAT7", UNIPHIER_PIN_IECTRL_NONE,
0109                  9, UNIPHIER_PIN_DRV_2BIT,
0110                  155, UNIPHIER_PIN_PULL_UP),
0111     UNIPHIER_PINCTRL_PIN(32, "RMII_RXD0", 6,
0112                  39, UNIPHIER_PIN_DRV_1BIT,
0113                  39, UNIPHIER_PIN_PULL_DOWN),
0114     UNIPHIER_PINCTRL_PIN(33, "RMII_RXD1", 6,
0115                  40, UNIPHIER_PIN_DRV_1BIT,
0116                  40, UNIPHIER_PIN_PULL_DOWN),
0117     UNIPHIER_PINCTRL_PIN(34, "RMII_CRS_DV", 6,
0118                  41, UNIPHIER_PIN_DRV_1BIT,
0119                  41, UNIPHIER_PIN_PULL_DOWN),
0120     UNIPHIER_PINCTRL_PIN(35, "RMII_RXER", 6,
0121                  42, UNIPHIER_PIN_DRV_1BIT,
0122                  42, UNIPHIER_PIN_PULL_DOWN),
0123     UNIPHIER_PINCTRL_PIN(36, "RMII_REFCLK", 6,
0124                  43, UNIPHIER_PIN_DRV_1BIT,
0125                  43, UNIPHIER_PIN_PULL_DOWN),
0126     UNIPHIER_PINCTRL_PIN(37, "RMII_TXD0", 6,
0127                  44, UNIPHIER_PIN_DRV_1BIT,
0128                  44, UNIPHIER_PIN_PULL_DOWN),
0129     UNIPHIER_PINCTRL_PIN(38, "RMII_TXD1", 6,
0130                  45, UNIPHIER_PIN_DRV_1BIT,
0131                  45, UNIPHIER_PIN_PULL_DOWN),
0132     UNIPHIER_PINCTRL_PIN(39, "RMII_TXEN", 6,
0133                  46, UNIPHIER_PIN_DRV_1BIT,
0134                  46, UNIPHIER_PIN_PULL_DOWN),
0135     UNIPHIER_PINCTRL_PIN(40, "MDC", 6,
0136                  47, UNIPHIER_PIN_DRV_1BIT,
0137                  47, UNIPHIER_PIN_PULL_DOWN),
0138     UNIPHIER_PINCTRL_PIN(41, "MDIO", 6,
0139                  48, UNIPHIER_PIN_DRV_1BIT,
0140                  48, UNIPHIER_PIN_PULL_DOWN),
0141     UNIPHIER_PINCTRL_PIN(42, "MDIO_INTL", 6,
0142                  49, UNIPHIER_PIN_DRV_1BIT,
0143                  49, UNIPHIER_PIN_PULL_DOWN),
0144     UNIPHIER_PINCTRL_PIN(43, "PHYRSTL", 6,
0145                  50, UNIPHIER_PIN_DRV_1BIT,
0146                  50, UNIPHIER_PIN_PULL_DOWN),
0147     UNIPHIER_PINCTRL_PIN(44, "SDCLK", UNIPHIER_PIN_IECTRL_NONE,
0148                  10, UNIPHIER_PIN_DRV_2BIT,
0149                  156, UNIPHIER_PIN_PULL_UP),
0150     UNIPHIER_PINCTRL_PIN(45, "SDCMD", UNIPHIER_PIN_IECTRL_NONE,
0151                  11, UNIPHIER_PIN_DRV_2BIT,
0152                  157, UNIPHIER_PIN_PULL_UP),
0153     UNIPHIER_PINCTRL_PIN(46, "SDDAT0", UNIPHIER_PIN_IECTRL_NONE,
0154                  12, UNIPHIER_PIN_DRV_2BIT,
0155                  158, UNIPHIER_PIN_PULL_UP),
0156     UNIPHIER_PINCTRL_PIN(47, "SDDAT1", UNIPHIER_PIN_IECTRL_NONE,
0157                  13, UNIPHIER_PIN_DRV_2BIT,
0158                  159, UNIPHIER_PIN_PULL_UP),
0159     UNIPHIER_PINCTRL_PIN(48, "SDDAT2", UNIPHIER_PIN_IECTRL_NONE,
0160                  14, UNIPHIER_PIN_DRV_2BIT,
0161                  160, UNIPHIER_PIN_PULL_UP),
0162     UNIPHIER_PINCTRL_PIN(49, "SDDAT3", UNIPHIER_PIN_IECTRL_NONE,
0163                  15, UNIPHIER_PIN_DRV_2BIT,
0164                  161, UNIPHIER_PIN_PULL_UP),
0165     UNIPHIER_PINCTRL_PIN(50, "SDCD", UNIPHIER_PIN_IECTRL_NONE,
0166                  51, UNIPHIER_PIN_DRV_1BIT,
0167                  51, UNIPHIER_PIN_PULL_UP),
0168     UNIPHIER_PINCTRL_PIN(51, "SDWP", UNIPHIER_PIN_IECTRL_NONE,
0169                  52, UNIPHIER_PIN_DRV_1BIT,
0170                  52, UNIPHIER_PIN_PULL_UP),
0171     UNIPHIER_PINCTRL_PIN(52, "SDVOLC", UNIPHIER_PIN_IECTRL_NONE,
0172                  53, UNIPHIER_PIN_DRV_1BIT,
0173                  53, UNIPHIER_PIN_PULL_UP),
0174     UNIPHIER_PINCTRL_PIN(53, "USB0VBUS", 0,
0175                  54, UNIPHIER_PIN_DRV_1BIT,
0176                  54, UNIPHIER_PIN_PULL_DOWN),
0177     UNIPHIER_PINCTRL_PIN(54, "USB0OD", 0,
0178                  55, UNIPHIER_PIN_DRV_1BIT,
0179                  55, UNIPHIER_PIN_PULL_DOWN),
0180     UNIPHIER_PINCTRL_PIN(55, "USB1VBUS", 0,
0181                  56, UNIPHIER_PIN_DRV_1BIT,
0182                  56, UNIPHIER_PIN_PULL_DOWN),
0183     UNIPHIER_PINCTRL_PIN(56, "USB1OD", 0,
0184                  57, UNIPHIER_PIN_DRV_1BIT,
0185                  57, UNIPHIER_PIN_PULL_DOWN),
0186     UNIPHIER_PINCTRL_PIN(57, "PCRESET", 0,
0187                  58, UNIPHIER_PIN_DRV_1BIT,
0188                  58, UNIPHIER_PIN_PULL_DOWN),
0189     UNIPHIER_PINCTRL_PIN(58, "PCREG", 0,
0190                  59, UNIPHIER_PIN_DRV_1BIT,
0191                  59, UNIPHIER_PIN_PULL_DOWN),
0192     UNIPHIER_PINCTRL_PIN(59, "PCCE2", 0,
0193                  60, UNIPHIER_PIN_DRV_1BIT,
0194                  60, UNIPHIER_PIN_PULL_DOWN),
0195     UNIPHIER_PINCTRL_PIN(60, "PCVS1", 0,
0196                  61, UNIPHIER_PIN_DRV_1BIT,
0197                  61, UNIPHIER_PIN_PULL_DOWN),
0198     UNIPHIER_PINCTRL_PIN(61, "PCCD2", 0,
0199                  62, UNIPHIER_PIN_DRV_1BIT,
0200                  62, UNIPHIER_PIN_PULL_DOWN),
0201     UNIPHIER_PINCTRL_PIN(62, "PCCD1", 0,
0202                  63, UNIPHIER_PIN_DRV_1BIT,
0203                  63, UNIPHIER_PIN_PULL_DOWN),
0204     UNIPHIER_PINCTRL_PIN(63, "PCREADY", 0,
0205                  64, UNIPHIER_PIN_DRV_1BIT,
0206                  64, UNIPHIER_PIN_PULL_DOWN),
0207     UNIPHIER_PINCTRL_PIN(64, "PCDOE", 0,
0208                  65, UNIPHIER_PIN_DRV_1BIT,
0209                  65, UNIPHIER_PIN_PULL_DOWN),
0210     UNIPHIER_PINCTRL_PIN(65, "PCCE1", 0,
0211                  66, UNIPHIER_PIN_DRV_1BIT,
0212                  66, UNIPHIER_PIN_PULL_DOWN),
0213     UNIPHIER_PINCTRL_PIN(66, "PCWE", 0,
0214                  67, UNIPHIER_PIN_DRV_1BIT,
0215                  67, UNIPHIER_PIN_PULL_DOWN),
0216     UNIPHIER_PINCTRL_PIN(67, "PCOE", 0,
0217                  68, UNIPHIER_PIN_DRV_1BIT,
0218                  68, UNIPHIER_PIN_PULL_DOWN),
0219     UNIPHIER_PINCTRL_PIN(68, "PCWAIT", 0,
0220                  69, UNIPHIER_PIN_DRV_1BIT,
0221                  69, UNIPHIER_PIN_PULL_DOWN),
0222     UNIPHIER_PINCTRL_PIN(69, "PCIOWR", 0,
0223                  70, UNIPHIER_PIN_DRV_1BIT,
0224                  70, UNIPHIER_PIN_PULL_DOWN),
0225     UNIPHIER_PINCTRL_PIN(70, "PCIORD", 0,
0226                  71, UNIPHIER_PIN_DRV_1BIT,
0227                  71, UNIPHIER_PIN_PULL_DOWN),
0228     UNIPHIER_PINCTRL_PIN(71, "HS0DIN0", 0,
0229                  72, UNIPHIER_PIN_DRV_1BIT,
0230                  72, UNIPHIER_PIN_PULL_DOWN),
0231     UNIPHIER_PINCTRL_PIN(72, "HS0DIN1", 0,
0232                  73, UNIPHIER_PIN_DRV_1BIT,
0233                  73, UNIPHIER_PIN_PULL_DOWN),
0234     UNIPHIER_PINCTRL_PIN(73, "HS0DIN2", 0,
0235                  74, UNIPHIER_PIN_DRV_1BIT,
0236                  74, UNIPHIER_PIN_PULL_DOWN),
0237     UNIPHIER_PINCTRL_PIN(74, "HS0DIN3", 0,
0238                  75, UNIPHIER_PIN_DRV_1BIT,
0239                  75, UNIPHIER_PIN_PULL_DOWN),
0240     UNIPHIER_PINCTRL_PIN(75, "HS0DIN4", 0,
0241                  76, UNIPHIER_PIN_DRV_1BIT,
0242                  76, UNIPHIER_PIN_PULL_DOWN),
0243     UNIPHIER_PINCTRL_PIN(76, "HS0DIN5", 0,
0244                  77, UNIPHIER_PIN_DRV_1BIT,
0245                  77, UNIPHIER_PIN_PULL_DOWN),
0246     UNIPHIER_PINCTRL_PIN(77, "HS0DIN6", 0,
0247                  78, UNIPHIER_PIN_DRV_1BIT,
0248                  78, UNIPHIER_PIN_PULL_DOWN),
0249     UNIPHIER_PINCTRL_PIN(78, "HS0DIN7", 0,
0250                  79, UNIPHIER_PIN_DRV_1BIT,
0251                  79, UNIPHIER_PIN_PULL_DOWN),
0252     UNIPHIER_PINCTRL_PIN(79, "HS0BCLKIN", 0,
0253                  80, UNIPHIER_PIN_DRV_1BIT,
0254                  80, UNIPHIER_PIN_PULL_DOWN),
0255     UNIPHIER_PINCTRL_PIN(80, "HS0VALIN", 0,
0256                  81, UNIPHIER_PIN_DRV_1BIT,
0257                  81, UNIPHIER_PIN_PULL_DOWN),
0258     UNIPHIER_PINCTRL_PIN(81, "HS0SYNCIN", 0,
0259                  82, UNIPHIER_PIN_DRV_1BIT,
0260                  82, UNIPHIER_PIN_PULL_DOWN),
0261     UNIPHIER_PINCTRL_PIN(82, "HSDOUT0", 0,
0262                  83, UNIPHIER_PIN_DRV_1BIT,
0263                  83, UNIPHIER_PIN_PULL_DOWN),
0264     UNIPHIER_PINCTRL_PIN(83, "HSDOUT1", 0,
0265                  84, UNIPHIER_PIN_DRV_1BIT,
0266                  84, UNIPHIER_PIN_PULL_DOWN),
0267     UNIPHIER_PINCTRL_PIN(84, "HSDOUT2", 0,
0268                  85, UNIPHIER_PIN_DRV_1BIT,
0269                  85, UNIPHIER_PIN_PULL_DOWN),
0270     UNIPHIER_PINCTRL_PIN(85, "HSDOUT3", 0,
0271                  86, UNIPHIER_PIN_DRV_1BIT,
0272                  86, UNIPHIER_PIN_PULL_DOWN),
0273     UNIPHIER_PINCTRL_PIN(86, "HSDOUT4", 0,
0274                  87, UNIPHIER_PIN_DRV_1BIT,
0275                  87, UNIPHIER_PIN_PULL_DOWN),
0276     UNIPHIER_PINCTRL_PIN(87, "HSDOUT5", 0,
0277                  88, UNIPHIER_PIN_DRV_1BIT,
0278                  88, UNIPHIER_PIN_PULL_DOWN),
0279     UNIPHIER_PINCTRL_PIN(88, "HSDOUT6", 0,
0280                  89, UNIPHIER_PIN_DRV_1BIT,
0281                  89, UNIPHIER_PIN_PULL_DOWN),
0282     UNIPHIER_PINCTRL_PIN(89, "HSDOUT7", 0,
0283                  90, UNIPHIER_PIN_DRV_1BIT,
0284                  90, UNIPHIER_PIN_PULL_DOWN),
0285     UNIPHIER_PINCTRL_PIN(90, "HSBCLKOUT", 0,
0286                  91, UNIPHIER_PIN_DRV_1BIT,
0287                  91, UNIPHIER_PIN_PULL_DOWN),
0288     UNIPHIER_PINCTRL_PIN(91, "HSVALOUT", 0,
0289                  92, UNIPHIER_PIN_DRV_1BIT,
0290                  92, UNIPHIER_PIN_PULL_DOWN),
0291     UNIPHIER_PINCTRL_PIN(92, "HSSYNCOUT", 0,
0292                  93, UNIPHIER_PIN_DRV_1BIT,
0293                  93, UNIPHIER_PIN_PULL_DOWN),
0294     UNIPHIER_PINCTRL_PIN(93, "AGCI", 3,
0295                  -1, UNIPHIER_PIN_DRV_FIXED4,
0296                  162, UNIPHIER_PIN_PULL_DOWN),
0297     UNIPHIER_PINCTRL_PIN(94, "AGCR", 4,
0298                  -1, UNIPHIER_PIN_DRV_FIXED4,
0299                  163, UNIPHIER_PIN_PULL_DOWN),
0300     UNIPHIER_PINCTRL_PIN(95, "AGCBS", 5,
0301                  -1, UNIPHIER_PIN_DRV_FIXED4,
0302                  164, UNIPHIER_PIN_PULL_DOWN),
0303     UNIPHIER_PINCTRL_PIN(96, "IECOUT", 0,
0304                  94, UNIPHIER_PIN_DRV_1BIT,
0305                  94, UNIPHIER_PIN_PULL_DOWN),
0306     UNIPHIER_PINCTRL_PIN(97, "ASMCK", 0,
0307                  95, UNIPHIER_PIN_DRV_1BIT,
0308                  95, UNIPHIER_PIN_PULL_DOWN),
0309     UNIPHIER_PINCTRL_PIN(98, "ABCKO", UNIPHIER_PIN_IECTRL_NONE,
0310                  96, UNIPHIER_PIN_DRV_1BIT,
0311                  96, UNIPHIER_PIN_PULL_DOWN),
0312     UNIPHIER_PINCTRL_PIN(99, "ALRCKO", UNIPHIER_PIN_IECTRL_NONE,
0313                  97, UNIPHIER_PIN_DRV_1BIT,
0314                  97, UNIPHIER_PIN_PULL_DOWN),
0315     UNIPHIER_PINCTRL_PIN(100, "ASDOUT0", UNIPHIER_PIN_IECTRL_NONE,
0316                  98, UNIPHIER_PIN_DRV_1BIT,
0317                  98, UNIPHIER_PIN_PULL_DOWN),
0318     UNIPHIER_PINCTRL_PIN(101, "ARCOUT", 0,
0319                  99, UNIPHIER_PIN_DRV_1BIT,
0320                  99, UNIPHIER_PIN_PULL_DOWN),
0321     UNIPHIER_PINCTRL_PIN(102, "SDA0", UNIPHIER_PIN_IECTRL_NONE,
0322                  -1, UNIPHIER_PIN_DRV_FIXED4,
0323                  -1, UNIPHIER_PIN_PULL_NONE),
0324     UNIPHIER_PINCTRL_PIN(103, "SCL0", UNIPHIER_PIN_IECTRL_NONE,
0325                  -1, UNIPHIER_PIN_DRV_FIXED4,
0326                  -1, UNIPHIER_PIN_PULL_NONE),
0327     UNIPHIER_PINCTRL_PIN(104, "SDA1", UNIPHIER_PIN_IECTRL_NONE,
0328                  -1, UNIPHIER_PIN_DRV_FIXED4,
0329                  -1, UNIPHIER_PIN_PULL_NONE),
0330     UNIPHIER_PINCTRL_PIN(105, "SCL1", UNIPHIER_PIN_IECTRL_NONE,
0331                  -1, UNIPHIER_PIN_DRV_FIXED4,
0332                  -1, UNIPHIER_PIN_PULL_NONE),
0333     UNIPHIER_PINCTRL_PIN(106, "DMDSDA0", UNIPHIER_PIN_IECTRL_NONE,
0334                  -1, UNIPHIER_PIN_DRV_FIXED4,
0335                  -1, UNIPHIER_PIN_PULL_NONE),
0336     UNIPHIER_PINCTRL_PIN(107, "DMDSCL0", UNIPHIER_PIN_IECTRL_NONE,
0337                  -1, UNIPHIER_PIN_DRV_FIXED4,
0338                  -1, UNIPHIER_PIN_PULL_NONE),
0339     UNIPHIER_PINCTRL_PIN(108, "DMDSDA1", UNIPHIER_PIN_IECTRL_NONE,
0340                  -1, UNIPHIER_PIN_DRV_FIXED4,
0341                  -1, UNIPHIER_PIN_PULL_NONE),
0342     UNIPHIER_PINCTRL_PIN(109, "DMDSCL1", UNIPHIER_PIN_IECTRL_NONE,
0343                  -1, UNIPHIER_PIN_DRV_FIXED4,
0344                  -1, UNIPHIER_PIN_PULL_NONE),
0345     UNIPHIER_PINCTRL_PIN(110, "SBO0", UNIPHIER_PIN_IECTRL_NONE,
0346                  100, UNIPHIER_PIN_DRV_1BIT,
0347                  100, UNIPHIER_PIN_PULL_UP),
0348     UNIPHIER_PINCTRL_PIN(111, "SBI0", UNIPHIER_PIN_IECTRL_NONE,
0349                  101, UNIPHIER_PIN_DRV_1BIT,
0350                  101, UNIPHIER_PIN_PULL_UP),
0351     UNIPHIER_PINCTRL_PIN(112, "HIN", 1,
0352                  -1, UNIPHIER_PIN_DRV_FIXED5,
0353                  -1, UNIPHIER_PIN_PULL_NONE),
0354     UNIPHIER_PINCTRL_PIN(113, "VIN", 2,
0355                  -1, UNIPHIER_PIN_DRV_FIXED5,
0356                  -1, UNIPHIER_PIN_PULL_NONE),
0357     UNIPHIER_PINCTRL_PIN(114, "TCON0", UNIPHIER_PIN_IECTRL_NONE,
0358                  102, UNIPHIER_PIN_DRV_1BIT,
0359                  102, UNIPHIER_PIN_PULL_DOWN),
0360     UNIPHIER_PINCTRL_PIN(115, "TCON1", UNIPHIER_PIN_IECTRL_NONE,
0361                  103, UNIPHIER_PIN_DRV_1BIT,
0362                  103, UNIPHIER_PIN_PULL_DOWN),
0363     UNIPHIER_PINCTRL_PIN(116, "TCON2", UNIPHIER_PIN_IECTRL_NONE,
0364                  104, UNIPHIER_PIN_DRV_1BIT,
0365                  104, UNIPHIER_PIN_PULL_DOWN),
0366     UNIPHIER_PINCTRL_PIN(117, "TCON3", UNIPHIER_PIN_IECTRL_NONE,
0367                  105, UNIPHIER_PIN_DRV_1BIT,
0368                  105, UNIPHIER_PIN_PULL_DOWN),
0369     UNIPHIER_PINCTRL_PIN(118, "TCON4", UNIPHIER_PIN_IECTRL_NONE,
0370                  106, UNIPHIER_PIN_DRV_1BIT,
0371                  106, UNIPHIER_PIN_PULL_DOWN),
0372     UNIPHIER_PINCTRL_PIN(119, "TCON5", UNIPHIER_PIN_IECTRL_NONE,
0373                  107, UNIPHIER_PIN_DRV_1BIT,
0374                  107, UNIPHIER_PIN_PULL_DOWN),
0375     UNIPHIER_PINCTRL_PIN(120, "TCON6", 0,
0376                  108, UNIPHIER_PIN_DRV_1BIT,
0377                  108, UNIPHIER_PIN_PULL_DOWN),
0378     UNIPHIER_PINCTRL_PIN(121, "TCON7", 0,
0379                  109, UNIPHIER_PIN_DRV_1BIT,
0380                  109, UNIPHIER_PIN_PULL_DOWN),
0381     UNIPHIER_PINCTRL_PIN(122, "PWMA", 0,
0382                  110, UNIPHIER_PIN_DRV_1BIT,
0383                  110, UNIPHIER_PIN_PULL_DOWN),
0384     UNIPHIER_PINCTRL_PIN(123, "XIRQ1", 0,
0385                  111, UNIPHIER_PIN_DRV_1BIT,
0386                  111, UNIPHIER_PIN_PULL_DOWN),
0387     UNIPHIER_PINCTRL_PIN(124, "XIRQ2", 0,
0388                  112, UNIPHIER_PIN_DRV_1BIT,
0389                  112, UNIPHIER_PIN_PULL_DOWN),
0390     UNIPHIER_PINCTRL_PIN(125, "XIRQ3", 0,
0391                  113, UNIPHIER_PIN_DRV_1BIT,
0392                  113, UNIPHIER_PIN_PULL_DOWN),
0393     UNIPHIER_PINCTRL_PIN(126, "XIRQ4", 0,
0394                  114, UNIPHIER_PIN_DRV_1BIT,
0395                  114, UNIPHIER_PIN_PULL_DOWN),
0396     UNIPHIER_PINCTRL_PIN(127, "XIRQ5", 0,
0397                  115, UNIPHIER_PIN_DRV_1BIT,
0398                  115, UNIPHIER_PIN_PULL_DOWN),
0399     UNIPHIER_PINCTRL_PIN(128, "XIRQ6", 0,
0400                  116, UNIPHIER_PIN_DRV_1BIT,
0401                  116, UNIPHIER_PIN_PULL_DOWN),
0402     UNIPHIER_PINCTRL_PIN(129, "XIRQ7", 0,
0403                  117, UNIPHIER_PIN_DRV_1BIT,
0404                  117, UNIPHIER_PIN_PULL_DOWN),
0405     UNIPHIER_PINCTRL_PIN(130, "XIRQ8", 0,
0406                  118, UNIPHIER_PIN_DRV_1BIT,
0407                  118, UNIPHIER_PIN_PULL_DOWN),
0408     UNIPHIER_PINCTRL_PIN(131, "XIRQ9", 0,
0409                  119, UNIPHIER_PIN_DRV_1BIT,
0410                  119, UNIPHIER_PIN_PULL_DOWN),
0411     UNIPHIER_PINCTRL_PIN(132, "XIRQ10", 0,
0412                  120, UNIPHIER_PIN_DRV_1BIT,
0413                  120, UNIPHIER_PIN_PULL_DOWN),
0414     UNIPHIER_PINCTRL_PIN(133, "XIRQ11", 0,
0415                  121, UNIPHIER_PIN_DRV_1BIT,
0416                  121, UNIPHIER_PIN_PULL_DOWN),
0417     UNIPHIER_PINCTRL_PIN(134, "XIRQ14", 0,
0418                  122, UNIPHIER_PIN_DRV_1BIT,
0419                  122, UNIPHIER_PIN_PULL_DOWN),
0420     UNIPHIER_PINCTRL_PIN(135, "PORT00", 0,
0421                  123, UNIPHIER_PIN_DRV_1BIT,
0422                  123, UNIPHIER_PIN_PULL_DOWN),
0423     UNIPHIER_PINCTRL_PIN(136, "PORT01", 0,
0424                  124, UNIPHIER_PIN_DRV_1BIT,
0425                  124, UNIPHIER_PIN_PULL_DOWN),
0426     UNIPHIER_PINCTRL_PIN(137, "PORT02", 0,
0427                  125, UNIPHIER_PIN_DRV_1BIT,
0428                  125, UNIPHIER_PIN_PULL_DOWN),
0429     UNIPHIER_PINCTRL_PIN(138, "PORT03", 0,
0430                  126, UNIPHIER_PIN_DRV_1BIT,
0431                  126, UNIPHIER_PIN_PULL_DOWN),
0432     UNIPHIER_PINCTRL_PIN(139, "PORT04", 0,
0433                  127, UNIPHIER_PIN_DRV_1BIT,
0434                  127, UNIPHIER_PIN_PULL_DOWN),
0435     UNIPHIER_PINCTRL_PIN(140, "PORT05", 0,
0436                  128, UNIPHIER_PIN_DRV_1BIT,
0437                  128, UNIPHIER_PIN_PULL_DOWN),
0438     UNIPHIER_PINCTRL_PIN(141, "PORT06", 0,
0439                  129, UNIPHIER_PIN_DRV_1BIT,
0440                  129, UNIPHIER_PIN_PULL_DOWN),
0441     UNIPHIER_PINCTRL_PIN(142, "PORT07", 0,
0442                  130, UNIPHIER_PIN_DRV_1BIT,
0443                  130, UNIPHIER_PIN_PULL_DOWN),
0444     UNIPHIER_PINCTRL_PIN(143, "PORT10", 0,
0445                  131, UNIPHIER_PIN_DRV_1BIT,
0446                  131, UNIPHIER_PIN_PULL_DOWN),
0447     UNIPHIER_PINCTRL_PIN(144, "PORT11", 0,
0448                  132, UNIPHIER_PIN_DRV_1BIT,
0449                  132, UNIPHIER_PIN_PULL_DOWN),
0450     UNIPHIER_PINCTRL_PIN(145, "PORT12", 0,
0451                  133, UNIPHIER_PIN_DRV_1BIT,
0452                  133, UNIPHIER_PIN_PULL_DOWN),
0453     UNIPHIER_PINCTRL_PIN(146, "PORT13", 0,
0454                  134, UNIPHIER_PIN_DRV_1BIT,
0455                  134, UNIPHIER_PIN_PULL_DOWN),
0456     UNIPHIER_PINCTRL_PIN(147, "PORT14", 0,
0457                  135, UNIPHIER_PIN_DRV_1BIT,
0458                  135, UNIPHIER_PIN_PULL_DOWN),
0459     UNIPHIER_PINCTRL_PIN(148, "PORT15", 0,
0460                  136, UNIPHIER_PIN_DRV_1BIT,
0461                  136, UNIPHIER_PIN_PULL_DOWN),
0462     UNIPHIER_PINCTRL_PIN(149, "PORT16", 0,
0463                  137, UNIPHIER_PIN_DRV_1BIT,
0464                  137, UNIPHIER_PIN_PULL_DOWN),
0465     UNIPHIER_PINCTRL_PIN(150, "PORT17", UNIPHIER_PIN_IECTRL_NONE,
0466                  138, UNIPHIER_PIN_DRV_1BIT,
0467                  138, UNIPHIER_PIN_PULL_DOWN),
0468     UNIPHIER_PINCTRL_PIN(151, "PORT20", 0,
0469                  139, UNIPHIER_PIN_DRV_1BIT,
0470                  139, UNIPHIER_PIN_PULL_DOWN),
0471     UNIPHIER_PINCTRL_PIN(152, "PORT21", 0,
0472                  140, UNIPHIER_PIN_DRV_1BIT,
0473                  140, UNIPHIER_PIN_PULL_DOWN),
0474     UNIPHIER_PINCTRL_PIN(153, "PORT22", 0,
0475                  141, UNIPHIER_PIN_DRV_1BIT,
0476                  141, UNIPHIER_PIN_PULL_DOWN),
0477     UNIPHIER_PINCTRL_PIN(154, "PORT23", 0,
0478                  142, UNIPHIER_PIN_DRV_1BIT,
0479                  142, UNIPHIER_PIN_PULL_DOWN),
0480     UNIPHIER_PINCTRL_PIN(155, "PORT24", UNIPHIER_PIN_IECTRL_NONE,
0481                  143, UNIPHIER_PIN_DRV_1BIT,
0482                  143, UNIPHIER_PIN_PULL_DOWN),
0483     UNIPHIER_PINCTRL_PIN(156, "PORT25", 0,
0484                  144, UNIPHIER_PIN_DRV_1BIT,
0485                  144, UNIPHIER_PIN_PULL_DOWN),
0486     UNIPHIER_PINCTRL_PIN(157, "PORT26", 0,
0487                  145, UNIPHIER_PIN_DRV_1BIT,
0488                  145, UNIPHIER_PIN_PULL_DOWN),
0489     UNIPHIER_PINCTRL_PIN(158, "XNFRE", UNIPHIER_PIN_IECTRL_NONE,
0490                  31, UNIPHIER_PIN_DRV_1BIT,
0491                  31, UNIPHIER_PIN_PULL_UP),
0492     UNIPHIER_PINCTRL_PIN(159, "XNFWE", UNIPHIER_PIN_IECTRL_NONE,
0493                  32, UNIPHIER_PIN_DRV_1BIT,
0494                  32, UNIPHIER_PIN_PULL_UP),
0495     UNIPHIER_PINCTRL_PIN(160, "NFALE", UNIPHIER_PIN_IECTRL_NONE,
0496                  33, UNIPHIER_PIN_DRV_1BIT,
0497                  33, UNIPHIER_PIN_PULL_DOWN),
0498     UNIPHIER_PINCTRL_PIN(161, "NFCLE", UNIPHIER_PIN_IECTRL_NONE,
0499                  34, UNIPHIER_PIN_DRV_1BIT,
0500                  34, UNIPHIER_PIN_PULL_DOWN),
0501     UNIPHIER_PINCTRL_PIN(162, "XNFWP", UNIPHIER_PIN_IECTRL_NONE,
0502                  35, UNIPHIER_PIN_DRV_1BIT,
0503                  35, UNIPHIER_PIN_PULL_DOWN),
0504     UNIPHIER_PINCTRL_PIN(163, "XNFCE0", UNIPHIER_PIN_IECTRL_NONE,
0505                  36, UNIPHIER_PIN_DRV_1BIT,
0506                  36, UNIPHIER_PIN_PULL_UP),
0507     UNIPHIER_PINCTRL_PIN(164, "NANDRYBY0", UNIPHIER_PIN_IECTRL_NONE,
0508                  37, UNIPHIER_PIN_DRV_1BIT,
0509                  37, UNIPHIER_PIN_PULL_UP),
0510     /* dedicated pins */
0511     UNIPHIER_PINCTRL_PIN(165, "ED0", -1,
0512                  0, UNIPHIER_PIN_DRV_1BIT,
0513                  0, UNIPHIER_PIN_PULL_DOWN),
0514     UNIPHIER_PINCTRL_PIN(166, "ED1", -1,
0515                  1, UNIPHIER_PIN_DRV_1BIT,
0516                  1, UNIPHIER_PIN_PULL_DOWN),
0517     UNIPHIER_PINCTRL_PIN(167, "ED2", -1,
0518                  2, UNIPHIER_PIN_DRV_1BIT,
0519                  2, UNIPHIER_PIN_PULL_DOWN),
0520     UNIPHIER_PINCTRL_PIN(168, "ED3", -1,
0521                  3, UNIPHIER_PIN_DRV_1BIT,
0522                  3, UNIPHIER_PIN_PULL_DOWN),
0523     UNIPHIER_PINCTRL_PIN(169, "ED4", -1,
0524                  4, UNIPHIER_PIN_DRV_1BIT,
0525                  4, UNIPHIER_PIN_PULL_DOWN),
0526     UNIPHIER_PINCTRL_PIN(170, "ED5", -1,
0527                  5, UNIPHIER_PIN_DRV_1BIT,
0528                  5, UNIPHIER_PIN_PULL_DOWN),
0529     UNIPHIER_PINCTRL_PIN(171, "ED6", -1,
0530                  6, UNIPHIER_PIN_DRV_1BIT,
0531                  6, UNIPHIER_PIN_PULL_DOWN),
0532     UNIPHIER_PINCTRL_PIN(172, "ED7", -1,
0533                  7, UNIPHIER_PIN_DRV_1BIT,
0534                  7, UNIPHIER_PIN_PULL_DOWN),
0535     UNIPHIER_PINCTRL_PIN(173, "ERXW", -1,
0536                  26, UNIPHIER_PIN_DRV_1BIT,
0537                  26, UNIPHIER_PIN_PULL_UP),
0538     UNIPHIER_PINCTRL_PIN(174, "XECS1", -1,
0539                  30, UNIPHIER_PIN_DRV_1BIT,
0540                  30, UNIPHIER_PIN_PULL_UP),
0541 };
0542 
0543 static const unsigned emmc_pins[] = {21, 22, 23, 24, 25, 26, 27};
0544 static const int emmc_muxvals[] = {0, 1, 1, 1, 1, 1, 1};
0545 static const unsigned emmc_dat8_pins[] = {28, 29, 30, 31};
0546 static const int emmc_dat8_muxvals[] = {1, 1, 1, 1};
0547 static const unsigned ether_mii_pins[] = {32, 33, 34, 35, 36, 37, 38, 39, 40,
0548                       41, 42, 43, 136, 137, 138, 139, 140,
0549                       141, 142};
0550 static const int ether_mii_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0551                     4, 4, 4, 4, 4, 4, 4};
0552 static const unsigned ether_rmii_pins[] = {32, 33, 34, 35, 36, 37, 38, 39, 40,
0553                        41, 42, 43};
0554 static const int ether_rmii_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
0555 static const unsigned i2c0_pins[] = {102, 103};
0556 static const int i2c0_muxvals[] = {0, 0};
0557 static const unsigned i2c1_pins[] = {104, 105};
0558 static const int i2c1_muxvals[] = {0, 0};
0559 static const unsigned i2c2_pins[] = {108, 109};
0560 static const int i2c2_muxvals[] = {2, 2};
0561 static const unsigned i2c3_pins[] = {108, 109};
0562 static const int i2c3_muxvals[] = {3, 3};
0563 static const unsigned nand_pins[] = {24, 25, 26, 27, 28, 29, 30, 31, 158, 159,
0564                      160, 161, 162, 163, 164};
0565 static const int nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
0566 static const unsigned nand_cs1_pins[] = {22, 23};
0567 static const int nand_cs1_muxvals[] = {0, 0};
0568 static const unsigned sd_pins[] = {44, 45, 46, 47, 48, 49, 50, 51, 52};
0569 static const int sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
0570 static const unsigned spi0_pins[] = {135, 136, 137, 138};
0571 static const int spi0_muxvals[] = {12, 12, 12, 12};
0572 static const unsigned system_bus_pins[] = {16, 17, 18, 19, 20, 165, 166, 167,
0573                        168, 169, 170, 171, 172, 173};
0574 static const int system_bus_muxvals[] = {0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1,
0575                      -1, -1, -1};
0576 static const unsigned system_bus_cs0_pins[] = {155};
0577 static const int system_bus_cs0_muxvals[] = {1};
0578 static const unsigned system_bus_cs1_pins[] = {174};
0579 static const int system_bus_cs1_muxvals[] = {-1};
0580 static const unsigned system_bus_cs2_pins[] = {64};
0581 static const int system_bus_cs2_muxvals[] = {1};
0582 static const unsigned system_bus_cs3_pins[] = {156};
0583 static const int system_bus_cs3_muxvals[] = {1};
0584 static const unsigned uart0_pins[] = {85, 88};
0585 static const int uart0_muxvals[] = {1, 1};
0586 static const unsigned uart0_ctsrts_pins[] = {86, 89};
0587 static const int uart0_ctsrts_muxvals[] = {1, 1};
0588 static const unsigned uart0_modem_pins[] = {87};
0589 static const int uart0_modem_muxvals[] = {1};
0590 static const unsigned uart1_pins[] = {155, 156};
0591 static const int uart1_muxvals[] = {13, 13};
0592 static const unsigned uart1b_pins[] = {69, 70};
0593 static const int uart1b_muxvals[] = {23, 23};
0594 static const unsigned uart2_pins[] = {128, 129};
0595 static const int uart2_muxvals[] = {13, 13};
0596 static const unsigned uart3_pins[] = {110, 111};
0597 static const int uart3_muxvals[] = {1, 1};
0598 static const unsigned usb0_pins[] = {53, 54};
0599 static const int usb0_muxvals[] = {0, 0};
0600 static const unsigned usb1_pins[] = {55, 56};
0601 static const int usb1_muxvals[] = {0, 0};
0602 static const unsigned usb2_pins[] = {155, 156};
0603 static const int usb2_muxvals[] = {4, 4};
0604 static const unsigned usb2b_pins[] = {67, 68};
0605 static const int usb2b_muxvals[] = {23, 23};
0606 static const unsigned int gpio_range_pins[] = {
0607     135, 136, 137, 138, 139, 140, 141, 142, /* PORT0x */
0608     143, 144, 145, 146, 147, 148, 149, 150, /* PORT1x */
0609     151, 152, 153, 154, 155, 156, 157, 0,   /* PORT2x */
0610     1, 2, 3, 4, 5, 120, 121, 122,       /* PORT3x */
0611     24, 25, 26, 27, 28, 29, 30, 31,     /* PORT4x */
0612     40, 41, 42, 43, 44, 45, 46, 47,     /* PORT5x */
0613     48, 49, 50, 51, 52, 53, 54, 55,     /* PORT6x */
0614     56, 85, 84, 59, 82, 61, 64, 65,     /* PORT7x */
0615     8, 9, 10, 11, 12, 13, 14, 15,       /* PORT8x */
0616     66, 67, 68, 69, 70, 71, 72, 73,     /* PORT9x */
0617     74, 75, 89, 86, 78, 79, 80, 81,     /* PORT10x */
0618     60, 83, 58, 57, 88, 87, 77, 76,     /* PORT11x */
0619     90, 91, 92, 93, 94, 95, 96, 97,     /* PORT12x */
0620     98, 99, 100, 6, 101, 114, 115, 116, /* PORT13x */
0621     103, 108, 21, 22, 23, 117, 118, 119,    /* PORT14x */
0622     151, 123, 124, 125, 126, 127, 128, 129, /* XIRQ0-7 */
0623     130, 131, 132, 133, 62, 7, 134, 63,   /* XIRQ8-12, PORT165, XIRQ14-15 */
0624 };
0625 
0626 static const struct uniphier_pinctrl_group uniphier_ld4_groups[] = {
0627     UNIPHIER_PINCTRL_GROUP(emmc),
0628     UNIPHIER_PINCTRL_GROUP(emmc_dat8),
0629     UNIPHIER_PINCTRL_GROUP(ether_mii),
0630     UNIPHIER_PINCTRL_GROUP(ether_rmii),
0631     UNIPHIER_PINCTRL_GROUP(i2c0),
0632     UNIPHIER_PINCTRL_GROUP(i2c1),
0633     UNIPHIER_PINCTRL_GROUP(i2c2),
0634     UNIPHIER_PINCTRL_GROUP(i2c3),
0635     UNIPHIER_PINCTRL_GROUP(nand),
0636     UNIPHIER_PINCTRL_GROUP(nand_cs1),
0637     UNIPHIER_PINCTRL_GROUP(sd),
0638     UNIPHIER_PINCTRL_GROUP(spi0),
0639     UNIPHIER_PINCTRL_GROUP(system_bus),
0640     UNIPHIER_PINCTRL_GROUP(system_bus_cs0),
0641     UNIPHIER_PINCTRL_GROUP(system_bus_cs1),
0642     UNIPHIER_PINCTRL_GROUP(system_bus_cs2),
0643     UNIPHIER_PINCTRL_GROUP(system_bus_cs3),
0644     UNIPHIER_PINCTRL_GROUP(uart0),
0645     UNIPHIER_PINCTRL_GROUP(uart0_ctsrts),
0646     UNIPHIER_PINCTRL_GROUP(uart0_modem),
0647     UNIPHIER_PINCTRL_GROUP(uart1),
0648     UNIPHIER_PINCTRL_GROUP(uart1b),
0649     UNIPHIER_PINCTRL_GROUP(uart2),
0650     UNIPHIER_PINCTRL_GROUP(uart3),
0651     UNIPHIER_PINCTRL_GROUP(usb0),
0652     UNIPHIER_PINCTRL_GROUP(usb1),
0653     UNIPHIER_PINCTRL_GROUP(usb2),
0654     UNIPHIER_PINCTRL_GROUP(usb2b),
0655     UNIPHIER_PINCTRL_GROUP_GPIO(gpio_range),
0656 };
0657 
0658 static const char * const emmc_groups[] = {"emmc", "emmc_dat8"};
0659 static const char * const ether_mii_groups[] = {"ether_mii"};
0660 static const char * const ether_rmii_groups[] = {"ether_rmii"};
0661 static const char * const i2c0_groups[] = {"i2c0"};
0662 static const char * const i2c1_groups[] = {"i2c1"};
0663 static const char * const i2c2_groups[] = {"i2c2"};
0664 static const char * const i2c3_groups[] = {"i2c3"};
0665 static const char * const nand_groups[] = {"nand", "nand_cs1"};
0666 static const char * const sd_groups[] = {"sd"};
0667 static const char * const spi0_groups[] = {"spi0"};
0668 static const char * const system_bus_groups[] = {"system_bus",
0669                          "system_bus_cs0",
0670                          "system_bus_cs1",
0671                          "system_bus_cs2",
0672                          "system_bus_cs3"};
0673 static const char * const uart0_groups[] = {"uart0", "uart0_ctsrts",
0674                         "uart0_modem"};
0675 static const char * const uart1_groups[] = {"uart1", "uart1b"};
0676 static const char * const uart2_groups[] = {"uart2"};
0677 static const char * const uart3_groups[] = {"uart3"};
0678 static const char * const usb0_groups[] = {"usb0"};
0679 static const char * const usb1_groups[] = {"usb1"};
0680 static const char * const usb2_groups[] = {"usb2", "usb2b"};
0681 
0682 static const struct uniphier_pinmux_function uniphier_ld4_functions[] = {
0683     UNIPHIER_PINMUX_FUNCTION(emmc),
0684     UNIPHIER_PINMUX_FUNCTION(ether_mii),
0685     UNIPHIER_PINMUX_FUNCTION(ether_rmii),
0686     UNIPHIER_PINMUX_FUNCTION(i2c0),
0687     UNIPHIER_PINMUX_FUNCTION(i2c1),
0688     UNIPHIER_PINMUX_FUNCTION(i2c2),
0689     UNIPHIER_PINMUX_FUNCTION(i2c3),
0690     UNIPHIER_PINMUX_FUNCTION(nand),
0691     UNIPHIER_PINMUX_FUNCTION(sd),
0692     UNIPHIER_PINMUX_FUNCTION(spi0),
0693     UNIPHIER_PINMUX_FUNCTION(system_bus),
0694     UNIPHIER_PINMUX_FUNCTION(uart0),
0695     UNIPHIER_PINMUX_FUNCTION(uart1),
0696     UNIPHIER_PINMUX_FUNCTION(uart2),
0697     UNIPHIER_PINMUX_FUNCTION(uart3),
0698     UNIPHIER_PINMUX_FUNCTION(usb0),
0699     UNIPHIER_PINMUX_FUNCTION(usb1),
0700     UNIPHIER_PINMUX_FUNCTION(usb2),
0701 };
0702 
0703 static int uniphier_ld4_get_gpio_muxval(unsigned int pin,
0704                     unsigned int gpio_offset)
0705 {
0706     switch (gpio_offset) {
0707     case 0 ... 22:      /* PORT00-PORT26 */
0708     case 121 ... 131:   /* XIRQ1-XIRQ11 */
0709     case 134:       /* XIRQ14 */
0710         return 0;
0711     case 120:       /* XIRQ0 */
0712     case 132:       /* XIRQ12 */
0713     case 135:       /* XIRQ15 */
0714         return 14;
0715     default:
0716         return 15;
0717     }
0718 }
0719 
0720 static const struct uniphier_pinctrl_socdata uniphier_ld4_pindata = {
0721     .pins = uniphier_ld4_pins,
0722     .npins = ARRAY_SIZE(uniphier_ld4_pins),
0723     .groups = uniphier_ld4_groups,
0724     .groups_count = ARRAY_SIZE(uniphier_ld4_groups),
0725     .functions = uniphier_ld4_functions,
0726     .functions_count = ARRAY_SIZE(uniphier_ld4_functions),
0727     .get_gpio_muxval = uniphier_ld4_get_gpio_muxval,
0728     .caps = 0,
0729 };
0730 
0731 static int uniphier_ld4_pinctrl_probe(struct platform_device *pdev)
0732 {
0733     return uniphier_pinctrl_probe(pdev, &uniphier_ld4_pindata);
0734 }
0735 
0736 static const struct of_device_id uniphier_ld4_pinctrl_match[] = {
0737     { .compatible = "socionext,uniphier-ld4-pinctrl" },
0738     { /* sentinel */ }
0739 };
0740 
0741 static struct platform_driver uniphier_ld4_pinctrl_driver = {
0742     .probe = uniphier_ld4_pinctrl_probe,
0743     .driver = {
0744         .name = "uniphier-ld4-pinctrl",
0745         .of_match_table = uniphier_ld4_pinctrl_match,
0746         .pm = &uniphier_pinctrl_pm_ops,
0747     },
0748 };
0749 builtin_platform_driver(uniphier_ld4_pinctrl_driver);