]> git.ipfire.org Git - people/ms/u-boot.git/blob - arch/arm/mach-tegra/tegra210/xusb-padctl.c
ARM: Tegra210: Add SoC code/include files for T210
[people/ms/u-boot.git] / arch / arm / mach-tegra / tegra210 / xusb-padctl.c
1 /*
2 * Copyright (c) 2014-2015, NVIDIA CORPORATION. All rights reserved.
3 *
4 * SPDX-License-Identifier: GPL-2.0
5 */
6
7 #define pr_fmt(fmt) "tegra-xusb-padctl: " fmt
8
9 #include <common.h>
10 #include <errno.h>
11 #include <fdtdec.h>
12 #include <malloc.h>
13
14 #include <asm/io.h>
15
16 #include <asm/arch/clock.h>
17 #include <asm/arch-tegra/xusb-padctl.h>
18
19 #include <dt-bindings/pinctrl/pinctrl-tegra-xusb.h>
20
21 struct tegra_xusb_phy_ops {
22 int (*prepare)(struct tegra_xusb_phy *phy);
23 int (*enable)(struct tegra_xusb_phy *phy);
24 int (*disable)(struct tegra_xusb_phy *phy);
25 int (*unprepare)(struct tegra_xusb_phy *phy);
26 };
27
28 struct tegra_xusb_phy {
29 const struct tegra_xusb_phy_ops *ops;
30
31 struct tegra_xusb_padctl *padctl;
32 };
33
34 struct tegra_xusb_padctl {
35 struct fdt_resource regs;
36
37 unsigned int enable;
38
39 struct tegra_xusb_phy phys[2];
40 };
41
42 static inline u32 padctl_readl(struct tegra_xusb_padctl *padctl,
43 unsigned long offset)
44 {
45 u32 value = readl(padctl->regs.start + offset);
46 debug("padctl: %08lx > %08x\n", offset, value);
47 return value;
48 }
49
50 static inline void padctl_writel(struct tegra_xusb_padctl *padctl,
51 u32 value, unsigned long offset)
52 {
53 debug("padctl: %08lx < %08x\n", offset, value);
54 writel(value, padctl->regs.start + offset);
55 }
56
57 #define XUSB_PADCTL_ELPG_PROGRAM 0x024
58 #define XUSB_PADCTL_ELPG_PROGRAM_AUX_MUX_LP0_VCORE_DOWN (1 << 31)
59 #define XUSB_PADCTL_ELPG_PROGRAM_AUX_MUX_LP0_CLAMP_EN_EARLY (1 << 30)
60 #define XUSB_PADCTL_ELPG_PROGRAM_AUX_MUX_LP0_CLAMP_EN (1 << 29)
61
62 static int tegra_xusb_padctl_enable(struct tegra_xusb_padctl *padctl)
63 {
64 u32 value;
65
66 if (padctl->enable++ > 0)
67 return 0;
68
69 value = padctl_readl(padctl, XUSB_PADCTL_ELPG_PROGRAM);
70 value &= ~XUSB_PADCTL_ELPG_PROGRAM_AUX_MUX_LP0_CLAMP_EN;
71 padctl_writel(padctl, value, XUSB_PADCTL_ELPG_PROGRAM);
72
73 udelay(100);
74
75 value = padctl_readl(padctl, XUSB_PADCTL_ELPG_PROGRAM);
76 value &= ~XUSB_PADCTL_ELPG_PROGRAM_AUX_MUX_LP0_CLAMP_EN_EARLY;
77 padctl_writel(padctl, value, XUSB_PADCTL_ELPG_PROGRAM);
78
79 udelay(100);
80
81 value = padctl_readl(padctl, XUSB_PADCTL_ELPG_PROGRAM);
82 value &= ~XUSB_PADCTL_ELPG_PROGRAM_AUX_MUX_LP0_VCORE_DOWN;
83 padctl_writel(padctl, value, XUSB_PADCTL_ELPG_PROGRAM);
84
85 return 0;
86 }
87
88 static int tegra_xusb_padctl_disable(struct tegra_xusb_padctl *padctl)
89 {
90 u32 value;
91
92 if (padctl->enable == 0) {
93 error("unbalanced enable/disable");
94 return 0;
95 }
96
97 if (--padctl->enable > 0)
98 return 0;
99
100 value = padctl_readl(padctl, XUSB_PADCTL_ELPG_PROGRAM);
101 value |= XUSB_PADCTL_ELPG_PROGRAM_AUX_MUX_LP0_VCORE_DOWN;
102 padctl_writel(padctl, value, XUSB_PADCTL_ELPG_PROGRAM);
103
104 udelay(100);
105
106 value = padctl_readl(padctl, XUSB_PADCTL_ELPG_PROGRAM);
107 value |= XUSB_PADCTL_ELPG_PROGRAM_AUX_MUX_LP0_CLAMP_EN_EARLY;
108 padctl_writel(padctl, value, XUSB_PADCTL_ELPG_PROGRAM);
109
110 udelay(100);
111
112 value = padctl_readl(padctl, XUSB_PADCTL_ELPG_PROGRAM);
113 value |= XUSB_PADCTL_ELPG_PROGRAM_AUX_MUX_LP0_CLAMP_EN;
114 padctl_writel(padctl, value, XUSB_PADCTL_ELPG_PROGRAM);
115
116 return 0;
117 }
118
119 static int phy_prepare(struct tegra_xusb_phy *phy)
120 {
121 int err;
122
123 err = tegra_xusb_padctl_enable(phy->padctl);
124 if (err < 0)
125 return err;
126
127 reset_set_enable(PERIPH_ID_PEX_USB_UPHY, 0);
128
129 return 0;
130 }
131
132 static int phy_unprepare(struct tegra_xusb_phy *phy)
133 {
134 reset_set_enable(PERIPH_ID_PEX_USB_UPHY, 1);
135
136 return tegra_xusb_padctl_disable(phy->padctl);
137 }
138
139 #define XUSB_PADCTL_UPHY_PLL_P0_CTL1 0x360
140 #define XUSB_PADCTL_UPHY_PLL_P0_CTL1_FREQ_NDIV_MASK (0xff << 20)
141 #define XUSB_PADCTL_UPHY_PLL_P0_CTL1_FREQ_NDIV(x) (((x) & 0xff) << 20)
142 #define XUSB_PADCTL_UPHY_PLL_P0_CTL1_FREQ_MDIV_MASK (0x3 << 16)
143 #define XUSB_PADCTL_UPHY_PLL_P0_CTL1_LOCKDET_STATUS (1 << 15)
144 #define XUSB_PADCTL_UPHY_PLL_P0_CTL1_PWR_OVRD (1 << 4)
145 #define XUSB_PADCTL_UPHY_PLL_P0_CTL1_ENABLE (1 << 3)
146 #define XUSB_PADCTL_UPHY_PLL_P0_CTL1_SLEEP_MASK (0x3 << 1)
147 #define XUSB_PADCTL_UPHY_PLL_P0_CTL1_SLEEP(x) (((x) & 0x3) << 1)
148 #define XUSB_PADCTL_UPHY_PLL_P0_CTL1_IDDQ (1 << 0)
149
150 #define XUSB_PADCTL_UPHY_PLL_P0_CTL2 0x364
151 #define XUSB_PADCTL_UPHY_PLL_P0_CTL2_CAL_CTRL_MASK (0xffffff << 4)
152 #define XUSB_PADCTL_UPHY_PLL_P0_CTL2_CAL_CTRL(x) (((x) & 0xffffff) << 4)
153 #define XUSB_PADCTL_UPHY_PLL_P0_CTL2_CAL_OVRD (1 << 2)
154 #define XUSB_PADCTL_UPHY_PLL_P0_CTL2_CAL_DONE (1 << 1)
155 #define XUSB_PADCTL_UPHY_PLL_P0_CTL2_CAL_EN (1 << 0)
156
157 #define XUSB_PADCTL_UPHY_PLL_P0_CTL4 0x36c
158 #define XUSB_PADCTL_UPHY_PLL_P0_CTL4_TXCLKREF_EN (1 << 15)
159 #define XUSB_PADCTL_UPHY_PLL_P0_CTL4_TXCLKREF_SEL_MASK (0x3 << 12)
160 #define XUSB_PADCTL_UPHY_PLL_P0_CTL4_TXCLKREF_SEL(x) (((x) & 0x3) << 12)
161 #define XUSB_PADCTL_UPHY_PLL_P0_CTL4_REFCLKBUF_EN (1 << 8)
162 #define XUSB_PADCTL_UPHY_PLL_P0_CTL4_REFCLK_SEL_MASK (0xf << 4)
163
164 #define XUSB_PADCTL_UPHY_PLL_P0_CTL5 0x370
165 #define XUSB_PADCTL_UPHY_PLL_P0_CTL5_DCO_CTRL_MASK (0xff << 16)
166 #define XUSB_PADCTL_UPHY_PLL_P0_CTL5_DCO_CTRL(x) (((x) & 0xff) << 16)
167
168 #define XUSB_PADCTL_UPHY_PLL_P0_CTL8 0x37c
169 #define XUSB_PADCTL_UPHY_PLL_P0_CTL8_RCAL_DONE (1 << 31)
170 #define XUSB_PADCTL_UPHY_PLL_P0_CTL8_RCAL_OVRD (1 << 15)
171 #define XUSB_PADCTL_UPHY_PLL_P0_CTL8_RCAL_CLK_EN (1 << 13)
172 #define XUSB_PADCTL_UPHY_PLL_P0_CTL8_RCAL_EN (1 << 12)
173
174 #define CLK_RST_XUSBIO_PLL_CFG0 0x51c
175 #define CLK_RST_XUSBIO_PLL_CFG0_SEQ_ENABLE (1 << 24)
176 #define CLK_RST_XUSBIO_PLL_CFG0_PADPLL_SLEEP_IDDQ (1 << 13)
177 #define CLK_RST_XUSBIO_PLL_CFG0_PADPLL_USE_LOCKDET (1 << 6)
178 #define CLK_RST_XUSBIO_PLL_CFG0_CLK_ENABLE_SWCTL (1 << 2)
179 #define CLK_RST_XUSBIO_PLL_CFG0_PADPLL_RESET_SWCTL (1 << 0)
180
181 static int pcie_phy_enable(struct tegra_xusb_phy *phy)
182 {
183 struct tegra_xusb_padctl *padctl = phy->padctl;
184 unsigned long start;
185 u32 value;
186
187 debug("> %s(phy=%p)\n", __func__, phy);
188
189 value = padctl_readl(padctl, XUSB_PADCTL_UPHY_PLL_P0_CTL2);
190 value &= ~XUSB_PADCTL_UPHY_PLL_P0_CTL2_CAL_CTRL_MASK;
191 value |= XUSB_PADCTL_UPHY_PLL_P0_CTL2_CAL_CTRL(0x136);
192 padctl_writel(padctl, value, XUSB_PADCTL_UPHY_PLL_P0_CTL2);
193
194 value = padctl_readl(padctl, XUSB_PADCTL_UPHY_PLL_P0_CTL5);
195 value &= ~XUSB_PADCTL_UPHY_PLL_P0_CTL5_DCO_CTRL_MASK;
196 value |= XUSB_PADCTL_UPHY_PLL_P0_CTL5_DCO_CTRL(0x2a);
197 padctl_writel(padctl, value, XUSB_PADCTL_UPHY_PLL_P0_CTL5);
198
199 value = padctl_readl(padctl, XUSB_PADCTL_UPHY_PLL_P0_CTL1);
200 value |= XUSB_PADCTL_UPHY_PLL_P0_CTL1_PWR_OVRD;
201 padctl_writel(padctl, value, XUSB_PADCTL_UPHY_PLL_P0_CTL1);
202
203 value = padctl_readl(padctl, XUSB_PADCTL_UPHY_PLL_P0_CTL2);
204 value |= XUSB_PADCTL_UPHY_PLL_P0_CTL2_CAL_OVRD;
205 padctl_writel(padctl, value, XUSB_PADCTL_UPHY_PLL_P0_CTL2);
206
207 value = padctl_readl(padctl, XUSB_PADCTL_UPHY_PLL_P0_CTL8);
208 value |= XUSB_PADCTL_UPHY_PLL_P0_CTL8_RCAL_OVRD;
209 padctl_writel(padctl, value, XUSB_PADCTL_UPHY_PLL_P0_CTL8);
210
211 value = padctl_readl(padctl, XUSB_PADCTL_UPHY_PLL_P0_CTL4);
212 value &= ~XUSB_PADCTL_UPHY_PLL_P0_CTL4_TXCLKREF_SEL_MASK;
213 value &= ~XUSB_PADCTL_UPHY_PLL_P0_CTL4_REFCLK_SEL_MASK;
214 value |= XUSB_PADCTL_UPHY_PLL_P0_CTL4_TXCLKREF_SEL(2);
215 value |= XUSB_PADCTL_UPHY_PLL_P0_CTL4_TXCLKREF_EN;
216 padctl_writel(padctl, value, XUSB_PADCTL_UPHY_PLL_P0_CTL4);
217
218 value = padctl_readl(padctl, XUSB_PADCTL_UPHY_PLL_P0_CTL1);
219 value &= ~XUSB_PADCTL_UPHY_PLL_P0_CTL1_FREQ_MDIV_MASK;
220 value &= ~XUSB_PADCTL_UPHY_PLL_P0_CTL1_FREQ_NDIV_MASK;
221 value |= XUSB_PADCTL_UPHY_PLL_P0_CTL1_FREQ_NDIV(25);
222 padctl_writel(padctl, value, XUSB_PADCTL_UPHY_PLL_P0_CTL1);
223
224 value = padctl_readl(padctl, XUSB_PADCTL_UPHY_PLL_P0_CTL1);
225 value &= ~XUSB_PADCTL_UPHY_PLL_P0_CTL1_IDDQ;
226 padctl_writel(padctl, value, XUSB_PADCTL_UPHY_PLL_P0_CTL1);
227
228 value = padctl_readl(padctl, XUSB_PADCTL_UPHY_PLL_P0_CTL1);
229 value &= ~XUSB_PADCTL_UPHY_PLL_P0_CTL1_SLEEP_MASK;
230 padctl_writel(padctl, value, XUSB_PADCTL_UPHY_PLL_P0_CTL1);
231
232 udelay(1);
233
234 value = padctl_readl(padctl, XUSB_PADCTL_UPHY_PLL_P0_CTL4);
235 value |= XUSB_PADCTL_UPHY_PLL_P0_CTL4_REFCLKBUF_EN;
236 padctl_writel(padctl, value, XUSB_PADCTL_UPHY_PLL_P0_CTL4);
237
238 value = padctl_readl(padctl, XUSB_PADCTL_UPHY_PLL_P0_CTL2);
239 value |= XUSB_PADCTL_UPHY_PLL_P0_CTL2_CAL_EN;
240 padctl_writel(padctl, value, XUSB_PADCTL_UPHY_PLL_P0_CTL2);
241
242 debug(" waiting for calibration\n");
243
244 start = get_timer(0);
245
246 while (get_timer(start) < 250) {
247 value = padctl_readl(padctl, XUSB_PADCTL_UPHY_PLL_P0_CTL2);
248 if (value & XUSB_PADCTL_UPHY_PLL_P0_CTL2_CAL_DONE)
249 break;
250 }
251
252 debug(" done\n");
253
254 value = padctl_readl(padctl, XUSB_PADCTL_UPHY_PLL_P0_CTL2);
255 value &= ~XUSB_PADCTL_UPHY_PLL_P0_CTL2_CAL_EN;
256 padctl_writel(padctl, value, XUSB_PADCTL_UPHY_PLL_P0_CTL2);
257
258 debug(" waiting for calibration to stop\n");
259
260 start = get_timer(0);
261
262 while (get_timer(start) < 250) {
263 value = padctl_readl(padctl, XUSB_PADCTL_UPHY_PLL_P0_CTL2);
264 if ((value & XUSB_PADCTL_UPHY_PLL_P0_CTL2_CAL_DONE) == 0)
265 break;
266 }
267
268 debug(" done\n");
269
270 value = padctl_readl(padctl, XUSB_PADCTL_UPHY_PLL_P0_CTL1);
271 value |= XUSB_PADCTL_UPHY_PLL_P0_CTL1_ENABLE;
272 padctl_writel(padctl, value, XUSB_PADCTL_UPHY_PLL_P0_CTL1);
273
274 debug(" waiting for PLL to lock...\n");
275 start = get_timer(0);
276
277 while (get_timer(start) < 250) {
278 value = padctl_readl(padctl, XUSB_PADCTL_UPHY_PLL_P0_CTL1);
279 if (value & XUSB_PADCTL_UPHY_PLL_P0_CTL1_LOCKDET_STATUS)
280 break;
281 }
282
283 debug(" done\n");
284
285 value = padctl_readl(padctl, XUSB_PADCTL_UPHY_PLL_P0_CTL8);
286 value |= XUSB_PADCTL_UPHY_PLL_P0_CTL8_RCAL_CLK_EN;
287 value |= XUSB_PADCTL_UPHY_PLL_P0_CTL8_RCAL_EN;
288 padctl_writel(padctl, value, XUSB_PADCTL_UPHY_PLL_P0_CTL8);
289
290 debug(" waiting for register calibration...\n");
291 start = get_timer(0);
292
293 while (get_timer(start) < 250) {
294 value = padctl_readl(padctl, XUSB_PADCTL_UPHY_PLL_P0_CTL8);
295 if (value & XUSB_PADCTL_UPHY_PLL_P0_CTL8_RCAL_DONE)
296 break;
297 }
298
299 debug(" done\n");
300
301 value = padctl_readl(padctl, XUSB_PADCTL_UPHY_PLL_P0_CTL8);
302 value &= ~XUSB_PADCTL_UPHY_PLL_P0_CTL8_RCAL_EN;
303 padctl_writel(padctl, value, XUSB_PADCTL_UPHY_PLL_P0_CTL8);
304
305 debug(" waiting for register calibration to stop...\n");
306 start = get_timer(0);
307
308 while (get_timer(start) < 250) {
309 value = padctl_readl(padctl, XUSB_PADCTL_UPHY_PLL_P0_CTL8);
310 if ((value & XUSB_PADCTL_UPHY_PLL_P0_CTL8_RCAL_DONE) == 0)
311 break;
312 }
313
314 debug(" done\n");
315
316 value = padctl_readl(padctl, XUSB_PADCTL_UPHY_PLL_P0_CTL8);
317 value &= ~XUSB_PADCTL_UPHY_PLL_P0_CTL8_RCAL_CLK_EN;
318 padctl_writel(padctl, value, XUSB_PADCTL_UPHY_PLL_P0_CTL8);
319
320 value = readl(NV_PA_CLK_RST_BASE + CLK_RST_XUSBIO_PLL_CFG0);
321 value &= ~CLK_RST_XUSBIO_PLL_CFG0_PADPLL_RESET_SWCTL;
322 value &= ~CLK_RST_XUSBIO_PLL_CFG0_CLK_ENABLE_SWCTL;
323 value |= CLK_RST_XUSBIO_PLL_CFG0_PADPLL_USE_LOCKDET;
324 value |= CLK_RST_XUSBIO_PLL_CFG0_PADPLL_SLEEP_IDDQ;
325 writel(value, NV_PA_CLK_RST_BASE + CLK_RST_XUSBIO_PLL_CFG0);
326
327 value = padctl_readl(padctl, XUSB_PADCTL_UPHY_PLL_P0_CTL1);
328 value &= ~XUSB_PADCTL_UPHY_PLL_P0_CTL1_PWR_OVRD;
329 padctl_writel(padctl, value, XUSB_PADCTL_UPHY_PLL_P0_CTL1);
330
331 value = padctl_readl(padctl, XUSB_PADCTL_UPHY_PLL_P0_CTL2);
332 value &= ~XUSB_PADCTL_UPHY_PLL_P0_CTL2_CAL_OVRD;
333 padctl_writel(padctl, value, XUSB_PADCTL_UPHY_PLL_P0_CTL2);
334
335 value = padctl_readl(padctl, XUSB_PADCTL_UPHY_PLL_P0_CTL8);
336 value &= ~XUSB_PADCTL_UPHY_PLL_P0_CTL8_RCAL_OVRD;
337 padctl_writel(padctl, value, XUSB_PADCTL_UPHY_PLL_P0_CTL8);
338
339 udelay(1);
340
341 value = readl(NV_PA_CLK_RST_BASE + CLK_RST_XUSBIO_PLL_CFG0);
342 value |= CLK_RST_XUSBIO_PLL_CFG0_SEQ_ENABLE;
343 writel(value, NV_PA_CLK_RST_BASE + CLK_RST_XUSBIO_PLL_CFG0);
344
345 debug("< %s()\n", __func__);
346 return 0;
347 }
348
349 static int pcie_phy_disable(struct tegra_xusb_phy *phy)
350 {
351 return 0;
352 }
353
354 static const struct tegra_xusb_phy_ops pcie_phy_ops = {
355 .prepare = phy_prepare,
356 .enable = pcie_phy_enable,
357 .disable = pcie_phy_disable,
358 .unprepare = phy_unprepare,
359 };
360
361 static struct tegra_xusb_padctl *padctl = &(struct tegra_xusb_padctl) {
362 .phys = {
363 [0] = {
364 .ops = &pcie_phy_ops,
365 },
366 },
367 };
368
369 static int tegra_xusb_padctl_parse_dt(struct tegra_xusb_padctl *padctl,
370 const void *fdt, int node)
371 {
372 int err;
373
374 err = fdt_get_resource(fdt, node, "reg", 0, &padctl->regs);
375 if (err < 0) {
376 error("registers not found");
377 return err;
378 }
379
380 debug("regs: %pa-%pa\n", &padctl->regs.start,
381 &padctl->regs.end);
382
383 return 0;
384 }
385
386 static int process_nodes(const void *fdt, int nodes[], unsigned int count)
387 {
388 unsigned int i;
389 int err;
390
391 debug("> %s(fdt=%p, nodes=%p, count=%u)\n", __func__, fdt, nodes,
392 count);
393
394 for (i = 0; i < count; i++) {
395 enum fdt_compat_id id;
396
397 if (!fdtdec_get_is_enabled(fdt, nodes[i]))
398 continue;
399
400 id = fdtdec_lookup(fdt, nodes[i]);
401 switch (id) {
402 case COMPAT_NVIDIA_TEGRA124_XUSB_PADCTL:
403 case COMPAT_NVIDIA_TEGRA210_XUSB_PADCTL:
404 break;
405
406 default:
407 error("unsupported compatible: %s",
408 fdtdec_get_compatible(id));
409 continue;
410 }
411
412 err = tegra_xusb_padctl_parse_dt(padctl, fdt, nodes[i]);
413 if (err < 0) {
414 error("failed to parse DT: %d",
415 err);
416 continue;
417 }
418
419 /* deassert XUSB padctl reset */
420 reset_set_enable(PERIPH_ID_XUSB_PADCTL, 0);
421
422 /* only a single instance is supported */
423 break;
424 }
425
426 debug("< %s()\n", __func__);
427 return 0;
428 }
429
430 struct tegra_xusb_phy *tegra_xusb_phy_get(unsigned int type)
431 {
432 struct tegra_xusb_phy *phy = NULL;
433
434 switch (type) {
435 case TEGRA_XUSB_PADCTL_PCIE:
436 phy = &padctl->phys[0];
437 phy->padctl = padctl;
438 break;
439 }
440
441 return phy;
442 }
443
444 int tegra_xusb_phy_prepare(struct tegra_xusb_phy *phy)
445 {
446 if (phy && phy->ops && phy->ops->prepare)
447 return phy->ops->prepare(phy);
448
449 return phy ? -ENOSYS : -EINVAL;
450 }
451
452 int tegra_xusb_phy_enable(struct tegra_xusb_phy *phy)
453 {
454 if (phy && phy->ops && phy->ops->enable)
455 return phy->ops->enable(phy);
456
457 return phy ? -ENOSYS : -EINVAL;
458 }
459
460 int tegra_xusb_phy_disable(struct tegra_xusb_phy *phy)
461 {
462 if (phy && phy->ops && phy->ops->disable)
463 return phy->ops->disable(phy);
464
465 return phy ? -ENOSYS : -EINVAL;
466 }
467
468 int tegra_xusb_phy_unprepare(struct tegra_xusb_phy *phy)
469 {
470 if (phy && phy->ops && phy->ops->unprepare)
471 return phy->ops->unprepare(phy);
472
473 return phy ? -ENOSYS : -EINVAL;
474 }
475
476 void tegra_xusb_padctl_init(const void *fdt)
477 {
478 int count, nodes[1];
479
480 debug("> %s(fdt=%p)\n", __func__, fdt);
481
482 count = fdtdec_find_aliases_for_id(fdt, "padctl",
483 COMPAT_NVIDIA_TEGRA210_XUSB_PADCTL,
484 nodes, ARRAY_SIZE(nodes));
485 if (process_nodes(fdt, nodes, count))
486 return;
487
488 count = fdtdec_find_aliases_for_id(fdt, "padctl",
489 COMPAT_NVIDIA_TEGRA124_XUSB_PADCTL,
490 nodes, ARRAY_SIZE(nodes));
491 if (process_nodes(fdt, nodes, count))
492 return;
493
494 debug("< %s()\n", __func__);
495 }