1*4882a593Smuzhiyun // SPDX-License-Identifier: GPL-2.0 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * SH-X3 prototype CPU pinmux 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Copyright (C) 2010 Paul Mundt 6*4882a593Smuzhiyun */ 7*4882a593Smuzhiyun #include <linux/init.h> 8*4882a593Smuzhiyun #include <linux/kernel.h> 9*4882a593Smuzhiyun #include <cpu/shx3.h> 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun #include "sh_pfc.h" 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun enum { 14*4882a593Smuzhiyun PINMUX_RESERVED = 0, 15*4882a593Smuzhiyun 16*4882a593Smuzhiyun PINMUX_DATA_BEGIN, 17*4882a593Smuzhiyun PA7_DATA, PA6_DATA, PA5_DATA, PA4_DATA, 18*4882a593Smuzhiyun PA3_DATA, PA2_DATA, PA1_DATA, PA0_DATA, 19*4882a593Smuzhiyun PB7_DATA, PB6_DATA, PB5_DATA, PB4_DATA, 20*4882a593Smuzhiyun PB3_DATA, PB2_DATA, PB1_DATA, PB0_DATA, 21*4882a593Smuzhiyun PC7_DATA, PC6_DATA, PC5_DATA, PC4_DATA, 22*4882a593Smuzhiyun PC3_DATA, PC2_DATA, PC1_DATA, PC0_DATA, 23*4882a593Smuzhiyun PD7_DATA, PD6_DATA, PD5_DATA, PD4_DATA, 24*4882a593Smuzhiyun PD3_DATA, PD2_DATA, PD1_DATA, PD0_DATA, 25*4882a593Smuzhiyun PE7_DATA, PE6_DATA, PE5_DATA, PE4_DATA, 26*4882a593Smuzhiyun PE3_DATA, PE2_DATA, PE1_DATA, PE0_DATA, 27*4882a593Smuzhiyun PF7_DATA, PF6_DATA, PF5_DATA, PF4_DATA, 28*4882a593Smuzhiyun PF3_DATA, PF2_DATA, PF1_DATA, PF0_DATA, 29*4882a593Smuzhiyun PG7_DATA, PG6_DATA, PG5_DATA, PG4_DATA, 30*4882a593Smuzhiyun PG3_DATA, PG2_DATA, PG1_DATA, PG0_DATA, 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun PH5_DATA, PH4_DATA, 33*4882a593Smuzhiyun PH3_DATA, PH2_DATA, PH1_DATA, PH0_DATA, 34*4882a593Smuzhiyun PINMUX_DATA_END, 35*4882a593Smuzhiyun 36*4882a593Smuzhiyun PINMUX_INPUT_BEGIN, 37*4882a593Smuzhiyun PA7_IN, PA6_IN, PA5_IN, PA4_IN, 38*4882a593Smuzhiyun PA3_IN, PA2_IN, PA1_IN, PA0_IN, 39*4882a593Smuzhiyun PB7_IN, PB6_IN, PB5_IN, PB4_IN, 40*4882a593Smuzhiyun PB3_IN, PB2_IN, PB1_IN, PB0_IN, 41*4882a593Smuzhiyun PC7_IN, PC6_IN, PC5_IN, PC4_IN, 42*4882a593Smuzhiyun PC3_IN, PC2_IN, PC1_IN, PC0_IN, 43*4882a593Smuzhiyun PD7_IN, PD6_IN, PD5_IN, PD4_IN, 44*4882a593Smuzhiyun PD3_IN, PD2_IN, PD1_IN, PD0_IN, 45*4882a593Smuzhiyun PE7_IN, PE6_IN, PE5_IN, PE4_IN, 46*4882a593Smuzhiyun PE3_IN, PE2_IN, PE1_IN, PE0_IN, 47*4882a593Smuzhiyun PF7_IN, PF6_IN, PF5_IN, PF4_IN, 48*4882a593Smuzhiyun PF3_IN, PF2_IN, PF1_IN, PF0_IN, 49*4882a593Smuzhiyun PG7_IN, PG6_IN, PG5_IN, PG4_IN, 50*4882a593Smuzhiyun PG3_IN, PG2_IN, PG1_IN, PG0_IN, 51*4882a593Smuzhiyun 52*4882a593Smuzhiyun PH5_IN, PH4_IN, 53*4882a593Smuzhiyun PH3_IN, PH2_IN, PH1_IN, PH0_IN, 54*4882a593Smuzhiyun PINMUX_INPUT_END, 55*4882a593Smuzhiyun 56*4882a593Smuzhiyun PINMUX_OUTPUT_BEGIN, 57*4882a593Smuzhiyun PA7_OUT, PA6_OUT, PA5_OUT, PA4_OUT, 58*4882a593Smuzhiyun PA3_OUT, PA2_OUT, PA1_OUT, PA0_OUT, 59*4882a593Smuzhiyun PB7_OUT, PB6_OUT, PB5_OUT, PB4_OUT, 60*4882a593Smuzhiyun PB3_OUT, PB2_OUT, PB1_OUT, PB0_OUT, 61*4882a593Smuzhiyun PC7_OUT, PC6_OUT, PC5_OUT, PC4_OUT, 62*4882a593Smuzhiyun PC3_OUT, PC2_OUT, PC1_OUT, PC0_OUT, 63*4882a593Smuzhiyun PD7_OUT, PD6_OUT, PD5_OUT, PD4_OUT, 64*4882a593Smuzhiyun PD3_OUT, PD2_OUT, PD1_OUT, PD0_OUT, 65*4882a593Smuzhiyun PE7_OUT, PE6_OUT, PE5_OUT, PE4_OUT, 66*4882a593Smuzhiyun PE3_OUT, PE2_OUT, PE1_OUT, PE0_OUT, 67*4882a593Smuzhiyun PF7_OUT, PF6_OUT, PF5_OUT, PF4_OUT, 68*4882a593Smuzhiyun PF3_OUT, PF2_OUT, PF1_OUT, PF0_OUT, 69*4882a593Smuzhiyun PG7_OUT, PG6_OUT, PG5_OUT, PG4_OUT, 70*4882a593Smuzhiyun PG3_OUT, PG2_OUT, PG1_OUT, PG0_OUT, 71*4882a593Smuzhiyun 72*4882a593Smuzhiyun PH5_OUT, PH4_OUT, 73*4882a593Smuzhiyun PH3_OUT, PH2_OUT, PH1_OUT, PH0_OUT, 74*4882a593Smuzhiyun PINMUX_OUTPUT_END, 75*4882a593Smuzhiyun 76*4882a593Smuzhiyun PINMUX_FUNCTION_BEGIN, 77*4882a593Smuzhiyun PA7_FN, PA6_FN, PA5_FN, PA4_FN, 78*4882a593Smuzhiyun PA3_FN, PA2_FN, PA1_FN, PA0_FN, 79*4882a593Smuzhiyun PB7_FN, PB6_FN, PB5_FN, PB4_FN, 80*4882a593Smuzhiyun PB3_FN, PB2_FN, PB1_FN, PB0_FN, 81*4882a593Smuzhiyun PC7_FN, PC6_FN, PC5_FN, PC4_FN, 82*4882a593Smuzhiyun PC3_FN, PC2_FN, PC1_FN, PC0_FN, 83*4882a593Smuzhiyun PD7_FN, PD6_FN, PD5_FN, PD4_FN, 84*4882a593Smuzhiyun PD3_FN, PD2_FN, PD1_FN, PD0_FN, 85*4882a593Smuzhiyun PE7_FN, PE6_FN, PE5_FN, PE4_FN, 86*4882a593Smuzhiyun PE3_FN, PE2_FN, PE1_FN, PE0_FN, 87*4882a593Smuzhiyun PF7_FN, PF6_FN, PF5_FN, PF4_FN, 88*4882a593Smuzhiyun PF3_FN, PF2_FN, PF1_FN, PF0_FN, 89*4882a593Smuzhiyun PG7_FN, PG6_FN, PG5_FN, PG4_FN, 90*4882a593Smuzhiyun PG3_FN, PG2_FN, PG1_FN, PG0_FN, 91*4882a593Smuzhiyun 92*4882a593Smuzhiyun PH5_FN, PH4_FN, 93*4882a593Smuzhiyun PH3_FN, PH2_FN, PH1_FN, PH0_FN, 94*4882a593Smuzhiyun PINMUX_FUNCTION_END, 95*4882a593Smuzhiyun 96*4882a593Smuzhiyun PINMUX_MARK_BEGIN, 97*4882a593Smuzhiyun 98*4882a593Smuzhiyun D31_MARK, D30_MARK, D29_MARK, D28_MARK, D27_MARK, D26_MARK, 99*4882a593Smuzhiyun D25_MARK, D24_MARK, D23_MARK, D22_MARK, D21_MARK, D20_MARK, 100*4882a593Smuzhiyun D19_MARK, D18_MARK, D17_MARK, D16_MARK, 101*4882a593Smuzhiyun 102*4882a593Smuzhiyun BACK_MARK, BREQ_MARK, 103*4882a593Smuzhiyun WE3_MARK, WE2_MARK, 104*4882a593Smuzhiyun CS6_MARK, CS5_MARK, CS4_MARK, 105*4882a593Smuzhiyun CLKOUTENB_MARK, 106*4882a593Smuzhiyun 107*4882a593Smuzhiyun DACK3_MARK, DACK2_MARK, DACK1_MARK, DACK0_MARK, 108*4882a593Smuzhiyun DREQ3_MARK, DREQ2_MARK, DREQ1_MARK, DREQ0_MARK, 109*4882a593Smuzhiyun 110*4882a593Smuzhiyun IRQ3_MARK, IRQ2_MARK, IRQ1_MARK, IRQ0_MARK, 111*4882a593Smuzhiyun 112*4882a593Smuzhiyun DRAK3_MARK, DRAK2_MARK, DRAK1_MARK, DRAK0_MARK, 113*4882a593Smuzhiyun 114*4882a593Smuzhiyun SCK3_MARK, SCK2_MARK, SCK1_MARK, SCK0_MARK, 115*4882a593Smuzhiyun IRL3_MARK, IRL2_MARK, IRL1_MARK, IRL0_MARK, 116*4882a593Smuzhiyun TXD3_MARK, TXD2_MARK, TXD1_MARK, TXD0_MARK, 117*4882a593Smuzhiyun RXD3_MARK, RXD2_MARK, RXD1_MARK, RXD0_MARK, 118*4882a593Smuzhiyun 119*4882a593Smuzhiyun CE2B_MARK, CE2A_MARK, IOIS16_MARK, 120*4882a593Smuzhiyun STATUS1_MARK, STATUS0_MARK, 121*4882a593Smuzhiyun 122*4882a593Smuzhiyun IRQOUT_MARK, 123*4882a593Smuzhiyun 124*4882a593Smuzhiyun PINMUX_MARK_END, 125*4882a593Smuzhiyun }; 126*4882a593Smuzhiyun 127*4882a593Smuzhiyun static const u16 pinmux_data[] = { 128*4882a593Smuzhiyun /* PA GPIO */ 129*4882a593Smuzhiyun PINMUX_DATA(PA7_DATA, PA7_IN, PA7_OUT), 130*4882a593Smuzhiyun PINMUX_DATA(PA6_DATA, PA6_IN, PA6_OUT), 131*4882a593Smuzhiyun PINMUX_DATA(PA5_DATA, PA5_IN, PA5_OUT), 132*4882a593Smuzhiyun PINMUX_DATA(PA4_DATA, PA4_IN, PA4_OUT), 133*4882a593Smuzhiyun PINMUX_DATA(PA3_DATA, PA3_IN, PA3_OUT), 134*4882a593Smuzhiyun PINMUX_DATA(PA2_DATA, PA2_IN, PA2_OUT), 135*4882a593Smuzhiyun PINMUX_DATA(PA1_DATA, PA1_IN, PA1_OUT), 136*4882a593Smuzhiyun PINMUX_DATA(PA0_DATA, PA0_IN, PA0_OUT), 137*4882a593Smuzhiyun 138*4882a593Smuzhiyun /* PB GPIO */ 139*4882a593Smuzhiyun PINMUX_DATA(PB7_DATA, PB7_IN, PB7_OUT), 140*4882a593Smuzhiyun PINMUX_DATA(PB6_DATA, PB6_IN, PB6_OUT), 141*4882a593Smuzhiyun PINMUX_DATA(PB5_DATA, PB5_IN, PB5_OUT), 142*4882a593Smuzhiyun PINMUX_DATA(PB4_DATA, PB4_IN, PB4_OUT), 143*4882a593Smuzhiyun PINMUX_DATA(PB3_DATA, PB3_IN, PB3_OUT), 144*4882a593Smuzhiyun PINMUX_DATA(PB2_DATA, PB2_IN, PB2_OUT), 145*4882a593Smuzhiyun PINMUX_DATA(PB1_DATA, PB1_IN, PB1_OUT), 146*4882a593Smuzhiyun PINMUX_DATA(PB0_DATA, PB0_IN, PB0_OUT), 147*4882a593Smuzhiyun 148*4882a593Smuzhiyun /* PC GPIO */ 149*4882a593Smuzhiyun PINMUX_DATA(PC7_DATA, PC7_IN, PC7_OUT), 150*4882a593Smuzhiyun PINMUX_DATA(PC6_DATA, PC6_IN, PC6_OUT), 151*4882a593Smuzhiyun PINMUX_DATA(PC5_DATA, PC5_IN, PC5_OUT), 152*4882a593Smuzhiyun PINMUX_DATA(PC4_DATA, PC4_IN, PC4_OUT), 153*4882a593Smuzhiyun PINMUX_DATA(PC3_DATA, PC3_IN, PC3_OUT), 154*4882a593Smuzhiyun PINMUX_DATA(PC2_DATA, PC2_IN, PC2_OUT), 155*4882a593Smuzhiyun PINMUX_DATA(PC1_DATA, PC1_IN, PC1_OUT), 156*4882a593Smuzhiyun PINMUX_DATA(PC0_DATA, PC0_IN, PC0_OUT), 157*4882a593Smuzhiyun 158*4882a593Smuzhiyun /* PD GPIO */ 159*4882a593Smuzhiyun PINMUX_DATA(PD7_DATA, PD7_IN, PD7_OUT), 160*4882a593Smuzhiyun PINMUX_DATA(PD6_DATA, PD6_IN, PD6_OUT), 161*4882a593Smuzhiyun PINMUX_DATA(PD5_DATA, PD5_IN, PD5_OUT), 162*4882a593Smuzhiyun PINMUX_DATA(PD4_DATA, PD4_IN, PD4_OUT), 163*4882a593Smuzhiyun PINMUX_DATA(PD3_DATA, PD3_IN, PD3_OUT), 164*4882a593Smuzhiyun PINMUX_DATA(PD2_DATA, PD2_IN, PD2_OUT), 165*4882a593Smuzhiyun PINMUX_DATA(PD1_DATA, PD1_IN, PD1_OUT), 166*4882a593Smuzhiyun PINMUX_DATA(PD0_DATA, PD0_IN, PD0_OUT), 167*4882a593Smuzhiyun 168*4882a593Smuzhiyun /* PE GPIO */ 169*4882a593Smuzhiyun PINMUX_DATA(PE7_DATA, PE7_IN, PE7_OUT), 170*4882a593Smuzhiyun PINMUX_DATA(PE6_DATA, PE6_IN, PE6_OUT), 171*4882a593Smuzhiyun PINMUX_DATA(PE5_DATA, PE5_IN, PE5_OUT), 172*4882a593Smuzhiyun PINMUX_DATA(PE4_DATA, PE4_IN, PE4_OUT), 173*4882a593Smuzhiyun PINMUX_DATA(PE3_DATA, PE3_IN, PE3_OUT), 174*4882a593Smuzhiyun PINMUX_DATA(PE2_DATA, PE2_IN, PE2_OUT), 175*4882a593Smuzhiyun PINMUX_DATA(PE1_DATA, PE1_IN, PE1_OUT), 176*4882a593Smuzhiyun PINMUX_DATA(PE0_DATA, PE0_IN, PE0_OUT), 177*4882a593Smuzhiyun 178*4882a593Smuzhiyun /* PF GPIO */ 179*4882a593Smuzhiyun PINMUX_DATA(PF7_DATA, PF7_IN, PF7_OUT), 180*4882a593Smuzhiyun PINMUX_DATA(PF6_DATA, PF6_IN, PF6_OUT), 181*4882a593Smuzhiyun PINMUX_DATA(PF5_DATA, PF5_IN, PF5_OUT), 182*4882a593Smuzhiyun PINMUX_DATA(PF4_DATA, PF4_IN, PF4_OUT), 183*4882a593Smuzhiyun PINMUX_DATA(PF3_DATA, PF3_IN, PF3_OUT), 184*4882a593Smuzhiyun PINMUX_DATA(PF2_DATA, PF2_IN, PF2_OUT), 185*4882a593Smuzhiyun PINMUX_DATA(PF1_DATA, PF1_IN, PF1_OUT), 186*4882a593Smuzhiyun PINMUX_DATA(PF0_DATA, PF0_IN, PF0_OUT), 187*4882a593Smuzhiyun 188*4882a593Smuzhiyun /* PG GPIO */ 189*4882a593Smuzhiyun PINMUX_DATA(PG7_DATA, PG7_IN, PG7_OUT), 190*4882a593Smuzhiyun PINMUX_DATA(PG6_DATA, PG6_IN, PG6_OUT), 191*4882a593Smuzhiyun PINMUX_DATA(PG5_DATA, PG5_IN, PG5_OUT), 192*4882a593Smuzhiyun PINMUX_DATA(PG4_DATA, PG4_IN, PG4_OUT), 193*4882a593Smuzhiyun PINMUX_DATA(PG3_DATA, PG3_IN, PG3_OUT), 194*4882a593Smuzhiyun PINMUX_DATA(PG2_DATA, PG2_IN, PG2_OUT), 195*4882a593Smuzhiyun PINMUX_DATA(PG1_DATA, PG1_IN, PG1_OUT), 196*4882a593Smuzhiyun PINMUX_DATA(PG0_DATA, PG0_IN, PG0_OUT), 197*4882a593Smuzhiyun 198*4882a593Smuzhiyun /* PH GPIO */ 199*4882a593Smuzhiyun PINMUX_DATA(PH5_DATA, PH5_IN, PH5_OUT), 200*4882a593Smuzhiyun PINMUX_DATA(PH4_DATA, PH4_IN, PH4_OUT), 201*4882a593Smuzhiyun PINMUX_DATA(PH3_DATA, PH3_IN, PH3_OUT), 202*4882a593Smuzhiyun PINMUX_DATA(PH2_DATA, PH2_IN, PH2_OUT), 203*4882a593Smuzhiyun PINMUX_DATA(PH1_DATA, PH1_IN, PH1_OUT), 204*4882a593Smuzhiyun PINMUX_DATA(PH0_DATA, PH0_IN, PH0_OUT), 205*4882a593Smuzhiyun 206*4882a593Smuzhiyun /* PA FN */ 207*4882a593Smuzhiyun PINMUX_DATA(D31_MARK, PA7_FN), 208*4882a593Smuzhiyun PINMUX_DATA(D30_MARK, PA6_FN), 209*4882a593Smuzhiyun PINMUX_DATA(D29_MARK, PA5_FN), 210*4882a593Smuzhiyun PINMUX_DATA(D28_MARK, PA4_FN), 211*4882a593Smuzhiyun PINMUX_DATA(D27_MARK, PA3_FN), 212*4882a593Smuzhiyun PINMUX_DATA(D26_MARK, PA2_FN), 213*4882a593Smuzhiyun PINMUX_DATA(D25_MARK, PA1_FN), 214*4882a593Smuzhiyun PINMUX_DATA(D24_MARK, PA0_FN), 215*4882a593Smuzhiyun 216*4882a593Smuzhiyun /* PB FN */ 217*4882a593Smuzhiyun PINMUX_DATA(D23_MARK, PB7_FN), 218*4882a593Smuzhiyun PINMUX_DATA(D22_MARK, PB6_FN), 219*4882a593Smuzhiyun PINMUX_DATA(D21_MARK, PB5_FN), 220*4882a593Smuzhiyun PINMUX_DATA(D20_MARK, PB4_FN), 221*4882a593Smuzhiyun PINMUX_DATA(D19_MARK, PB3_FN), 222*4882a593Smuzhiyun PINMUX_DATA(D18_MARK, PB2_FN), 223*4882a593Smuzhiyun PINMUX_DATA(D17_MARK, PB1_FN), 224*4882a593Smuzhiyun PINMUX_DATA(D16_MARK, PB0_FN), 225*4882a593Smuzhiyun 226*4882a593Smuzhiyun /* PC FN */ 227*4882a593Smuzhiyun PINMUX_DATA(BACK_MARK, PC7_FN), 228*4882a593Smuzhiyun PINMUX_DATA(BREQ_MARK, PC6_FN), 229*4882a593Smuzhiyun PINMUX_DATA(WE3_MARK, PC5_FN), 230*4882a593Smuzhiyun PINMUX_DATA(WE2_MARK, PC4_FN), 231*4882a593Smuzhiyun PINMUX_DATA(CS6_MARK, PC3_FN), 232*4882a593Smuzhiyun PINMUX_DATA(CS5_MARK, PC2_FN), 233*4882a593Smuzhiyun PINMUX_DATA(CS4_MARK, PC1_FN), 234*4882a593Smuzhiyun PINMUX_DATA(CLKOUTENB_MARK, PC0_FN), 235*4882a593Smuzhiyun 236*4882a593Smuzhiyun /* PD FN */ 237*4882a593Smuzhiyun PINMUX_DATA(DACK3_MARK, PD7_FN), 238*4882a593Smuzhiyun PINMUX_DATA(DACK2_MARK, PD6_FN), 239*4882a593Smuzhiyun PINMUX_DATA(DACK1_MARK, PD5_FN), 240*4882a593Smuzhiyun PINMUX_DATA(DACK0_MARK, PD4_FN), 241*4882a593Smuzhiyun PINMUX_DATA(DREQ3_MARK, PD3_FN), 242*4882a593Smuzhiyun PINMUX_DATA(DREQ2_MARK, PD2_FN), 243*4882a593Smuzhiyun PINMUX_DATA(DREQ1_MARK, PD1_FN), 244*4882a593Smuzhiyun PINMUX_DATA(DREQ0_MARK, PD0_FN), 245*4882a593Smuzhiyun 246*4882a593Smuzhiyun /* PE FN */ 247*4882a593Smuzhiyun PINMUX_DATA(IRQ3_MARK, PE7_FN), 248*4882a593Smuzhiyun PINMUX_DATA(IRQ2_MARK, PE6_FN), 249*4882a593Smuzhiyun PINMUX_DATA(IRQ1_MARK, PE5_FN), 250*4882a593Smuzhiyun PINMUX_DATA(IRQ0_MARK, PE4_FN), 251*4882a593Smuzhiyun PINMUX_DATA(DRAK3_MARK, PE3_FN), 252*4882a593Smuzhiyun PINMUX_DATA(DRAK2_MARK, PE2_FN), 253*4882a593Smuzhiyun PINMUX_DATA(DRAK1_MARK, PE1_FN), 254*4882a593Smuzhiyun PINMUX_DATA(DRAK0_MARK, PE0_FN), 255*4882a593Smuzhiyun 256*4882a593Smuzhiyun /* PF FN */ 257*4882a593Smuzhiyun PINMUX_DATA(SCK3_MARK, PF7_FN), 258*4882a593Smuzhiyun PINMUX_DATA(SCK2_MARK, PF6_FN), 259*4882a593Smuzhiyun PINMUX_DATA(SCK1_MARK, PF5_FN), 260*4882a593Smuzhiyun PINMUX_DATA(SCK0_MARK, PF4_FN), 261*4882a593Smuzhiyun PINMUX_DATA(IRL3_MARK, PF3_FN), 262*4882a593Smuzhiyun PINMUX_DATA(IRL2_MARK, PF2_FN), 263*4882a593Smuzhiyun PINMUX_DATA(IRL1_MARK, PF1_FN), 264*4882a593Smuzhiyun PINMUX_DATA(IRL0_MARK, PF0_FN), 265*4882a593Smuzhiyun 266*4882a593Smuzhiyun /* PG FN */ 267*4882a593Smuzhiyun PINMUX_DATA(TXD3_MARK, PG7_FN), 268*4882a593Smuzhiyun PINMUX_DATA(TXD2_MARK, PG6_FN), 269*4882a593Smuzhiyun PINMUX_DATA(TXD1_MARK, PG5_FN), 270*4882a593Smuzhiyun PINMUX_DATA(TXD0_MARK, PG4_FN), 271*4882a593Smuzhiyun PINMUX_DATA(RXD3_MARK, PG3_FN), 272*4882a593Smuzhiyun PINMUX_DATA(RXD2_MARK, PG2_FN), 273*4882a593Smuzhiyun PINMUX_DATA(RXD1_MARK, PG1_FN), 274*4882a593Smuzhiyun PINMUX_DATA(RXD0_MARK, PG0_FN), 275*4882a593Smuzhiyun 276*4882a593Smuzhiyun /* PH FN */ 277*4882a593Smuzhiyun PINMUX_DATA(CE2B_MARK, PH5_FN), 278*4882a593Smuzhiyun PINMUX_DATA(CE2A_MARK, PH4_FN), 279*4882a593Smuzhiyun PINMUX_DATA(IOIS16_MARK, PH3_FN), 280*4882a593Smuzhiyun PINMUX_DATA(STATUS1_MARK, PH2_FN), 281*4882a593Smuzhiyun PINMUX_DATA(STATUS0_MARK, PH1_FN), 282*4882a593Smuzhiyun PINMUX_DATA(IRQOUT_MARK, PH0_FN), 283*4882a593Smuzhiyun }; 284*4882a593Smuzhiyun 285*4882a593Smuzhiyun static const struct sh_pfc_pin pinmux_pins[] = { 286*4882a593Smuzhiyun /* PA */ 287*4882a593Smuzhiyun PINMUX_GPIO(PA7), 288*4882a593Smuzhiyun PINMUX_GPIO(PA6), 289*4882a593Smuzhiyun PINMUX_GPIO(PA5), 290*4882a593Smuzhiyun PINMUX_GPIO(PA4), 291*4882a593Smuzhiyun PINMUX_GPIO(PA3), 292*4882a593Smuzhiyun PINMUX_GPIO(PA2), 293*4882a593Smuzhiyun PINMUX_GPIO(PA1), 294*4882a593Smuzhiyun PINMUX_GPIO(PA0), 295*4882a593Smuzhiyun 296*4882a593Smuzhiyun /* PB */ 297*4882a593Smuzhiyun PINMUX_GPIO(PB7), 298*4882a593Smuzhiyun PINMUX_GPIO(PB6), 299*4882a593Smuzhiyun PINMUX_GPIO(PB5), 300*4882a593Smuzhiyun PINMUX_GPIO(PB4), 301*4882a593Smuzhiyun PINMUX_GPIO(PB3), 302*4882a593Smuzhiyun PINMUX_GPIO(PB2), 303*4882a593Smuzhiyun PINMUX_GPIO(PB1), 304*4882a593Smuzhiyun PINMUX_GPIO(PB0), 305*4882a593Smuzhiyun 306*4882a593Smuzhiyun /* PC */ 307*4882a593Smuzhiyun PINMUX_GPIO(PC7), 308*4882a593Smuzhiyun PINMUX_GPIO(PC6), 309*4882a593Smuzhiyun PINMUX_GPIO(PC5), 310*4882a593Smuzhiyun PINMUX_GPIO(PC4), 311*4882a593Smuzhiyun PINMUX_GPIO(PC3), 312*4882a593Smuzhiyun PINMUX_GPIO(PC2), 313*4882a593Smuzhiyun PINMUX_GPIO(PC1), 314*4882a593Smuzhiyun PINMUX_GPIO(PC0), 315*4882a593Smuzhiyun 316*4882a593Smuzhiyun /* PD */ 317*4882a593Smuzhiyun PINMUX_GPIO(PD7), 318*4882a593Smuzhiyun PINMUX_GPIO(PD6), 319*4882a593Smuzhiyun PINMUX_GPIO(PD5), 320*4882a593Smuzhiyun PINMUX_GPIO(PD4), 321*4882a593Smuzhiyun PINMUX_GPIO(PD3), 322*4882a593Smuzhiyun PINMUX_GPIO(PD2), 323*4882a593Smuzhiyun PINMUX_GPIO(PD1), 324*4882a593Smuzhiyun PINMUX_GPIO(PD0), 325*4882a593Smuzhiyun 326*4882a593Smuzhiyun /* PE */ 327*4882a593Smuzhiyun PINMUX_GPIO(PE7), 328*4882a593Smuzhiyun PINMUX_GPIO(PE6), 329*4882a593Smuzhiyun PINMUX_GPIO(PE5), 330*4882a593Smuzhiyun PINMUX_GPIO(PE4), 331*4882a593Smuzhiyun PINMUX_GPIO(PE3), 332*4882a593Smuzhiyun PINMUX_GPIO(PE2), 333*4882a593Smuzhiyun PINMUX_GPIO(PE1), 334*4882a593Smuzhiyun PINMUX_GPIO(PE0), 335*4882a593Smuzhiyun 336*4882a593Smuzhiyun /* PF */ 337*4882a593Smuzhiyun PINMUX_GPIO(PF7), 338*4882a593Smuzhiyun PINMUX_GPIO(PF6), 339*4882a593Smuzhiyun PINMUX_GPIO(PF5), 340*4882a593Smuzhiyun PINMUX_GPIO(PF4), 341*4882a593Smuzhiyun PINMUX_GPIO(PF3), 342*4882a593Smuzhiyun PINMUX_GPIO(PF2), 343*4882a593Smuzhiyun PINMUX_GPIO(PF1), 344*4882a593Smuzhiyun PINMUX_GPIO(PF0), 345*4882a593Smuzhiyun 346*4882a593Smuzhiyun /* PG */ 347*4882a593Smuzhiyun PINMUX_GPIO(PG7), 348*4882a593Smuzhiyun PINMUX_GPIO(PG6), 349*4882a593Smuzhiyun PINMUX_GPIO(PG5), 350*4882a593Smuzhiyun PINMUX_GPIO(PG4), 351*4882a593Smuzhiyun PINMUX_GPIO(PG3), 352*4882a593Smuzhiyun PINMUX_GPIO(PG2), 353*4882a593Smuzhiyun PINMUX_GPIO(PG1), 354*4882a593Smuzhiyun PINMUX_GPIO(PG0), 355*4882a593Smuzhiyun 356*4882a593Smuzhiyun /* PH */ 357*4882a593Smuzhiyun PINMUX_GPIO(PH5), 358*4882a593Smuzhiyun PINMUX_GPIO(PH4), 359*4882a593Smuzhiyun PINMUX_GPIO(PH3), 360*4882a593Smuzhiyun PINMUX_GPIO(PH2), 361*4882a593Smuzhiyun PINMUX_GPIO(PH1), 362*4882a593Smuzhiyun PINMUX_GPIO(PH0), 363*4882a593Smuzhiyun }; 364*4882a593Smuzhiyun 365*4882a593Smuzhiyun #define PINMUX_FN_BASE ARRAY_SIZE(pinmux_pins) 366*4882a593Smuzhiyun 367*4882a593Smuzhiyun static const struct pinmux_func pinmux_func_gpios[] = { 368*4882a593Smuzhiyun /* FN */ 369*4882a593Smuzhiyun GPIO_FN(D31), 370*4882a593Smuzhiyun GPIO_FN(D30), 371*4882a593Smuzhiyun GPIO_FN(D29), 372*4882a593Smuzhiyun GPIO_FN(D28), 373*4882a593Smuzhiyun GPIO_FN(D27), 374*4882a593Smuzhiyun GPIO_FN(D26), 375*4882a593Smuzhiyun GPIO_FN(D25), 376*4882a593Smuzhiyun GPIO_FN(D24), 377*4882a593Smuzhiyun GPIO_FN(D23), 378*4882a593Smuzhiyun GPIO_FN(D22), 379*4882a593Smuzhiyun GPIO_FN(D21), 380*4882a593Smuzhiyun GPIO_FN(D20), 381*4882a593Smuzhiyun GPIO_FN(D19), 382*4882a593Smuzhiyun GPIO_FN(D18), 383*4882a593Smuzhiyun GPIO_FN(D17), 384*4882a593Smuzhiyun GPIO_FN(D16), 385*4882a593Smuzhiyun GPIO_FN(BACK), 386*4882a593Smuzhiyun GPIO_FN(BREQ), 387*4882a593Smuzhiyun GPIO_FN(WE3), 388*4882a593Smuzhiyun GPIO_FN(WE2), 389*4882a593Smuzhiyun GPIO_FN(CS6), 390*4882a593Smuzhiyun GPIO_FN(CS5), 391*4882a593Smuzhiyun GPIO_FN(CS4), 392*4882a593Smuzhiyun GPIO_FN(CLKOUTENB), 393*4882a593Smuzhiyun GPIO_FN(DACK3), 394*4882a593Smuzhiyun GPIO_FN(DACK2), 395*4882a593Smuzhiyun GPIO_FN(DACK1), 396*4882a593Smuzhiyun GPIO_FN(DACK0), 397*4882a593Smuzhiyun GPIO_FN(DREQ3), 398*4882a593Smuzhiyun GPIO_FN(DREQ2), 399*4882a593Smuzhiyun GPIO_FN(DREQ1), 400*4882a593Smuzhiyun GPIO_FN(DREQ0), 401*4882a593Smuzhiyun GPIO_FN(IRQ3), 402*4882a593Smuzhiyun GPIO_FN(IRQ2), 403*4882a593Smuzhiyun GPIO_FN(IRQ1), 404*4882a593Smuzhiyun GPIO_FN(IRQ0), 405*4882a593Smuzhiyun GPIO_FN(DRAK3), 406*4882a593Smuzhiyun GPIO_FN(DRAK2), 407*4882a593Smuzhiyun GPIO_FN(DRAK1), 408*4882a593Smuzhiyun GPIO_FN(DRAK0), 409*4882a593Smuzhiyun GPIO_FN(SCK3), 410*4882a593Smuzhiyun GPIO_FN(SCK2), 411*4882a593Smuzhiyun GPIO_FN(SCK1), 412*4882a593Smuzhiyun GPIO_FN(SCK0), 413*4882a593Smuzhiyun GPIO_FN(IRL3), 414*4882a593Smuzhiyun GPIO_FN(IRL2), 415*4882a593Smuzhiyun GPIO_FN(IRL1), 416*4882a593Smuzhiyun GPIO_FN(IRL0), 417*4882a593Smuzhiyun GPIO_FN(TXD3), 418*4882a593Smuzhiyun GPIO_FN(TXD2), 419*4882a593Smuzhiyun GPIO_FN(TXD1), 420*4882a593Smuzhiyun GPIO_FN(TXD0), 421*4882a593Smuzhiyun GPIO_FN(RXD3), 422*4882a593Smuzhiyun GPIO_FN(RXD2), 423*4882a593Smuzhiyun GPIO_FN(RXD1), 424*4882a593Smuzhiyun GPIO_FN(RXD0), 425*4882a593Smuzhiyun GPIO_FN(CE2B), 426*4882a593Smuzhiyun GPIO_FN(CE2A), 427*4882a593Smuzhiyun GPIO_FN(IOIS16), 428*4882a593Smuzhiyun GPIO_FN(STATUS1), 429*4882a593Smuzhiyun GPIO_FN(STATUS0), 430*4882a593Smuzhiyun GPIO_FN(IRQOUT), 431*4882a593Smuzhiyun }; 432*4882a593Smuzhiyun 433*4882a593Smuzhiyun static const struct pinmux_cfg_reg pinmux_config_regs[] = { 434*4882a593Smuzhiyun { PINMUX_CFG_REG("PABCR", 0xffc70000, 32, 2, GROUP( 435*4882a593Smuzhiyun PA7_FN, PA7_OUT, PA7_IN, 0, 436*4882a593Smuzhiyun PA6_FN, PA6_OUT, PA6_IN, 0, 437*4882a593Smuzhiyun PA5_FN, PA5_OUT, PA5_IN, 0, 438*4882a593Smuzhiyun PA4_FN, PA4_OUT, PA4_IN, 0, 439*4882a593Smuzhiyun PA3_FN, PA3_OUT, PA3_IN, 0, 440*4882a593Smuzhiyun PA2_FN, PA2_OUT, PA2_IN, 0, 441*4882a593Smuzhiyun PA1_FN, PA1_OUT, PA1_IN, 0, 442*4882a593Smuzhiyun PA0_FN, PA0_OUT, PA0_IN, 0, 443*4882a593Smuzhiyun PB7_FN, PB7_OUT, PB7_IN, 0, 444*4882a593Smuzhiyun PB6_FN, PB6_OUT, PB6_IN, 0, 445*4882a593Smuzhiyun PB5_FN, PB5_OUT, PB5_IN, 0, 446*4882a593Smuzhiyun PB4_FN, PB4_OUT, PB4_IN, 0, 447*4882a593Smuzhiyun PB3_FN, PB3_OUT, PB3_IN, 0, 448*4882a593Smuzhiyun PB2_FN, PB2_OUT, PB2_IN, 0, 449*4882a593Smuzhiyun PB1_FN, PB1_OUT, PB1_IN, 0, 450*4882a593Smuzhiyun PB0_FN, PB0_OUT, PB0_IN, 0, )) 451*4882a593Smuzhiyun }, 452*4882a593Smuzhiyun { PINMUX_CFG_REG("PCDCR", 0xffc70004, 32, 2, GROUP( 453*4882a593Smuzhiyun PC7_FN, PC7_OUT, PC7_IN, 0, 454*4882a593Smuzhiyun PC6_FN, PC6_OUT, PC6_IN, 0, 455*4882a593Smuzhiyun PC5_FN, PC5_OUT, PC5_IN, 0, 456*4882a593Smuzhiyun PC4_FN, PC4_OUT, PC4_IN, 0, 457*4882a593Smuzhiyun PC3_FN, PC3_OUT, PC3_IN, 0, 458*4882a593Smuzhiyun PC2_FN, PC2_OUT, PC2_IN, 0, 459*4882a593Smuzhiyun PC1_FN, PC1_OUT, PC1_IN, 0, 460*4882a593Smuzhiyun PC0_FN, PC0_OUT, PC0_IN, 0, 461*4882a593Smuzhiyun PD7_FN, PD7_OUT, PD7_IN, 0, 462*4882a593Smuzhiyun PD6_FN, PD6_OUT, PD6_IN, 0, 463*4882a593Smuzhiyun PD5_FN, PD5_OUT, PD5_IN, 0, 464*4882a593Smuzhiyun PD4_FN, PD4_OUT, PD4_IN, 0, 465*4882a593Smuzhiyun PD3_FN, PD3_OUT, PD3_IN, 0, 466*4882a593Smuzhiyun PD2_FN, PD2_OUT, PD2_IN, 0, 467*4882a593Smuzhiyun PD1_FN, PD1_OUT, PD1_IN, 0, 468*4882a593Smuzhiyun PD0_FN, PD0_OUT, PD0_IN, 0, )) 469*4882a593Smuzhiyun }, 470*4882a593Smuzhiyun { PINMUX_CFG_REG("PEFCR", 0xffc70008, 32, 2, GROUP( 471*4882a593Smuzhiyun PE7_FN, PE7_OUT, PE7_IN, 0, 472*4882a593Smuzhiyun PE6_FN, PE6_OUT, PE6_IN, 0, 473*4882a593Smuzhiyun PE5_FN, PE5_OUT, PE5_IN, 0, 474*4882a593Smuzhiyun PE4_FN, PE4_OUT, PE4_IN, 0, 475*4882a593Smuzhiyun PE3_FN, PE3_OUT, PE3_IN, 0, 476*4882a593Smuzhiyun PE2_FN, PE2_OUT, PE2_IN, 0, 477*4882a593Smuzhiyun PE1_FN, PE1_OUT, PE1_IN, 0, 478*4882a593Smuzhiyun PE0_FN, PE0_OUT, PE0_IN, 0, 479*4882a593Smuzhiyun PF7_FN, PF7_OUT, PF7_IN, 0, 480*4882a593Smuzhiyun PF6_FN, PF6_OUT, PF6_IN, 0, 481*4882a593Smuzhiyun PF5_FN, PF5_OUT, PF5_IN, 0, 482*4882a593Smuzhiyun PF4_FN, PF4_OUT, PF4_IN, 0, 483*4882a593Smuzhiyun PF3_FN, PF3_OUT, PF3_IN, 0, 484*4882a593Smuzhiyun PF2_FN, PF2_OUT, PF2_IN, 0, 485*4882a593Smuzhiyun PF1_FN, PF1_OUT, PF1_IN, 0, 486*4882a593Smuzhiyun PF0_FN, PF0_OUT, PF0_IN, 0, )) 487*4882a593Smuzhiyun }, 488*4882a593Smuzhiyun { PINMUX_CFG_REG("PGHCR", 0xffc7000c, 32, 2, GROUP( 489*4882a593Smuzhiyun PG7_FN, PG7_OUT, PG7_IN, 0, 490*4882a593Smuzhiyun PG6_FN, PG6_OUT, PG6_IN, 0, 491*4882a593Smuzhiyun PG5_FN, PG5_OUT, PG5_IN, 0, 492*4882a593Smuzhiyun PG4_FN, PG4_OUT, PG4_IN, 0, 493*4882a593Smuzhiyun PG3_FN, PG3_OUT, PG3_IN, 0, 494*4882a593Smuzhiyun PG2_FN, PG2_OUT, PG2_IN, 0, 495*4882a593Smuzhiyun PG1_FN, PG1_OUT, PG1_IN, 0, 496*4882a593Smuzhiyun PG0_FN, PG0_OUT, PG0_IN, 0, 497*4882a593Smuzhiyun 0, 0, 0, 0, 498*4882a593Smuzhiyun 0, 0, 0, 0, 499*4882a593Smuzhiyun PH5_FN, PH5_OUT, PH5_IN, 0, 500*4882a593Smuzhiyun PH4_FN, PH4_OUT, PH4_IN, 0, 501*4882a593Smuzhiyun PH3_FN, PH3_OUT, PH3_IN, 0, 502*4882a593Smuzhiyun PH2_FN, PH2_OUT, PH2_IN, 0, 503*4882a593Smuzhiyun PH1_FN, PH1_OUT, PH1_IN, 0, 504*4882a593Smuzhiyun PH0_FN, PH0_OUT, PH0_IN, 0, )) 505*4882a593Smuzhiyun }, 506*4882a593Smuzhiyun { }, 507*4882a593Smuzhiyun }; 508*4882a593Smuzhiyun 509*4882a593Smuzhiyun static const struct pinmux_data_reg pinmux_data_regs[] = { 510*4882a593Smuzhiyun { PINMUX_DATA_REG("PABDR", 0xffc70010, 32, GROUP( 511*4882a593Smuzhiyun 0, 0, 0, 0, 0, 0, 0, 0, 512*4882a593Smuzhiyun PA7_DATA, PA6_DATA, PA5_DATA, PA4_DATA, 513*4882a593Smuzhiyun PA3_DATA, PA2_DATA, PA1_DATA, PA0_DATA, 514*4882a593Smuzhiyun 0, 0, 0, 0, 0, 0, 0, 0, 515*4882a593Smuzhiyun PB7_DATA, PB6_DATA, PB5_DATA, PB4_DATA, 516*4882a593Smuzhiyun PB3_DATA, PB2_DATA, PB1_DATA, PB0_DATA, )) 517*4882a593Smuzhiyun }, 518*4882a593Smuzhiyun { PINMUX_DATA_REG("PCDDR", 0xffc70014, 32, GROUP( 519*4882a593Smuzhiyun 0, 0, 0, 0, 0, 0, 0, 0, 520*4882a593Smuzhiyun PC7_DATA, PC6_DATA, PC5_DATA, PC4_DATA, 521*4882a593Smuzhiyun PC3_DATA, PC2_DATA, PC1_DATA, PC0_DATA, 522*4882a593Smuzhiyun 0, 0, 0, 0, 0, 0, 0, 0, 523*4882a593Smuzhiyun PD7_DATA, PD6_DATA, PD5_DATA, PD4_DATA, 524*4882a593Smuzhiyun PD3_DATA, PD2_DATA, PD1_DATA, PD0_DATA, )) 525*4882a593Smuzhiyun }, 526*4882a593Smuzhiyun { PINMUX_DATA_REG("PEFDR", 0xffc70018, 32, GROUP( 527*4882a593Smuzhiyun 0, 0, 0, 0, 0, 0, 0, 0, 528*4882a593Smuzhiyun PE7_DATA, PE6_DATA, PE5_DATA, PE4_DATA, 529*4882a593Smuzhiyun PE3_DATA, PE2_DATA, PE1_DATA, PE0_DATA, 530*4882a593Smuzhiyun 0, 0, 0, 0, 0, 0, 0, 0, 531*4882a593Smuzhiyun PF7_DATA, PF6_DATA, PF5_DATA, PF4_DATA, 532*4882a593Smuzhiyun PF3_DATA, PF2_DATA, PF1_DATA, PF0_DATA, )) 533*4882a593Smuzhiyun }, 534*4882a593Smuzhiyun { PINMUX_DATA_REG("PGHDR", 0xffc7001c, 32, GROUP( 535*4882a593Smuzhiyun 0, 0, 0, 0, 0, 0, 0, 0, 536*4882a593Smuzhiyun PG7_DATA, PG6_DATA, PG5_DATA, PG4_DATA, 537*4882a593Smuzhiyun PG3_DATA, PG2_DATA, PG1_DATA, PG0_DATA, 538*4882a593Smuzhiyun 0, 0, 0, 0, 0, 0, 0, 0, 539*4882a593Smuzhiyun 0, 0, PH5_DATA, PH4_DATA, 540*4882a593Smuzhiyun PH3_DATA, PH2_DATA, PH1_DATA, PH0_DATA, )) 541*4882a593Smuzhiyun }, 542*4882a593Smuzhiyun { }, 543*4882a593Smuzhiyun }; 544*4882a593Smuzhiyun 545*4882a593Smuzhiyun const struct sh_pfc_soc_info shx3_pinmux_info = { 546*4882a593Smuzhiyun .name = "shx3_pfc", 547*4882a593Smuzhiyun .input = { PINMUX_INPUT_BEGIN, PINMUX_INPUT_END }, 548*4882a593Smuzhiyun .output = { PINMUX_OUTPUT_BEGIN, PINMUX_OUTPUT_END }, 549*4882a593Smuzhiyun .function = { PINMUX_FUNCTION_BEGIN, PINMUX_FUNCTION_END }, 550*4882a593Smuzhiyun .pins = pinmux_pins, 551*4882a593Smuzhiyun .nr_pins = ARRAY_SIZE(pinmux_pins), 552*4882a593Smuzhiyun .func_gpios = pinmux_func_gpios, 553*4882a593Smuzhiyun .nr_func_gpios = ARRAY_SIZE(pinmux_func_gpios), 554*4882a593Smuzhiyun .pinmux_data = pinmux_data, 555*4882a593Smuzhiyun .pinmux_data_size = ARRAY_SIZE(pinmux_data), 556*4882a593Smuzhiyun .cfg_regs = pinmux_config_regs, 557*4882a593Smuzhiyun .data_regs = pinmux_data_regs, 558*4882a593Smuzhiyun }; 559