1 | // SPDX-License-Identifier: GPL-2.0 |
2 | /* |
3 | * R8A779F0 processor support - PFC hardware block. |
4 | * |
5 | * Copyright (C) 2021 Renesas Electronics Corp. |
6 | * |
7 | * This file is based on the drivers/pinctrl/renesas/pfc-r8a779a0.c |
8 | */ |
9 | |
10 | #include <linux/errno.h> |
11 | #include <linux/io.h> |
12 | #include <linux/kernel.h> |
13 | |
14 | #include "sh_pfc.h" |
15 | |
16 | #define CFG_FLAGS (SH_PFC_PIN_CFG_DRIVE_STRENGTH | SH_PFC_PIN_CFG_PULL_UP_DOWN) |
17 | |
18 | #define CPU_ALL_GP(fn, sfx) \ |
19 | PORT_GP_CFG_21(0, fn, sfx, CFG_FLAGS | SH_PFC_PIN_CFG_IO_VOLTAGE_18_33), \ |
20 | PORT_GP_CFG_25(1, fn, sfx, CFG_FLAGS | SH_PFC_PIN_CFG_IO_VOLTAGE_18_33), \ |
21 | PORT_GP_CFG_17(2, fn, sfx, CFG_FLAGS), \ |
22 | PORT_GP_CFG_19(3, fn, sfx, CFG_FLAGS | SH_PFC_PIN_CFG_IO_VOLTAGE_18_33) |
23 | |
24 | #define CPU_ALL_NOGP(fn) \ |
25 | PIN_NOGP_CFG(PRESETOUT0_N, "PRESETOUT0#", fn, SH_PFC_PIN_CFG_PULL_DOWN), \ |
26 | PIN_NOGP_CFG(EXTALR, "EXTALR", fn, SH_PFC_PIN_CFG_PULL_UP_DOWN) |
27 | |
28 | /* |
29 | * F_() : just information |
30 | * FM() : macro for FN_xxx / xxx_MARK |
31 | */ |
32 | |
33 | /* GPSR0 */ |
34 | #define GPSR0_20 F_(IRQ3, IP2SR0_19_16) |
35 | #define GPSR0_19 F_(IRQ2, IP2SR0_15_12) |
36 | #define GPSR0_18 F_(IRQ1, IP2SR0_11_8) |
37 | #define GPSR0_17 F_(IRQ0, IP2SR0_7_4) |
38 | #define GPSR0_16 F_(MSIOF0_SS2, IP2SR0_3_0) |
39 | #define GPSR0_15 F_(MSIOF0_SS1, IP1SR0_31_28) |
40 | #define GPSR0_14 F_(MSIOF0_SCK, IP1SR0_27_24) |
41 | #define GPSR0_13 F_(MSIOF0_TXD, IP1SR0_23_20) |
42 | #define GPSR0_12 F_(MSIOF0_RXD, IP1SR0_19_16) |
43 | #define GPSR0_11 F_(MSIOF0_SYNC, IP1SR0_15_12) |
44 | #define GPSR0_10 F_(CTS0_N, IP1SR0_11_8) |
45 | #define GPSR0_9 F_(RTS0_N, IP1SR0_7_4) |
46 | #define GPSR0_8 F_(SCK0, IP1SR0_3_0) |
47 | #define GPSR0_7 F_(TX0, IP0SR0_31_28) |
48 | #define GPSR0_6 F_(RX0, IP0SR0_27_24) |
49 | #define GPSR0_5 F_(HRTS0_N, IP0SR0_23_20) |
50 | #define GPSR0_4 F_(HCTS0_N, IP0SR0_19_16) |
51 | #define GPSR0_3 F_(HTX0, IP0SR0_15_12) |
52 | #define GPSR0_2 F_(HRX0, IP0SR0_11_8) |
53 | #define GPSR0_1 F_(HSCK0, IP0SR0_7_4) |
54 | #define GPSR0_0 F_(SCIF_CLK, IP0SR0_3_0) |
55 | |
56 | /* GPSR1 */ |
57 | #define GPSR1_24 FM(SD_WP) |
58 | #define GPSR1_23 FM(SD_CD) |
59 | #define GPSR1_22 FM(MMC_SD_CMD) |
60 | #define GPSR1_21 FM(MMC_D7) |
61 | #define GPSR1_20 FM(MMC_DS) |
62 | #define GPSR1_19 FM(MMC_D6) |
63 | #define GPSR1_18 FM(MMC_D4) |
64 | #define GPSR1_17 FM(MMC_D5) |
65 | #define GPSR1_16 FM(MMC_SD_D3) |
66 | #define GPSR1_15 FM(MMC_SD_D2) |
67 | #define GPSR1_14 FM(MMC_SD_D1) |
68 | #define GPSR1_13 FM(MMC_SD_D0) |
69 | #define GPSR1_12 FM(MMC_SD_CLK) |
70 | #define GPSR1_11 FM(GP1_11) |
71 | #define GPSR1_10 FM(GP1_10) |
72 | #define GPSR1_9 FM(GP1_09) |
73 | #define GPSR1_8 FM(GP1_08) |
74 | #define GPSR1_7 F_(GP1_07, IP0SR1_31_28) |
75 | #define GPSR1_6 F_(GP1_06, IP0SR1_27_24) |
76 | #define GPSR1_5 F_(GP1_05, IP0SR1_23_20) |
77 | #define GPSR1_4 F_(GP1_04, IP0SR1_19_16) |
78 | #define GPSR1_3 F_(GP1_03, IP0SR1_15_12) |
79 | #define GPSR1_2 F_(GP1_02, IP0SR1_11_8) |
80 | #define GPSR1_1 F_(GP1_01, IP0SR1_7_4) |
81 | #define GPSR1_0 F_(GP1_00, IP0SR1_3_0) |
82 | |
83 | /* GPSR2 */ |
84 | #define GPSR2_16 FM(PCIE1_CLKREQ_N) |
85 | #define GPSR2_15 FM(PCIE0_CLKREQ_N) |
86 | #define GPSR2_14 FM(QSPI0_IO3) |
87 | #define GPSR2_13 FM(QSPI0_SSL) |
88 | #define GPSR2_12 FM(QSPI0_MISO_IO1) |
89 | #define GPSR2_11 FM(QSPI0_IO2) |
90 | #define GPSR2_10 FM(QSPI0_SPCLK) |
91 | #define GPSR2_9 FM(QSPI0_MOSI_IO0) |
92 | #define GPSR2_8 FM(QSPI1_SPCLK) |
93 | #define GPSR2_7 FM(QSPI1_MOSI_IO0) |
94 | #define GPSR2_6 FM(QSPI1_IO2) |
95 | #define GPSR2_5 FM(QSPI1_MISO_IO1) |
96 | #define GPSR2_4 FM(QSPI1_IO3) |
97 | #define GPSR2_3 FM(QSPI1_SSL) |
98 | #define GPSR2_2 FM(RPC_RESET_N) |
99 | #define GPSR2_1 FM(RPC_WP_N) |
100 | #define GPSR2_0 FM(RPC_INT_N) |
101 | |
102 | /* GPSR3 */ |
103 | #define GPSR3_18 FM(TSN0_AVTP_CAPTURE_B) |
104 | #define GPSR3_17 FM(TSN0_AVTP_MATCH_B) |
105 | #define GPSR3_16 FM(TSN0_AVTP_PPS) |
106 | #define GPSR3_15 FM(TSN1_AVTP_CAPTURE_B) |
107 | #define GPSR3_14 FM(TSN1_AVTP_MATCH_B) |
108 | #define GPSR3_13 FM(TSN1_AVTP_PPS) |
109 | #define GPSR3_12 FM(TSN0_MAGIC_B) |
110 | #define GPSR3_11 FM(TSN1_PHY_INT_B) |
111 | #define GPSR3_10 FM(TSN0_PHY_INT_B) |
112 | #define GPSR3_9 FM(TSN2_PHY_INT_B) |
113 | #define GPSR3_8 FM(TSN0_LINK_B) |
114 | #define GPSR3_7 FM(TSN2_LINK_B) |
115 | #define GPSR3_6 FM(TSN1_LINK_B) |
116 | #define GPSR3_5 FM(TSN1_MDC_B) |
117 | #define GPSR3_4 FM(TSN0_MDC_B) |
118 | #define GPSR3_3 FM(TSN2_MDC_B) |
119 | #define GPSR3_2 FM(TSN0_MDIO_B) |
120 | #define GPSR3_1 FM(TSN2_MDIO_B) |
121 | #define GPSR3_0 FM(TSN1_MDIO_B) |
122 | |
123 | /* IP0SR0 */ /* 0 */ /* 1 */ /* 2 */ /* 3 */ /* 4 */ /* 5 */ /* 6 */ /* 7 - F */ |
124 | #define IP0SR0_3_0 FM(SCIF_CLK) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) |
125 | #define IP0SR0_7_4 FM(HSCK0) FM(SCK3) FM(MSIOF3_SCK) F_(0, 0) F_(0, 0) FM(TSN0_AVTP_CAPTURE_A) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) |
126 | #define IP0SR0_11_8 FM(HRX0) FM(RX3) FM(MSIOF3_RXD) F_(0, 0) F_(0, 0) FM(TSN0_AVTP_MATCH_A) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) |
127 | #define IP0SR0_15_12 FM(HTX0) FM(TX3) FM(MSIOF3_TXD) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) |
128 | #define IP0SR0_19_16 FM(HCTS0_N) FM(CTS3_N) FM(MSIOF3_SS1) F_(0, 0) F_(0, 0) FM(TSN0_MDC_A) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) |
129 | #define IP0SR0_23_20 FM(HRTS0_N) FM(RTS3_N) FM(MSIOF3_SS2) F_(0, 0) F_(0, 0) FM(TSN0_MDIO_A) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) |
130 | #define IP0SR0_27_24 FM(RX0) FM(HRX1) F_(0, 0) FM(MSIOF1_RXD) F_(0, 0) FM(TSN1_AVTP_MATCH_A) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) |
131 | #define IP0SR0_31_28 FM(TX0) FM(HTX1) F_(0, 0) FM(MSIOF1_TXD) F_(0, 0) FM(TSN1_AVTP_CAPTURE_A) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) |
132 | /* IP1SR0 */ /* 0 */ /* 1 */ /* 2 */ /* 3 */ /* 4 */ /* 5 */ /* 6 */ /* 7 - F */ |
133 | #define IP1SR0_3_0 FM(SCK0) FM(HSCK1) F_(0, 0) FM(MSIOF1_SCK) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) |
134 | #define IP1SR0_7_4 FM(RTS0_N) FM(HRTS1_N) FM(MSIOF3_SYNC) F_(0, 0) F_(0, 0) FM(TSN1_MDIO_A) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) |
135 | #define IP1SR0_11_8 FM(CTS0_N) FM(HCTS1_N) F_(0, 0) FM(MSIOF1_SYNC) F_(0, 0) FM(TSN1_MDC_A) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) |
136 | #define IP1SR0_15_12 FM(MSIOF0_SYNC) FM(HCTS3_N) FM(CTS1_N) FM(IRQ4) F_(0, 0) FM(TSN0_LINK_A) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) |
137 | #define IP1SR0_19_16 FM(MSIOF0_RXD) FM(HRX3) FM(RX1) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) |
138 | #define IP1SR0_23_20 FM(MSIOF0_TXD) FM(HTX3) FM(TX1) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) |
139 | #define IP1SR0_27_24 FM(MSIOF0_SCK) FM(HSCK3) FM(SCK1) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) |
140 | #define IP1SR0_31_28 FM(MSIOF0_SS1) FM(HRTS3_N) FM(RTS1_N) FM(IRQ5) F_(0, 0) FM(TSN1_LINK_A) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) |
141 | /* IP2SR0 */ /* 0 */ /* 1 */ /* 2 */ /* 3 */ /* 4 */ /* 5 */ /* 6 */ /* 7 - F */ |
142 | #define IP2SR0_3_0 FM(MSIOF0_SS2) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) FM(TSN2_LINK_A) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) |
143 | #define IP2SR0_7_4 FM(IRQ0) F_(0, 0) F_(0, 0) FM(MSIOF1_SS1) F_(0, 0) FM(TSN0_MAGIC_A) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) |
144 | #define IP2SR0_11_8 FM(IRQ1) F_(0, 0) F_(0, 0) FM(MSIOF1_SS2) F_(0, 0) FM(TSN0_PHY_INT_A) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) |
145 | #define IP2SR0_15_12 FM(IRQ2) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) FM(TSN1_PHY_INT_A) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) |
146 | #define IP2SR0_19_16 FM(IRQ3) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) FM(TSN2_PHY_INT_A) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) |
147 | |
148 | /* IP0SR1 */ /* 0 */ /* 1 */ /* 2 */ /* 3 */ /* 4 */ /* 5 */ /* 6 */ /* 7 - F */ |
149 | #define IP0SR1_3_0 FM(GP1_00) FM(TCLK1) FM(HSCK2) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) |
150 | #define IP0SR1_7_4 FM(GP1_01) FM(TCLK4) FM(HRX2) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) |
151 | #define IP0SR1_11_8 FM(GP1_02) F_(0, 0) FM(HTX2) FM(MSIOF2_SS1) F_(0, 0) FM(TSN2_MDC_A) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) |
152 | #define IP0SR1_15_12 FM(GP1_03) FM(TCLK2) FM(HCTS2_N) FM(MSIOF2_SS2) FM(CTS4_N) FM(TSN2_MDIO_A) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) |
153 | #define IP0SR1_19_16 FM(GP1_04) FM(TCLK3) FM(HRTS2_N) FM(MSIOF2_SYNC) FM(RTS4_N) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) |
154 | #define IP0SR1_23_20 FM(GP1_05) FM(MSIOF2_SCK) FM(SCK4) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) |
155 | #define IP0SR1_27_24 FM(GP1_06) FM(MSIOF2_RXD) FM(RX4) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) |
156 | #define IP0SR1_31_28 FM(GP1_07) FM(MSIOF2_TXD) FM(TX4) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) F_(0, 0) |
157 | |
158 | #define PINMUX_GPSR \ |
159 | GPSR1_24 \ |
160 | GPSR1_23 \ |
161 | GPSR1_22 \ |
162 | GPSR1_21 \ |
163 | GPSR0_20 GPSR1_20 \ |
164 | GPSR0_19 GPSR1_19 \ |
165 | GPSR0_18 GPSR1_18 GPSR3_18 \ |
166 | GPSR0_17 GPSR1_17 GPSR3_17 \ |
167 | GPSR0_16 GPSR1_16 GPSR2_16 GPSR3_16 \ |
168 | GPSR0_15 GPSR1_15 GPSR2_15 GPSR3_15 \ |
169 | GPSR0_14 GPSR1_14 GPSR2_14 GPSR3_14 \ |
170 | GPSR0_13 GPSR1_13 GPSR2_13 GPSR3_13 \ |
171 | GPSR0_12 GPSR1_12 GPSR2_12 GPSR3_12 \ |
172 | GPSR0_11 GPSR1_11 GPSR2_11 GPSR3_11 \ |
173 | GPSR0_10 GPSR1_10 GPSR2_10 GPSR3_10 \ |
174 | GPSR0_9 GPSR1_9 GPSR2_9 GPSR3_9 \ |
175 | GPSR0_8 GPSR1_8 GPSR2_8 GPSR3_8 \ |
176 | GPSR0_7 GPSR1_7 GPSR2_7 GPSR3_7 \ |
177 | GPSR0_6 GPSR1_6 GPSR2_6 GPSR3_6 \ |
178 | GPSR0_5 GPSR1_5 GPSR2_5 GPSR3_5 \ |
179 | GPSR0_4 GPSR1_4 GPSR2_4 GPSR3_4 \ |
180 | GPSR0_3 GPSR1_3 GPSR2_3 GPSR3_3 \ |
181 | GPSR0_2 GPSR1_2 GPSR2_2 GPSR3_2 \ |
182 | GPSR0_1 GPSR1_1 GPSR2_1 GPSR3_1 \ |
183 | GPSR0_0 GPSR1_0 GPSR2_0 GPSR3_0 |
184 | |
185 | #define PINMUX_IPSR \ |
186 | \ |
187 | FM(IP0SR0_3_0) IP0SR0_3_0 FM(IP1SR0_3_0) IP1SR0_3_0 FM(IP2SR0_3_0) IP2SR0_3_0 \ |
188 | FM(IP0SR0_7_4) IP0SR0_7_4 FM(IP1SR0_7_4) IP1SR0_7_4 FM(IP2SR0_7_4) IP2SR0_7_4 \ |
189 | FM(IP0SR0_11_8) IP0SR0_11_8 FM(IP1SR0_11_8) IP1SR0_11_8 FM(IP2SR0_11_8) IP2SR0_11_8 \ |
190 | FM(IP0SR0_15_12) IP0SR0_15_12 FM(IP1SR0_15_12) IP1SR0_15_12 FM(IP2SR0_15_12) IP2SR0_15_12 \ |
191 | FM(IP0SR0_19_16) IP0SR0_19_16 FM(IP1SR0_19_16) IP1SR0_19_16 FM(IP2SR0_19_16) IP2SR0_19_16 \ |
192 | FM(IP0SR0_23_20) IP0SR0_23_20 FM(IP1SR0_23_20) IP1SR0_23_20 \ |
193 | FM(IP0SR0_27_24) IP0SR0_27_24 FM(IP1SR0_27_24) IP1SR0_27_24 \ |
194 | FM(IP0SR0_31_28) IP0SR0_31_28 FM(IP1SR0_31_28) IP1SR0_31_28 \ |
195 | \ |
196 | FM(IP0SR1_3_0) IP0SR1_3_0 \ |
197 | FM(IP0SR1_7_4) IP0SR1_7_4 \ |
198 | FM(IP0SR1_11_8) IP0SR1_11_8 \ |
199 | FM(IP0SR1_15_12) IP0SR1_15_12 \ |
200 | FM(IP0SR1_19_16) IP0SR1_19_16 \ |
201 | FM(IP0SR1_23_20) IP0SR1_23_20 \ |
202 | FM(IP0SR1_27_24) IP0SR1_27_24 \ |
203 | FM(IP0SR1_31_28) IP0SR1_31_28 |
204 | |
205 | /* MOD_SEL1 */ /* 0 */ /* 1 */ /* 2 */ /* 3 */ |
206 | #define MOD_SEL1_11_10 FM(SEL_I2C5_0) F_(0, 0) F_(0, 0) FM(SEL_I2C5_3) |
207 | #define MOD_SEL1_9_8 FM(SEL_I2C4_0) F_(0, 0) F_(0, 0) FM(SEL_I2C4_3) |
208 | #define MOD_SEL1_7_6 FM(SEL_I2C3_0) F_(0, 0) F_(0, 0) FM(SEL_I2C3_3) |
209 | #define MOD_SEL1_5_4 FM(SEL_I2C2_0) F_(0, 0) F_(0, 0) FM(SEL_I2C2_3) |
210 | #define MOD_SEL1_3_2 FM(SEL_I2C1_0) F_(0, 0) F_(0, 0) FM(SEL_I2C1_3) |
211 | #define MOD_SEL1_1_0 FM(SEL_I2C0_0) F_(0, 0) F_(0, 0) FM(SEL_I2C0_3) |
212 | |
213 | #define PINMUX_MOD_SELS \ |
214 | \ |
215 | MOD_SEL1_11_10 \ |
216 | MOD_SEL1_9_8 \ |
217 | MOD_SEL1_7_6 \ |
218 | MOD_SEL1_5_4 \ |
219 | MOD_SEL1_3_2 \ |
220 | MOD_SEL1_1_0 |
221 | |
222 | #define PINMUX_PHYS \ |
223 | FM(SCL0) FM(SDA0) FM(SCL1) FM(SDA1) FM(SCL2) FM(SDA2) FM(SCL3) FM(SDA3) \ |
224 | FM(SCL4) FM(SDA4) FM(SCL5) FM(SDA5) |
225 | |
226 | enum { |
227 | PINMUX_RESERVED = 0, |
228 | |
229 | PINMUX_DATA_BEGIN, |
230 | GP_ALL(DATA), |
231 | PINMUX_DATA_END, |
232 | |
233 | #define F_(x, y) |
234 | #define FM(x) FN_##x, |
235 | PINMUX_FUNCTION_BEGIN, |
236 | GP_ALL(FN), |
237 | PINMUX_GPSR |
238 | PINMUX_IPSR |
239 | PINMUX_MOD_SELS |
240 | PINMUX_FUNCTION_END, |
241 | #undef F_ |
242 | #undef FM |
243 | |
244 | #define F_(x, y) |
245 | #define FM(x) x##_MARK, |
246 | PINMUX_MARK_BEGIN, |
247 | PINMUX_GPSR |
248 | PINMUX_IPSR |
249 | PINMUX_MOD_SELS |
250 | PINMUX_PHYS |
251 | PINMUX_MARK_END, |
252 | #undef F_ |
253 | #undef FM |
254 | }; |
255 | |
256 | static const u16 pinmux_data[] = { |
257 | /* Using GP_1_[0-9] requires disabling I2C in MOD_SEL1 */ |
258 | #define GP_1_0_FN GP_1_0_FN, FN_SEL_I2C0_0 |
259 | #define GP_1_1_FN GP_1_1_FN, FN_SEL_I2C0_0 |
260 | #define GP_1_2_FN GP_1_2_FN, FN_SEL_I2C1_0 |
261 | #define GP_1_3_FN GP_1_3_FN, FN_SEL_I2C1_0 |
262 | #define GP_1_4_FN GP_1_4_FN, FN_SEL_I2C2_0 |
263 | #define GP_1_5_FN GP_1_5_FN, FN_SEL_I2C2_0 |
264 | #define GP_1_6_FN GP_1_6_FN, FN_SEL_I2C3_0 |
265 | #define GP_1_7_FN GP_1_7_FN, FN_SEL_I2C3_0 |
266 | #define GP_1_8_FN GP_1_8_FN, FN_SEL_I2C4_0 |
267 | #define GP_1_9_FN GP_1_9_FN, FN_SEL_I2C4_0 |
268 | PINMUX_DATA_GP_ALL(), |
269 | #undef GP_1_0_FN |
270 | #undef GP_1_1_FN |
271 | #undef GP_1_2_FN |
272 | #undef GP_1_3_FN |
273 | #undef GP_1_4_FN |
274 | #undef GP_1_5_FN |
275 | #undef GP_1_6_FN |
276 | #undef GP_1_7_FN |
277 | #undef GP_1_8_FN |
278 | #undef GP_1_9_FN |
279 | |
280 | PINMUX_SINGLE(SD_WP), |
281 | PINMUX_SINGLE(SD_CD), |
282 | PINMUX_SINGLE(MMC_SD_CMD), |
283 | PINMUX_SINGLE(MMC_D7), |
284 | PINMUX_SINGLE(MMC_DS), |
285 | PINMUX_SINGLE(MMC_D6), |
286 | PINMUX_SINGLE(MMC_D4), |
287 | PINMUX_SINGLE(MMC_D5), |
288 | PINMUX_SINGLE(MMC_SD_D3), |
289 | PINMUX_SINGLE(MMC_SD_D2), |
290 | PINMUX_SINGLE(MMC_SD_D1), |
291 | PINMUX_SINGLE(MMC_SD_D0), |
292 | PINMUX_SINGLE(MMC_SD_CLK), |
293 | PINMUX_SINGLE(PCIE1_CLKREQ_N), |
294 | PINMUX_SINGLE(PCIE0_CLKREQ_N), |
295 | PINMUX_SINGLE(QSPI0_IO3), |
296 | PINMUX_SINGLE(QSPI0_SSL), |
297 | PINMUX_SINGLE(QSPI0_MISO_IO1), |
298 | PINMUX_SINGLE(QSPI0_IO2), |
299 | PINMUX_SINGLE(QSPI0_SPCLK), |
300 | PINMUX_SINGLE(QSPI0_MOSI_IO0), |
301 | PINMUX_SINGLE(QSPI1_SPCLK), |
302 | PINMUX_SINGLE(QSPI1_MOSI_IO0), |
303 | PINMUX_SINGLE(QSPI1_IO2), |
304 | PINMUX_SINGLE(QSPI1_MISO_IO1), |
305 | PINMUX_SINGLE(QSPI1_IO3), |
306 | PINMUX_SINGLE(QSPI1_SSL), |
307 | PINMUX_SINGLE(RPC_RESET_N), |
308 | PINMUX_SINGLE(RPC_WP_N), |
309 | PINMUX_SINGLE(RPC_INT_N), |
310 | |
311 | PINMUX_SINGLE(TSN0_AVTP_CAPTURE_B), |
312 | PINMUX_SINGLE(TSN0_AVTP_MATCH_B), |
313 | PINMUX_SINGLE(TSN0_AVTP_PPS), |
314 | PINMUX_SINGLE(TSN1_AVTP_CAPTURE_B), |
315 | PINMUX_SINGLE(TSN1_AVTP_MATCH_B), |
316 | PINMUX_SINGLE(TSN1_AVTP_PPS), |
317 | PINMUX_SINGLE(TSN0_MAGIC_B), |
318 | PINMUX_SINGLE(TSN1_PHY_INT_B), |
319 | PINMUX_SINGLE(TSN0_PHY_INT_B), |
320 | PINMUX_SINGLE(TSN2_PHY_INT_B), |
321 | PINMUX_SINGLE(TSN0_LINK_B), |
322 | PINMUX_SINGLE(TSN2_LINK_B), |
323 | PINMUX_SINGLE(TSN1_LINK_B), |
324 | PINMUX_SINGLE(TSN1_MDC_B), |
325 | PINMUX_SINGLE(TSN0_MDC_B), |
326 | PINMUX_SINGLE(TSN2_MDC_B), |
327 | PINMUX_SINGLE(TSN0_MDIO_B), |
328 | PINMUX_SINGLE(TSN2_MDIO_B), |
329 | PINMUX_SINGLE(TSN1_MDIO_B), |
330 | |
331 | /* IP0SR0 */ |
332 | PINMUX_IPSR_GPSR(IP0SR0_3_0, SCIF_CLK), |
333 | |
334 | PINMUX_IPSR_GPSR(IP0SR0_7_4, HSCK0), |
335 | PINMUX_IPSR_GPSR(IP0SR0_7_4, SCK3), |
336 | PINMUX_IPSR_GPSR(IP0SR0_7_4, MSIOF3_SCK), |
337 | PINMUX_IPSR_GPSR(IP0SR0_7_4, TSN0_AVTP_CAPTURE_A), |
338 | |
339 | PINMUX_IPSR_GPSR(IP0SR0_11_8, HRX0), |
340 | PINMUX_IPSR_GPSR(IP0SR0_11_8, RX3), |
341 | PINMUX_IPSR_GPSR(IP0SR0_11_8, MSIOF3_RXD), |
342 | PINMUX_IPSR_GPSR(IP0SR0_11_8, TSN0_AVTP_MATCH_A), |
343 | |
344 | PINMUX_IPSR_GPSR(IP0SR0_15_12, HTX0), |
345 | PINMUX_IPSR_GPSR(IP0SR0_15_12, TX3), |
346 | PINMUX_IPSR_GPSR(IP0SR0_15_12, MSIOF3_TXD), |
347 | |
348 | PINMUX_IPSR_GPSR(IP0SR0_19_16, HCTS0_N), |
349 | PINMUX_IPSR_GPSR(IP0SR0_19_16, CTS3_N), |
350 | PINMUX_IPSR_GPSR(IP0SR0_19_16, MSIOF3_SS1), |
351 | PINMUX_IPSR_GPSR(IP0SR0_19_16, TSN0_MDC_A), |
352 | |
353 | PINMUX_IPSR_GPSR(IP0SR0_23_20, HRTS0_N), |
354 | PINMUX_IPSR_GPSR(IP0SR0_23_20, RTS3_N), |
355 | PINMUX_IPSR_GPSR(IP0SR0_23_20, MSIOF3_SS2), |
356 | PINMUX_IPSR_GPSR(IP0SR0_23_20, TSN0_MDIO_A), |
357 | |
358 | PINMUX_IPSR_GPSR(IP0SR0_27_24, RX0), |
359 | PINMUX_IPSR_GPSR(IP0SR0_27_24, HRX1), |
360 | PINMUX_IPSR_GPSR(IP0SR0_27_24, MSIOF1_RXD), |
361 | PINMUX_IPSR_GPSR(IP0SR0_27_24, TSN1_AVTP_MATCH_A), |
362 | |
363 | PINMUX_IPSR_GPSR(IP0SR0_31_28, TX0), |
364 | PINMUX_IPSR_GPSR(IP0SR0_31_28, HTX1), |
365 | PINMUX_IPSR_GPSR(IP0SR0_31_28, MSIOF1_TXD), |
366 | PINMUX_IPSR_GPSR(IP0SR0_31_28, TSN1_AVTP_CAPTURE_A), |
367 | |
368 | /* IP1SR0 */ |
369 | PINMUX_IPSR_GPSR(IP1SR0_3_0, SCK0), |
370 | PINMUX_IPSR_GPSR(IP1SR0_3_0, HSCK1), |
371 | PINMUX_IPSR_GPSR(IP1SR0_3_0, MSIOF1_SCK), |
372 | |
373 | PINMUX_IPSR_GPSR(IP1SR0_7_4, RTS0_N), |
374 | PINMUX_IPSR_GPSR(IP1SR0_7_4, HRTS1_N), |
375 | PINMUX_IPSR_GPSR(IP1SR0_7_4, MSIOF3_SYNC), |
376 | PINMUX_IPSR_GPSR(IP1SR0_7_4, TSN1_MDIO_A), |
377 | |
378 | PINMUX_IPSR_GPSR(IP1SR0_11_8, CTS0_N), |
379 | PINMUX_IPSR_GPSR(IP1SR0_11_8, HCTS1_N), |
380 | PINMUX_IPSR_GPSR(IP1SR0_11_8, MSIOF1_SYNC), |
381 | PINMUX_IPSR_GPSR(IP1SR0_11_8, TSN1_MDC_A), |
382 | |
383 | PINMUX_IPSR_GPSR(IP1SR0_15_12, MSIOF0_SYNC), |
384 | PINMUX_IPSR_GPSR(IP1SR0_15_12, HCTS3_N), |
385 | PINMUX_IPSR_GPSR(IP1SR0_15_12, CTS1_N), |
386 | PINMUX_IPSR_GPSR(IP1SR0_15_12, IRQ4), |
387 | PINMUX_IPSR_GPSR(IP1SR0_15_12, TSN0_LINK_A), |
388 | |
389 | PINMUX_IPSR_GPSR(IP1SR0_19_16, MSIOF0_RXD), |
390 | PINMUX_IPSR_GPSR(IP1SR0_19_16, HRX3), |
391 | PINMUX_IPSR_GPSR(IP1SR0_19_16, RX1), |
392 | |
393 | PINMUX_IPSR_GPSR(IP1SR0_23_20, MSIOF0_TXD), |
394 | PINMUX_IPSR_GPSR(IP1SR0_23_20, HTX3), |
395 | PINMUX_IPSR_GPSR(IP1SR0_23_20, TX1), |
396 | |
397 | PINMUX_IPSR_GPSR(IP1SR0_27_24, MSIOF0_SCK), |
398 | PINMUX_IPSR_GPSR(IP1SR0_27_24, HSCK3), |
399 | PINMUX_IPSR_GPSR(IP1SR0_27_24, SCK1), |
400 | |
401 | PINMUX_IPSR_GPSR(IP1SR0_31_28, MSIOF0_SS1), |
402 | PINMUX_IPSR_GPSR(IP1SR0_31_28, HRTS3_N), |
403 | PINMUX_IPSR_GPSR(IP1SR0_31_28, RTS1_N), |
404 | PINMUX_IPSR_GPSR(IP1SR0_31_28, IRQ5), |
405 | PINMUX_IPSR_GPSR(IP1SR0_31_28, TSN1_LINK_A), |
406 | |
407 | /* IP2SR0 */ |
408 | PINMUX_IPSR_GPSR(IP2SR0_3_0, MSIOF0_SS2), |
409 | PINMUX_IPSR_GPSR(IP2SR0_3_0, TSN2_LINK_A), |
410 | |
411 | PINMUX_IPSR_GPSR(IP2SR0_7_4, IRQ0), |
412 | PINMUX_IPSR_GPSR(IP2SR0_7_4, MSIOF1_SS1), |
413 | PINMUX_IPSR_GPSR(IP2SR0_7_4, TSN0_MAGIC_A), |
414 | |
415 | PINMUX_IPSR_GPSR(IP2SR0_11_8, IRQ1), |
416 | PINMUX_IPSR_GPSR(IP2SR0_11_8, MSIOF1_SS2), |
417 | PINMUX_IPSR_GPSR(IP2SR0_11_8, TSN0_PHY_INT_A), |
418 | |
419 | PINMUX_IPSR_GPSR(IP2SR0_15_12, IRQ2), |
420 | PINMUX_IPSR_GPSR(IP2SR0_15_12, TSN1_PHY_INT_A), |
421 | |
422 | PINMUX_IPSR_GPSR(IP2SR0_19_16, IRQ3), |
423 | PINMUX_IPSR_GPSR(IP2SR0_19_16, TSN2_PHY_INT_A), |
424 | |
425 | /* IP0SR1 */ |
426 | /* GP1_00 = SCL0 */ |
427 | PINMUX_IPSR_MSEL(IP0SR1_3_0, GP1_00, SEL_I2C0_0), |
428 | PINMUX_IPSR_MSEL(IP0SR1_3_0, TCLK1, SEL_I2C0_0), |
429 | PINMUX_IPSR_MSEL(IP0SR1_3_0, HSCK2, SEL_I2C0_0), |
430 | PINMUX_IPSR_PHYS(IP0SR1_3_0, SCL0, SEL_I2C0_3), |
431 | |
432 | /* GP1_01 = SDA0 */ |
433 | PINMUX_IPSR_MSEL(IP0SR1_7_4, GP1_01, SEL_I2C0_0), |
434 | PINMUX_IPSR_MSEL(IP0SR1_7_4, TCLK4, SEL_I2C0_0), |
435 | PINMUX_IPSR_MSEL(IP0SR1_7_4, HRX2, SEL_I2C0_0), |
436 | PINMUX_IPSR_PHYS(IP0SR1_7_4, SDA0, SEL_I2C0_3), |
437 | |
438 | /* GP1_02 = SCL1 */ |
439 | PINMUX_IPSR_MSEL(IP0SR1_11_8, GP1_02, SEL_I2C1_0), |
440 | PINMUX_IPSR_MSEL(IP0SR1_11_8, HTX2, SEL_I2C1_0), |
441 | PINMUX_IPSR_MSEL(IP0SR1_11_8, MSIOF2_SS1, SEL_I2C1_0), |
442 | PINMUX_IPSR_MSEL(IP0SR1_11_8, TSN2_MDC_A, SEL_I2C1_0), |
443 | PINMUX_IPSR_PHYS(IP0SR1_11_8, SCL1, SEL_I2C1_3), |
444 | |
445 | /* GP1_03 = SDA1 */ |
446 | PINMUX_IPSR_MSEL(IP0SR1_15_12, GP1_03, SEL_I2C1_0), |
447 | PINMUX_IPSR_MSEL(IP0SR1_15_12, TCLK2, SEL_I2C1_0), |
448 | PINMUX_IPSR_MSEL(IP0SR1_15_12, HCTS2_N, SEL_I2C1_0), |
449 | PINMUX_IPSR_MSEL(IP0SR1_15_12, MSIOF2_SS2, SEL_I2C1_0), |
450 | PINMUX_IPSR_MSEL(IP0SR1_15_12, CTS4_N, SEL_I2C1_0), |
451 | PINMUX_IPSR_MSEL(IP0SR1_15_12, TSN2_MDIO_A, SEL_I2C1_0), |
452 | PINMUX_IPSR_PHYS(IP0SR1_15_12, SDA1, SEL_I2C1_3), |
453 | |
454 | /* GP1_04 = SCL2 */ |
455 | PINMUX_IPSR_MSEL(IP0SR1_19_16, GP1_04, SEL_I2C2_0), |
456 | PINMUX_IPSR_MSEL(IP0SR1_19_16, TCLK3, SEL_I2C2_0), |
457 | PINMUX_IPSR_MSEL(IP0SR1_19_16, HRTS2_N, SEL_I2C2_0), |
458 | PINMUX_IPSR_MSEL(IP0SR1_19_16, MSIOF2_SYNC, SEL_I2C2_0), |
459 | PINMUX_IPSR_MSEL(IP0SR1_19_16, RTS4_N, SEL_I2C2_0), |
460 | PINMUX_IPSR_PHYS(IP0SR1_19_16, SCL2, SEL_I2C2_3), |
461 | |
462 | /* GP1_05 = SDA2 */ |
463 | PINMUX_IPSR_MSEL(IP0SR1_23_20, GP1_05, SEL_I2C2_0), |
464 | PINMUX_IPSR_MSEL(IP0SR1_23_20, MSIOF2_SCK, SEL_I2C2_0), |
465 | PINMUX_IPSR_MSEL(IP0SR1_23_20, SCK4, SEL_I2C2_0), |
466 | PINMUX_IPSR_PHYS(IP0SR1_23_20, SDA2, SEL_I2C2_3), |
467 | |
468 | /* GP1_06 = SCL3 */ |
469 | PINMUX_IPSR_MSEL(IP0SR1_27_24, GP1_06, SEL_I2C3_0), |
470 | PINMUX_IPSR_MSEL(IP0SR1_27_24, MSIOF2_RXD, SEL_I2C3_0), |
471 | PINMUX_IPSR_MSEL(IP0SR1_27_24, RX4, SEL_I2C3_0), |
472 | PINMUX_IPSR_PHYS(IP0SR1_27_24, SCL3, SEL_I2C3_3), |
473 | |
474 | /* GP1_07 = SDA3 */ |
475 | PINMUX_IPSR_MSEL(IP0SR1_31_28, GP1_07, SEL_I2C3_0), |
476 | PINMUX_IPSR_MSEL(IP0SR1_31_28, MSIOF2_TXD, SEL_I2C3_0), |
477 | PINMUX_IPSR_MSEL(IP0SR1_31_28, TX4, SEL_I2C3_0), |
478 | PINMUX_IPSR_PHYS(IP0SR1_31_28, SDA3, SEL_I2C3_3), |
479 | |
480 | /* GP1_08 = SCL4 */ |
481 | PINMUX_IPSR_NOGM(0, GP1_08, SEL_I2C4_0), |
482 | PINMUX_IPSR_NOFN(GP1_08, SCL4, SEL_I2C4_3), |
483 | |
484 | /* GP1_09 = SDA4 */ |
485 | PINMUX_IPSR_NOGM(0, GP1_09, SEL_I2C4_0), |
486 | PINMUX_IPSR_NOFN(GP1_09, SDA4, SEL_I2C4_3), |
487 | |
488 | /* GP1_10 = SCL5 */ |
489 | PINMUX_IPSR_NOGM(0, GP1_10, SEL_I2C5_0), |
490 | PINMUX_IPSR_NOFN(GP1_10, SCL5, SEL_I2C5_3), |
491 | |
492 | /* GP1_11 = SDA5 */ |
493 | PINMUX_IPSR_NOGM(0, GP1_11, SEL_I2C5_0), |
494 | PINMUX_IPSR_NOFN(GP1_11, SDA5, SEL_I2C5_3), |
495 | }; |
496 | |
497 | /* |
498 | * Pins not associated with a GPIO port. |
499 | */ |
500 | enum { |
501 | GP_ASSIGN_LAST(), |
502 | NOGP_ALL(), |
503 | }; |
504 | |
505 | static const struct sh_pfc_pin pinmux_pins[] = { |
506 | PINMUX_GPIO_GP_ALL(), |
507 | }; |
508 | |
509 | /* - HSCIF0 ----------------------------------------------------------------- */ |
510 | static const unsigned int hscif0_data_pins[] = { |
511 | /* HRX0, HTX0 */ |
512 | RCAR_GP_PIN(0, 2), RCAR_GP_PIN(0, 3), |
513 | }; |
514 | static const unsigned int hscif0_data_mux[] = { |
515 | HRX0_MARK, HTX0_MARK, |
516 | }; |
517 | static const unsigned int hscif0_clk_pins[] = { |
518 | /* HSCK0 */ |
519 | RCAR_GP_PIN(0, 1), |
520 | }; |
521 | static const unsigned int hscif0_clk_mux[] = { |
522 | HSCK0_MARK, |
523 | }; |
524 | static const unsigned int hscif0_ctrl_pins[] = { |
525 | /* HRTS0#, HCTS0# */ |
526 | RCAR_GP_PIN(0, 5), RCAR_GP_PIN(0, 4), |
527 | }; |
528 | static const unsigned int hscif0_ctrl_mux[] = { |
529 | HRTS0_N_MARK, HCTS0_N_MARK, |
530 | }; |
531 | |
532 | /* - HSCIF1 ----------------------------------------------------------------- */ |
533 | static const unsigned int hscif1_data_pins[] = { |
534 | /* HRX1, HTX1 */ |
535 | RCAR_GP_PIN(0, 6), RCAR_GP_PIN(0, 7), |
536 | }; |
537 | static const unsigned int hscif1_data_mux[] = { |
538 | HRX1_MARK, HTX1_MARK, |
539 | }; |
540 | static const unsigned int hscif1_clk_pins[] = { |
541 | /* HSCK1 */ |
542 | RCAR_GP_PIN(0, 8), |
543 | }; |
544 | static const unsigned int hscif1_clk_mux[] = { |
545 | HSCK1_MARK, |
546 | }; |
547 | static const unsigned int hscif1_ctrl_pins[] = { |
548 | /* HRTS1#, HCTS1# */ |
549 | RCAR_GP_PIN(0, 9), RCAR_GP_PIN(0, 10), |
550 | }; |
551 | static const unsigned int hscif1_ctrl_mux[] = { |
552 | HRTS1_N_MARK, HCTS1_N_MARK, |
553 | }; |
554 | |
555 | /* - HSCIF2 ----------------------------------------------------------------- */ |
556 | static const unsigned int hscif2_data_pins[] = { |
557 | /* HRX2, HTX2 */ |
558 | RCAR_GP_PIN(1, 1), RCAR_GP_PIN(1, 2), |
559 | }; |
560 | static const unsigned int hscif2_data_mux[] = { |
561 | HRX2_MARK, HTX2_MARK, |
562 | }; |
563 | static const unsigned int hscif2_clk_pins[] = { |
564 | /* HSCK2 */ |
565 | RCAR_GP_PIN(1, 0), |
566 | }; |
567 | static const unsigned int hscif2_clk_mux[] = { |
568 | HSCK2_MARK, |
569 | }; |
570 | static const unsigned int hscif2_ctrl_pins[] = { |
571 | /* HRTS2#, HCTS2# */ |
572 | RCAR_GP_PIN(1, 4), RCAR_GP_PIN(1, 3), |
573 | }; |
574 | static const unsigned int hscif2_ctrl_mux[] = { |
575 | HRTS2_N_MARK, HCTS2_N_MARK, |
576 | }; |
577 | |
578 | /* - HSCIF3 ----------------------------------------------------------------- */ |
579 | static const unsigned int hscif3_data_pins[] = { |
580 | /* HRX3, HTX3 */ |
581 | RCAR_GP_PIN(0, 12), RCAR_GP_PIN(0, 13), |
582 | }; |
583 | static const unsigned int hscif3_data_mux[] = { |
584 | HRX3_MARK, HTX3_MARK, |
585 | }; |
586 | static const unsigned int hscif3_clk_pins[] = { |
587 | /* HSCK3 */ |
588 | RCAR_GP_PIN(0, 14), |
589 | }; |
590 | static const unsigned int hscif3_clk_mux[] = { |
591 | HSCK3_MARK, |
592 | }; |
593 | static const unsigned int hscif3_ctrl_pins[] = { |
594 | /* HRTS3#, HCTS3# */ |
595 | RCAR_GP_PIN(0, 15), RCAR_GP_PIN(0, 11), |
596 | }; |
597 | static const unsigned int hscif3_ctrl_mux[] = { |
598 | HRTS3_N_MARK, HCTS3_N_MARK, |
599 | }; |
600 | |
601 | /* - I2C0 ------------------------------------------------------------------- */ |
602 | static const unsigned int i2c0_pins[] = { |
603 | /* SDA0, SCL0 */ |
604 | RCAR_GP_PIN(1, 1), RCAR_GP_PIN(1, 0), |
605 | }; |
606 | static const unsigned int i2c0_mux[] = { |
607 | SDA0_MARK, SCL0_MARK, |
608 | }; |
609 | |
610 | /* - I2C1 ------------------------------------------------------------------- */ |
611 | static const unsigned int i2c1_pins[] = { |
612 | /* SDA1, SCL1 */ |
613 | RCAR_GP_PIN(1, 3), RCAR_GP_PIN(1, 2), |
614 | }; |
615 | static const unsigned int i2c1_mux[] = { |
616 | SDA1_MARK, SCL1_MARK, |
617 | }; |
618 | |
619 | /* - I2C2 ------------------------------------------------------------------- */ |
620 | static const unsigned int i2c2_pins[] = { |
621 | /* SDA2, SCL2 */ |
622 | RCAR_GP_PIN(1, 5), RCAR_GP_PIN(1, 4), |
623 | }; |
624 | static const unsigned int i2c2_mux[] = { |
625 | SDA2_MARK, SCL2_MARK, |
626 | }; |
627 | |
628 | /* - I2C3 ------------------------------------------------------------------- */ |
629 | static const unsigned int i2c3_pins[] = { |
630 | /* SDA3, SCL3 */ |
631 | RCAR_GP_PIN(1, 7), RCAR_GP_PIN(1, 6), |
632 | }; |
633 | static const unsigned int i2c3_mux[] = { |
634 | SDA3_MARK, SCL3_MARK, |
635 | }; |
636 | |
637 | /* - I2C4 ------------------------------------------------------------------- */ |
638 | static const unsigned int i2c4_pins[] = { |
639 | /* SDA4, SCL4 */ |
640 | RCAR_GP_PIN(1, 9), RCAR_GP_PIN(1, 8), |
641 | }; |
642 | static const unsigned int i2c4_mux[] = { |
643 | SDA4_MARK, SCL4_MARK, |
644 | }; |
645 | |
646 | /* - I2C5 ------------------------------------------------------------------- */ |
647 | static const unsigned int i2c5_pins[] = { |
648 | /* SDA5, SCL5 */ |
649 | RCAR_GP_PIN(1, 11), RCAR_GP_PIN(1, 10), |
650 | }; |
651 | static const unsigned int i2c5_mux[] = { |
652 | SDA5_MARK, SCL5_MARK, |
653 | }; |
654 | |
655 | |
656 | /* - INTC-EX ---------------------------------------------------------------- */ |
657 | static const unsigned int intc_ex_irq0_pins[] = { |
658 | /* IRQ0 */ |
659 | RCAR_GP_PIN(0, 17), |
660 | }; |
661 | static const unsigned int intc_ex_irq0_mux[] = { |
662 | IRQ0_MARK, |
663 | }; |
664 | static const unsigned int intc_ex_irq1_pins[] = { |
665 | /* IRQ1 */ |
666 | RCAR_GP_PIN(0, 18), |
667 | }; |
668 | static const unsigned int intc_ex_irq1_mux[] = { |
669 | IRQ1_MARK, |
670 | }; |
671 | static const unsigned int intc_ex_irq2_pins[] = { |
672 | /* IRQ2 */ |
673 | RCAR_GP_PIN(0, 19), |
674 | }; |
675 | static const unsigned int intc_ex_irq2_mux[] = { |
676 | IRQ2_MARK, |
677 | }; |
678 | static const unsigned int intc_ex_irq3_pins[] = { |
679 | /* IRQ3 */ |
680 | RCAR_GP_PIN(0, 20), |
681 | }; |
682 | static const unsigned int intc_ex_irq3_mux[] = { |
683 | IRQ3_MARK, |
684 | }; |
685 | static const unsigned int intc_ex_irq4_pins[] = { |
686 | /* IRQ4 */ |
687 | RCAR_GP_PIN(0, 11), |
688 | }; |
689 | static const unsigned int intc_ex_irq4_mux[] = { |
690 | IRQ4_MARK, |
691 | }; |
692 | static const unsigned int intc_ex_irq5_pins[] = { |
693 | /* IRQ5 */ |
694 | RCAR_GP_PIN(0, 15), |
695 | }; |
696 | static const unsigned int intc_ex_irq5_mux[] = { |
697 | IRQ5_MARK, |
698 | }; |
699 | |
700 | /* - MMC -------------------------------------------------------------------- */ |
701 | static const unsigned int mmc_data_pins[] = { |
702 | /* MMC_SD_D[0:3], MMC_D[4:7] */ |
703 | RCAR_GP_PIN(1, 13), RCAR_GP_PIN(1, 14), |
704 | RCAR_GP_PIN(1, 15), RCAR_GP_PIN(1, 16), |
705 | RCAR_GP_PIN(1, 18), RCAR_GP_PIN(1, 17), |
706 | RCAR_GP_PIN(1, 19), RCAR_GP_PIN(1, 21), |
707 | }; |
708 | static const unsigned int mmc_data_mux[] = { |
709 | MMC_SD_D0_MARK, MMC_SD_D1_MARK, |
710 | MMC_SD_D2_MARK, MMC_SD_D3_MARK, |
711 | MMC_D4_MARK, MMC_D5_MARK, |
712 | MMC_D6_MARK, MMC_D7_MARK, |
713 | }; |
714 | static const unsigned int mmc_ctrl_pins[] = { |
715 | /* MMC_SD_CLK, MMC_SD_CMD */ |
716 | RCAR_GP_PIN(1, 12), RCAR_GP_PIN(1, 22), |
717 | }; |
718 | static const unsigned int mmc_ctrl_mux[] = { |
719 | MMC_SD_CLK_MARK, MMC_SD_CMD_MARK, |
720 | }; |
721 | static const unsigned int mmc_cd_pins[] = { |
722 | /* SD_CD */ |
723 | RCAR_GP_PIN(1, 23), |
724 | }; |
725 | static const unsigned int mmc_cd_mux[] = { |
726 | SD_CD_MARK, |
727 | }; |
728 | static const unsigned int mmc_wp_pins[] = { |
729 | /* SD_WP */ |
730 | RCAR_GP_PIN(1, 24), |
731 | }; |
732 | static const unsigned int mmc_wp_mux[] = { |
733 | SD_WP_MARK, |
734 | }; |
735 | static const unsigned int mmc_ds_pins[] = { |
736 | /* MMC_DS */ |
737 | RCAR_GP_PIN(1, 20), |
738 | }; |
739 | static const unsigned int mmc_ds_mux[] = { |
740 | MMC_DS_MARK, |
741 | }; |
742 | |
743 | /* - MSIOF0 ----------------------------------------------------------------- */ |
744 | static const unsigned int msiof0_clk_pins[] = { |
745 | /* MSIOF0_SCK */ |
746 | RCAR_GP_PIN(0, 14), |
747 | }; |
748 | static const unsigned int msiof0_clk_mux[] = { |
749 | MSIOF0_SCK_MARK, |
750 | }; |
751 | static const unsigned int msiof0_sync_pins[] = { |
752 | /* MSIOF0_SYNC */ |
753 | RCAR_GP_PIN(0, 11), |
754 | }; |
755 | static const unsigned int msiof0_sync_mux[] = { |
756 | MSIOF0_SYNC_MARK, |
757 | }; |
758 | static const unsigned int msiof0_ss1_pins[] = { |
759 | /* MSIOF0_SS1 */ |
760 | RCAR_GP_PIN(0, 15), |
761 | }; |
762 | static const unsigned int msiof0_ss1_mux[] = { |
763 | MSIOF0_SS1_MARK, |
764 | }; |
765 | static const unsigned int msiof0_ss2_pins[] = { |
766 | /* MSIOF0_SS2 */ |
767 | RCAR_GP_PIN(0, 16), |
768 | }; |
769 | static const unsigned int msiof0_ss2_mux[] = { |
770 | MSIOF0_SS2_MARK, |
771 | }; |
772 | static const unsigned int msiof0_txd_pins[] = { |
773 | /* MSIOF0_TXD */ |
774 | RCAR_GP_PIN(0, 13), |
775 | }; |
776 | static const unsigned int msiof0_txd_mux[] = { |
777 | MSIOF0_TXD_MARK, |
778 | }; |
779 | static const unsigned int msiof0_rxd_pins[] = { |
780 | /* MSIOF0_RXD */ |
781 | RCAR_GP_PIN(0, 12), |
782 | }; |
783 | static const unsigned int msiof0_rxd_mux[] = { |
784 | MSIOF0_RXD_MARK, |
785 | }; |
786 | |
787 | /* - MSIOF1 ----------------------------------------------------------------- */ |
788 | static const unsigned int msiof1_clk_pins[] = { |
789 | /* MSIOF1_SCK */ |
790 | RCAR_GP_PIN(0, 8), |
791 | }; |
792 | static const unsigned int msiof1_clk_mux[] = { |
793 | MSIOF1_SCK_MARK, |
794 | }; |
795 | static const unsigned int msiof1_sync_pins[] = { |
796 | /* MSIOF1_SYNC */ |
797 | RCAR_GP_PIN(0, 10), |
798 | }; |
799 | static const unsigned int msiof1_sync_mux[] = { |
800 | MSIOF1_SYNC_MARK, |
801 | }; |
802 | static const unsigned int msiof1_ss1_pins[] = { |
803 | /* MSIOF1_SS1 */ |
804 | RCAR_GP_PIN(0, 17), |
805 | }; |
806 | static const unsigned int msiof1_ss1_mux[] = { |
807 | MSIOF1_SS1_MARK, |
808 | }; |
809 | static const unsigned int msiof1_ss2_pins[] = { |
810 | /* MSIOF1_SS2 */ |
811 | RCAR_GP_PIN(0, 18), |
812 | }; |
813 | static const unsigned int msiof1_ss2_mux[] = { |
814 | MSIOF1_SS2_MARK, |
815 | }; |
816 | static const unsigned int msiof1_txd_pins[] = { |
817 | /* MSIOF1_TXD */ |
818 | RCAR_GP_PIN(0, 7), |
819 | }; |
820 | static const unsigned int msiof1_txd_mux[] = { |
821 | MSIOF1_TXD_MARK, |
822 | }; |
823 | static const unsigned int msiof1_rxd_pins[] = { |
824 | /* MSIOF1_RXD */ |
825 | RCAR_GP_PIN(0, 6), |
826 | }; |
827 | static const unsigned int msiof1_rxd_mux[] = { |
828 | MSIOF1_RXD_MARK, |
829 | }; |
830 | |
831 | /* - MSIOF2 ----------------------------------------------------------------- */ |
832 | static const unsigned int msiof2_clk_pins[] = { |
833 | /* MSIOF2_SCK */ |
834 | RCAR_GP_PIN(1, 5), |
835 | }; |
836 | static const unsigned int msiof2_clk_mux[] = { |
837 | MSIOF2_SCK_MARK, |
838 | }; |
839 | static const unsigned int msiof2_sync_pins[] = { |
840 | /* MSIOF2_SYNC */ |
841 | RCAR_GP_PIN(1, 4), |
842 | }; |
843 | static const unsigned int msiof2_sync_mux[] = { |
844 | MSIOF2_SYNC_MARK, |
845 | }; |
846 | static const unsigned int msiof2_ss1_pins[] = { |
847 | /* MSIOF2_SS1 */ |
848 | RCAR_GP_PIN(1, 2), |
849 | }; |
850 | static const unsigned int msiof2_ss1_mux[] = { |
851 | MSIOF2_SS1_MARK, |
852 | }; |
853 | static const unsigned int msiof2_ss2_pins[] = { |
854 | /* MSIOF2_SS2 */ |
855 | RCAR_GP_PIN(1, 3), |
856 | }; |
857 | static const unsigned int msiof2_ss2_mux[] = { |
858 | MSIOF2_SS2_MARK, |
859 | }; |
860 | static const unsigned int msiof2_txd_pins[] = { |
861 | /* MSIOF2_TXD */ |
862 | RCAR_GP_PIN(1, 7), |
863 | }; |
864 | static const unsigned int msiof2_txd_mux[] = { |
865 | MSIOF2_TXD_MARK, |
866 | }; |
867 | static const unsigned int msiof2_rxd_pins[] = { |
868 | /* MSIOF2_RXD */ |
869 | RCAR_GP_PIN(1, 6), |
870 | }; |
871 | static const unsigned int msiof2_rxd_mux[] = { |
872 | MSIOF2_RXD_MARK, |
873 | }; |
874 | |
875 | /* - MSIOF3 ----------------------------------------------------------------- */ |
876 | static const unsigned int msiof3_clk_pins[] = { |
877 | /* MSIOF3_SCK */ |
878 | RCAR_GP_PIN(0, 1), |
879 | }; |
880 | static const unsigned int msiof3_clk_mux[] = { |
881 | MSIOF3_SCK_MARK, |
882 | }; |
883 | static const unsigned int msiof3_sync_pins[] = { |
884 | /* MSIOF3_SYNC */ |
885 | RCAR_GP_PIN(0, 9), |
886 | }; |
887 | static const unsigned int msiof3_sync_mux[] = { |
888 | MSIOF3_SYNC_MARK, |
889 | }; |
890 | static const unsigned int msiof3_ss1_pins[] = { |
891 | /* MSIOF3_SS1 */ |
892 | RCAR_GP_PIN(0, 4), |
893 | }; |
894 | static const unsigned int msiof3_ss1_mux[] = { |
895 | MSIOF3_SS1_MARK, |
896 | }; |
897 | static const unsigned int msiof3_ss2_pins[] = { |
898 | /* MSIOF3_SS2 */ |
899 | RCAR_GP_PIN(0, 5), |
900 | }; |
901 | static const unsigned int msiof3_ss2_mux[] = { |
902 | MSIOF3_SS2_MARK, |
903 | }; |
904 | static const unsigned int msiof3_txd_pins[] = { |
905 | /* MSIOF3_TXD */ |
906 | RCAR_GP_PIN(0, 3), |
907 | }; |
908 | static const unsigned int msiof3_txd_mux[] = { |
909 | MSIOF3_TXD_MARK, |
910 | }; |
911 | static const unsigned int msiof3_rxd_pins[] = { |
912 | /* MSIOF3_RXD */ |
913 | RCAR_GP_PIN(0, 2), |
914 | }; |
915 | static const unsigned int msiof3_rxd_mux[] = { |
916 | MSIOF3_RXD_MARK, |
917 | }; |
918 | |
919 | /* - PCIE ------------------------------------------------------------------- */ |
920 | static const unsigned int pcie0_clkreq_n_pins[] = { |
921 | /* PCIE0_CLKREQ# */ |
922 | RCAR_GP_PIN(2, 15), |
923 | }; |
924 | |
925 | static const unsigned int pcie0_clkreq_n_mux[] = { |
926 | PCIE0_CLKREQ_N_MARK, |
927 | }; |
928 | |
929 | static const unsigned int pcie1_clkreq_n_pins[] = { |
930 | /* PCIE1_CLKREQ# */ |
931 | RCAR_GP_PIN(2, 16), |
932 | }; |
933 | |
934 | static const unsigned int pcie1_clkreq_n_mux[] = { |
935 | PCIE1_CLKREQ_N_MARK, |
936 | }; |
937 | |
938 | /* - QSPI0 ------------------------------------------------------------------ */ |
939 | static const unsigned int qspi0_ctrl_pins[] = { |
940 | /* SPCLK, SSL */ |
941 | RCAR_GP_PIN(2, 10), RCAR_GP_PIN(2, 13), |
942 | }; |
943 | static const unsigned int qspi0_ctrl_mux[] = { |
944 | QSPI0_SPCLK_MARK, QSPI0_SSL_MARK, |
945 | }; |
946 | static const unsigned int qspi0_data_pins[] = { |
947 | /* MOSI_IO0, MISO_IO1, IO2, IO3 */ |
948 | RCAR_GP_PIN(2, 9), RCAR_GP_PIN(2, 12), |
949 | RCAR_GP_PIN(2, 11), RCAR_GP_PIN(2, 14), |
950 | }; |
951 | static const unsigned int qspi0_data_mux[] = { |
952 | QSPI0_MOSI_IO0_MARK, QSPI0_MISO_IO1_MARK, |
953 | QSPI0_IO2_MARK, QSPI0_IO3_MARK |
954 | }; |
955 | |
956 | /* - QSPI1 ------------------------------------------------------------------ */ |
957 | static const unsigned int qspi1_ctrl_pins[] = { |
958 | /* SPCLK, SSL */ |
959 | RCAR_GP_PIN(2, 8), RCAR_GP_PIN(2, 3), |
960 | }; |
961 | static const unsigned int qspi1_ctrl_mux[] = { |
962 | QSPI1_SPCLK_MARK, QSPI1_SSL_MARK, |
963 | }; |
964 | static const unsigned int qspi1_data_pins[] = { |
965 | /* MOSI_IO0, MISO_IO1, IO2, IO3 */ |
966 | RCAR_GP_PIN(2, 7), RCAR_GP_PIN(2, 5), |
967 | RCAR_GP_PIN(2, 6), RCAR_GP_PIN(2, 4), |
968 | }; |
969 | static const unsigned int qspi1_data_mux[] = { |
970 | QSPI1_MOSI_IO0_MARK, QSPI1_MISO_IO1_MARK, |
971 | QSPI1_IO2_MARK, QSPI1_IO3_MARK |
972 | }; |
973 | |
974 | /* - SCIF0 ------------------------------------------------------------------ */ |
975 | static const unsigned int scif0_data_pins[] = { |
976 | /* RX0, TX0 */ |
977 | RCAR_GP_PIN(0, 6), RCAR_GP_PIN(0, 7), |
978 | }; |
979 | static const unsigned int scif0_data_mux[] = { |
980 | RX0_MARK, TX0_MARK, |
981 | }; |
982 | static const unsigned int scif0_clk_pins[] = { |
983 | /* SCK0 */ |
984 | RCAR_GP_PIN(0, 8), |
985 | }; |
986 | static const unsigned int scif0_clk_mux[] = { |
987 | SCK0_MARK, |
988 | }; |
989 | static const unsigned int scif0_ctrl_pins[] = { |
990 | /* RTS0#, CTS0# */ |
991 | RCAR_GP_PIN(0, 9), RCAR_GP_PIN(0, 10), |
992 | }; |
993 | static const unsigned int scif0_ctrl_mux[] = { |
994 | RTS0_N_MARK, CTS0_N_MARK, |
995 | }; |
996 | |
997 | /* - SCIF1 ------------------------------------------------------------------ */ |
998 | static const unsigned int scif1_data_pins[] = { |
999 | /* RX1, TX1 */ |
1000 | RCAR_GP_PIN(0, 12), RCAR_GP_PIN(0, 13), |
1001 | }; |
1002 | static const unsigned int scif1_data_mux[] = { |
1003 | RX1_MARK, TX1_MARK, |
1004 | }; |
1005 | static const unsigned int scif1_clk_pins[] = { |
1006 | /* SCK1 */ |
1007 | RCAR_GP_PIN(0, 14), |
1008 | }; |
1009 | static const unsigned int scif1_clk_mux[] = { |
1010 | SCK1_MARK, |
1011 | }; |
1012 | static const unsigned int scif1_ctrl_pins[] = { |
1013 | /* RTS1#, CTS1# */ |
1014 | RCAR_GP_PIN(0, 15), RCAR_GP_PIN(0, 11), |
1015 | }; |
1016 | static const unsigned int scif1_ctrl_mux[] = { |
1017 | RTS1_N_MARK, CTS1_N_MARK, |
1018 | }; |
1019 | |
1020 | /* - SCIF3 ------------------------------------------------------------------ */ |
1021 | static const unsigned int scif3_data_pins[] = { |
1022 | /* RX3, TX3 */ |
1023 | RCAR_GP_PIN(0, 2), RCAR_GP_PIN(0, 3), |
1024 | }; |
1025 | static const unsigned int scif3_data_mux[] = { |
1026 | RX3_MARK, TX3_MARK, |
1027 | }; |
1028 | static const unsigned int scif3_clk_pins[] = { |
1029 | /* SCK3 */ |
1030 | RCAR_GP_PIN(0, 1), |
1031 | }; |
1032 | static const unsigned int scif3_clk_mux[] = { |
1033 | SCK3_MARK, |
1034 | }; |
1035 | static const unsigned int scif3_ctrl_pins[] = { |
1036 | /* RTS3#, CTS3# */ |
1037 | RCAR_GP_PIN(0, 5), RCAR_GP_PIN(0, 4), |
1038 | }; |
1039 | static const unsigned int scif3_ctrl_mux[] = { |
1040 | RTS3_N_MARK, CTS3_N_MARK, |
1041 | }; |
1042 | |
1043 | /* - SCIF4 ------------------------------------------------------------------ */ |
1044 | static const unsigned int scif4_data_pins[] = { |
1045 | /* RX4, TX4 */ |
1046 | RCAR_GP_PIN(1, 6), RCAR_GP_PIN(1, 7), |
1047 | }; |
1048 | static const unsigned int scif4_data_mux[] = { |
1049 | RX4_MARK, TX4_MARK, |
1050 | }; |
1051 | static const unsigned int scif4_clk_pins[] = { |
1052 | /* SCK4 */ |
1053 | RCAR_GP_PIN(1, 5), |
1054 | }; |
1055 | static const unsigned int scif4_clk_mux[] = { |
1056 | SCK4_MARK, |
1057 | }; |
1058 | static const unsigned int scif4_ctrl_pins[] = { |
1059 | /* RTS4#, CTS4# */ |
1060 | RCAR_GP_PIN(1, 4), RCAR_GP_PIN(1, 3), |
1061 | }; |
1062 | static const unsigned int scif4_ctrl_mux[] = { |
1063 | RTS4_N_MARK, CTS4_N_MARK, |
1064 | }; |
1065 | |
1066 | /* - SCIF Clock ------------------------------------------------------------- */ |
1067 | static const unsigned int scif_clk_pins[] = { |
1068 | /* SCIF_CLK */ |
1069 | RCAR_GP_PIN(0, 0), |
1070 | }; |
1071 | static const unsigned int scif_clk_mux[] = { |
1072 | SCIF_CLK_MARK, |
1073 | }; |
1074 | |
1075 | /* - TSN0 ------------------------------------------------ */ |
1076 | static const unsigned int tsn0_link_a_pins[] = { |
1077 | /* TSN0_LINK_A */ |
1078 | RCAR_GP_PIN(0, 11), |
1079 | }; |
1080 | static const unsigned int tsn0_link_a_mux[] = { |
1081 | TSN0_LINK_A_MARK, |
1082 | }; |
1083 | static const unsigned int tsn0_magic_a_pins[] = { |
1084 | /* TSN0_MAGIC_A */ |
1085 | RCAR_GP_PIN(0, 17), |
1086 | }; |
1087 | static const unsigned int tsn0_magic_a_mux[] = { |
1088 | TSN0_MAGIC_A_MARK, |
1089 | }; |
1090 | static const unsigned int tsn0_phy_int_a_pins[] = { |
1091 | /* TSN0_PHY_INT_A */ |
1092 | RCAR_GP_PIN(0, 18), |
1093 | }; |
1094 | static const unsigned int tsn0_phy_int_a_mux[] = { |
1095 | TSN0_PHY_INT_A_MARK, |
1096 | }; |
1097 | static const unsigned int tsn0_mdio_a_pins[] = { |
1098 | /* TSN0_MDC_A, TSN0_MDIO_A */ |
1099 | RCAR_GP_PIN(0, 4), RCAR_GP_PIN(0, 5), |
1100 | }; |
1101 | static const unsigned int tsn0_mdio_a_mux[] = { |
1102 | TSN0_MDC_A_MARK, TSN0_MDIO_A_MARK, |
1103 | }; |
1104 | static const unsigned int tsn0_link_b_pins[] = { |
1105 | /* TSN0_LINK_B */ |
1106 | RCAR_GP_PIN(3, 8), |
1107 | }; |
1108 | static const unsigned int tsn0_link_b_mux[] = { |
1109 | TSN0_LINK_B_MARK, |
1110 | }; |
1111 | static const unsigned int tsn0_magic_b_pins[] = { |
1112 | /* TSN0_MAGIC_B */ |
1113 | RCAR_GP_PIN(3, 12), |
1114 | }; |
1115 | static const unsigned int tsn0_magic_b_mux[] = { |
1116 | TSN0_MAGIC_B_MARK, |
1117 | }; |
1118 | static const unsigned int tsn0_phy_int_b_pins[] = { |
1119 | /* TSN0_PHY_INT_B */ |
1120 | RCAR_GP_PIN(3, 10), |
1121 | }; |
1122 | static const unsigned int tsn0_phy_int_b_mux[] = { |
1123 | TSN0_PHY_INT_B_MARK, |
1124 | }; |
1125 | static const unsigned int tsn0_mdio_b_pins[] = { |
1126 | /* TSN0_MDC_B, TSN0_MDIO_B */ |
1127 | RCAR_GP_PIN(3, 4), RCAR_GP_PIN(3, 2), |
1128 | }; |
1129 | static const unsigned int tsn0_mdio_b_mux[] = { |
1130 | TSN0_MDC_B_MARK, TSN0_MDIO_B_MARK, |
1131 | }; |
1132 | static const unsigned int tsn0_avtp_pps_pins[] = { |
1133 | /* TSN0_AVTP_PPS */ |
1134 | RCAR_GP_PIN(3, 16), |
1135 | }; |
1136 | static const unsigned int tsn0_avtp_pps_mux[] = { |
1137 | TSN0_AVTP_PPS_MARK, |
1138 | }; |
1139 | static const unsigned int tsn0_avtp_capture_a_pins[] = { |
1140 | /* TSN0_AVTP_CAPTURE_A */ |
1141 | RCAR_GP_PIN(0, 1), |
1142 | }; |
1143 | static const unsigned int tsn0_avtp_capture_a_mux[] = { |
1144 | TSN0_AVTP_CAPTURE_A_MARK, |
1145 | }; |
1146 | static const unsigned int tsn0_avtp_match_a_pins[] = { |
1147 | /* TSN0_AVTP_MATCH_A */ |
1148 | RCAR_GP_PIN(0, 2), |
1149 | }; |
1150 | static const unsigned int tsn0_avtp_match_a_mux[] = { |
1151 | TSN0_AVTP_MATCH_A_MARK, |
1152 | }; |
1153 | static const unsigned int tsn0_avtp_capture_b_pins[] = { |
1154 | /* TSN0_AVTP_CAPTURE_B */ |
1155 | RCAR_GP_PIN(3, 18), |
1156 | }; |
1157 | static const unsigned int tsn0_avtp_capture_b_mux[] = { |
1158 | TSN0_AVTP_CAPTURE_B_MARK, |
1159 | }; |
1160 | static const unsigned int tsn0_avtp_match_b_pins[] = { |
1161 | /* TSN0_AVTP_MATCH_B */ |
1162 | RCAR_GP_PIN(3, 17), |
1163 | }; |
1164 | static const unsigned int tsn0_avtp_match_b_mux[] = { |
1165 | TSN0_AVTP_MATCH_B_MARK, |
1166 | }; |
1167 | |
1168 | /* - TSN1 ------------------------------------------------ */ |
1169 | static const unsigned int tsn1_link_a_pins[] = { |
1170 | /* TSN1_LINK_A */ |
1171 | RCAR_GP_PIN(0, 15), |
1172 | }; |
1173 | static const unsigned int tsn1_link_a_mux[] = { |
1174 | TSN1_LINK_A_MARK, |
1175 | }; |
1176 | static const unsigned int tsn1_phy_int_a_pins[] = { |
1177 | /* TSN1_PHY_INT_A */ |
1178 | RCAR_GP_PIN(0, 19), |
1179 | }; |
1180 | static const unsigned int tsn1_phy_int_a_mux[] = { |
1181 | TSN1_PHY_INT_A_MARK, |
1182 | }; |
1183 | static const unsigned int tsn1_mdio_a_pins[] = { |
1184 | /* TSN1_MDC_A, TSN1_MDIO_A */ |
1185 | RCAR_GP_PIN(0, 10), RCAR_GP_PIN(0, 9), |
1186 | }; |
1187 | static const unsigned int tsn1_mdio_a_mux[] = { |
1188 | TSN1_MDC_A_MARK, TSN1_MDIO_A_MARK, |
1189 | }; |
1190 | static const unsigned int tsn1_link_b_pins[] = { |
1191 | /* TSN1_LINK_B */ |
1192 | RCAR_GP_PIN(3, 6), |
1193 | }; |
1194 | static const unsigned int tsn1_link_b_mux[] = { |
1195 | TSN1_LINK_B_MARK, |
1196 | }; |
1197 | static const unsigned int tsn1_phy_int_b_pins[] = { |
1198 | /* TSN1_PHY_INT_B */ |
1199 | RCAR_GP_PIN(3, 11), |
1200 | }; |
1201 | static const unsigned int tsn1_phy_int_b_mux[] = { |
1202 | TSN1_PHY_INT_B_MARK, |
1203 | }; |
1204 | static const unsigned int tsn1_mdio_b_pins[] = { |
1205 | /* TSN1_MDC_B, TSN1_MDIO_B */ |
1206 | RCAR_GP_PIN(3, 5), RCAR_GP_PIN(3, 0), |
1207 | }; |
1208 | static const unsigned int tsn1_mdio_b_mux[] = { |
1209 | TSN1_MDC_B_MARK, TSN1_MDIO_B_MARK, |
1210 | }; |
1211 | static const unsigned int tsn1_avtp_pps_pins[] = { |
1212 | /* TSN1_AVTP_PPS */ |
1213 | RCAR_GP_PIN(3, 13), |
1214 | }; |
1215 | static const unsigned int tsn1_avtp_pps_mux[] = { |
1216 | TSN1_AVTP_PPS_MARK, |
1217 | }; |
1218 | static const unsigned int tsn1_avtp_capture_a_pins[] = { |
1219 | /* TSN1_AVTP_CAPTURE_A */ |
1220 | RCAR_GP_PIN(0, 7), |
1221 | }; |
1222 | static const unsigned int tsn1_avtp_capture_a_mux[] = { |
1223 | TSN1_AVTP_CAPTURE_A_MARK, |
1224 | }; |
1225 | static const unsigned int tsn1_avtp_match_a_pins[] = { |
1226 | /* TSN1_AVTP_MATCH_A */ |
1227 | RCAR_GP_PIN(0, 6), |
1228 | }; |
1229 | static const unsigned int tsn1_avtp_match_a_mux[] = { |
1230 | TSN1_AVTP_MATCH_A_MARK, |
1231 | }; |
1232 | static const unsigned int tsn1_avtp_capture_b_pins[] = { |
1233 | /* TSN1_AVTP_CAPTURE_B */ |
1234 | RCAR_GP_PIN(3, 15), |
1235 | }; |
1236 | static const unsigned int tsn1_avtp_capture_b_mux[] = { |
1237 | TSN1_AVTP_CAPTURE_B_MARK, |
1238 | }; |
1239 | static const unsigned int tsn1_avtp_match_b_pins[] = { |
1240 | /* TSN1_AVTP_MATCH_B */ |
1241 | RCAR_GP_PIN(3, 14), |
1242 | }; |
1243 | static const unsigned int tsn1_avtp_match_b_mux[] = { |
1244 | TSN1_AVTP_MATCH_B_MARK, |
1245 | }; |
1246 | |
1247 | /* - TSN2 ------------------------------------------------ */ |
1248 | static const unsigned int tsn2_link_a_pins[] = { |
1249 | /* TSN2_LINK_A */ |
1250 | RCAR_GP_PIN(0, 16), |
1251 | }; |
1252 | static const unsigned int tsn2_link_a_mux[] = { |
1253 | TSN2_LINK_A_MARK, |
1254 | }; |
1255 | static const unsigned int tsn2_phy_int_a_pins[] = { |
1256 | /* TSN2_PHY_INT_A */ |
1257 | RCAR_GP_PIN(0, 20), |
1258 | }; |
1259 | static const unsigned int tsn2_phy_int_a_mux[] = { |
1260 | TSN2_PHY_INT_A_MARK, |
1261 | }; |
1262 | static const unsigned int tsn2_mdio_a_pins[] = { |
1263 | /* TSN2_MDC_A, TSN2_MDIO_A */ |
1264 | RCAR_GP_PIN(1, 2), RCAR_GP_PIN(1, 3), |
1265 | }; |
1266 | static const unsigned int tsn2_mdio_a_mux[] = { |
1267 | TSN2_MDC_A_MARK, TSN2_MDIO_A_MARK, |
1268 | }; |
1269 | static const unsigned int tsn2_link_b_pins[] = { |
1270 | /* TSN2_LINK_B */ |
1271 | RCAR_GP_PIN(3, 7), |
1272 | }; |
1273 | static const unsigned int tsn2_link_b_mux[] = { |
1274 | TSN2_LINK_B_MARK, |
1275 | }; |
1276 | static const unsigned int tsn2_phy_int_b_pins[] = { |
1277 | /* TSN2_PHY_INT_B */ |
1278 | RCAR_GP_PIN(3, 9), |
1279 | }; |
1280 | static const unsigned int tsn2_phy_int_b_mux[] = { |
1281 | TSN2_PHY_INT_B_MARK, |
1282 | }; |
1283 | static const unsigned int tsn2_mdio_b_pins[] = { |
1284 | /* TSN2_MDC_B, TSN2_MDIO_B */ |
1285 | RCAR_GP_PIN(3, 3), RCAR_GP_PIN(3, 1), |
1286 | }; |
1287 | static const unsigned int tsn2_mdio_b_mux[] = { |
1288 | TSN2_MDC_B_MARK, TSN2_MDIO_B_MARK, |
1289 | }; |
1290 | |
1291 | static const struct sh_pfc_pin_group pinmux_groups[] = { |
1292 | SH_PFC_PIN_GROUP(hscif0_data), |
1293 | SH_PFC_PIN_GROUP(hscif0_clk), |
1294 | SH_PFC_PIN_GROUP(hscif0_ctrl), |
1295 | SH_PFC_PIN_GROUP(hscif1_data), |
1296 | SH_PFC_PIN_GROUP(hscif1_clk), |
1297 | SH_PFC_PIN_GROUP(hscif1_ctrl), |
1298 | SH_PFC_PIN_GROUP(hscif2_data), |
1299 | SH_PFC_PIN_GROUP(hscif2_clk), |
1300 | SH_PFC_PIN_GROUP(hscif2_ctrl), |
1301 | SH_PFC_PIN_GROUP(hscif3_data), |
1302 | SH_PFC_PIN_GROUP(hscif3_clk), |
1303 | SH_PFC_PIN_GROUP(hscif3_ctrl), |
1304 | SH_PFC_PIN_GROUP(i2c0), |
1305 | SH_PFC_PIN_GROUP(i2c1), |
1306 | SH_PFC_PIN_GROUP(i2c2), |
1307 | SH_PFC_PIN_GROUP(i2c3), |
1308 | SH_PFC_PIN_GROUP(i2c4), |
1309 | SH_PFC_PIN_GROUP(i2c5), |
1310 | SH_PFC_PIN_GROUP(intc_ex_irq0), |
1311 | SH_PFC_PIN_GROUP(intc_ex_irq1), |
1312 | SH_PFC_PIN_GROUP(intc_ex_irq2), |
1313 | SH_PFC_PIN_GROUP(intc_ex_irq3), |
1314 | SH_PFC_PIN_GROUP(intc_ex_irq4), |
1315 | SH_PFC_PIN_GROUP(intc_ex_irq5), |
1316 | BUS_DATA_PIN_GROUP(mmc_data, 1), |
1317 | BUS_DATA_PIN_GROUP(mmc_data, 4), |
1318 | BUS_DATA_PIN_GROUP(mmc_data, 8), |
1319 | SH_PFC_PIN_GROUP(mmc_ctrl), |
1320 | SH_PFC_PIN_GROUP(mmc_cd), |
1321 | SH_PFC_PIN_GROUP(mmc_wp), |
1322 | SH_PFC_PIN_GROUP(mmc_ds), |
1323 | SH_PFC_PIN_GROUP(msiof0_clk), |
1324 | SH_PFC_PIN_GROUP(msiof0_sync), |
1325 | SH_PFC_PIN_GROUP(msiof0_ss1), |
1326 | SH_PFC_PIN_GROUP(msiof0_ss2), |
1327 | SH_PFC_PIN_GROUP(msiof0_txd), |
1328 | SH_PFC_PIN_GROUP(msiof0_rxd), |
1329 | SH_PFC_PIN_GROUP(msiof1_clk), |
1330 | SH_PFC_PIN_GROUP(msiof1_sync), |
1331 | SH_PFC_PIN_GROUP(msiof1_ss1), |
1332 | SH_PFC_PIN_GROUP(msiof1_ss2), |
1333 | SH_PFC_PIN_GROUP(msiof1_txd), |
1334 | SH_PFC_PIN_GROUP(msiof1_rxd), |
1335 | SH_PFC_PIN_GROUP(msiof2_clk), |
1336 | SH_PFC_PIN_GROUP(msiof2_sync), |
1337 | SH_PFC_PIN_GROUP(msiof2_ss1), |
1338 | SH_PFC_PIN_GROUP(msiof2_ss2), |
1339 | SH_PFC_PIN_GROUP(msiof2_txd), |
1340 | SH_PFC_PIN_GROUP(msiof2_rxd), |
1341 | SH_PFC_PIN_GROUP(msiof3_clk), |
1342 | SH_PFC_PIN_GROUP(msiof3_sync), |
1343 | SH_PFC_PIN_GROUP(msiof3_ss1), |
1344 | SH_PFC_PIN_GROUP(msiof3_ss2), |
1345 | SH_PFC_PIN_GROUP(msiof3_txd), |
1346 | SH_PFC_PIN_GROUP(msiof3_rxd), |
1347 | SH_PFC_PIN_GROUP(pcie0_clkreq_n), |
1348 | SH_PFC_PIN_GROUP(pcie1_clkreq_n), |
1349 | SH_PFC_PIN_GROUP(qspi0_ctrl), |
1350 | BUS_DATA_PIN_GROUP(qspi0_data, 2), |
1351 | BUS_DATA_PIN_GROUP(qspi0_data, 4), |
1352 | SH_PFC_PIN_GROUP(qspi1_ctrl), |
1353 | BUS_DATA_PIN_GROUP(qspi1_data, 2), |
1354 | BUS_DATA_PIN_GROUP(qspi1_data, 4), |
1355 | SH_PFC_PIN_GROUP(scif0_data), |
1356 | SH_PFC_PIN_GROUP(scif0_clk), |
1357 | SH_PFC_PIN_GROUP(scif0_ctrl), |
1358 | SH_PFC_PIN_GROUP(scif1_data), |
1359 | SH_PFC_PIN_GROUP(scif1_clk), |
1360 | SH_PFC_PIN_GROUP(scif1_ctrl), |
1361 | SH_PFC_PIN_GROUP(scif3_data), |
1362 | SH_PFC_PIN_GROUP(scif3_clk), |
1363 | SH_PFC_PIN_GROUP(scif3_ctrl), |
1364 | SH_PFC_PIN_GROUP(scif4_data), |
1365 | SH_PFC_PIN_GROUP(scif4_clk), |
1366 | SH_PFC_PIN_GROUP(scif4_ctrl), |
1367 | SH_PFC_PIN_GROUP(scif_clk), |
1368 | SH_PFC_PIN_GROUP(tsn0_link_a), |
1369 | SH_PFC_PIN_GROUP(tsn0_magic_a), |
1370 | SH_PFC_PIN_GROUP(tsn0_phy_int_a), |
1371 | SH_PFC_PIN_GROUP(tsn0_mdio_a), |
1372 | SH_PFC_PIN_GROUP(tsn0_link_b), |
1373 | SH_PFC_PIN_GROUP(tsn0_magic_b), |
1374 | SH_PFC_PIN_GROUP(tsn0_phy_int_b), |
1375 | SH_PFC_PIN_GROUP(tsn0_mdio_b), |
1376 | SH_PFC_PIN_GROUP(tsn0_avtp_pps), |
1377 | SH_PFC_PIN_GROUP(tsn0_avtp_capture_a), |
1378 | SH_PFC_PIN_GROUP(tsn0_avtp_match_a), |
1379 | SH_PFC_PIN_GROUP(tsn0_avtp_capture_b), |
1380 | SH_PFC_PIN_GROUP(tsn0_avtp_match_b), |
1381 | SH_PFC_PIN_GROUP(tsn1_link_a), |
1382 | SH_PFC_PIN_GROUP(tsn1_phy_int_a), |
1383 | SH_PFC_PIN_GROUP(tsn1_mdio_a), |
1384 | SH_PFC_PIN_GROUP(tsn1_link_b), |
1385 | SH_PFC_PIN_GROUP(tsn1_phy_int_b), |
1386 | SH_PFC_PIN_GROUP(tsn1_mdio_b), |
1387 | SH_PFC_PIN_GROUP(tsn1_avtp_pps), |
1388 | SH_PFC_PIN_GROUP(tsn1_avtp_capture_a), |
1389 | SH_PFC_PIN_GROUP(tsn1_avtp_match_a), |
1390 | SH_PFC_PIN_GROUP(tsn1_avtp_capture_b), |
1391 | SH_PFC_PIN_GROUP(tsn1_avtp_match_b), |
1392 | SH_PFC_PIN_GROUP(tsn2_link_a), |
1393 | SH_PFC_PIN_GROUP(tsn2_phy_int_a), |
1394 | SH_PFC_PIN_GROUP(tsn2_mdio_a), |
1395 | SH_PFC_PIN_GROUP(tsn2_link_b), |
1396 | SH_PFC_PIN_GROUP(tsn2_phy_int_b), |
1397 | SH_PFC_PIN_GROUP(tsn2_mdio_b), |
1398 | }; |
1399 | |
1400 | static const char * const hscif0_groups[] = { |
1401 | "hscif0_data" , |
1402 | "hscif0_clk" , |
1403 | "hscif0_ctrl" , |
1404 | }; |
1405 | |
1406 | static const char * const hscif1_groups[] = { |
1407 | "hscif1_data" , |
1408 | "hscif1_clk" , |
1409 | "hscif1_ctrl" , |
1410 | }; |
1411 | |
1412 | static const char * const hscif2_groups[] = { |
1413 | "hscif2_data" , |
1414 | "hscif2_clk" , |
1415 | "hscif2_ctrl" , |
1416 | }; |
1417 | |
1418 | static const char * const hscif3_groups[] = { |
1419 | "hscif3_data" , |
1420 | "hscif3_clk" , |
1421 | "hscif3_ctrl" , |
1422 | }; |
1423 | |
1424 | static const char * const i2c0_groups[] = { |
1425 | "i2c0" , |
1426 | }; |
1427 | |
1428 | static const char * const i2c1_groups[] = { |
1429 | "i2c1" , |
1430 | }; |
1431 | |
1432 | static const char * const i2c2_groups[] = { |
1433 | "i2c2" , |
1434 | }; |
1435 | |
1436 | static const char * const i2c3_groups[] = { |
1437 | "i2c3" , |
1438 | }; |
1439 | |
1440 | static const char * const i2c4_groups[] = { |
1441 | "i2c4" , |
1442 | }; |
1443 | |
1444 | static const char * const i2c5_groups[] = { |
1445 | "i2c5" , |
1446 | }; |
1447 | |
1448 | static const char * const intc_ex_groups[] = { |
1449 | "intc_ex_irq0" , |
1450 | "intc_ex_irq1" , |
1451 | "intc_ex_irq2" , |
1452 | "intc_ex_irq3" , |
1453 | "intc_ex_irq4" , |
1454 | "intc_ex_irq5" , |
1455 | }; |
1456 | |
1457 | static const char * const mmc_groups[] = { |
1458 | "mmc_data1" , |
1459 | "mmc_data4" , |
1460 | "mmc_data8" , |
1461 | "mmc_ctrl" , |
1462 | "mmc_cd" , |
1463 | "mmc_wp" , |
1464 | "mmc_ds" , |
1465 | }; |
1466 | |
1467 | static const char * const msiof0_groups[] = { |
1468 | "msiof0_clk" , |
1469 | "msiof0_sync" , |
1470 | "msiof0_ss1" , |
1471 | "msiof0_ss2" , |
1472 | "msiof0_txd" , |
1473 | "msiof0_rxd" , |
1474 | }; |
1475 | |
1476 | static const char * const msiof1_groups[] = { |
1477 | "msiof1_clk" , |
1478 | "msiof1_sync" , |
1479 | "msiof1_ss1" , |
1480 | "msiof1_ss2" , |
1481 | "msiof1_txd" , |
1482 | "msiof1_rxd" , |
1483 | }; |
1484 | |
1485 | static const char * const msiof2_groups[] = { |
1486 | "msiof2_clk" , |
1487 | "msiof2_sync" , |
1488 | "msiof2_ss1" , |
1489 | "msiof2_ss2" , |
1490 | "msiof2_txd" , |
1491 | "msiof2_rxd" , |
1492 | }; |
1493 | |
1494 | static const char * const msiof3_groups[] = { |
1495 | "msiof3_clk" , |
1496 | "msiof3_sync" , |
1497 | "msiof3_ss1" , |
1498 | "msiof3_ss2" , |
1499 | "msiof3_txd" , |
1500 | "msiof3_rxd" , |
1501 | }; |
1502 | |
1503 | static const char * const pcie_groups[] = { |
1504 | "pcie0_clkreq_n" , |
1505 | "pcie1_clkreq_n" , |
1506 | }; |
1507 | |
1508 | static const char * const qspi0_groups[] = { |
1509 | "qspi0_ctrl" , |
1510 | "qspi0_data2" , |
1511 | "qspi0_data4" , |
1512 | }; |
1513 | |
1514 | static const char * const qspi1_groups[] = { |
1515 | "qspi1_ctrl" , |
1516 | "qspi1_data2" , |
1517 | "qspi1_data4" , |
1518 | }; |
1519 | |
1520 | static const char * const scif0_groups[] = { |
1521 | "scif0_data" , |
1522 | "scif0_clk" , |
1523 | "scif0_ctrl" , |
1524 | }; |
1525 | |
1526 | static const char * const scif1_groups[] = { |
1527 | "scif1_data" , |
1528 | "scif1_clk" , |
1529 | "scif1_ctrl" , |
1530 | }; |
1531 | |
1532 | static const char * const scif3_groups[] = { |
1533 | "scif3_data" , |
1534 | "scif3_clk" , |
1535 | "scif3_ctrl" , |
1536 | }; |
1537 | |
1538 | static const char * const scif4_groups[] = { |
1539 | "scif4_data" , |
1540 | "scif4_clk" , |
1541 | "scif4_ctrl" , |
1542 | }; |
1543 | |
1544 | static const char * const scif_clk_groups[] = { |
1545 | "scif_clk" , |
1546 | }; |
1547 | |
1548 | static const char * const tsn0_groups[] = { |
1549 | "tsn0_link_a" , |
1550 | "tsn0_magic_a" , |
1551 | "tsn0_phy_int_a" , |
1552 | "tsn0_mdio_a" , |
1553 | "tsn0_link_b" , |
1554 | "tsn0_magic_b" , |
1555 | "tsn0_phy_int_b" , |
1556 | "tsn0_mdio_b" , |
1557 | "tsn0_avtp_pps" , |
1558 | "tsn0_avtp_capture_a" , |
1559 | "tsn0_avtp_match_a" , |
1560 | "tsn0_avtp_capture_b" , |
1561 | "tsn0_avtp_match_b" , |
1562 | }; |
1563 | |
1564 | static const char * const tsn1_groups[] = { |
1565 | "tsn1_link_a" , |
1566 | "tsn1_phy_int_a" , |
1567 | "tsn1_mdio_a" , |
1568 | "tsn1_link_b" , |
1569 | "tsn1_phy_int_b" , |
1570 | "tsn1_mdio_b" , |
1571 | "tsn1_avtp_pps" , |
1572 | "tsn1_avtp_capture_a" , |
1573 | "tsn1_avtp_match_a" , |
1574 | "tsn1_avtp_capture_b" , |
1575 | "tsn1_avtp_match_b" , |
1576 | }; |
1577 | |
1578 | static const char * const tsn2_groups[] = { |
1579 | "tsn2_link_a" , |
1580 | "tsn2_phy_int_a" , |
1581 | "tsn2_mdio_a" , |
1582 | "tsn2_link_b" , |
1583 | "tsn2_phy_int_b" , |
1584 | "tsn2_mdio_b" , |
1585 | }; |
1586 | |
1587 | static const struct sh_pfc_function pinmux_functions[] = { |
1588 | SH_PFC_FUNCTION(hscif0), |
1589 | SH_PFC_FUNCTION(hscif1), |
1590 | SH_PFC_FUNCTION(hscif2), |
1591 | SH_PFC_FUNCTION(hscif3), |
1592 | SH_PFC_FUNCTION(i2c0), |
1593 | SH_PFC_FUNCTION(i2c1), |
1594 | SH_PFC_FUNCTION(i2c2), |
1595 | SH_PFC_FUNCTION(i2c3), |
1596 | SH_PFC_FUNCTION(i2c4), |
1597 | SH_PFC_FUNCTION(i2c5), |
1598 | SH_PFC_FUNCTION(intc_ex), |
1599 | SH_PFC_FUNCTION(mmc), |
1600 | SH_PFC_FUNCTION(msiof0), |
1601 | SH_PFC_FUNCTION(msiof1), |
1602 | SH_PFC_FUNCTION(msiof2), |
1603 | SH_PFC_FUNCTION(msiof3), |
1604 | SH_PFC_FUNCTION(pcie), |
1605 | SH_PFC_FUNCTION(qspi0), |
1606 | SH_PFC_FUNCTION(qspi1), |
1607 | SH_PFC_FUNCTION(scif0), |
1608 | SH_PFC_FUNCTION(scif1), |
1609 | SH_PFC_FUNCTION(scif3), |
1610 | SH_PFC_FUNCTION(scif4), |
1611 | SH_PFC_FUNCTION(scif_clk), |
1612 | SH_PFC_FUNCTION(tsn0), |
1613 | SH_PFC_FUNCTION(tsn1), |
1614 | SH_PFC_FUNCTION(tsn2), |
1615 | }; |
1616 | |
1617 | static const struct pinmux_cfg_reg pinmux_config_regs[] = { |
1618 | #define F_(x, y) FN_##y |
1619 | #define FM(x) FN_##x |
1620 | { PINMUX_CFG_REG_VAR("GPSR0" , 0xe6050040, 32, |
1621 | GROUP(-11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, |
1622 | 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), |
1623 | GROUP( |
1624 | /* GP0_31_21 RESERVED */ |
1625 | GP_0_20_FN, GPSR0_20, |
1626 | GP_0_19_FN, GPSR0_19, |
1627 | GP_0_18_FN, GPSR0_18, |
1628 | GP_0_17_FN, GPSR0_17, |
1629 | GP_0_16_FN, GPSR0_16, |
1630 | GP_0_15_FN, GPSR0_15, |
1631 | GP_0_14_FN, GPSR0_14, |
1632 | GP_0_13_FN, GPSR0_13, |
1633 | GP_0_12_FN, GPSR0_12, |
1634 | GP_0_11_FN, GPSR0_11, |
1635 | GP_0_10_FN, GPSR0_10, |
1636 | GP_0_9_FN, GPSR0_9, |
1637 | GP_0_8_FN, GPSR0_8, |
1638 | GP_0_7_FN, GPSR0_7, |
1639 | GP_0_6_FN, GPSR0_6, |
1640 | GP_0_5_FN, GPSR0_5, |
1641 | GP_0_4_FN, GPSR0_4, |
1642 | GP_0_3_FN, GPSR0_3, |
1643 | GP_0_2_FN, GPSR0_2, |
1644 | GP_0_1_FN, GPSR0_1, |
1645 | GP_0_0_FN, GPSR0_0, )) |
1646 | }, |
1647 | { PINMUX_CFG_REG_VAR("GPSR1" , 0xe6050840, 32, |
1648 | GROUP(-7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, |
1649 | 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), |
1650 | GROUP( |
1651 | /* GP1_31_25 RESERVED */ |
1652 | GP_1_24_FN, GPSR1_24, |
1653 | GP_1_23_FN, GPSR1_23, |
1654 | GP_1_22_FN, GPSR1_22, |
1655 | GP_1_21_FN, GPSR1_21, |
1656 | GP_1_20_FN, GPSR1_20, |
1657 | GP_1_19_FN, GPSR1_19, |
1658 | GP_1_18_FN, GPSR1_18, |
1659 | GP_1_17_FN, GPSR1_17, |
1660 | GP_1_16_FN, GPSR1_16, |
1661 | GP_1_15_FN, GPSR1_15, |
1662 | GP_1_14_FN, GPSR1_14, |
1663 | GP_1_13_FN, GPSR1_13, |
1664 | GP_1_12_FN, GPSR1_12, |
1665 | GP_1_11_FN, GPSR1_11, |
1666 | GP_1_10_FN, GPSR1_10, |
1667 | GP_1_9_FN, GPSR1_9, |
1668 | GP_1_8_FN, GPSR1_8, |
1669 | GP_1_7_FN, GPSR1_7, |
1670 | GP_1_6_FN, GPSR1_6, |
1671 | GP_1_5_FN, GPSR1_5, |
1672 | GP_1_4_FN, GPSR1_4, |
1673 | GP_1_3_FN, GPSR1_3, |
1674 | GP_1_2_FN, GPSR1_2, |
1675 | GP_1_1_FN, GPSR1_1, |
1676 | GP_1_0_FN, GPSR1_0, )) |
1677 | }, |
1678 | { PINMUX_CFG_REG_VAR("GPSR2" , 0xe6051040, 32, |
1679 | GROUP(-15, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, |
1680 | 1, 1, 1, 1, 1, 1), |
1681 | GROUP( |
1682 | /* GP2_31_17 RESERVED */ |
1683 | GP_2_16_FN, GPSR2_16, |
1684 | GP_2_15_FN, GPSR2_15, |
1685 | GP_2_14_FN, GPSR2_14, |
1686 | GP_2_13_FN, GPSR2_13, |
1687 | GP_2_12_FN, GPSR2_12, |
1688 | GP_2_11_FN, GPSR2_11, |
1689 | GP_2_10_FN, GPSR2_10, |
1690 | GP_2_9_FN, GPSR2_9, |
1691 | GP_2_8_FN, GPSR2_8, |
1692 | GP_2_7_FN, GPSR2_7, |
1693 | GP_2_6_FN, GPSR2_6, |
1694 | GP_2_5_FN, GPSR2_5, |
1695 | GP_2_4_FN, GPSR2_4, |
1696 | GP_2_3_FN, GPSR2_3, |
1697 | GP_2_2_FN, GPSR2_2, |
1698 | GP_2_1_FN, GPSR2_1, |
1699 | GP_2_0_FN, GPSR2_0, )) |
1700 | }, |
1701 | { PINMUX_CFG_REG_VAR("GPSR3" , 0xe6051840, 32, |
1702 | GROUP(-13, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, |
1703 | 1, 1, 1, 1, 1, 1, 1, 1), |
1704 | GROUP( |
1705 | /* GP3_31_19 RESERVED */ |
1706 | GP_3_18_FN, GPSR3_18, |
1707 | GP_3_17_FN, GPSR3_17, |
1708 | GP_3_16_FN, GPSR3_16, |
1709 | GP_3_15_FN, GPSR3_15, |
1710 | GP_3_14_FN, GPSR3_14, |
1711 | GP_3_13_FN, GPSR3_13, |
1712 | GP_3_12_FN, GPSR3_12, |
1713 | GP_3_11_FN, GPSR3_11, |
1714 | GP_3_10_FN, GPSR3_10, |
1715 | GP_3_9_FN, GPSR3_9, |
1716 | GP_3_8_FN, GPSR3_8, |
1717 | GP_3_7_FN, GPSR3_7, |
1718 | GP_3_6_FN, GPSR3_6, |
1719 | GP_3_5_FN, GPSR3_5, |
1720 | GP_3_4_FN, GPSR3_4, |
1721 | GP_3_3_FN, GPSR3_3, |
1722 | GP_3_2_FN, GPSR3_2, |
1723 | GP_3_1_FN, GPSR3_1, |
1724 | GP_3_0_FN, GPSR3_0, )) |
1725 | }, |
1726 | #undef F_ |
1727 | #undef FM |
1728 | |
1729 | #define F_(x, y) x, |
1730 | #define FM(x) FN_##x, |
1731 | { PINMUX_CFG_REG("IP0SR0" , 0xe6050060, 32, 4, GROUP( |
1732 | IP0SR0_31_28 |
1733 | IP0SR0_27_24 |
1734 | IP0SR0_23_20 |
1735 | IP0SR0_19_16 |
1736 | IP0SR0_15_12 |
1737 | IP0SR0_11_8 |
1738 | IP0SR0_7_4 |
1739 | IP0SR0_3_0)) |
1740 | }, |
1741 | { PINMUX_CFG_REG("IP1SR0" , 0xe6050064, 32, 4, GROUP( |
1742 | IP1SR0_31_28 |
1743 | IP1SR0_27_24 |
1744 | IP1SR0_23_20 |
1745 | IP1SR0_19_16 |
1746 | IP1SR0_15_12 |
1747 | IP1SR0_11_8 |
1748 | IP1SR0_7_4 |
1749 | IP1SR0_3_0)) |
1750 | }, |
1751 | { PINMUX_CFG_REG_VAR("IP2SR0" , 0xe6050068, 32, |
1752 | GROUP(-12, 4, 4, 4, 4, 4), |
1753 | GROUP( |
1754 | /* IP2SR0_31_20 RESERVED */ |
1755 | IP2SR0_19_16 |
1756 | IP2SR0_15_12 |
1757 | IP2SR0_11_8 |
1758 | IP2SR0_7_4 |
1759 | IP2SR0_3_0)) |
1760 | }, |
1761 | { PINMUX_CFG_REG("IP0SR1" , 0xe6050860, 32, 4, GROUP( |
1762 | IP0SR1_31_28 |
1763 | IP0SR1_27_24 |
1764 | IP0SR1_23_20 |
1765 | IP0SR1_19_16 |
1766 | IP0SR1_15_12 |
1767 | IP0SR1_11_8 |
1768 | IP0SR1_7_4 |
1769 | IP0SR1_3_0)) |
1770 | }, |
1771 | #undef F_ |
1772 | #undef FM |
1773 | |
1774 | #define F_(x, y) x, |
1775 | #define FM(x) FN_##x, |
1776 | { PINMUX_CFG_REG_VAR("MOD_SEL1" , 0xe6050900, 32, |
1777 | GROUP(-20, 2, 2, 2, 2, 2, 2), |
1778 | GROUP( |
1779 | /* RESERVED 31-12 */ |
1780 | MOD_SEL1_11_10 |
1781 | MOD_SEL1_9_8 |
1782 | MOD_SEL1_7_6 |
1783 | MOD_SEL1_5_4 |
1784 | MOD_SEL1_3_2 |
1785 | MOD_SEL1_1_0)) |
1786 | }, |
1787 | { /* sentinel */ } |
1788 | }; |
1789 | |
1790 | static const struct pinmux_drive_reg pinmux_drive_regs[] = { |
1791 | { PINMUX_DRIVE_REG("DRV0CTRL0" , 0xe6050080) { |
1792 | { RCAR_GP_PIN(0, 7), 28, 3 }, /* TX0 */ |
1793 | { RCAR_GP_PIN(0, 6), 24, 3 }, /* RX0 */ |
1794 | { RCAR_GP_PIN(0, 5), 20, 3 }, /* HRTS0_N */ |
1795 | { RCAR_GP_PIN(0, 4), 16, 3 }, /* HCTS0_N */ |
1796 | { RCAR_GP_PIN(0, 3), 12, 3 }, /* HTX0 */ |
1797 | { RCAR_GP_PIN(0, 2), 8, 3 }, /* HRX0 */ |
1798 | { RCAR_GP_PIN(0, 1), 4, 3 }, /* HSCK0 */ |
1799 | { RCAR_GP_PIN(0, 0), 0, 3 }, /* SCIF_CLK */ |
1800 | } }, |
1801 | { PINMUX_DRIVE_REG("DRV1CTRL0" , 0xe6050084) { |
1802 | { RCAR_GP_PIN(0, 15), 28, 3 }, /* MSIOF0_SS1 */ |
1803 | { RCAR_GP_PIN(0, 14), 24, 3 }, /* MSIOF0_SCK */ |
1804 | { RCAR_GP_PIN(0, 13), 20, 3 }, /* MSIOF0_TXD */ |
1805 | { RCAR_GP_PIN(0, 12), 16, 3 }, /* MSIOF0_RXD */ |
1806 | { RCAR_GP_PIN(0, 11), 12, 3 }, /* MSIOF0_SYNC */ |
1807 | { RCAR_GP_PIN(0, 10), 8, 3 }, /* CTS0_N */ |
1808 | { RCAR_GP_PIN(0, 9), 4, 3 }, /* RTS0_N */ |
1809 | { RCAR_GP_PIN(0, 8), 0, 3 }, /* SCK0 */ |
1810 | } }, |
1811 | { PINMUX_DRIVE_REG("DRV2CTRL0" , 0xe6050088) { |
1812 | { RCAR_GP_PIN(0, 20), 16, 3 }, /* IRQ3 */ |
1813 | { RCAR_GP_PIN(0, 19), 12, 3 }, /* IRQ2 */ |
1814 | { RCAR_GP_PIN(0, 18), 8, 3 }, /* IRQ1 */ |
1815 | { RCAR_GP_PIN(0, 17), 4, 3 }, /* IRQ0 */ |
1816 | { RCAR_GP_PIN(0, 16), 0, 3 }, /* MSIOF0_SS2 */ |
1817 | } }, |
1818 | { PINMUX_DRIVE_REG("DRV0CTRL1" , 0xe6050880) { |
1819 | { RCAR_GP_PIN(1, 7), 28, 3 }, /* GP1_07 */ |
1820 | { RCAR_GP_PIN(1, 6), 24, 3 }, /* GP1_06 */ |
1821 | { RCAR_GP_PIN(1, 5), 20, 3 }, /* GP1_05 */ |
1822 | { RCAR_GP_PIN(1, 4), 16, 3 }, /* GP1_04 */ |
1823 | { RCAR_GP_PIN(1, 3), 12, 3 }, /* GP1_03 */ |
1824 | { RCAR_GP_PIN(1, 2), 8, 3 }, /* GP1_02 */ |
1825 | { RCAR_GP_PIN(1, 1), 4, 3 }, /* GP1_01 */ |
1826 | { RCAR_GP_PIN(1, 0), 0, 3 }, /* GP1_00 */ |
1827 | } }, |
1828 | { PINMUX_DRIVE_REG("DRV1CTRL1" , 0xe6050884) { |
1829 | { RCAR_GP_PIN(1, 15), 28, 3 }, /* MMC_SD_D2 */ |
1830 | { RCAR_GP_PIN(1, 14), 24, 3 }, /* MMC_SD_D1 */ |
1831 | { RCAR_GP_PIN(1, 13), 20, 3 }, /* MMC_SD_D0 */ |
1832 | { RCAR_GP_PIN(1, 12), 16, 3 }, /* MMC_SD_CLK */ |
1833 | { RCAR_GP_PIN(1, 11), 12, 3 }, /* GP1_11 */ |
1834 | { RCAR_GP_PIN(1, 10), 8, 3 }, /* GP1_10 */ |
1835 | { RCAR_GP_PIN(1, 9), 4, 3 }, /* GP1_09 */ |
1836 | { RCAR_GP_PIN(1, 8), 0, 3 }, /* GP1_08 */ |
1837 | } }, |
1838 | { PINMUX_DRIVE_REG("DRV2CTRL1" , 0xe6050888) { |
1839 | { RCAR_GP_PIN(1, 23), 28, 3 }, /* SD_CD */ |
1840 | { RCAR_GP_PIN(1, 22), 24, 3 }, /* MMC_SD_CMD */ |
1841 | { RCAR_GP_PIN(1, 21), 20, 3 }, /* MMC_D7 */ |
1842 | { RCAR_GP_PIN(1, 20), 16, 3 }, /* MMC_DS */ |
1843 | { RCAR_GP_PIN(1, 19), 12, 3 }, /* MMC_D6 */ |
1844 | { RCAR_GP_PIN(1, 18), 8, 3 }, /* MMC_D4 */ |
1845 | { RCAR_GP_PIN(1, 17), 4, 3 }, /* MMC_D5 */ |
1846 | { RCAR_GP_PIN(1, 16), 0, 3 }, /* MMC_SD_D3 */ |
1847 | } }, |
1848 | { PINMUX_DRIVE_REG("DRV3CTRL1" , 0xe605088c) { |
1849 | { RCAR_GP_PIN(1, 24), 0, 3 }, /* SD_WP */ |
1850 | } }, |
1851 | { PINMUX_DRIVE_REG("DRV0CTRL2" , 0xe6051080) { |
1852 | { RCAR_GP_PIN(2, 7), 28, 2 }, /* QSPI1_MOSI_IO0 */ |
1853 | { RCAR_GP_PIN(2, 6), 24, 2 }, /* QSPI1_IO2 */ |
1854 | { RCAR_GP_PIN(2, 5), 20, 2 }, /* QSPI1_MISO_IO1 */ |
1855 | { RCAR_GP_PIN(2, 4), 16, 2 }, /* QSPI1_IO3 */ |
1856 | { RCAR_GP_PIN(2, 3), 12, 2 }, /* QSPI1_SSL */ |
1857 | { RCAR_GP_PIN(2, 2), 8, 2 }, /* RPC_RESET_N */ |
1858 | { RCAR_GP_PIN(2, 1), 4, 2 }, /* RPC_WP_N */ |
1859 | { RCAR_GP_PIN(2, 0), 0, 2 }, /* RPC_INT_N */ |
1860 | } }, |
1861 | { PINMUX_DRIVE_REG("DRV1CTRL2" , 0xe6051084) { |
1862 | { RCAR_GP_PIN(2, 15), 28, 3 }, /* PCIE0_CLKREQ_N */ |
1863 | { RCAR_GP_PIN(2, 14), 24, 2 }, /* QSPI0_IO3 */ |
1864 | { RCAR_GP_PIN(2, 13), 20, 2 }, /* QSPI0_SSL */ |
1865 | { RCAR_GP_PIN(2, 12), 16, 2 }, /* QSPI0_MISO_IO1 */ |
1866 | { RCAR_GP_PIN(2, 11), 12, 2 }, /* QSPI0_IO2 */ |
1867 | { RCAR_GP_PIN(2, 10), 8, 2 }, /* QSPI0_SPCLK */ |
1868 | { RCAR_GP_PIN(2, 9), 4, 2 }, /* QSPI0_MOSI_IO0 */ |
1869 | { RCAR_GP_PIN(2, 8), 0, 2 }, /* QSPI1_SPCLK */ |
1870 | } }, |
1871 | { PINMUX_DRIVE_REG("DRV2CTRL2" , 0xe6051088) { |
1872 | { RCAR_GP_PIN(2, 16), 0, 3 }, /* PCIE1_CLKREQ_N */ |
1873 | } }, |
1874 | { PINMUX_DRIVE_REG("DRV0CTRL3" , 0xe6051880) { |
1875 | { RCAR_GP_PIN(3, 7), 28, 3 }, /* TSN2_LINK_B */ |
1876 | { RCAR_GP_PIN(3, 6), 24, 3 }, /* TSN1_LINK_B */ |
1877 | { RCAR_GP_PIN(3, 5), 20, 3 }, /* TSN1_MDC_B */ |
1878 | { RCAR_GP_PIN(3, 4), 16, 3 }, /* TSN0_MDC_B */ |
1879 | { RCAR_GP_PIN(3, 3), 12, 3 }, /* TSN2_MDC_B */ |
1880 | { RCAR_GP_PIN(3, 2), 8, 3 }, /* TSN0_MDIO_B */ |
1881 | { RCAR_GP_PIN(3, 1), 4, 3 }, /* TSN2_MDIO_B */ |
1882 | { RCAR_GP_PIN(3, 0), 0, 3 }, /* TSN1_MDIO_B */ |
1883 | } }, |
1884 | { PINMUX_DRIVE_REG("DRV1CTRL3" , 0xe6051884) { |
1885 | { RCAR_GP_PIN(3, 15), 28, 3 }, /* TSN1_AVTP_CAPTURE_B */ |
1886 | { RCAR_GP_PIN(3, 14), 24, 3 }, /* TSN1_AVTP_MATCH_B */ |
1887 | { RCAR_GP_PIN(3, 13), 20, 3 }, /* TSN1_AVTP_PPS */ |
1888 | { RCAR_GP_PIN(3, 12), 16, 3 }, /* TSN0_MAGIC_B */ |
1889 | { RCAR_GP_PIN(3, 11), 12, 3 }, /* TSN1_PHY_INT_B */ |
1890 | { RCAR_GP_PIN(3, 10), 8, 3 }, /* TSN0_PHY_INT_B */ |
1891 | { RCAR_GP_PIN(3, 9), 4, 3 }, /* TSN2_PHY_INT_B */ |
1892 | { RCAR_GP_PIN(3, 8), 0, 3 }, /* TSN0_LINK_B */ |
1893 | } }, |
1894 | { PINMUX_DRIVE_REG("DRV2CTRL3" , 0xe6051888) { |
1895 | { RCAR_GP_PIN(3, 18), 8, 3 }, /* TSN0_AVTP_CAPTURE_B */ |
1896 | { RCAR_GP_PIN(3, 17), 4, 3 }, /* TSN0_AVTP_MATCH_B */ |
1897 | { RCAR_GP_PIN(3, 16), 0, 3 }, /* TSN0_AVTP_PPS */ |
1898 | } }, |
1899 | { /* sentinel */ } |
1900 | }; |
1901 | |
1902 | enum ioctrl_regs { |
1903 | POC0, |
1904 | POC1, |
1905 | POC3, |
1906 | TD0SEL1, |
1907 | }; |
1908 | |
1909 | static const struct pinmux_ioctrl_reg pinmux_ioctrl_regs[] = { |
1910 | [POC0] = { 0xe60500a0, }, |
1911 | [POC1] = { .reg: 0xe60508a0, }, |
1912 | [POC3] = { .reg: 0xe60518a0, }, |
1913 | [TD0SEL1] = { .reg: 0xe6050920, }, |
1914 | { /* sentinel */ } |
1915 | }; |
1916 | |
1917 | static int r8a779f0_pin_to_pocctrl(unsigned int pin, u32 *pocctrl) |
1918 | { |
1919 | int bit = pin & 0x1f; |
1920 | |
1921 | *pocctrl = pinmux_ioctrl_regs[POC0].reg; |
1922 | if (pin >= RCAR_GP_PIN(0, 0) && pin <= RCAR_GP_PIN(0, 20)) |
1923 | return bit; |
1924 | |
1925 | *pocctrl = pinmux_ioctrl_regs[POC1].reg; |
1926 | if (pin >= RCAR_GP_PIN(1, 0) && pin <= RCAR_GP_PIN(1, 24)) |
1927 | return bit; |
1928 | |
1929 | *pocctrl = pinmux_ioctrl_regs[POC3].reg; |
1930 | if (pin >= RCAR_GP_PIN(3, 0) && pin <= RCAR_GP_PIN(3, 18)) |
1931 | return bit; |
1932 | |
1933 | return -EINVAL; |
1934 | } |
1935 | |
1936 | static const struct pinmux_bias_reg pinmux_bias_regs[] = { |
1937 | { PINMUX_BIAS_REG("PUEN0" , 0xe60500c0, "PUD0" , 0xe60500e0) { |
1938 | [ 0] = RCAR_GP_PIN(0, 0), /* SCIF_CLK */ |
1939 | [ 1] = RCAR_GP_PIN(0, 1), /* HSCK0 */ |
1940 | [ 2] = RCAR_GP_PIN(0, 2), /* HRX0 */ |
1941 | [ 3] = RCAR_GP_PIN(0, 3), /* HTX0 */ |
1942 | [ 4] = RCAR_GP_PIN(0, 4), /* HCTS0_N */ |
1943 | [ 5] = RCAR_GP_PIN(0, 5), /* HRTS0_N */ |
1944 | [ 6] = RCAR_GP_PIN(0, 6), /* RX0 */ |
1945 | [ 7] = RCAR_GP_PIN(0, 7), /* TX0 */ |
1946 | [ 8] = RCAR_GP_PIN(0, 8), /* SCK0 */ |
1947 | [ 9] = RCAR_GP_PIN(0, 9), /* RTS0_N */ |
1948 | [10] = RCAR_GP_PIN(0, 10), /* CTS0_N */ |
1949 | [11] = RCAR_GP_PIN(0, 11), /* MSIOF0_SYNC */ |
1950 | [12] = RCAR_GP_PIN(0, 12), /* MSIOF0_RXD */ |
1951 | [13] = RCAR_GP_PIN(0, 13), /* MSIOF0_TXD */ |
1952 | [14] = RCAR_GP_PIN(0, 14), /* MSIOF0_SCK */ |
1953 | [15] = RCAR_GP_PIN(0, 15), /* MSIOF0_SS1 */ |
1954 | [16] = RCAR_GP_PIN(0, 16), /* MSIOF0_SS2 */ |
1955 | [17] = RCAR_GP_PIN(0, 17), /* IRQ0 */ |
1956 | [18] = RCAR_GP_PIN(0, 18), /* IRQ1 */ |
1957 | [19] = RCAR_GP_PIN(0, 19), /* IRQ2 */ |
1958 | [20] = RCAR_GP_PIN(0, 20), /* IRQ3 */ |
1959 | [21] = SH_PFC_PIN_NONE, |
1960 | [22] = SH_PFC_PIN_NONE, |
1961 | [23] = SH_PFC_PIN_NONE, |
1962 | [24] = SH_PFC_PIN_NONE, |
1963 | [25] = SH_PFC_PIN_NONE, |
1964 | [26] = SH_PFC_PIN_NONE, |
1965 | [27] = SH_PFC_PIN_NONE, |
1966 | [28] = SH_PFC_PIN_NONE, |
1967 | [29] = SH_PFC_PIN_NONE, |
1968 | [30] = SH_PFC_PIN_NONE, |
1969 | [31] = SH_PFC_PIN_NONE, |
1970 | } }, |
1971 | { PINMUX_BIAS_REG("PUEN1" , 0xe60508c0, "PUD1" , 0xe60508e0) { |
1972 | [ 0] = RCAR_GP_PIN(1, 0), /* GP1_00 */ |
1973 | [ 1] = RCAR_GP_PIN(1, 1), /* GP1_01 */ |
1974 | [ 2] = RCAR_GP_PIN(1, 2), /* GP1_02 */ |
1975 | [ 3] = RCAR_GP_PIN(1, 3), /* GP1_03 */ |
1976 | [ 4] = RCAR_GP_PIN(1, 4), /* GP1_04 */ |
1977 | [ 5] = RCAR_GP_PIN(1, 5), /* GP1_05 */ |
1978 | [ 6] = RCAR_GP_PIN(1, 6), /* GP1_06 */ |
1979 | [ 7] = RCAR_GP_PIN(1, 7), /* GP1_07 */ |
1980 | [ 8] = RCAR_GP_PIN(1, 8), /* GP1_08 */ |
1981 | [ 9] = RCAR_GP_PIN(1, 9), /* GP1_09 */ |
1982 | [10] = RCAR_GP_PIN(1, 10), /* GP1_10 */ |
1983 | [11] = RCAR_GP_PIN(1, 11), /* GP1_11 */ |
1984 | [12] = RCAR_GP_PIN(1, 12), /* MMC_SD_CLK */ |
1985 | [13] = RCAR_GP_PIN(1, 13), /* MMC_SD_D0 */ |
1986 | [14] = RCAR_GP_PIN(1, 14), /* MMC_SD_D1 */ |
1987 | [15] = RCAR_GP_PIN(1, 15), /* MMC_SD_D2 */ |
1988 | [16] = RCAR_GP_PIN(1, 16), /* MMC_SD_D3 */ |
1989 | [17] = RCAR_GP_PIN(1, 17), /* MMC_D5 */ |
1990 | [18] = RCAR_GP_PIN(1, 18), /* MMC_D4 */ |
1991 | [19] = RCAR_GP_PIN(1, 19), /* MMC_D6 */ |
1992 | [20] = RCAR_GP_PIN(1, 20), /* MMC_DS */ |
1993 | [21] = RCAR_GP_PIN(1, 21), /* MMC_D7 */ |
1994 | [22] = RCAR_GP_PIN(1, 22), /* MMC_SD_CMD */ |
1995 | [23] = RCAR_GP_PIN(1, 23), /* SD_CD */ |
1996 | [24] = RCAR_GP_PIN(1, 24), /* SD_WP */ |
1997 | [25] = SH_PFC_PIN_NONE, |
1998 | [26] = SH_PFC_PIN_NONE, |
1999 | [27] = SH_PFC_PIN_NONE, |
2000 | [28] = SH_PFC_PIN_NONE, |
2001 | [29] = SH_PFC_PIN_NONE, |
2002 | [30] = SH_PFC_PIN_NONE, |
2003 | [31] = SH_PFC_PIN_NONE, |
2004 | } }, |
2005 | { PINMUX_BIAS_REG("PUEN2" , 0xe60510c0, "PUD2" , 0xe60510e0) { |
2006 | [ 0] = RCAR_GP_PIN(2, 0), /* RPC_INT_N */ |
2007 | [ 1] = RCAR_GP_PIN(2, 1), /* RPC_WP_N */ |
2008 | [ 2] = RCAR_GP_PIN(2, 2), /* RPC_RESET_N */ |
2009 | [ 3] = RCAR_GP_PIN(2, 3), /* QSPI1_SSL */ |
2010 | [ 4] = RCAR_GP_PIN(2, 4), /* QSPI1_IO3 */ |
2011 | [ 5] = RCAR_GP_PIN(2, 5), /* QSPI1_MISO_IO1 */ |
2012 | [ 6] = RCAR_GP_PIN(2, 6), /* QSPI1_IO2 */ |
2013 | [ 7] = RCAR_GP_PIN(2, 7), /* QSPI1_MOSI_IO0 */ |
2014 | [ 8] = RCAR_GP_PIN(2, 8), /* QSPI1_SPCLK */ |
2015 | [ 9] = RCAR_GP_PIN(2, 9), /* QSPI0_MOSI_IO0 */ |
2016 | [10] = RCAR_GP_PIN(2, 10), /* QSPI0_SPCLK */ |
2017 | [11] = RCAR_GP_PIN(2, 11), /* QSPI0_IO2 */ |
2018 | [12] = RCAR_GP_PIN(2, 12), /* QSPI0_MISO_IO1 */ |
2019 | [13] = RCAR_GP_PIN(2, 13), /* QSPI0_SSL */ |
2020 | [14] = RCAR_GP_PIN(2, 14), /* QSPI0_IO3 */ |
2021 | [15] = RCAR_GP_PIN(2, 15), /* PCIE0_CLKREQ_N */ |
2022 | [16] = RCAR_GP_PIN(2, 16), /* PCIE1_CLKREQ_N */ |
2023 | [17] = SH_PFC_PIN_NONE, |
2024 | [18] = SH_PFC_PIN_NONE, |
2025 | [19] = SH_PFC_PIN_NONE, |
2026 | [20] = SH_PFC_PIN_NONE, |
2027 | [21] = SH_PFC_PIN_NONE, |
2028 | [22] = SH_PFC_PIN_NONE, |
2029 | [23] = SH_PFC_PIN_NONE, |
2030 | [24] = SH_PFC_PIN_NONE, |
2031 | [25] = SH_PFC_PIN_NONE, |
2032 | [26] = SH_PFC_PIN_NONE, |
2033 | [27] = SH_PFC_PIN_NONE, |
2034 | [28] = SH_PFC_PIN_NONE, |
2035 | [29] = SH_PFC_PIN_NONE, |
2036 | [30] = SH_PFC_PIN_NONE, |
2037 | [31] = SH_PFC_PIN_NONE, |
2038 | } }, |
2039 | { PINMUX_BIAS_REG("PUEN3" , 0xe60518c0, "PUD3" , 0xe60518e0) { |
2040 | [ 0] = RCAR_GP_PIN(3, 0), /* TSN1_MDIO_B */ |
2041 | [ 1] = RCAR_GP_PIN(3, 1), /* TSN2_MDIO_B */ |
2042 | [ 2] = RCAR_GP_PIN(3, 2), /* TSN0_MDIO_B */ |
2043 | [ 3] = RCAR_GP_PIN(3, 3), /* TSN2_MDC_B */ |
2044 | [ 4] = RCAR_GP_PIN(3, 4), /* TSN0_MDC_B */ |
2045 | [ 5] = RCAR_GP_PIN(3, 5), /* TSN1_MDC_B */ |
2046 | [ 6] = RCAR_GP_PIN(3, 6), /* TSN1_LINK_B */ |
2047 | [ 7] = RCAR_GP_PIN(3, 7), /* TSN2_LINK_B */ |
2048 | [ 8] = RCAR_GP_PIN(3, 8), /* TSN0_LINK_B */ |
2049 | [ 9] = RCAR_GP_PIN(3, 9), /* TSN2_PHY_INT_B */ |
2050 | [10] = RCAR_GP_PIN(3, 10), /* TSN0_PHY_INT_B */ |
2051 | [11] = RCAR_GP_PIN(3, 11), /* TSN1_PHY_INT_B */ |
2052 | [12] = RCAR_GP_PIN(3, 12), /* TSN0_MAGIC_B */ |
2053 | [13] = RCAR_GP_PIN(3, 13), /* TSN1_AVTP_PPS */ |
2054 | [14] = RCAR_GP_PIN(3, 14), /* TSN1_AVTP_MATCH_B */ |
2055 | [15] = RCAR_GP_PIN(3, 15), /* TSN1_AVTP_CAPTURE_B */ |
2056 | [16] = RCAR_GP_PIN(3, 16), /* TSN0_AVTP_PPS */ |
2057 | [17] = RCAR_GP_PIN(3, 17), /* TSN0_AVTP_MATCH_B */ |
2058 | [18] = RCAR_GP_PIN(3, 18), /* TSN0_AVTP_CAPTURE_B */ |
2059 | [19] = SH_PFC_PIN_NONE, |
2060 | [20] = SH_PFC_PIN_NONE, |
2061 | [21] = SH_PFC_PIN_NONE, |
2062 | [22] = SH_PFC_PIN_NONE, |
2063 | [23] = SH_PFC_PIN_NONE, |
2064 | [24] = SH_PFC_PIN_NONE, |
2065 | [25] = SH_PFC_PIN_NONE, |
2066 | [26] = SH_PFC_PIN_NONE, |
2067 | [27] = SH_PFC_PIN_NONE, |
2068 | [28] = SH_PFC_PIN_NONE, |
2069 | [29] = SH_PFC_PIN_NONE, |
2070 | [30] = SH_PFC_PIN_NONE, |
2071 | [31] = SH_PFC_PIN_NONE, |
2072 | } }, |
2073 | { /* sentinel */ } |
2074 | }; |
2075 | |
2076 | static const struct sh_pfc_soc_operations r8a779f0_pfc_ops = { |
2077 | .pin_to_pocctrl = r8a779f0_pin_to_pocctrl, |
2078 | .get_bias = rcar_pinmux_get_bias, |
2079 | .set_bias = rcar_pinmux_set_bias, |
2080 | }; |
2081 | |
2082 | const struct sh_pfc_soc_info r8a779f0_pinmux_info = { |
2083 | .name = "r8a779f0_pfc" , |
2084 | .ops = &r8a779f0_pfc_ops, |
2085 | .unlock_reg = 0x1ff, /* PMMRn mask */ |
2086 | |
2087 | .function = { .begin: PINMUX_FUNCTION_BEGIN, .end: PINMUX_FUNCTION_END }, |
2088 | |
2089 | .pins = pinmux_pins, |
2090 | .nr_pins = ARRAY_SIZE(pinmux_pins), |
2091 | .groups = pinmux_groups, |
2092 | .nr_groups = ARRAY_SIZE(pinmux_groups), |
2093 | .functions = pinmux_functions, |
2094 | .nr_functions = ARRAY_SIZE(pinmux_functions), |
2095 | |
2096 | .cfg_regs = pinmux_config_regs, |
2097 | .drive_regs = pinmux_drive_regs, |
2098 | .bias_regs = pinmux_bias_regs, |
2099 | .ioctrl_regs = pinmux_ioctrl_regs, |
2100 | |
2101 | .pinmux_data = pinmux_data, |
2102 | .pinmux_data_size = ARRAY_SIZE(pinmux_data), |
2103 | }; |
2104 | |