linux/drivers/pinctrl/sh-pfc/pfc-sh7786.c
<<
>>
Prefs
   1// SPDX-License-Identifier: GPL-2.0
   2/*
   3 * SH7786 Pinmux
   4 *
   5 * Copyright (C) 2008, 2009  Renesas Solutions Corp.
   6 * Kuninori Morimoto <morimoto.kuninori@renesas.com>
   7 *
   8 *  Based on SH7785 pinmux
   9 *
  10 *  Copyright (C) 2008  Magnus Damm
  11 */
  12
  13#include <linux/init.h>
  14#include <linux/kernel.h>
  15#include <cpu/sh7786.h>
  16
  17#include "sh_pfc.h"
  18
  19enum {
  20        PINMUX_RESERVED = 0,
  21
  22        PINMUX_DATA_BEGIN,
  23        PA7_DATA, PA6_DATA, PA5_DATA, PA4_DATA,
  24        PA3_DATA, PA2_DATA, PA1_DATA, PA0_DATA,
  25        PB7_DATA, PB6_DATA, PB5_DATA, PB4_DATA,
  26        PB3_DATA, PB2_DATA, PB1_DATA, PB0_DATA,
  27        PC7_DATA, PC6_DATA, PC5_DATA, PC4_DATA,
  28        PC3_DATA, PC2_DATA, PC1_DATA, PC0_DATA,
  29        PD7_DATA, PD6_DATA, PD5_DATA, PD4_DATA,
  30        PD3_DATA, PD2_DATA, PD1_DATA, PD0_DATA,
  31        PE7_DATA, PE6_DATA,
  32        PF7_DATA, PF6_DATA, PF5_DATA, PF4_DATA,
  33        PF3_DATA, PF2_DATA, PF1_DATA, PF0_DATA,
  34        PG7_DATA, PG6_DATA, PG5_DATA,
  35        PH7_DATA, PH6_DATA, PH5_DATA, PH4_DATA,
  36        PH3_DATA, PH2_DATA, PH1_DATA, PH0_DATA,
  37        PJ7_DATA, PJ6_DATA, PJ5_DATA, PJ4_DATA,
  38        PJ3_DATA, PJ2_DATA, PJ1_DATA,
  39        PINMUX_DATA_END,
  40
  41        PINMUX_INPUT_BEGIN,
  42        PA7_IN, PA6_IN, PA5_IN, PA4_IN,
  43        PA3_IN, PA2_IN, PA1_IN, PA0_IN,
  44        PB7_IN, PB6_IN, PB5_IN, PB4_IN,
  45        PB3_IN, PB2_IN, PB1_IN, PB0_IN,
  46        PC7_IN, PC6_IN, PC5_IN, PC4_IN,
  47        PC3_IN, PC2_IN, PC1_IN, PC0_IN,
  48        PD7_IN, PD6_IN, PD5_IN, PD4_IN,
  49        PD3_IN, PD2_IN, PD1_IN, PD0_IN,
  50        PE7_IN, PE6_IN,
  51        PF7_IN, PF6_IN, PF5_IN, PF4_IN,
  52        PF3_IN, PF2_IN, PF1_IN, PF0_IN,
  53        PG7_IN, PG6_IN, PG5_IN,
  54        PH7_IN, PH6_IN, PH5_IN, PH4_IN,
  55        PH3_IN, PH2_IN, PH1_IN, PH0_IN,
  56        PJ7_IN, PJ6_IN, PJ5_IN, PJ4_IN,
  57        PJ3_IN, PJ2_IN, PJ1_IN,
  58        PINMUX_INPUT_END,
  59
  60        PINMUX_OUTPUT_BEGIN,
  61        PA7_OUT, PA6_OUT, PA5_OUT, PA4_OUT,
  62        PA3_OUT, PA2_OUT, PA1_OUT, PA0_OUT,
  63        PB7_OUT, PB6_OUT, PB5_OUT, PB4_OUT,
  64        PB3_OUT, PB2_OUT, PB1_OUT, PB0_OUT,
  65        PC7_OUT, PC6_OUT, PC5_OUT, PC4_OUT,
  66        PC3_OUT, PC2_OUT, PC1_OUT, PC0_OUT,
  67        PD7_OUT, PD6_OUT, PD5_OUT, PD4_OUT,
  68        PD3_OUT, PD2_OUT, PD1_OUT, PD0_OUT,
  69        PE7_OUT, PE6_OUT,
  70        PF7_OUT, PF6_OUT, PF5_OUT, PF4_OUT,
  71        PF3_OUT, PF2_OUT, PF1_OUT, PF0_OUT,
  72        PG7_OUT, PG6_OUT, PG5_OUT,
  73        PH7_OUT, PH6_OUT, PH5_OUT, PH4_OUT,
  74        PH3_OUT, PH2_OUT, PH1_OUT, PH0_OUT,
  75        PJ7_OUT, PJ6_OUT, PJ5_OUT, PJ4_OUT,
  76        PJ3_OUT, PJ2_OUT, PJ1_OUT,
  77        PINMUX_OUTPUT_END,
  78
  79        PINMUX_FUNCTION_BEGIN,
  80        PA7_FN, PA6_FN, PA5_FN, PA4_FN,
  81        PA3_FN, PA2_FN, PA1_FN, PA0_FN,
  82        PB7_FN, PB6_FN, PB5_FN, PB4_FN,
  83        PB3_FN, PB2_FN, PB1_FN, PB0_FN,
  84        PC7_FN, PC6_FN, PC5_FN, PC4_FN,
  85        PC3_FN, PC2_FN, PC1_FN, PC0_FN,
  86        PD7_FN, PD6_FN, PD5_FN, PD4_FN,
  87        PD3_FN, PD2_FN, PD1_FN, PD0_FN,
  88        PE7_FN, PE6_FN,
  89        PF7_FN, PF6_FN, PF5_FN, PF4_FN,
  90        PF3_FN, PF2_FN, PF1_FN, PF0_FN,
  91        PG7_FN, PG6_FN, PG5_FN,
  92        PH7_FN, PH6_FN, PH5_FN, PH4_FN,
  93        PH3_FN, PH2_FN, PH1_FN, PH0_FN,
  94        PJ7_FN, PJ6_FN, PJ5_FN, PJ4_FN,
  95        PJ3_FN, PJ2_FN, PJ1_FN,
  96        P1MSEL14_0, P1MSEL14_1,
  97        P1MSEL13_0, P1MSEL13_1,
  98        P1MSEL12_0, P1MSEL12_1,
  99        P1MSEL11_0, P1MSEL11_1,
 100        P1MSEL10_0, P1MSEL10_1,
 101        P1MSEL9_0, P1MSEL9_1,
 102        P1MSEL8_0, P1MSEL8_1,
 103        P1MSEL7_0, P1MSEL7_1,
 104        P1MSEL6_0, P1MSEL6_1,
 105        P1MSEL5_0, P1MSEL5_1,
 106        P1MSEL4_0, P1MSEL4_1,
 107        P1MSEL3_0, P1MSEL3_1,
 108        P1MSEL2_0, P1MSEL2_1,
 109        P1MSEL1_0, P1MSEL1_1,
 110        P1MSEL0_0, P1MSEL0_1,
 111
 112        P2MSEL15_0, P2MSEL15_1,
 113        P2MSEL14_0, P2MSEL14_1,
 114        P2MSEL13_0, P2MSEL13_1,
 115        P2MSEL12_0, P2MSEL12_1,
 116        P2MSEL11_0, P2MSEL11_1,
 117        P2MSEL10_0, P2MSEL10_1,
 118        P2MSEL9_0, P2MSEL9_1,
 119        P2MSEL8_0, P2MSEL8_1,
 120        P2MSEL7_0, P2MSEL7_1,
 121        P2MSEL6_0, P2MSEL6_1,
 122        P2MSEL5_0, P2MSEL5_1,
 123        P2MSEL4_0, P2MSEL4_1,
 124        P2MSEL3_0, P2MSEL3_1,
 125        P2MSEL2_0, P2MSEL2_1,
 126        P2MSEL1_0, P2MSEL1_1,
 127        P2MSEL0_0, P2MSEL0_1,
 128        PINMUX_FUNCTION_END,
 129
 130        PINMUX_MARK_BEGIN,
 131        DCLKIN_MARK, DCLKOUT_MARK, ODDF_MARK,
 132        VSYNC_MARK, HSYNC_MARK, CDE_MARK, DISP_MARK,
 133        DR0_MARK, DR1_MARK, DR2_MARK, DR3_MARK, DR4_MARK, DR5_MARK,
 134        DG0_MARK, DG1_MARK, DG2_MARK, DG3_MARK, DG4_MARK, DG5_MARK,
 135        DB0_MARK, DB1_MARK, DB2_MARK, DB3_MARK, DB4_MARK, DB5_MARK,
 136        ETH_MAGIC_MARK, ETH_LINK_MARK, ETH_TX_ER_MARK, ETH_TX_EN_MARK,
 137        ETH_MDIO_MARK, ETH_RX_CLK_MARK, ETH_MDC_MARK, ETH_COL_MARK,
 138        ETH_TX_CLK_MARK, ETH_CRS_MARK, ETH_RX_DV_MARK, ETH_RX_ER_MARK,
 139        ETH_TXD3_MARK, ETH_TXD2_MARK, ETH_TXD1_MARK, ETH_TXD0_MARK,
 140        ETH_RXD3_MARK, ETH_RXD2_MARK, ETH_RXD1_MARK, ETH_RXD0_MARK,
 141        HSPI_CLK_MARK, HSPI_CS_MARK, HSPI_RX_MARK, HSPI_TX_MARK,
 142        SCIF0_CTS_MARK, SCIF0_RTS_MARK,
 143        SCIF0_SCK_MARK, SCIF0_RXD_MARK, SCIF0_TXD_MARK,
 144        SCIF1_SCK_MARK, SCIF1_RXD_MARK, SCIF1_TXD_MARK,
 145        SCIF3_SCK_MARK, SCIF3_RXD_MARK, SCIF3_TXD_MARK,
 146        SCIF4_SCK_MARK, SCIF4_RXD_MARK, SCIF4_TXD_MARK,
 147        SCIF5_SCK_MARK, SCIF5_RXD_MARK, SCIF5_TXD_MARK,
 148        BREQ_MARK, IOIS16_MARK, CE2B_MARK, CE2A_MARK, BACK_MARK,
 149        FALE_MARK, FRB_MARK, FSTATUS_MARK,
 150        FSE_MARK, FCLE_MARK,
 151        DACK0_MARK, DACK1_MARK, DACK2_MARK, DACK3_MARK,
 152        DREQ0_MARK, DREQ1_MARK, DREQ2_MARK, DREQ3_MARK,
 153        DRAK0_MARK, DRAK1_MARK, DRAK2_MARK, DRAK3_MARK,
 154        USB_OVC1_MARK, USB_OVC0_MARK,
 155        USB_PENC1_MARK, USB_PENC0_MARK,
 156        HAC_RES_MARK,
 157        HAC1_SDOUT_MARK, HAC1_SDIN_MARK, HAC1_SYNC_MARK, HAC1_BITCLK_MARK,
 158        HAC0_SDOUT_MARK, HAC0_SDIN_MARK, HAC0_SYNC_MARK, HAC0_BITCLK_MARK,
 159        SSI0_SDATA_MARK, SSI0_SCK_MARK, SSI0_WS_MARK, SSI0_CLK_MARK,
 160        SSI1_SDATA_MARK, SSI1_SCK_MARK, SSI1_WS_MARK, SSI1_CLK_MARK,
 161        SSI2_SDATA_MARK, SSI2_SCK_MARK, SSI2_WS_MARK,
 162        SSI3_SDATA_MARK, SSI3_SCK_MARK, SSI3_WS_MARK,
 163        SDIF1CMD_MARK, SDIF1CD_MARK, SDIF1WP_MARK, SDIF1CLK_MARK,
 164        SDIF1D3_MARK, SDIF1D2_MARK, SDIF1D1_MARK, SDIF1D0_MARK,
 165        SDIF0CMD_MARK, SDIF0CD_MARK, SDIF0WP_MARK, SDIF0CLK_MARK,
 166        SDIF0D3_MARK, SDIF0D2_MARK, SDIF0D1_MARK, SDIF0D0_MARK,
 167        TCLK_MARK,
 168        IRL7_MARK, IRL6_MARK, IRL5_MARK, IRL4_MARK,
 169        PINMUX_MARK_END,
 170};
 171
 172static const u16 pinmux_data[] = {
 173        /* PA GPIO */
 174        PINMUX_DATA(PA7_DATA, PA7_IN, PA7_OUT),
 175        PINMUX_DATA(PA6_DATA, PA6_IN, PA6_OUT),
 176        PINMUX_DATA(PA5_DATA, PA5_IN, PA5_OUT),
 177        PINMUX_DATA(PA4_DATA, PA4_IN, PA4_OUT),
 178        PINMUX_DATA(PA3_DATA, PA3_IN, PA3_OUT),
 179        PINMUX_DATA(PA2_DATA, PA2_IN, PA2_OUT),
 180        PINMUX_DATA(PA1_DATA, PA1_IN, PA1_OUT),
 181        PINMUX_DATA(PA0_DATA, PA0_IN, PA0_OUT),
 182
 183        /* PB GPIO */
 184        PINMUX_DATA(PB7_DATA, PB7_IN, PB7_OUT),
 185        PINMUX_DATA(PB6_DATA, PB6_IN, PB6_OUT),
 186        PINMUX_DATA(PB5_DATA, PB5_IN, PB5_OUT),
 187        PINMUX_DATA(PB4_DATA, PB4_IN, PB4_OUT),
 188        PINMUX_DATA(PB3_DATA, PB3_IN, PB3_OUT),
 189        PINMUX_DATA(PB2_DATA, PB2_IN, PB2_OUT),
 190        PINMUX_DATA(PB1_DATA, PB1_IN, PB1_OUT),
 191        PINMUX_DATA(PB0_DATA, PB0_IN, PB0_OUT),
 192
 193        /* PC GPIO */
 194        PINMUX_DATA(PC7_DATA, PC7_IN, PC7_OUT),
 195        PINMUX_DATA(PC6_DATA, PC6_IN, PC6_OUT),
 196        PINMUX_DATA(PC5_DATA, PC5_IN, PC5_OUT),
 197        PINMUX_DATA(PC4_DATA, PC4_IN, PC4_OUT),
 198        PINMUX_DATA(PC3_DATA, PC3_IN, PC3_OUT),
 199        PINMUX_DATA(PC2_DATA, PC2_IN, PC2_OUT),
 200        PINMUX_DATA(PC1_DATA, PC1_IN, PC1_OUT),
 201        PINMUX_DATA(PC0_DATA, PC0_IN, PC0_OUT),
 202
 203        /* PD GPIO */
 204        PINMUX_DATA(PD7_DATA, PD7_IN, PD7_OUT),
 205        PINMUX_DATA(PD6_DATA, PD6_IN, PD6_OUT),
 206        PINMUX_DATA(PD5_DATA, PD5_IN, PD5_OUT),
 207        PINMUX_DATA(PD4_DATA, PD4_IN, PD4_OUT),
 208        PINMUX_DATA(PD3_DATA, PD3_IN, PD3_OUT),
 209        PINMUX_DATA(PD2_DATA, PD2_IN, PD2_OUT),
 210        PINMUX_DATA(PD1_DATA, PD1_IN, PD1_OUT),
 211        PINMUX_DATA(PD0_DATA, PD0_IN, PD0_OUT),
 212
 213        /* PE GPIO */
 214        PINMUX_DATA(PE7_DATA, PE7_IN, PE7_OUT),
 215        PINMUX_DATA(PE6_DATA, PE6_IN, PE6_OUT),
 216
 217        /* PF GPIO */
 218        PINMUX_DATA(PF7_DATA, PF7_IN, PF7_OUT),
 219        PINMUX_DATA(PF6_DATA, PF6_IN, PF6_OUT),
 220        PINMUX_DATA(PF5_DATA, PF5_IN, PF5_OUT),
 221        PINMUX_DATA(PF4_DATA, PF4_IN, PF4_OUT),
 222        PINMUX_DATA(PF3_DATA, PF3_IN, PF3_OUT),
 223        PINMUX_DATA(PF2_DATA, PF2_IN, PF2_OUT),
 224        PINMUX_DATA(PF1_DATA, PF1_IN, PF1_OUT),
 225        PINMUX_DATA(PF0_DATA, PF0_IN, PF0_OUT),
 226
 227        /* PG GPIO */
 228        PINMUX_DATA(PG7_DATA, PG7_IN, PG7_OUT),
 229        PINMUX_DATA(PG6_DATA, PG6_IN, PG6_OUT),
 230        PINMUX_DATA(PG5_DATA, PG5_IN, PG5_OUT),
 231
 232        /* PH GPIO */
 233        PINMUX_DATA(PH7_DATA, PH7_IN, PH7_OUT),
 234        PINMUX_DATA(PH6_DATA, PH6_IN, PH6_OUT),
 235        PINMUX_DATA(PH5_DATA, PH5_IN, PH5_OUT),
 236        PINMUX_DATA(PH4_DATA, PH4_IN, PH4_OUT),
 237        PINMUX_DATA(PH3_DATA, PH3_IN, PH3_OUT),
 238        PINMUX_DATA(PH2_DATA, PH2_IN, PH2_OUT),
 239        PINMUX_DATA(PH1_DATA, PH1_IN, PH1_OUT),
 240        PINMUX_DATA(PH0_DATA, PH0_IN, PH0_OUT),
 241
 242        /* PJ GPIO */
 243        PINMUX_DATA(PJ7_DATA, PJ7_IN, PJ7_OUT),
 244        PINMUX_DATA(PJ6_DATA, PJ6_IN, PJ6_OUT),
 245        PINMUX_DATA(PJ5_DATA, PJ5_IN, PJ5_OUT),
 246        PINMUX_DATA(PJ4_DATA, PJ4_IN, PJ4_OUT),
 247        PINMUX_DATA(PJ3_DATA, PJ3_IN, PJ3_OUT),
 248        PINMUX_DATA(PJ2_DATA, PJ2_IN, PJ2_OUT),
 249        PINMUX_DATA(PJ1_DATA, PJ1_IN, PJ1_OUT),
 250
 251        /* PA FN */
 252        PINMUX_DATA(CDE_MARK,           P1MSEL2_0, PA7_FN),
 253        PINMUX_DATA(DISP_MARK,          P1MSEL2_0, PA6_FN),
 254        PINMUX_DATA(DR5_MARK,           P1MSEL2_0, PA5_FN),
 255        PINMUX_DATA(DR4_MARK,           P1MSEL2_0, PA4_FN),
 256        PINMUX_DATA(DR3_MARK,           P1MSEL2_0, PA3_FN),
 257        PINMUX_DATA(DR2_MARK,           P1MSEL2_0, PA2_FN),
 258        PINMUX_DATA(DR1_MARK,           P1MSEL2_0, PA1_FN),
 259        PINMUX_DATA(DR0_MARK,           P1MSEL2_0, PA0_FN),
 260        PINMUX_DATA(ETH_MAGIC_MARK,     P1MSEL2_1, PA7_FN),
 261        PINMUX_DATA(ETH_LINK_MARK,      P1MSEL2_1, PA6_FN),
 262        PINMUX_DATA(ETH_TX_ER_MARK,     P1MSEL2_1, PA5_FN),
 263        PINMUX_DATA(ETH_TX_EN_MARK,     P1MSEL2_1, PA4_FN),
 264        PINMUX_DATA(ETH_TXD3_MARK,      P1MSEL2_1, PA3_FN),
 265        PINMUX_DATA(ETH_TXD2_MARK,      P1MSEL2_1, PA2_FN),
 266        PINMUX_DATA(ETH_TXD1_MARK,      P1MSEL2_1, PA1_FN),
 267        PINMUX_DATA(ETH_TXD0_MARK,      P1MSEL2_1, PA0_FN),
 268
 269        /* PB FN */
 270        PINMUX_DATA(VSYNC_MARK,         P1MSEL3_0, PB7_FN),
 271        PINMUX_DATA(ODDF_MARK,          P1MSEL3_0, PB6_FN),
 272        PINMUX_DATA(DG5_MARK,           P1MSEL2_0, PB5_FN),
 273        PINMUX_DATA(DG4_MARK,           P1MSEL2_0, PB4_FN),
 274        PINMUX_DATA(DG3_MARK,           P1MSEL2_0, PB3_FN),
 275        PINMUX_DATA(DG2_MARK,           P1MSEL2_0, PB2_FN),
 276        PINMUX_DATA(DG1_MARK,           P1MSEL2_0, PB1_FN),
 277        PINMUX_DATA(DG0_MARK,           P1MSEL2_0, PB0_FN),
 278        PINMUX_DATA(HSPI_CLK_MARK,      P1MSEL3_1, PB7_FN),
 279        PINMUX_DATA(HSPI_CS_MARK,       P1MSEL3_1, PB6_FN),
 280        PINMUX_DATA(ETH_MDIO_MARK,      P1MSEL2_1, PB5_FN),
 281        PINMUX_DATA(ETH_RX_CLK_MARK,    P1MSEL2_1, PB4_FN),
 282        PINMUX_DATA(ETH_MDC_MARK,       P1MSEL2_1, PB3_FN),
 283        PINMUX_DATA(ETH_COL_MARK,       P1MSEL2_1, PB2_FN),
 284        PINMUX_DATA(ETH_TX_CLK_MARK,    P1MSEL2_1, PB1_FN),
 285        PINMUX_DATA(ETH_CRS_MARK,       P1MSEL2_1, PB0_FN),
 286
 287        /* PC FN */
 288        PINMUX_DATA(DCLKIN_MARK,        P1MSEL3_0, PC7_FN),
 289        PINMUX_DATA(HSYNC_MARK,         P1MSEL3_0, PC6_FN),
 290        PINMUX_DATA(DB5_MARK,           P1MSEL2_0, PC5_FN),
 291        PINMUX_DATA(DB4_MARK,           P1MSEL2_0, PC4_FN),
 292        PINMUX_DATA(DB3_MARK,           P1MSEL2_0, PC3_FN),
 293        PINMUX_DATA(DB2_MARK,           P1MSEL2_0, PC2_FN),
 294        PINMUX_DATA(DB1_MARK,           P1MSEL2_0, PC1_FN),
 295        PINMUX_DATA(DB0_MARK,           P1MSEL2_0, PC0_FN),
 296
 297        PINMUX_DATA(HSPI_RX_MARK,       P1MSEL3_1, PC7_FN),
 298        PINMUX_DATA(HSPI_TX_MARK,       P1MSEL3_1, PC6_FN),
 299        PINMUX_DATA(ETH_RXD3_MARK,      P1MSEL2_1, PC5_FN),
 300        PINMUX_DATA(ETH_RXD2_MARK,      P1MSEL2_1, PC4_FN),
 301        PINMUX_DATA(ETH_RXD1_MARK,      P1MSEL2_1, PC3_FN),
 302        PINMUX_DATA(ETH_RXD0_MARK,      P1MSEL2_1, PC2_FN),
 303        PINMUX_DATA(ETH_RX_DV_MARK,     P1MSEL2_1, PC1_FN),
 304        PINMUX_DATA(ETH_RX_ER_MARK,     P1MSEL2_1, PC0_FN),
 305
 306        /* PD FN */
 307        PINMUX_DATA(DCLKOUT_MARK,       PD7_FN),
 308        PINMUX_DATA(SCIF1_SCK_MARK,     PD6_FN),
 309        PINMUX_DATA(SCIF1_RXD_MARK,     PD5_FN),
 310        PINMUX_DATA(SCIF1_TXD_MARK,     PD4_FN),
 311        PINMUX_DATA(DACK1_MARK,         P1MSEL13_1, P1MSEL12_0, PD3_FN),
 312        PINMUX_DATA(BACK_MARK,          P1MSEL13_0, P1MSEL12_1, PD3_FN),
 313        PINMUX_DATA(FALE_MARK,          P1MSEL13_0, P1MSEL12_0, PD3_FN),
 314        PINMUX_DATA(DACK0_MARK,         P1MSEL14_1, PD2_FN),
 315        PINMUX_DATA(FCLE_MARK,          P1MSEL14_0, PD2_FN),
 316        PINMUX_DATA(DREQ1_MARK,         P1MSEL10_0, P1MSEL9_1, PD1_FN),
 317        PINMUX_DATA(BREQ_MARK,          P1MSEL10_1, P1MSEL9_0, PD1_FN),
 318        PINMUX_DATA(USB_OVC1_MARK,      P1MSEL10_0, P1MSEL9_0, PD1_FN),
 319        PINMUX_DATA(DREQ0_MARK,         P1MSEL11_1, PD0_FN),
 320        PINMUX_DATA(USB_OVC0_MARK,      P1MSEL11_0, PD0_FN),
 321
 322        /* PE FN */
 323        PINMUX_DATA(USB_PENC1_MARK,     PE7_FN),
 324        PINMUX_DATA(USB_PENC0_MARK,     PE6_FN),
 325
 326        /* PF FN */
 327        PINMUX_DATA(HAC1_SDOUT_MARK,    P2MSEL15_0, P2MSEL14_0, PF7_FN),
 328        PINMUX_DATA(HAC1_SDIN_MARK,     P2MSEL15_0, P2MSEL14_0, PF6_FN),
 329        PINMUX_DATA(HAC1_SYNC_MARK,     P2MSEL15_0, P2MSEL14_0, PF5_FN),
 330        PINMUX_DATA(HAC1_BITCLK_MARK,   P2MSEL15_0, P2MSEL14_0, PF4_FN),
 331        PINMUX_DATA(HAC0_SDOUT_MARK,    P2MSEL13_0, P2MSEL12_0, PF3_FN),
 332        PINMUX_DATA(HAC0_SDIN_MARK,     P2MSEL13_0, P2MSEL12_0, PF2_FN),
 333        PINMUX_DATA(HAC0_SYNC_MARK,     P2MSEL13_0, P2MSEL12_0, PF1_FN),
 334        PINMUX_DATA(HAC0_BITCLK_MARK,   P2MSEL13_0, P2MSEL12_0, PF0_FN),
 335        PINMUX_DATA(SSI1_SDATA_MARK,    P2MSEL15_0, P2MSEL14_1, PF7_FN),
 336        PINMUX_DATA(SSI1_SCK_MARK,      P2MSEL15_0, P2MSEL14_1, PF6_FN),
 337        PINMUX_DATA(SSI1_WS_MARK,       P2MSEL15_0, P2MSEL14_1, PF5_FN),
 338        PINMUX_DATA(SSI1_CLK_MARK,      P2MSEL15_0, P2MSEL14_1, PF4_FN),
 339        PINMUX_DATA(SSI0_SDATA_MARK,    P2MSEL13_0, P2MSEL12_1, PF3_FN),
 340        PINMUX_DATA(SSI0_SCK_MARK,      P2MSEL13_0, P2MSEL12_1, PF2_FN),
 341        PINMUX_DATA(SSI0_WS_MARK,       P2MSEL13_0, P2MSEL12_1, PF1_FN),
 342        PINMUX_DATA(SSI0_CLK_MARK,      P2MSEL13_0, P2MSEL12_1, PF0_FN),
 343        PINMUX_DATA(SDIF1CMD_MARK,      P2MSEL15_1, P2MSEL14_0, PF7_FN),
 344        PINMUX_DATA(SDIF1CD_MARK,       P2MSEL15_1, P2MSEL14_0, PF6_FN),
 345        PINMUX_DATA(SDIF1WP_MARK,       P2MSEL15_1, P2MSEL14_0, PF5_FN),
 346        PINMUX_DATA(SDIF1CLK_MARK,      P2MSEL15_1, P2MSEL14_0, PF4_FN),
 347        PINMUX_DATA(SDIF1D3_MARK,       P2MSEL13_1, P2MSEL12_0, PF3_FN),
 348        PINMUX_DATA(SDIF1D2_MARK,       P2MSEL13_1, P2MSEL12_0, PF2_FN),
 349        PINMUX_DATA(SDIF1D1_MARK,       P2MSEL13_1, P2MSEL12_0, PF1_FN),
 350        PINMUX_DATA(SDIF1D0_MARK,       P2MSEL13_1, P2MSEL12_0, PF0_FN),
 351
 352        /* PG FN */
 353        PINMUX_DATA(SCIF3_SCK_MARK,     P1MSEL8_0, PG7_FN),
 354        PINMUX_DATA(SSI2_SDATA_MARK,    P1MSEL8_1, PG7_FN),
 355        PINMUX_DATA(SCIF3_RXD_MARK,     P1MSEL7_0, P1MSEL6_0, PG6_FN),
 356        PINMUX_DATA(SSI2_SCK_MARK,      P1MSEL7_1, P1MSEL6_0, PG6_FN),
 357        PINMUX_DATA(TCLK_MARK,          P1MSEL7_0, P1MSEL6_1, PG6_FN),
 358        PINMUX_DATA(SCIF3_TXD_MARK,     P1MSEL5_0, P1MSEL4_0, PG5_FN),
 359        PINMUX_DATA(SSI2_WS_MARK,       P1MSEL5_1, P1MSEL4_0, PG5_FN),
 360        PINMUX_DATA(HAC_RES_MARK,       P1MSEL5_0, P1MSEL4_1, PG5_FN),
 361
 362        /* PH FN */
 363        PINMUX_DATA(DACK3_MARK,         P2MSEL4_0, PH7_FN),
 364        PINMUX_DATA(SDIF0CMD_MARK,      P2MSEL4_1, PH7_FN),
 365        PINMUX_DATA(DACK2_MARK,         P2MSEL4_0, PH6_FN),
 366        PINMUX_DATA(SDIF0CD_MARK,       P2MSEL4_1, PH6_FN),
 367        PINMUX_DATA(DREQ3_MARK,         P2MSEL4_0, PH5_FN),
 368        PINMUX_DATA(SDIF0WP_MARK,       P2MSEL4_1, PH5_FN),
 369        PINMUX_DATA(DREQ2_MARK,         P2MSEL3_0, P2MSEL2_1, PH4_FN),
 370        PINMUX_DATA(SDIF0CLK_MARK,      P2MSEL3_1, P2MSEL2_0, PH4_FN),
 371        PINMUX_DATA(SCIF0_CTS_MARK,     P2MSEL3_0, P2MSEL2_0, PH4_FN),
 372        PINMUX_DATA(SDIF0D3_MARK,       P2MSEL1_1, P2MSEL0_0, PH3_FN),
 373        PINMUX_DATA(SCIF0_RTS_MARK,     P2MSEL1_0, P2MSEL0_0, PH3_FN),
 374        PINMUX_DATA(IRL7_MARK,          P2MSEL1_0, P2MSEL0_1, PH3_FN),
 375        PINMUX_DATA(SDIF0D2_MARK,       P2MSEL1_1, P2MSEL0_0, PH2_FN),
 376        PINMUX_DATA(SCIF0_SCK_MARK,     P2MSEL1_0, P2MSEL0_0, PH2_FN),
 377        PINMUX_DATA(IRL6_MARK,          P2MSEL1_0, P2MSEL0_1, PH2_FN),
 378        PINMUX_DATA(SDIF0D1_MARK,       P2MSEL1_1, P2MSEL0_0, PH1_FN),
 379        PINMUX_DATA(SCIF0_RXD_MARK,     P2MSEL1_0, P2MSEL0_0, PH1_FN),
 380        PINMUX_DATA(IRL5_MARK,          P2MSEL1_0, P2MSEL0_1, PH1_FN),
 381        PINMUX_DATA(SDIF0D0_MARK,       P2MSEL1_1, P2MSEL0_0, PH0_FN),
 382        PINMUX_DATA(SCIF0_TXD_MARK,     P2MSEL1_0, P2MSEL0_0, PH0_FN),
 383        PINMUX_DATA(IRL4_MARK,          P2MSEL1_0, P2MSEL0_1, PH0_FN),
 384
 385        /* PJ FN */
 386        PINMUX_DATA(SCIF5_SCK_MARK,     P2MSEL11_1, PJ7_FN),
 387        PINMUX_DATA(FRB_MARK,           P2MSEL11_0, PJ7_FN),
 388        PINMUX_DATA(SCIF5_RXD_MARK,     P2MSEL10_0, PJ6_FN),
 389        PINMUX_DATA(IOIS16_MARK,        P2MSEL10_1, PJ6_FN),
 390        PINMUX_DATA(SCIF5_TXD_MARK,     P2MSEL10_0, PJ5_FN),
 391        PINMUX_DATA(CE2B_MARK,          P2MSEL10_1, PJ5_FN),
 392        PINMUX_DATA(DRAK3_MARK,         P2MSEL7_0, PJ4_FN),
 393        PINMUX_DATA(CE2A_MARK,          P2MSEL7_1, PJ4_FN),
 394        PINMUX_DATA(SCIF4_SCK_MARK,     P2MSEL9_0, P2MSEL8_0, PJ3_FN),
 395        PINMUX_DATA(DRAK2_MARK,         P2MSEL9_0, P2MSEL8_1, PJ3_FN),
 396        PINMUX_DATA(SSI3_WS_MARK,       P2MSEL9_1, P2MSEL8_0, PJ3_FN),
 397        PINMUX_DATA(SCIF4_RXD_MARK,     P2MSEL6_1, P2MSEL5_0, PJ2_FN),
 398        PINMUX_DATA(DRAK1_MARK,         P2MSEL6_0, P2MSEL5_1, PJ2_FN),
 399        PINMUX_DATA(FSTATUS_MARK,       P2MSEL6_0, P2MSEL5_0, PJ2_FN),
 400        PINMUX_DATA(SSI3_SDATA_MARK,    P2MSEL6_1, P2MSEL5_1, PJ2_FN),
 401        PINMUX_DATA(SCIF4_TXD_MARK,     P2MSEL6_1, P2MSEL5_0, PJ1_FN),
 402        PINMUX_DATA(DRAK0_MARK,         P2MSEL6_0, P2MSEL5_1, PJ1_FN),
 403        PINMUX_DATA(FSE_MARK,           P2MSEL6_0, P2MSEL5_0, PJ1_FN),
 404        PINMUX_DATA(SSI3_SCK_MARK,      P2MSEL6_1, P2MSEL5_1, PJ1_FN),
 405};
 406
 407static const struct sh_pfc_pin pinmux_pins[] = {
 408        /* PA */
 409        PINMUX_GPIO(PA7),
 410        PINMUX_GPIO(PA6),
 411        PINMUX_GPIO(PA5),
 412        PINMUX_GPIO(PA4),
 413        PINMUX_GPIO(PA3),
 414        PINMUX_GPIO(PA2),
 415        PINMUX_GPIO(PA1),
 416        PINMUX_GPIO(PA0),
 417
 418        /* PB */
 419        PINMUX_GPIO(PB7),
 420        PINMUX_GPIO(PB6),
 421        PINMUX_GPIO(PB5),
 422        PINMUX_GPIO(PB4),
 423        PINMUX_GPIO(PB3),
 424        PINMUX_GPIO(PB2),
 425        PINMUX_GPIO(PB1),
 426        PINMUX_GPIO(PB0),
 427
 428        /* PC */
 429        PINMUX_GPIO(PC7),
 430        PINMUX_GPIO(PC6),
 431        PINMUX_GPIO(PC5),
 432        PINMUX_GPIO(PC4),
 433        PINMUX_GPIO(PC3),
 434        PINMUX_GPIO(PC2),
 435        PINMUX_GPIO(PC1),
 436        PINMUX_GPIO(PC0),
 437
 438        /* PD */
 439        PINMUX_GPIO(PD7),
 440        PINMUX_GPIO(PD6),
 441        PINMUX_GPIO(PD5),
 442        PINMUX_GPIO(PD4),
 443        PINMUX_GPIO(PD3),
 444        PINMUX_GPIO(PD2),
 445        PINMUX_GPIO(PD1),
 446        PINMUX_GPIO(PD0),
 447
 448        /* PE */
 449        PINMUX_GPIO(PE7),
 450        PINMUX_GPIO(PE6),
 451
 452        /* PF */
 453        PINMUX_GPIO(PF7),
 454        PINMUX_GPIO(PF6),
 455        PINMUX_GPIO(PF5),
 456        PINMUX_GPIO(PF4),
 457        PINMUX_GPIO(PF3),
 458        PINMUX_GPIO(PF2),
 459        PINMUX_GPIO(PF1),
 460        PINMUX_GPIO(PF0),
 461
 462        /* PG */
 463        PINMUX_GPIO(PG7),
 464        PINMUX_GPIO(PG6),
 465        PINMUX_GPIO(PG5),
 466
 467        /* PH */
 468        PINMUX_GPIO(PH7),
 469        PINMUX_GPIO(PH6),
 470        PINMUX_GPIO(PH5),
 471        PINMUX_GPIO(PH4),
 472        PINMUX_GPIO(PH3),
 473        PINMUX_GPIO(PH2),
 474        PINMUX_GPIO(PH1),
 475        PINMUX_GPIO(PH0),
 476
 477        /* PJ */
 478        PINMUX_GPIO(PJ7),
 479        PINMUX_GPIO(PJ6),
 480        PINMUX_GPIO(PJ5),
 481        PINMUX_GPIO(PJ4),
 482        PINMUX_GPIO(PJ3),
 483        PINMUX_GPIO(PJ2),
 484        PINMUX_GPIO(PJ1),
 485};
 486
 487#define PINMUX_FN_BASE  ARRAY_SIZE(pinmux_pins)
 488
 489static const struct pinmux_func pinmux_func_gpios[] = {
 490        /* FN */
 491        GPIO_FN(CDE),
 492        GPIO_FN(ETH_MAGIC),
 493        GPIO_FN(DISP),
 494        GPIO_FN(ETH_LINK),
 495        GPIO_FN(DR5),
 496        GPIO_FN(ETH_TX_ER),
 497        GPIO_FN(DR4),
 498        GPIO_FN(ETH_TX_EN),
 499        GPIO_FN(DR3),
 500        GPIO_FN(ETH_TXD3),
 501        GPIO_FN(DR2),
 502        GPIO_FN(ETH_TXD2),
 503        GPIO_FN(DR1),
 504        GPIO_FN(ETH_TXD1),
 505        GPIO_FN(DR0),
 506        GPIO_FN(ETH_TXD0),
 507        GPIO_FN(VSYNC),
 508        GPIO_FN(HSPI_CLK),
 509        GPIO_FN(ODDF),
 510        GPIO_FN(HSPI_CS),
 511        GPIO_FN(DG5),
 512        GPIO_FN(ETH_MDIO),
 513        GPIO_FN(DG4),
 514        GPIO_FN(ETH_RX_CLK),
 515        GPIO_FN(DG3),
 516        GPIO_FN(ETH_MDC),
 517        GPIO_FN(DG2),
 518        GPIO_FN(ETH_COL),
 519        GPIO_FN(DG1),
 520        GPIO_FN(ETH_TX_CLK),
 521        GPIO_FN(DG0),
 522        GPIO_FN(ETH_CRS),
 523        GPIO_FN(DCLKIN),
 524        GPIO_FN(HSPI_RX),
 525        GPIO_FN(HSYNC),
 526        GPIO_FN(HSPI_TX),
 527        GPIO_FN(DB5),
 528        GPIO_FN(ETH_RXD3),
 529        GPIO_FN(DB4),
 530        GPIO_FN(ETH_RXD2),
 531        GPIO_FN(DB3),
 532        GPIO_FN(ETH_RXD1),
 533        GPIO_FN(DB2),
 534        GPIO_FN(ETH_RXD0),
 535        GPIO_FN(DB1),
 536        GPIO_FN(ETH_RX_DV),
 537        GPIO_FN(DB0),
 538        GPIO_FN(ETH_RX_ER),
 539        GPIO_FN(DCLKOUT),
 540        GPIO_FN(SCIF1_SCK),
 541        GPIO_FN(SCIF1_RXD),
 542        GPIO_FN(SCIF1_TXD),
 543        GPIO_FN(DACK1),
 544        GPIO_FN(BACK),
 545        GPIO_FN(FALE),
 546        GPIO_FN(DACK0),
 547        GPIO_FN(FCLE),
 548        GPIO_FN(DREQ1),
 549        GPIO_FN(BREQ),
 550        GPIO_FN(USB_OVC1),
 551        GPIO_FN(DREQ0),
 552        GPIO_FN(USB_OVC0),
 553        GPIO_FN(USB_PENC1),
 554        GPIO_FN(USB_PENC0),
 555        GPIO_FN(HAC1_SDOUT),
 556        GPIO_FN(SSI1_SDATA),
 557        GPIO_FN(SDIF1CMD),
 558        GPIO_FN(HAC1_SDIN),
 559        GPIO_FN(SSI1_SCK),
 560        GPIO_FN(SDIF1CD),
 561        GPIO_FN(HAC1_SYNC),
 562        GPIO_FN(SSI1_WS),
 563        GPIO_FN(SDIF1WP),
 564        GPIO_FN(HAC1_BITCLK),
 565        GPIO_FN(SSI1_CLK),
 566        GPIO_FN(SDIF1CLK),
 567        GPIO_FN(HAC0_SDOUT),
 568        GPIO_FN(SSI0_SDATA),
 569        GPIO_FN(SDIF1D3),
 570        GPIO_FN(HAC0_SDIN),
 571        GPIO_FN(SSI0_SCK),
 572        GPIO_FN(SDIF1D2),
 573        GPIO_FN(HAC0_SYNC),
 574        GPIO_FN(SSI0_WS),
 575        GPIO_FN(SDIF1D1),
 576        GPIO_FN(HAC0_BITCLK),
 577        GPIO_FN(SSI0_CLK),
 578        GPIO_FN(SDIF1D0),
 579        GPIO_FN(SCIF3_SCK),
 580        GPIO_FN(SSI2_SDATA),
 581        GPIO_FN(SCIF3_RXD),
 582        GPIO_FN(TCLK),
 583        GPIO_FN(SSI2_SCK),
 584        GPIO_FN(SCIF3_TXD),
 585        GPIO_FN(HAC_RES),
 586        GPIO_FN(SSI2_WS),
 587        GPIO_FN(DACK3),
 588        GPIO_FN(SDIF0CMD),
 589        GPIO_FN(DACK2),
 590        GPIO_FN(SDIF0CD),
 591        GPIO_FN(DREQ3),
 592        GPIO_FN(SDIF0WP),
 593        GPIO_FN(SCIF0_CTS),
 594        GPIO_FN(DREQ2),
 595        GPIO_FN(SDIF0CLK),
 596        GPIO_FN(SCIF0_RTS),
 597        GPIO_FN(IRL7),
 598        GPIO_FN(SDIF0D3),
 599        GPIO_FN(SCIF0_SCK),
 600        GPIO_FN(IRL6),
 601        GPIO_FN(SDIF0D2),
 602        GPIO_FN(SCIF0_RXD),
 603        GPIO_FN(IRL5),
 604        GPIO_FN(SDIF0D1),
 605        GPIO_FN(SCIF0_TXD),
 606        GPIO_FN(IRL4),
 607        GPIO_FN(SDIF0D0),
 608        GPIO_FN(SCIF5_SCK),
 609        GPIO_FN(FRB),
 610        GPIO_FN(SCIF5_RXD),
 611        GPIO_FN(IOIS16),
 612        GPIO_FN(SCIF5_TXD),
 613        GPIO_FN(CE2B),
 614        GPIO_FN(DRAK3),
 615        GPIO_FN(CE2A),
 616        GPIO_FN(SCIF4_SCK),
 617        GPIO_FN(DRAK2),
 618        GPIO_FN(SSI3_WS),
 619        GPIO_FN(SCIF4_RXD),
 620        GPIO_FN(DRAK1),
 621        GPIO_FN(SSI3_SDATA),
 622        GPIO_FN(FSTATUS),
 623        GPIO_FN(SCIF4_TXD),
 624        GPIO_FN(DRAK0),
 625        GPIO_FN(SSI3_SCK),
 626        GPIO_FN(FSE),
 627};
 628
 629static const struct pinmux_cfg_reg pinmux_config_regs[] = {
 630        { PINMUX_CFG_REG("PACR", 0xffcc0000, 16, 2, GROUP(
 631                PA7_FN, PA7_OUT, PA7_IN, 0,
 632                PA6_FN, PA6_OUT, PA6_IN, 0,
 633                PA5_FN, PA5_OUT, PA5_IN, 0,
 634                PA4_FN, PA4_OUT, PA4_IN, 0,
 635                PA3_FN, PA3_OUT, PA3_IN, 0,
 636                PA2_FN, PA2_OUT, PA2_IN, 0,
 637                PA1_FN, PA1_OUT, PA1_IN, 0,
 638                PA0_FN, PA0_OUT, PA0_IN, 0 ))
 639        },
 640        { PINMUX_CFG_REG("PBCR", 0xffcc0002, 16, 2, GROUP(
 641                PB7_FN, PB7_OUT, PB7_IN, 0,
 642                PB6_FN, PB6_OUT, PB6_IN, 0,
 643                PB5_FN, PB5_OUT, PB5_IN, 0,
 644                PB4_FN, PB4_OUT, PB4_IN, 0,
 645                PB3_FN, PB3_OUT, PB3_IN, 0,
 646                PB2_FN, PB2_OUT, PB2_IN, 0,
 647                PB1_FN, PB1_OUT, PB1_IN, 0,
 648                PB0_FN, PB0_OUT, PB0_IN, 0 ))
 649        },
 650        { PINMUX_CFG_REG("PCCR", 0xffcc0004, 16, 2, GROUP(
 651                PC7_FN, PC7_OUT, PC7_IN, 0,
 652                PC6_FN, PC6_OUT, PC6_IN, 0,
 653                PC5_FN, PC5_OUT, PC5_IN, 0,
 654                PC4_FN, PC4_OUT, PC4_IN, 0,
 655                PC3_FN, PC3_OUT, PC3_IN, 0,
 656                PC2_FN, PC2_OUT, PC2_IN, 0,
 657                PC1_FN, PC1_OUT, PC1_IN, 0,
 658                PC0_FN, PC0_OUT, PC0_IN, 0 ))
 659        },
 660        { PINMUX_CFG_REG("PDCR", 0xffcc0006, 16, 2, GROUP(
 661                PD7_FN, PD7_OUT, PD7_IN, 0,
 662                PD6_FN, PD6_OUT, PD6_IN, 0,
 663                PD5_FN, PD5_OUT, PD5_IN, 0,
 664                PD4_FN, PD4_OUT, PD4_IN, 0,
 665                PD3_FN, PD3_OUT, PD3_IN, 0,
 666                PD2_FN, PD2_OUT, PD2_IN, 0,
 667                PD1_FN, PD1_OUT, PD1_IN, 0,
 668                PD0_FN, PD0_OUT, PD0_IN, 0 ))
 669        },
 670        { PINMUX_CFG_REG("PECR", 0xffcc0008, 16, 2, GROUP(
 671                PE7_FN, PE7_OUT, PE7_IN, 0,
 672                PE6_FN, PE6_OUT, PE6_IN, 0,
 673                0, 0, 0, 0,
 674                0, 0, 0, 0,
 675                0, 0, 0, 0,
 676                0, 0, 0, 0,
 677                0, 0, 0, 0,
 678                0, 0, 0, 0, ))
 679        },
 680        { PINMUX_CFG_REG("PFCR", 0xffcc000a, 16, 2, GROUP(
 681                PF7_FN, PF7_OUT, PF7_IN, 0,
 682                PF6_FN, PF6_OUT, PF6_IN, 0,
 683                PF5_FN, PF5_OUT, PF5_IN, 0,
 684                PF4_FN, PF4_OUT, PF4_IN, 0,
 685                PF3_FN, PF3_OUT, PF3_IN, 0,
 686                PF2_FN, PF2_OUT, PF2_IN, 0,
 687                PF1_FN, PF1_OUT, PF1_IN, 0,
 688                PF0_FN, PF0_OUT, PF0_IN, 0 ))
 689        },
 690        { PINMUX_CFG_REG("PGCR", 0xffcc000c, 16, 2, GROUP(
 691                PG7_FN, PG7_OUT, PG7_IN, 0,
 692                PG6_FN, PG6_OUT, PG6_IN, 0,
 693                PG5_FN, PG5_OUT, PG5_IN, 0,
 694                0, 0, 0, 0,
 695                0, 0, 0, 0,
 696                0, 0, 0, 0,
 697                0, 0, 0, 0,
 698                0, 0, 0, 0, ))
 699        },
 700        { PINMUX_CFG_REG("PHCR", 0xffcc000e, 16, 2, GROUP(
 701                PH7_FN, PH7_OUT, PH7_IN, 0,
 702                PH6_FN, PH6_OUT, PH6_IN, 0,
 703                PH5_FN, PH5_OUT, PH5_IN, 0,
 704                PH4_FN, PH4_OUT, PH4_IN, 0,
 705                PH3_FN, PH3_OUT, PH3_IN, 0,
 706                PH2_FN, PH2_OUT, PH2_IN, 0,
 707                PH1_FN, PH1_OUT, PH1_IN, 0,
 708                PH0_FN, PH0_OUT, PH0_IN, 0 ))
 709        },
 710        { PINMUX_CFG_REG("PJCR", 0xffcc0010, 16, 2, GROUP(
 711                PJ7_FN, PJ7_OUT, PJ7_IN, 0,
 712                PJ6_FN, PJ6_OUT, PJ6_IN, 0,
 713                PJ5_FN, PJ5_OUT, PJ5_IN, 0,
 714                PJ4_FN, PJ4_OUT, PJ4_IN, 0,
 715                PJ3_FN, PJ3_OUT, PJ3_IN, 0,
 716                PJ2_FN, PJ2_OUT, PJ2_IN, 0,
 717                PJ1_FN, PJ1_OUT, PJ1_IN, 0,
 718                0, 0, 0, 0, ))
 719        },
 720        { PINMUX_CFG_REG("P1MSELR", 0xffcc0080, 16, 1, GROUP(
 721                0, 0,
 722                P1MSEL14_0, P1MSEL14_1,
 723                P1MSEL13_0, P1MSEL13_1,
 724                P1MSEL12_0, P1MSEL12_1,
 725                P1MSEL11_0, P1MSEL11_1,
 726                P1MSEL10_0, P1MSEL10_1,
 727                P1MSEL9_0,  P1MSEL9_1,
 728                P1MSEL8_0,  P1MSEL8_1,
 729                P1MSEL7_0,  P1MSEL7_1,
 730                P1MSEL6_0,  P1MSEL6_1,
 731                P1MSEL5_0,  P1MSEL5_1,
 732                P1MSEL4_0,  P1MSEL4_1,
 733                P1MSEL3_0,  P1MSEL3_1,
 734                P1MSEL2_0,  P1MSEL2_1,
 735                P1MSEL1_0,  P1MSEL1_1,
 736                P1MSEL0_0,  P1MSEL0_1 ))
 737        },
 738        { PINMUX_CFG_REG("P2MSELR", 0xffcc0082, 16, 1, GROUP(
 739                P2MSEL15_0, P2MSEL15_1,
 740                P2MSEL14_0, P2MSEL14_1,
 741                P2MSEL13_0, P2MSEL13_1,
 742                P2MSEL12_0, P2MSEL12_1,
 743                P2MSEL11_0, P2MSEL11_1,
 744                P2MSEL10_0, P2MSEL10_1,
 745                P2MSEL9_0,  P2MSEL9_1,
 746                P2MSEL8_0,  P2MSEL8_1,
 747                P2MSEL7_0,  P2MSEL7_1,
 748                P2MSEL6_0,  P2MSEL6_1,
 749                P2MSEL5_0,  P2MSEL5_1,
 750                P2MSEL4_0,  P2MSEL4_1,
 751                P2MSEL3_0,  P2MSEL3_1,
 752                P2MSEL2_0,  P2MSEL2_1,
 753                P2MSEL1_0,  P2MSEL1_1,
 754                P2MSEL0_0,  P2MSEL0_1 ))
 755        },
 756        {}
 757};
 758
 759static const struct pinmux_data_reg pinmux_data_regs[] = {
 760        { PINMUX_DATA_REG("PADR", 0xffcc0020, 8, GROUP(
 761                PA7_DATA, PA6_DATA, PA5_DATA, PA4_DATA,
 762                PA3_DATA, PA2_DATA, PA1_DATA, PA0_DATA ))
 763        },
 764        { PINMUX_DATA_REG("PBDR", 0xffcc0022, 8, GROUP(
 765                PB7_DATA, PB6_DATA, PB5_DATA, PB4_DATA,
 766                PB3_DATA, PB2_DATA, PB1_DATA, PB0_DATA ))
 767        },
 768        { PINMUX_DATA_REG("PCDR", 0xffcc0024, 8, GROUP(
 769                PC7_DATA, PC6_DATA, PC5_DATA, PC4_DATA,
 770                PC3_DATA, PC2_DATA, PC1_DATA, PC0_DATA ))
 771        },
 772        { PINMUX_DATA_REG("PDDR", 0xffcc0026, 8, GROUP(
 773                PD7_DATA, PD6_DATA, PD5_DATA, PD4_DATA,
 774                PD3_DATA, PD2_DATA, PD1_DATA, PD0_DATA ))
 775        },
 776        { PINMUX_DATA_REG("PEDR", 0xffcc0028, 8, GROUP(
 777                PE7_DATA, PE6_DATA,
 778                0, 0, 0, 0, 0, 0 ))
 779        },
 780        { PINMUX_DATA_REG("PFDR", 0xffcc002a, 8, GROUP(
 781                PF7_DATA, PF6_DATA, PF5_DATA, PF4_DATA,
 782                PF3_DATA, PF2_DATA, PF1_DATA, PF0_DATA ))
 783        },
 784        { PINMUX_DATA_REG("PGDR", 0xffcc002c, 8, GROUP(
 785                PG7_DATA, PG6_DATA, PG5_DATA, 0,
 786                0, 0, 0, 0 ))
 787        },
 788        { PINMUX_DATA_REG("PHDR", 0xffcc002e, 8, GROUP(
 789                PH7_DATA, PH6_DATA, PH5_DATA, PH4_DATA,
 790                PH3_DATA, PH2_DATA, PH1_DATA, PH0_DATA ))
 791        },
 792        { PINMUX_DATA_REG("PJDR", 0xffcc0030, 8, GROUP(
 793                PJ7_DATA, PJ6_DATA, PJ5_DATA, PJ4_DATA,
 794                PJ3_DATA, PJ2_DATA, PJ1_DATA, 0 ))
 795        },
 796        { },
 797};
 798
 799const struct sh_pfc_soc_info sh7786_pinmux_info = {
 800        .name = "sh7786_pfc",
 801        .input = { PINMUX_INPUT_BEGIN, PINMUX_INPUT_END },
 802        .output = { PINMUX_OUTPUT_BEGIN, PINMUX_OUTPUT_END },
 803        .function = { PINMUX_FUNCTION_BEGIN, PINMUX_FUNCTION_END },
 804
 805        .pins = pinmux_pins,
 806        .nr_pins = ARRAY_SIZE(pinmux_pins),
 807        .func_gpios = pinmux_func_gpios,
 808        .nr_func_gpios = ARRAY_SIZE(pinmux_func_gpios),
 809
 810        .cfg_regs = pinmux_config_regs,
 811        .data_regs = pinmux_data_regs,
 812
 813        .pinmux_data = pinmux_data,
 814        .pinmux_data_size = ARRAY_SIZE(pinmux_data),
 815};
 816