• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2015-2019, Renesas Electronics Corporation
3  * All rights reserved.
4  *
5  * SPDX-License-Identifier: BSD-3-Clause
6  */
7 
8 #include <stdint.h>		/* for uint32_t */
9 #include <lib/mmio.h>
10 #include "pfc_init_v3m.h"
11 #include "include/rcar_def.h"
12 #include "rcar_private.h"
13 #include "../pfc_regs.h"
14 
15 /* Pin functon bit */
16 #define GPSR0_DU_EXODDF_DU_ODDF_DISP_CDE	BIT(21)
17 #define GPSR0_DU_EXVSYNC_DU_VSYNC		BIT(20)
18 #define GPSR0_DU_EXHSYNC_DU_HSYNC		BIT(19)
19 #define GPSR0_DU_DOTCLKOUT			BIT(18)
20 #define GPSR0_DU_DB7				BIT(17)
21 #define GPSR0_DU_DB6				BIT(16)
22 #define GPSR0_DU_DB5				BIT(15)
23 #define GPSR0_DU_DB4				BIT(14)
24 #define GPSR0_DU_DB3				BIT(13)
25 #define GPSR0_DU_DB2				BIT(12)
26 #define GPSR0_DU_DG7				BIT(11)
27 #define GPSR0_DU_DG6				BIT(10)
28 #define GPSR0_DU_DG5				BIT(9)
29 #define GPSR0_DU_DG4				BIT(8)
30 #define GPSR0_DU_DG3				BIT(7)
31 #define GPSR0_DU_DG2				BIT(6)
32 #define GPSR0_DU_DR7				BIT(5)
33 #define GPSR0_DU_DR6				BIT(4)
34 #define GPSR0_DU_DR5				BIT(3)
35 #define GPSR0_DU_DR4				BIT(2)
36 #define GPSR0_DU_DR3				BIT(1)
37 #define GPSR0_DU_DR2				BIT(0)
38 
39 #define GPSR1_DIGRF_CLKOUT			BIT(27)
40 #define GPSR1_DIGRF_CLKIN			BIT(26)
41 #define GPSR1_CANFD_CLK				BIT(25)
42 #define GPSR1_CANFD1_RX				BIT(24)
43 #define GPSR1_CANFD1_TX				BIT(23)
44 #define GPSR1_CANFD0_RX				BIT(22)
45 #define GPSR1_CANFD0_TX				BIT(21)
46 #define GPSR1_AVB0_AVTP_CAPTURE			BIT(20)
47 #define GPSR1_AVB0_AVTP_MATCH			BIT(19)
48 #define GPSR1_AVB0_LINK				BIT(18)
49 #define GPSR1_AVB0_PHY_INT			BIT(17)
50 #define GPSR1_AVB0_MAGIC			BIT(16)
51 #define GPSR1_AVB0_MDC				BIT(15)
52 #define GPSR1_AVB0_MDIO				BIT(14)
53 #define GPSR1_AVB0_TXCREFCLK			BIT(13)
54 #define GPSR1_AVB0_TD3				BIT(12)
55 #define GPSR1_AVB0_TD2				BIT(11)
56 #define GPSR1_AVB0_TD1				BIT(10)
57 #define GPSR1_AVB0_TD0				BIT(9)
58 #define GPSR1_AVB0_TXC				BIT(8)
59 #define GPSR1_AVB0_TX_CTL			BIT(7)
60 #define GPSR1_AVB0_RD3				BIT(6)
61 #define GPSR1_AVB0_RD2				BIT(5)
62 #define GPSR1_AVB0_RD1				BIT(4)
63 #define GPSR1_AVB0_RD0				BIT(3)
64 #define GPSR1_AVB0_RXC				BIT(2)
65 #define GPSR1_AVB0_RX_CTL			BIT(1)
66 #define GPSR1_IRQ0				BIT(0)
67 
68 #define GPSR2_VI0_FIELD				BIT(16)
69 #define GPSR2_VI0_DATA11			BIT(15)
70 #define GPSR2_VI0_DATA10			BIT(14)
71 #define GPSR2_VI0_DATA9				BIT(13)
72 #define GPSR2_VI0_DATA8				BIT(12)
73 #define GPSR2_VI0_DATA7				BIT(11)
74 #define GPSR2_VI0_DATA6				BIT(10)
75 #define GPSR2_VI0_DATA5				BIT(9)
76 #define GPSR2_VI0_DATA4				BIT(8)
77 #define GPSR2_VI0_DATA3				BIT(7)
78 #define GPSR2_VI0_DATA2				BIT(6)
79 #define GPSR2_VI0_DATA1				BIT(5)
80 #define GPSR2_VI0_DATA0				BIT(4)
81 #define GPSR2_VI0_VSYNC_N			BIT(3)
82 #define GPSR2_VI0_HSYNC_N			BIT(2)
83 #define GPSR2_VI0_CLKENB			BIT(1)
84 #define GPSR2_VI0_CLK				BIT(0)
85 
86 #define GPSR3_VI1_FIELD				BIT(16)
87 #define GPSR3_VI1_DATA11			BIT(15)
88 #define GPSR3_VI1_DATA10			BIT(14)
89 #define GPSR3_VI1_DATA9				BIT(13)
90 #define GPSR3_VI1_DATA8				BIT(12)
91 #define GPSR3_VI1_DATA7				BIT(11)
92 #define GPSR3_VI1_DATA6				BIT(10)
93 #define GPSR3_VI1_DATA5				BIT(9)
94 #define GPSR3_VI1_DATA4				BIT(8)
95 #define GPSR3_VI1_DATA3				BIT(7)
96 #define GPSR3_VI1_DATA2				BIT(6)
97 #define GPSR3_VI1_DATA1				BIT(5)
98 #define GPSR3_VI1_DATA0				BIT(4)
99 #define GPSR3_VI1_VSYNC_N			BIT(3)
100 #define GPSR3_VI1_HSYNC_N			BIT(2)
101 #define GPSR3_VI1_CLKENB			BIT(1)
102 #define GPSR3_VI1_CLK				BIT(0)
103 
104 #define GPSR4_SDA2				BIT(5)
105 #define GPSR4_SCL2				BIT(4)
106 #define GPSR4_SDA1				BIT(3)
107 #define GPSR4_SCL1				BIT(2)
108 #define GPSR4_SDA0				BIT(1)
109 #define GPSR4_SCL0				BIT(0)
110 
111 #define GPSR5_RPC_INT_N				BIT(14)
112 #define GPSR5_RPC_WP_N				BIT(13)
113 #define GPSR5_RPC_RESET_N			BIT(12)
114 #define GPSR5_QSPI1_SSL				BIT(11)
115 #define GPSR5_QSPI1_IO3				BIT(10)
116 #define GPSR5_QSPI1_IO2				BIT(9)
117 #define GPSR5_QSPI1_MISO_IO1			BIT(8)
118 #define GPSR5_QSPI1_MOSI_IO0			BIT(7)
119 #define GPSR5_QSPI1_SPCLK			BIT(6)
120 #define GPSR5_QSPI0_SSL				BIT(5)
121 #define GPSR5_QSPI0_IO3				BIT(4)
122 #define GPSR5_QSPI0_IO2				BIT(3)
123 #define GPSR5_QSPI0_MISO_IO1			BIT(2)
124 #define GPSR5_QSPI0_MOSI_IO0			BIT(1)
125 #define GPSR5_QSPI0_SPCLK			BIT(0)
126 
127 #define IPSR_28_FUNC(x)				((uint32_t)(x) << 28U)
128 #define IPSR_24_FUNC(x)				((uint32_t)(x) << 24U)
129 #define IPSR_20_FUNC(x)				((uint32_t)(x) << 20U)
130 #define IPSR_16_FUNC(x)				((uint32_t)(x) << 16U)
131 #define IPSR_12_FUNC(x)				((uint32_t)(x) << 12U)
132 #define IPSR_8_FUNC(x)				((uint32_t)(x) << 8U)
133 #define IPSR_4_FUNC(x)				((uint32_t)(x) << 4U)
134 #define IPSR_0_FUNC(x)				((uint32_t)(x) << 0U)
135 
136 #define IOCTRL30_POC_VI0_DATA5			BIT(31)
137 #define IOCTRL30_POC_VI0_DATA4			BIT(30)
138 #define IOCTRL30_POC_VI0_DATA3			BIT(29)
139 #define IOCTRL30_POC_VI0_DATA2			BIT(28)
140 #define IOCTRL30_POC_VI0_DATA1			BIT(27)
141 #define IOCTRL30_POC_VI0_DATA0			BIT(26)
142 #define IOCTRL30_POC_VI0_VSYNC_N		BIT(25)
143 #define IOCTRL30_POC_VI0_HSYNC_N		BIT(24)
144 #define IOCTRL30_POC_VI0_CLKENB			BIT(23)
145 #define IOCTRL30_POC_VI0_CLK			BIT(22)
146 #define IOCTRL30_POC_DU_EXODDF_DU_ODDF_DISP_CDE	BIT(21)
147 #define IOCTRL30_POC_DU_EXVSYNC_DU_VSYNC	BIT(20)
148 #define IOCTRL30_POC_DU_EXHSYNC_DU_HSYNC	BIT(19)
149 #define IOCTRL30_POC_DU_DOTCLKOUT		BIT(18)
150 #define IOCTRL30_POC_DU_DB7			BIT(17)
151 #define IOCTRL30_POC_DU_DB6			BIT(16)
152 #define IOCTRL30_POC_DU_DB5			BIT(15)
153 #define IOCTRL30_POC_DU_DB4			BIT(14)
154 #define IOCTRL30_POC_DU_DB3			BIT(13)
155 #define IOCTRL30_POC_DU_DB2			BIT(12)
156 #define IOCTRL30_POC_DU_DG7			BIT(11)
157 #define IOCTRL30_POC_DU_DG6			BIT(10)
158 #define IOCTRL30_POC_DU_DG5			BIT(9)
159 #define IOCTRL30_POC_DU_DG4			BIT(8)
160 #define IOCTRL30_POC_DU_DG3			BIT(7)
161 #define IOCTRL30_POC_DU_DG2			BIT(6)
162 #define IOCTRL30_POC_DU_DR7			BIT(5)
163 #define IOCTRL30_POC_DU_DR6			BIT(4)
164 #define IOCTRL30_POC_DU_DR5			BIT(3)
165 #define IOCTRL30_POC_DU_DR4			BIT(2)
166 #define IOCTRL30_POC_DU_DR3			BIT(1)
167 #define IOCTRL30_POC_DU_DR2			BIT(0)
168 
169 #define IOCTRL31_POC_DUMMY_31			BIT(31)
170 #define IOCTRL31_POC_DUMMY_30			BIT(30)
171 #define IOCTRL31_POC_DUMMY_29			BIT(29)
172 #define IOCTRL31_POC_DUMMY_28			BIT(28)
173 #define IOCTRL31_POC_DUMMY_27			BIT(27)
174 #define IOCTRL31_POC_DUMMY_26			BIT(26)
175 #define IOCTRL31_POC_DUMMY_25			BIT(25)
176 #define IOCTRL31_POC_DUMMY_24			BIT(24)
177 #define IOCTRL31_POC_VI1_FIELD			BIT(23)
178 #define IOCTRL31_POC_VI1_DATA11			BIT(22)
179 #define IOCTRL31_POC_VI1_DATA10			BIT(21)
180 #define IOCTRL31_POC_VI1_DATA9			BIT(20)
181 #define IOCTRL31_POC_VI1_DATA8			BIT(19)
182 #define IOCTRL31_POC_VI1_DATA7			BIT(18)
183 #define IOCTRL31_POC_VI1_DATA6			BIT(17)
184 #define IOCTRL31_POC_VI1_DATA5			BIT(16)
185 #define IOCTRL31_POC_VI1_DATA4			BIT(15)
186 #define IOCTRL31_POC_VI1_DATA3			BIT(14)
187 #define IOCTRL31_POC_VI1_DATA2			BIT(13)
188 #define IOCTRL31_POC_VI1_DATA1			BIT(12)
189 #define IOCTRL31_POC_VI1_DATA0			BIT(11)
190 #define IOCTRL31_POC_VI1_VSYNC_N		BIT(10)
191 #define IOCTRL31_POC_VI1_HSYNC_N		BIT(9)
192 #define IOCTRL31_POC_VI1_CLKENB			BIT(8)
193 #define IOCTRL31_POC_VI1_CLK			BIT(7)
194 #define IOCTRL31_POC_VI0_FIELD			BIT(6)
195 #define IOCTRL31_POC_VI0_DATA11			BIT(5)
196 #define IOCTRL31_POC_VI0_DATA10			BIT(4)
197 #define IOCTRL31_POC_VI0_DATA9			BIT(3)
198 #define IOCTRL31_POC_VI0_DATA8			BIT(2)
199 #define IOCTRL31_POC_VI0_DATA7			BIT(1)
200 #define IOCTRL31_POC_VI0_DATA6			BIT(0)
201 #define IOCTRL32_POC2_VREF			BIT(0)
202 #define IOCTRL40_SD0TDSEL1			BIT(1)
203 #define IOCTRL40_SD0TDSEL0			BIT(0)
204 
205 #define PUEN0_PUEN_VI0_CLK			BIT(31)
206 #define PUEN0_PUEN_TDI				BIT(30)
207 #define PUEN0_PUEN_TMS				BIT(29)
208 #define PUEN0_PUEN_TCK				BIT(28)
209 #define PUEN0_PUEN_TRST_N			BIT(27)
210 #define PUEN0_PUEN_IRQ0				BIT(26)
211 #define PUEN0_PUEN_FSCLKST_N			BIT(25)
212 #define PUEN0_PUEN_EXTALR			BIT(24)
213 #define PUEN0_PUEN_PRESETOUT_N			BIT(23)
214 #define PUEN0_PUEN_DU_DOTCLKIN			BIT(22)
215 #define PUEN0_PUEN_DU_EXODDF_DU_ODDF_DISP_CDE	BIT(21)
216 #define PUEN0_PUEN_DU_EXVSYNC_DU_VSYNC		BIT(20)
217 #define PUEN0_PUEN_DU_EXHSYNC_DU_HSYNC		BIT(19)
218 #define PUEN0_PUEN_DU_DOTCLKOUT			BIT(18)
219 #define PUEN0_PUEN_DU_DB7			BIT(17)
220 #define PUEN0_PUEN_DU_DB6			BIT(16)
221 #define PUEN0_PUEN_DU_DB5			BIT(15)
222 #define PUEN0_PUEN_DU_DB4			BIT(14)
223 #define PUEN0_PUEN_DU_DB3			BIT(13)
224 #define PUEN0_PUEN_DU_DB2			BIT(12)
225 #define PUEN0_PUEN_DU_DG7			BIT(11)
226 #define PUEN0_PUEN_DU_DG6			BIT(10)
227 #define PUEN0_PUEN_DU_DG5			BIT(9)
228 #define PUEN0_PUEN_DU_DG4			BIT(8)
229 #define PUEN0_PUEN_DU_DG3			BIT(7)
230 #define PUEN0_PUEN_DU_DG2			BIT(6)
231 #define PUEN0_PUEN_DU_DR7			BIT(5)
232 #define PUEN0_PUEN_DU_DR6			BIT(4)
233 #define PUEN0_PUEN_DU_DR5			BIT(3)
234 #define PUEN0_PUEN_DU_DR4			BIT(2)
235 #define PUEN0_PUEN_DU_DR3			BIT(1)
236 #define PUEN0_PUEN_DU_DR2			BIT(0)
237 
238 #define PUEN1_PUEN_VI1_DATA11			BIT(31)
239 #define PUEN1_PUEN_VI1_DATA10			BIT(30)
240 #define PUEN1_PUEN_VI1_DATA9			BIT(29)
241 #define PUEN1_PUEN_VI1_DATA8			BIT(28)
242 #define PUEN1_PUEN_VI1_DATA7			BIT(27)
243 #define PUEN1_PUEN_VI1_DATA6			BIT(26)
244 #define PUEN1_PUEN_VI1_DATA5			BIT(25)
245 #define PUEN1_PUEN_VI1_DATA4			BIT(24)
246 #define PUEN1_PUEN_VI1_DATA3			BIT(23)
247 #define PUEN1_PUEN_VI1_DATA2			BIT(22)
248 #define PUEN1_PUEN_VI1_DATA1			BIT(21)
249 #define PUEN1_PUEN_VI1_DATA0			BIT(20)
250 #define PUEN1_PUEN_VI1_VSYNC_N			BIT(19)
251 #define PUEN1_PUEN_VI1_HSYNC_N			BIT(18)
252 #define PUEN1_PUEN_VI1_CLKENB			BIT(17)
253 #define PUEN1_PUEN_VI1_CLK			BIT(16)
254 #define PUEN1_PUEN_VI0_FIELD			BIT(15)
255 #define PUEN1_PUEN_VI0_DATA11			BIT(14)
256 #define PUEN1_PUEN_VI0_DATA10			BIT(13)
257 #define PUEN1_PUEN_VI0_DATA9			BIT(12)
258 #define PUEN1_PUEN_VI0_DATA8			BIT(11)
259 #define PUEN1_PUEN_VI0_DATA7			BIT(10)
260 #define PUEN1_PUEN_VI0_DATA6			BIT(9)
261 #define PUEN1_PUEN_VI0_DATA5			BIT(8)
262 #define PUEN1_PUEN_VI0_DATA4			BIT(7)
263 #define PUEN1_PUEN_VI0_DATA3			BIT(6)
264 #define PUEN1_PUEN_VI0_DATA2			BIT(5)
265 #define PUEN1_PUEN_VI0_DATA1			BIT(4)
266 #define PUEN1_PUEN_VI0_DATA0			BIT(3)
267 #define PUEN1_PUEN_VI0_VSYNC_N			BIT(2)
268 #define PUEN1_PUEN_VI0_HSYNC_N			BIT(1)
269 #define PUEN1_PUEN_VI0_CLKENB			BIT(0)
270 
271 #define PUEN2_PUEN_CANFD_CLK			BIT(31)
272 #define PUEN2_PUEN_CANFD1_RX			BIT(30)
273 #define PUEN2_PUEN_CANFD1_TX			BIT(29)
274 #define PUEN2_PUEN_CANFD0_RX			BIT(28)
275 #define PUEN2_PUEN_CANFD0_TX			BIT(27)
276 #define PUEN2_PUEN_AVB0_AVTP_CAPTURE		BIT(26)
277 #define PUEN2_PUEN_AVB0_AVTP_MATCH		BIT(25)
278 #define PUEN2_PUEN_AVB0_LINK			BIT(24)
279 #define PUEN2_PUEN_AVB0_PHY_INT			BIT(23)
280 #define PUEN2_PUEN_AVB0_MAGIC			BIT(22)
281 #define PUEN2_PUEN_AVB0_MDC			BIT(21)
282 #define PUEN2_PUEN_AVB0_MDIO			BIT(20)
283 #define PUEN2_PUEN_AVB0_TXCREFCLK		BIT(19)
284 #define PUEN2_PUEN_AVB0_TD3			BIT(18)
285 #define PUEN2_PUEN_AVB0_TD2			BIT(17)
286 #define PUEN2_PUEN_AVB0_TD1			BIT(16)
287 #define PUEN2_PUEN_AVB0_TD0			BIT(15)
288 #define PUEN2_PUEN_AVB0_TXC			BIT(14)
289 #define PUEN2_PUEN_AVB0_TX_CTL			BIT(13)
290 #define PUEN2_PUEN_AVB0_RD3			BIT(12)
291 #define PUEN2_PUEN_AVB0_RD2			BIT(11)
292 #define PUEN2_PUEN_AVB0_RD1			BIT(10)
293 #define PUEN2_PUEN_AVB0_RD0			BIT(9)
294 #define PUEN2_PUEN_AVB0_RXC			BIT(8)
295 #define PUEN2_PUEN_AVB0_RX_CTL			BIT(7)
296 #define PUEN2_PUEN_SDA2				BIT(6)
297 #define PUEN2_PUEN_SCL2				BIT(5)
298 #define PUEN2_PUEN_SDA1				BIT(4)
299 #define PUEN2_PUEN_SCL1				BIT(3)
300 #define PUEN2_PUEN_SDA0				BIT(2)
301 #define PUEN2_PUEN_SCL0				BIT(1)
302 #define PUEN2_PUEN_VI1_FIELD			BIT(0)
303 
304 #define PUEN3_PUEN_DIGRF_CLKOUT			BIT(16)
305 #define PUEN3_PUEN_DIGRF_CLKIN			BIT(15)
306 #define PUEN3_PUEN_RPC_INT_N			BIT(14)
307 #define PUEN3_PUEN_RPC_WP_N			BIT(13)
308 #define PUEN3_PUEN_RPC_RESET_N			BIT(12)
309 #define PUEN3_PUEN_QSPI1_SSL			BIT(11)
310 #define PUEN3_PUEN_QSPI1_IO3			BIT(10)
311 #define PUEN3_PUEN_QSPI1_IO2			BIT(9)
312 #define PUEN3_PUEN_QSPI1_MISO_IO1		BIT(8)
313 #define PUEN3_PUEN_QSPI1_MOSI_IO0		BIT(7)
314 #define PUEN3_PUEN_QSPI1_SPCLK			BIT(6)
315 #define PUEN3_PUEN_QSPI0_SSL			BIT(5)
316 #define PUEN3_PUEN_QSPI0_IO3			BIT(4)
317 #define PUEN3_PUEN_QSPI0_IO2			BIT(3)
318 #define PUEN3_PUEN_QSPI0_MISO_IO1		BIT(2)
319 #define PUEN3_PUEN_QSPI0_MOSI_IO0		BIT(1)
320 #define PUEN3_PUEN_QSPI0_SPCLK			BIT(0)
321 
322 #define PUD0_PUD_VI0_CLK			BIT(31)
323 #define PUD0_PUD_IRQ0				BIT(26)
324 #define PUD0_PUD_FSCLKST_N			BIT(25)
325 #define PUD0_PUD_PRESETOUT_N			BIT(23)
326 #define PUD0_PUD_DU_EXODDF_DU_ODDF_DISP_CDE	BIT(21)
327 #define PUD0_PUD_DU_EXVSYNC_DU_VSYNC		BIT(20)
328 #define PUD0_PUD_DU_EXHSYNC_DU_HSYNC		BIT(19)
329 #define PUD0_PUD_DU_DOTCLKOUT			BIT(18)
330 #define PUD0_PUD_DU_DB7				BIT(17)
331 #define PUD0_PUD_DU_DB6				BIT(16)
332 #define PUD0_PUD_DU_DB5				BIT(15)
333 #define PUD0_PUD_DU_DB4				BIT(14)
334 #define PUD0_PUD_DU_DB3				BIT(13)
335 #define PUD0_PUD_DU_DB2				BIT(12)
336 #define PUD0_PUD_DU_DG7				BIT(11)
337 #define PUD0_PUD_DU_DG6				BIT(10)
338 #define PUD0_PUD_DU_DG5				BIT(9)
339 #define PUD0_PUD_DU_DG4				BIT(8)
340 #define PUD0_PUD_DU_DG3				BIT(7)
341 #define PUD0_PUD_DU_DG2				BIT(6)
342 #define PUD0_PUD_DU_DR7				BIT(5)
343 #define PUD0_PUD_DU_DR6				BIT(4)
344 #define PUD0_PUD_DU_DR5				BIT(3)
345 #define PUD0_PUD_DU_DR4				BIT(2)
346 #define PUD0_PUD_DU_DR3				BIT(1)
347 #define PUD0_PUD_DU_DR2				BIT(0)
348 
349 #define PUD1_PUD_VI1_DATA11			BIT(31)
350 #define PUD1_PUD_VI1_DATA10			BIT(30)
351 #define PUD1_PUD_VI1_DATA9			BIT(29)
352 #define PUD1_PUD_VI1_DATA8			BIT(28)
353 #define PUD1_PUD_VI1_DATA7			BIT(27)
354 #define PUD1_PUD_VI1_DATA6			BIT(26)
355 #define PUD1_PUD_VI1_DATA5			BIT(25)
356 #define PUD1_PUD_VI1_DATA4			BIT(24)
357 #define PUD1_PUD_VI1_DATA3			BIT(23)
358 #define PUD1_PUD_VI1_DATA2			BIT(22)
359 #define PUD1_PUD_VI1_DATA1			BIT(21)
360 #define PUD1_PUD_VI1_DATA0			BIT(20)
361 #define PUD1_PUD_VI1_VSYNC_N			BIT(19)
362 #define PUD1_PUD_VI1_HSYNC_N			BIT(18)
363 #define PUD1_PUD_VI1_CLKENB			BIT(17)
364 #define PUD1_PUD_VI1_CLK			BIT(16)
365 #define PUD1_PUD_VI0_FIELD			BIT(15)
366 #define PUD1_PUD_VI0_DATA11			BIT(14)
367 #define PUD1_PUD_VI0_DATA10			BIT(13)
368 #define PUD1_PUD_VI0_DATA9			BIT(12)
369 #define PUD1_PUD_VI0_DATA8			BIT(11)
370 #define PUD1_PUD_VI0_DATA7			BIT(10)
371 #define PUD1_PUD_VI0_DATA6			BIT(9)
372 #define PUD1_PUD_VI0_DATA5			BIT(8)
373 #define PUD1_PUD_VI0_DATA4			BIT(7)
374 #define PUD1_PUD_VI0_DATA3			BIT(6)
375 #define PUD1_PUD_VI0_DATA2			BIT(5)
376 #define PUD1_PUD_VI0_DATA1			BIT(4)
377 #define PUD1_PUD_VI0_DATA0			BIT(3)
378 #define PUD1_PUD_VI0_VSYNC_N			BIT(2)
379 #define PUD1_PUD_VI0_HSYNC_N			BIT(1)
380 #define PUD1_PUD_VI0_CLKENB			BIT(0)
381 
382 #define PUD2_PUD_CANFD_CLK			BIT(31)
383 #define PUD2_PUD_CANFD1_RX			BIT(30)
384 #define PUD2_PUD_CANFD1_TX			BIT(29)
385 #define PUD2_PUD_CANFD0_RX			BIT(28)
386 #define PUD2_PUD_CANFD0_TX			BIT(27)
387 #define PUD2_PUD_AVB0_AVTP_CAPTURE		BIT(26)
388 #define PUD2_PUD_AVB0_AVTP_MATCH		BIT(25)
389 #define PUD2_PUD_AVB0_LINK			BIT(24)
390 #define PUD2_PUD_AVB0_PHY_INT			BIT(23)
391 #define PUD2_PUD_AVB0_MAGIC			BIT(22)
392 #define PUD2_PUD_AVB0_MDC			BIT(21)
393 #define PUD2_PUD_AVB0_MDIO			BIT(20)
394 #define PUD2_PUD_AVB0_TXCREFCLK			BIT(19)
395 #define PUD2_PUD_AVB0_TD3			BIT(18)
396 #define PUD2_PUD_AVB0_TD2			BIT(17)
397 #define PUD2_PUD_AVB0_TD1			BIT(16)
398 #define PUD2_PUD_AVB0_TD0			BIT(15)
399 #define PUD2_PUD_AVB0_TXC			BIT(14)
400 #define PUD2_PUD_AVB0_TX_CTL			BIT(13)
401 #define PUD2_PUD_AVB0_RD3			BIT(12)
402 #define PUD2_PUD_AVB0_RD2			BIT(11)
403 #define PUD2_PUD_AVB0_RD1			BIT(10)
404 #define PUD2_PUD_AVB0_RD0			BIT(9)
405 #define PUD2_PUD_AVB0_RXC			BIT(8)
406 #define PUD2_PUD_AVB0_RX_CTL			BIT(7)
407 #define PUD2_PUD_SDA2				BIT(6)
408 #define PUD2_PUD_SCL2				BIT(5)
409 #define PUD2_PUD_SDA1				BIT(4)
410 #define PUD2_PUD_SCL1				BIT(3)
411 #define PUD2_PUD_SDA0				BIT(2)
412 #define PUD2_PUD_SCL0				BIT(1)
413 #define PUD2_PUD_VI1_FIELD			BIT(0)
414 
415 #define PUD3_PUD_DIGRF_CLKOUT			BIT(16)
416 #define PUD3_PUD_DIGRF_CLKIN			BIT(15)
417 #define PUD3_PUD_RPC_INT_N			BIT(14)
418 #define PUD3_PUD_RPC_WP_N			BIT(13)
419 #define PUD3_PUD_RPC_RESET_N			BIT(12)
420 #define PUD3_PUD_QSPI1_SSL			BIT(11)
421 #define PUD3_PUD_QSPI1_IO3			BIT(10)
422 #define PUD3_PUD_QSPI1_IO2			BIT(9)
423 #define PUD3_PUD_QSPI1_MISO_IO1			BIT(8)
424 #define PUD3_PUD_QSPI1_MOSI_IO0			BIT(7)
425 #define PUD3_PUD_QSPI1_SPCLK			BIT(6)
426 #define PUD3_PUD_QSPI0_SSL			BIT(5)
427 #define PUD3_PUD_QSPI0_IO3			BIT(4)
428 #define PUD3_PUD_QSPI0_IO2			BIT(3)
429 #define PUD3_PUD_QSPI0_MISO_IO1			BIT(2)
430 #define PUD3_PUD_QSPI0_MOSI_IO0			BIT(1)
431 #define PUD3_PUD_QSPI0_SPCLK			BIT(0)
432 
433 #define MOD_SEL0_sel_hscif0			BIT(10)
434 #define MOD_SEL0_sel_scif1			BIT(9)
435 #define MOD_SEL0_sel_canfd0			BIT(8)
436 #define MOD_SEL0_sel_pwm4			BIT(7)
437 #define MOD_SEL0_sel_pwm3			BIT(6)
438 #define MOD_SEL0_sel_pwm2			BIT(5)
439 #define MOD_SEL0_sel_pwm1			BIT(4)
440 #define MOD_SEL0_sel_pwm0			BIT(3)
441 #define MOD_SEL0_sel_rfso			BIT(2)
442 #define MOD_SEL0_sel_rsp			BIT(1)
443 #define MOD_SEL0_sel_tmu			BIT(0)
444 
445 /* SCIF3 Registers for Dummy write */
446 #define SCIF3_BASE		(0xE6C50000U)
447 #define SCIF3_SCFCR		(SCIF3_BASE + 0x0018U)
448 #define SCIF3_SCFDR		(SCIF3_BASE + 0x001CU)
449 #define SCFCR_DATA		(0x0000U)
450 
451 /* Realtime module stop control */
452 #define CPG_BASE		(0xE6150000U)
453 #define CPG_MSTPSR0		(CPG_BASE + 0x0030U)
454 #define CPG_RMSTPCR0		(CPG_BASE + 0x0110U)
455 #define RMSTPCR0_RTDMAC		(0x00200000U)
456 
457 /* RT-DMAC Registers */
458 #define RTDMAC_CH		(0U)		/* choose 0 to 15 */
459 
460 #define RTDMAC_BASE		(0xFFC10000U)
461 #define RTDMAC_RDMOR		(RTDMAC_BASE + 0x0060U)
462 #define RTDMAC_RDMCHCLR		(RTDMAC_BASE + 0x0080U)
463 #define RTDMAC_RDMSAR(x)	(RTDMAC_BASE + 0x8000U + (0x80U * (x)))
464 #define RTDMAC_RDMDAR(x)	(RTDMAC_BASE + 0x8004U + (0x80U * (x)))
465 #define RTDMAC_RDMTCR(x)	(RTDMAC_BASE + 0x8008U + (0x80U * (x)))
466 #define RTDMAC_RDMCHCR(x)	(RTDMAC_BASE + 0x800CU + (0x80U * (x)))
467 #define RTDMAC_RDMCHCRB(x)	(RTDMAC_BASE + 0x801CU + (0x80U * (x)))
468 #define RTDMAC_RDMDPBASE(x)	(RTDMAC_BASE + 0x8050U + (0x80U * (x)))
469 #define RTDMAC_DESC_BASE	(RTDMAC_BASE + 0xA000U)
470 #define RTDMAC_DESC_RDMSAR	(RTDMAC_DESC_BASE + 0x0000U)
471 #define RTDMAC_DESC_RDMDAR	(RTDMAC_DESC_BASE + 0x0004U)
472 #define RTDMAC_DESC_RDMTCR	(RTDMAC_DESC_BASE + 0x0008U)
473 
474 #define RDMOR_DME		(0x0001U)	/* DMA Master Enable */
475 #define RDMCHCR_DPM_INFINITE	(0x30000000U)	/* Infinite repeat mode */
476 #define RDMCHCR_RPT_TCR		(0x02000000U)	/* enable to update TCR */
477 #define RDMCHCR_TS_2		(0x00000008U)	/* Word(2byte) units transfer */
478 #define RDMCHCR_RS_AUTO		(0x00000400U)	/* Auto request */
479 #define RDMCHCR_DE		(0x00000001U)	/* DMA Enable */
480 #define RDMCHCRB_DRST		(0x00008000U)	/* Descriptor reset */
481 #define RDMCHCRB_SLM_256	(0x00000080U)	/* once in 256 clock cycle */
482 #define RDMDPBASE_SEL_EXT	(0x00000001U)	/* External memory use */
483 
pfc_reg_write(uint32_t addr,uint32_t data)484 static void pfc_reg_write(uint32_t addr, uint32_t data)
485 {
486 	mmio_write_32(PFC_PMMR, ~data);
487 	mmio_write_32((uintptr_t)addr, data);
488 }
489 
start_rtdma0_descriptor(void)490 static void start_rtdma0_descriptor(void)
491 {
492 	uint32_t reg;
493 
494 	/* Module stop clear */
495 	while ((mmio_read_32(CPG_MSTPSR0) & RMSTPCR0_RTDMAC) != 0U) {
496 		reg = mmio_read_32(CPG_RMSTPCR0);
497 		reg &= ~RMSTPCR0_RTDMAC;
498 		cpg_write(CPG_RMSTPCR0, reg);
499 	}
500 
501 	/* Initialize ch0, Reset Descriptor */
502 	mmio_write_32(RTDMAC_RDMCHCLR, BIT(RTDMAC_CH));
503 	mmio_write_32(RTDMAC_RDMCHCRB(RTDMAC_CH), RDMCHCRB_DRST);
504 
505 	/* Enable DMA */
506 	mmio_write_16(RTDMAC_RDMOR, RDMOR_DME);
507 
508 	/* Set first transfer */
509 	mmio_write_32(RTDMAC_RDMSAR(RTDMAC_CH), RCAR_PRR);
510 	mmio_write_32(RTDMAC_RDMDAR(RTDMAC_CH), SCIF3_SCFDR);
511 	mmio_write_32(RTDMAC_RDMTCR(RTDMAC_CH), 0x00000001U);
512 
513 	/* Set descriptor */
514 	mmio_write_32(RTDMAC_DESC_RDMSAR, 0x00000000U);
515 	mmio_write_32(RTDMAC_DESC_RDMDAR, 0x00000000U);
516 	mmio_write_32(RTDMAC_DESC_RDMTCR, 0x00200000U);
517 	mmio_write_32(RTDMAC_RDMCHCRB(RTDMAC_CH), RDMCHCRB_SLM_256);
518 	mmio_write_32(RTDMAC_RDMDPBASE(RTDMAC_CH), RTDMAC_DESC_BASE
519 						 | RDMDPBASE_SEL_EXT);
520 
521 	/* Set transfer parameter, Start transfer */
522 	mmio_write_32(RTDMAC_RDMCHCR(RTDMAC_CH), RDMCHCR_DPM_INFINITE
523 					       | RDMCHCR_RPT_TCR
524 					       | RDMCHCR_TS_2
525 					       | RDMCHCR_RS_AUTO
526 					       | RDMCHCR_DE);
527 }
528 
pfc_init_v3m(void)529 void pfc_init_v3m(void)
530 {
531 	/* Work around for PFC eratta */
532 	start_rtdma0_descriptor();
533 
534 	// pin function
535 	// md[4:1]!=0000
536 	/* initialize GPIO/perihperal function select */
537 
538 	pfc_reg_write(PFC_GPSR0, 0x00000000);
539 
540 	pfc_reg_write(PFC_GPSR1, GPSR1_CANFD_CLK);
541 
542 	pfc_reg_write(PFC_GPSR2, 0x00000000);
543 
544 	pfc_reg_write(PFC_GPSR3, 0x00000000);
545 
546 	pfc_reg_write(PFC_GPSR4, GPSR4_SDA2
547 				   | GPSR4_SCL2);
548 
549 	pfc_reg_write(PFC_GPSR5, GPSR5_QSPI1_SSL
550 				   | GPSR5_QSPI1_IO3
551 				   | GPSR5_QSPI1_IO2
552 				   | GPSR5_QSPI1_MISO_IO1
553 				   | GPSR5_QSPI1_MOSI_IO0
554 				   | GPSR5_QSPI1_SPCLK
555 				   | GPSR5_QSPI0_SSL
556 				   | GPSR5_QSPI0_IO3
557 				   | GPSR5_QSPI0_IO2
558 				   | GPSR5_QSPI0_MISO_IO1
559 				   | GPSR5_QSPI0_MOSI_IO0
560 				   | GPSR5_QSPI0_SPCLK);
561 
562 	/* initialize peripheral function select */
563 	pfc_reg_write(PFC_IPSR0, IPSR_28_FUNC(0)
564 				   | IPSR_24_FUNC(0)
565 				   | IPSR_20_FUNC(0)
566 				   | IPSR_16_FUNC(0)
567 				   | IPSR_12_FUNC(0)
568 				   | IPSR_8_FUNC(0)
569 				   | IPSR_4_FUNC(0)
570 				   | IPSR_0_FUNC(0));
571 
572 	pfc_reg_write(PFC_IPSR1, IPSR_28_FUNC(0)
573 				   | IPSR_24_FUNC(0)
574 				   | IPSR_20_FUNC(0)
575 				   | IPSR_16_FUNC(0)
576 				   | IPSR_12_FUNC(0)
577 				   | IPSR_8_FUNC(0)
578 				   | IPSR_4_FUNC(0)
579 				   | IPSR_0_FUNC(0));
580 
581 	pfc_reg_write(PFC_IPSR2, IPSR_28_FUNC(0)
582 				   | IPSR_24_FUNC(0)
583 				   | IPSR_20_FUNC(0)
584 				   | IPSR_16_FUNC(0)
585 				   | IPSR_12_FUNC(0)
586 				   | IPSR_8_FUNC(0)
587 				   | IPSR_4_FUNC(0)
588 				   | IPSR_0_FUNC(0));
589 
590 	pfc_reg_write(PFC_IPSR3, IPSR_28_FUNC(0)
591 				   | IPSR_24_FUNC(0)
592 				   | IPSR_20_FUNC(0)
593 				   | IPSR_16_FUNC(0)
594 				   | IPSR_12_FUNC(0)
595 				   | IPSR_8_FUNC(0)
596 				   | IPSR_4_FUNC(0)
597 				   | IPSR_0_FUNC(0));
598 
599 	pfc_reg_write(PFC_IPSR4, IPSR_28_FUNC(0)
600 				   | IPSR_24_FUNC(0)
601 				   | IPSR_20_FUNC(0)
602 				   | IPSR_16_FUNC(0)
603 				   | IPSR_12_FUNC(0)
604 				   | IPSR_8_FUNC(0)
605 				   | IPSR_4_FUNC(0)
606 				   | IPSR_0_FUNC(0));
607 
608 	pfc_reg_write(PFC_IPSR5, IPSR_28_FUNC(0)
609 				   | IPSR_24_FUNC(0)
610 				   | IPSR_20_FUNC(0)
611 				   | IPSR_16_FUNC(0)
612 				   | IPSR_12_FUNC(0)
613 				   | IPSR_8_FUNC(0)
614 				   | IPSR_4_FUNC(0)
615 				   | IPSR_0_FUNC(0));
616 
617 	pfc_reg_write(PFC_IPSR6, IPSR_28_FUNC(0)
618 				   | IPSR_24_FUNC(0)
619 				   | IPSR_20_FUNC(0)
620 				   | IPSR_16_FUNC(0)
621 				   | IPSR_12_FUNC(0)
622 				   | IPSR_8_FUNC(0)
623 				   | IPSR_4_FUNC(0)
624 				   | IPSR_0_FUNC(0));
625 
626 	pfc_reg_write(PFC_IPSR7, IPSR_28_FUNC(0)
627 				   | IPSR_24_FUNC(4)
628 				   | IPSR_20_FUNC(4)
629 				   | IPSR_16_FUNC(4)
630 				   | IPSR_12_FUNC(4)
631 				   | IPSR_8_FUNC(0)
632 				   | IPSR_4_FUNC(0)
633 				   | IPSR_0_FUNC(0));
634 
635 	pfc_reg_write(PFC_IPSR8, IPSR_28_FUNC(0)
636 				   | IPSR_24_FUNC(0)
637 				   | IPSR_20_FUNC(0)
638 				   | IPSR_16_FUNC(4)
639 				   | IPSR_12_FUNC(0)
640 				   | IPSR_8_FUNC(0)
641 				   | IPSR_4_FUNC(0)
642 				   | IPSR_0_FUNC(0));
643 
644 	/* initialize POC Control */
645 
646 	pfc_reg_write(PFC_POCCTRL0, IOCTRL30_POC_VI0_DATA5
647 				   | IOCTRL30_POC_VI0_DATA4
648 				   | IOCTRL30_POC_VI0_DATA3
649 				   | IOCTRL30_POC_VI0_DATA2
650 				   | IOCTRL30_POC_VI0_DATA1
651 				   | IOCTRL30_POC_VI0_DATA0
652 				   | IOCTRL30_POC_VI0_VSYNC_N
653 				   | IOCTRL30_POC_VI0_HSYNC_N
654 				   | IOCTRL30_POC_VI0_CLKENB
655 				   | IOCTRL30_POC_VI0_CLK
656 				   | IOCTRL30_POC_DU_EXODDF_DU_ODDF_DISP_CDE
657 				   | IOCTRL30_POC_DU_EXVSYNC_DU_VSYNC
658 				   | IOCTRL30_POC_DU_EXHSYNC_DU_HSYNC
659 				   | IOCTRL30_POC_DU_DOTCLKOUT
660 				   | IOCTRL30_POC_DU_DB7
661 				   | IOCTRL30_POC_DU_DB6
662 				   | IOCTRL30_POC_DU_DB5
663 				   | IOCTRL30_POC_DU_DB4
664 				   | IOCTRL30_POC_DU_DB3
665 				   | IOCTRL30_POC_DU_DB2
666 				   | IOCTRL30_POC_DU_DG7
667 				   | IOCTRL30_POC_DU_DG6
668 				   | IOCTRL30_POC_DU_DG5
669 				   | IOCTRL30_POC_DU_DG4
670 				   | IOCTRL30_POC_DU_DG3
671 				   | IOCTRL30_POC_DU_DG2
672 				   | IOCTRL30_POC_DU_DR7
673 				   | IOCTRL30_POC_DU_DR6
674 				   | IOCTRL30_POC_DU_DR5
675 				   | IOCTRL30_POC_DU_DR4
676 				   | IOCTRL30_POC_DU_DR3
677 				   | IOCTRL30_POC_DU_DR2);
678 
679 	pfc_reg_write(PFC_IOCTRL31, IOCTRL31_POC_DUMMY_31
680 				   | IOCTRL31_POC_DUMMY_30
681 				   | IOCTRL31_POC_DUMMY_29
682 				   | IOCTRL31_POC_DUMMY_28
683 				   | IOCTRL31_POC_DUMMY_27
684 				   | IOCTRL31_POC_DUMMY_26
685 				   | IOCTRL31_POC_DUMMY_25
686 				   | IOCTRL31_POC_DUMMY_24
687 				   | IOCTRL31_POC_VI1_FIELD
688 				   | IOCTRL31_POC_VI1_DATA11
689 				   | IOCTRL31_POC_VI1_DATA10
690 				   | IOCTRL31_POC_VI1_DATA9
691 				   | IOCTRL31_POC_VI1_DATA8
692 				   | IOCTRL31_POC_VI1_DATA7
693 				   | IOCTRL31_POC_VI1_DATA6
694 				   | IOCTRL31_POC_VI1_DATA5
695 				   | IOCTRL31_POC_VI1_DATA4
696 				   | IOCTRL31_POC_VI1_DATA3
697 				   | IOCTRL31_POC_VI1_DATA2
698 				   | IOCTRL31_POC_VI1_DATA1
699 				   | IOCTRL31_POC_VI1_DATA0
700 				   | IOCTRL31_POC_VI1_VSYNC_N
701 				   | IOCTRL31_POC_VI1_HSYNC_N
702 				   | IOCTRL31_POC_VI1_CLKENB
703 				   | IOCTRL31_POC_VI1_CLK
704 				   | IOCTRL31_POC_VI0_FIELD
705 				   | IOCTRL31_POC_VI0_DATA11
706 				   | IOCTRL31_POC_VI0_DATA10
707 				   | IOCTRL31_POC_VI0_DATA9
708 				   | IOCTRL31_POC_VI0_DATA8
709 				   | IOCTRL31_POC_VI0_DATA7
710 				   | IOCTRL31_POC_VI0_DATA6);
711 
712 	pfc_reg_write(PFC_POCCTRL2, 0x00000000);
713 
714 	pfc_reg_write(PFC_TDSELCTRL0, 0x00000000);
715 
716 	/* initialize Pull enable */
717 	pfc_reg_write(PFC_PUEN0, PUEN0_PUEN_VI0_CLK
718 				   | PUEN0_PUEN_TDI
719 				   | PUEN0_PUEN_TMS
720 				   | PUEN0_PUEN_TCK
721 				   | PUEN0_PUEN_TRST_N
722 				   | PUEN0_PUEN_IRQ0
723 				   | PUEN0_PUEN_FSCLKST_N
724 				   | PUEN0_PUEN_DU_EXHSYNC_DU_HSYNC
725 				   | PUEN0_PUEN_DU_DOTCLKOUT
726 				   | PUEN0_PUEN_DU_DB7
727 				   | PUEN0_PUEN_DU_DB6
728 				   | PUEN0_PUEN_DU_DB5
729 				   | PUEN0_PUEN_DU_DB4
730 				   | PUEN0_PUEN_DU_DB3
731 				   | PUEN0_PUEN_DU_DB2
732 				   | PUEN0_PUEN_DU_DG7
733 				   | PUEN0_PUEN_DU_DG6
734 				   | PUEN0_PUEN_DU_DG5
735 				   | PUEN0_PUEN_DU_DG4
736 				   | PUEN0_PUEN_DU_DG3
737 				   | PUEN0_PUEN_DU_DG2
738 				   | PUEN0_PUEN_DU_DR7
739 				   | PUEN0_PUEN_DU_DR6
740 				   | PUEN0_PUEN_DU_DR5
741 				   | PUEN0_PUEN_DU_DR4
742 				   | PUEN0_PUEN_DU_DR3
743 				   | PUEN0_PUEN_DU_DR2);
744 
745 	pfc_reg_write(PFC_PUEN1, PUEN1_PUEN_VI1_DATA11
746 				   | PUEN1_PUEN_VI1_DATA10
747 				   | PUEN1_PUEN_VI1_DATA9
748 				   | PUEN1_PUEN_VI1_DATA8
749 				   | PUEN1_PUEN_VI1_DATA7
750 				   | PUEN1_PUEN_VI1_DATA6
751 				   | PUEN1_PUEN_VI1_DATA5
752 				   | PUEN1_PUEN_VI1_DATA4
753 				   | PUEN1_PUEN_VI1_DATA3
754 				   | PUEN1_PUEN_VI1_DATA2
755 				   | PUEN1_PUEN_VI1_DATA1
756 				   | PUEN1_PUEN_VI1_DATA0
757 				   | PUEN1_PUEN_VI1_VSYNC_N
758 				   | PUEN1_PUEN_VI1_HSYNC_N
759 				   | PUEN1_PUEN_VI1_CLKENB
760 				   | PUEN1_PUEN_VI1_CLK
761 				   | PUEN1_PUEN_VI0_DATA11
762 				   | PUEN1_PUEN_VI0_DATA10
763 				   | PUEN1_PUEN_VI0_DATA9
764 				   | PUEN1_PUEN_VI0_DATA8
765 				   | PUEN1_PUEN_VI0_DATA7
766 				   | PUEN1_PUEN_VI0_DATA6
767 				   | PUEN1_PUEN_VI0_DATA5
768 				   | PUEN1_PUEN_VI0_DATA4
769 				   | PUEN1_PUEN_VI0_DATA3
770 				   | PUEN1_PUEN_VI0_DATA2
771 				   | PUEN1_PUEN_VI0_DATA1);
772 
773 	pfc_reg_write(PFC_PUEN2, PUEN2_PUEN_CANFD_CLK
774 				   | PUEN2_PUEN_CANFD1_RX
775 				   | PUEN2_PUEN_CANFD1_TX
776 				   | PUEN2_PUEN_CANFD0_RX
777 				   | PUEN2_PUEN_CANFD0_TX
778 				   | PUEN2_PUEN_AVB0_AVTP_CAPTURE
779 				   | PUEN2_PUEN_AVB0_AVTP_MATCH
780 				   | PUEN2_PUEN_AVB0_LINK
781 				   | PUEN2_PUEN_AVB0_PHY_INT
782 				   | PUEN2_PUEN_AVB0_MAGIC
783 				   | PUEN2_PUEN_AVB0_TXCREFCLK
784 				   | PUEN2_PUEN_AVB0_TD3
785 				   | PUEN2_PUEN_AVB0_TD2
786 				   | PUEN2_PUEN_AVB0_TD1
787 				   | PUEN2_PUEN_AVB0_TD0
788 				   | PUEN2_PUEN_AVB0_TXC
789 				   | PUEN2_PUEN_AVB0_TX_CTL
790 				   | PUEN2_PUEN_AVB0_RD3
791 				   | PUEN2_PUEN_AVB0_RD2
792 				   | PUEN2_PUEN_AVB0_RD1
793 				   | PUEN2_PUEN_AVB0_RD0
794 				   | PUEN2_PUEN_AVB0_RXC
795 				   | PUEN2_PUEN_AVB0_RX_CTL
796 				   | PUEN2_PUEN_VI1_FIELD);
797 
798 	pfc_reg_write(PFC_PUEN3, PUEN3_PUEN_DIGRF_CLKOUT
799 				   | PUEN3_PUEN_DIGRF_CLKIN);
800 
801 	/* initialize PUD Control */
802 	pfc_reg_write(PFC_PUD0, PUD0_PUD_VI0_CLK
803 				   | PUD0_PUD_IRQ0
804 				   | PUD0_PUD_FSCLKST_N
805 				   | PUD0_PUD_DU_EXODDF_DU_ODDF_DISP_CDE
806 				   | PUD0_PUD_DU_EXVSYNC_DU_VSYNC
807 				   | PUD0_PUD_DU_EXHSYNC_DU_HSYNC
808 				   | PUD0_PUD_DU_DOTCLKOUT
809 				   | PUD0_PUD_DU_DB7
810 				   | PUD0_PUD_DU_DB6
811 				   | PUD0_PUD_DU_DB5
812 				   | PUD0_PUD_DU_DB4
813 				   | PUD0_PUD_DU_DB3
814 				   | PUD0_PUD_DU_DB2
815 				   | PUD0_PUD_DU_DG7
816 				   | PUD0_PUD_DU_DG6
817 				   | PUD0_PUD_DU_DG5
818 				   | PUD0_PUD_DU_DG4
819 				   | PUD0_PUD_DU_DG3
820 				   | PUD0_PUD_DU_DG2
821 				   | PUD0_PUD_DU_DR7
822 				   | PUD0_PUD_DU_DR6
823 				   | PUD0_PUD_DU_DR5
824 				   | PUD0_PUD_DU_DR4
825 				   | PUD0_PUD_DU_DR3
826 				   | PUD0_PUD_DU_DR2);
827 
828 	pfc_reg_write(PFC_PUD1, PUD1_PUD_VI1_DATA11
829 				   | PUD1_PUD_VI1_DATA10
830 				   | PUD1_PUD_VI1_DATA9
831 				   | PUD1_PUD_VI1_DATA8
832 				   | PUD1_PUD_VI1_DATA7
833 				   | PUD1_PUD_VI1_DATA6
834 				   | PUD1_PUD_VI1_DATA5
835 				   | PUD1_PUD_VI1_DATA4
836 				   | PUD1_PUD_VI1_DATA3
837 				   | PUD1_PUD_VI1_DATA2
838 				   | PUD1_PUD_VI1_DATA1
839 				   | PUD1_PUD_VI1_DATA0
840 				   | PUD1_PUD_VI1_VSYNC_N
841 				   | PUD1_PUD_VI1_HSYNC_N
842 				   | PUD1_PUD_VI1_CLKENB
843 				   | PUD1_PUD_VI1_CLK
844 				   | PUD1_PUD_VI0_DATA11
845 				   | PUD1_PUD_VI0_DATA10
846 				   | PUD1_PUD_VI0_DATA9
847 				   | PUD1_PUD_VI0_DATA8
848 				   | PUD1_PUD_VI0_DATA7
849 				   | PUD1_PUD_VI0_DATA6
850 				   | PUD1_PUD_VI0_DATA5
851 				   | PUD1_PUD_VI0_DATA4
852 				   | PUD1_PUD_VI0_DATA3
853 				   | PUD1_PUD_VI0_DATA2
854 				   | PUD1_PUD_VI0_DATA1
855 				   | PUD1_PUD_VI0_DATA0
856 				   | PUD1_PUD_VI0_VSYNC_N
857 				   | PUD1_PUD_VI0_HSYNC_N
858 				   | PUD1_PUD_VI0_CLKENB);
859 
860 	pfc_reg_write(PFC_PUD2, PUD2_PUD_CANFD_CLK
861 				   | PUD2_PUD_CANFD1_RX
862 				   | PUD2_PUD_CANFD1_TX
863 				   | PUD2_PUD_CANFD0_RX
864 				   | PUD2_PUD_CANFD0_TX
865 				   | PUD2_PUD_AVB0_AVTP_CAPTURE
866 				   | PUD2_PUD_VI1_FIELD);
867 
868 	pfc_reg_write(PFC_PUD3, PUD3_PUD_DIGRF_CLKOUT
869 				   | PUD3_PUD_DIGRF_CLKIN);
870 
871 	/* initialize Module Select */
872 	pfc_reg_write(PFC_MOD_SEL0, 0x00000000);
873 
874 	// gpio
875 	/* initialize positive/negative logic select */
876 	mmio_write_32(GPIO_POSNEG0, 0x00000000U);
877 	mmio_write_32(GPIO_POSNEG1, 0x00000000U);
878 	mmio_write_32(GPIO_POSNEG2, 0x00000000U);
879 	mmio_write_32(GPIO_POSNEG3, 0x00000000U);
880 	mmio_write_32(GPIO_POSNEG4, 0x00000000U);
881 	mmio_write_32(GPIO_POSNEG5, 0x00000000U);
882 
883 	/* initialize general IO/interrupt switching */
884 	mmio_write_32(GPIO_IOINTSEL0, 0x00000000U);
885 	mmio_write_32(GPIO_IOINTSEL1, 0x00000000U);
886 	mmio_write_32(GPIO_IOINTSEL2, 0x00000000U);
887 	mmio_write_32(GPIO_IOINTSEL3, 0x00000000U);
888 	mmio_write_32(GPIO_IOINTSEL4, 0x00000000U);
889 	mmio_write_32(GPIO_IOINTSEL5, 0x00000000U);
890 
891 	/* initialize general output register */
892 	mmio_write_32(GPIO_OUTDT0, 0x00000000U);
893 	mmio_write_32(GPIO_OUTDT1, 0x00000000U);
894 	mmio_write_32(GPIO_OUTDT2, 0x00000000U);
895 	mmio_write_32(GPIO_OUTDT3, 0x00000000U);
896 	mmio_write_32(GPIO_OUTDT4, 0x00000000U);
897 	mmio_write_32(GPIO_OUTDT5, 0x00000000U);
898 
899 	/* initialize general input/output switching */
900 	mmio_write_32(GPIO_INOUTSEL0, 0x00000000U);
901 	mmio_write_32(GPIO_INOUTSEL1, 0x00000000U);
902 	mmio_write_32(GPIO_INOUTSEL2, 0x00000000U);
903 	mmio_write_32(GPIO_INOUTSEL3, 0x00000000U);
904 	mmio_write_32(GPIO_INOUTSEL4, 0x00000000U);
905 	mmio_write_32(GPIO_INOUTSEL5, 0x00000000U);
906 }
907