1 // SPDX-License-Identifier: GPL-2.0
2 /*
3 * Device Tree Source for the Kingfisher (ULCB extension) board
4 *
5 * Copyright (C) 2017 Renesas Electronics Corp.
6 * Copyright (C) 2017 Cogent Embedded, Inc.
7 */
8
9 /*
10 * SSI-PCM3168A
11 * aplay -D plughw:0,2 xxx.wav
12 * arecord -D plughw:0,3 xxx.wav
13 */
14
15 / {
16 aliases {
17 serial1 = &hscif0;
18 serial2 = &scif1;
19 mmc2 = &sdhi3;
20 };
21
22 clksndsel: clksndsel {
23 #clock-cells = <0>;
24 compatible = "gpio-mux-clock";
25 clocks = <&cs2000>, <&audio_clk_a>; /* clk8snd, clksnd */
26 select-gpios = <&gpio_exp_75 13 GPIO_ACTIVE_HIGH>;
27 };
28
29 hdmi1-out {
30 compatible = "hdmi-connector";
31 type = "a";
32
33 port {
34 hdmi1_con: endpoint {
35 remote-endpoint = <&adv7513_out>;
36 };
37 };
38 };
39
40 accel_3v3: regulator-acc-3v3 {
41 compatible = "regulator-fixed";
42 regulator-name = "accel-3v3";
43 regulator-min-microvolt = <3300000>;
44 regulator-max-microvolt = <3300000>;
45 };
46
47 hdmi_1v8: regulator-hdmi-1v8 {
48 compatible = "regulator-fixed";
49 regulator-name = "hdmi-1v8";
50 regulator-min-microvolt = <1800000>;
51 regulator-max-microvolt = <1800000>;
52 };
53
54 hdmi_3v3: regulator-hdmi-3v3 {
55 compatible = "regulator-fixed";
56 regulator-name = "hdmi-3v3";
57 regulator-min-microvolt = <3300000>;
58 regulator-max-microvolt = <3300000>;
59 };
60
61 snd_3p3v: regulator-snd_3p3v {
62 compatible = "regulator-fixed";
63 regulator-name = "snd-3.3v";
64 regulator-min-microvolt = <3300000>;
65 regulator-max-microvolt = <3300000>;
66 };
67
68 snd_vcc5v: regulator-snd_vcc5v {
69 compatible = "regulator-fixed";
70 regulator-name = "snd-vcc5v";
71 regulator-min-microvolt = <5000000>;
72 regulator-max-microvolt = <5000000>;
73 };
74
75 wlan_en: regulator-wlan_en {
76 compatible = "regulator-fixed";
77 regulator-name = "wlan-en-regulator";
78
79 regulator-min-microvolt = <3300000>;
80 regulator-max-microvolt = <3300000>;
81
82 gpio = <&gpio_exp_74 4 GPIO_ACTIVE_HIGH>;
83 startup-delay-us = <70000>;
84 enable-active-high;
85 };
86 };
87
88 &can0 {
89 pinctrl-0 = <&can0_pins>;
90 pinctrl-names = "default";
91 status = "okay";
92 };
93
94 &can1 {
95 pinctrl-0 = <&can1_pins>;
96 pinctrl-names = "default";
97 status = "okay";
98 };
99
100 &du {
101 ports {
102 port@0 {
103 du_out_rgb: endpoint {
104 remote-endpoint = <&adv7513_in>;
105 };
106 };
107 };
108 };
109
110 &ehci0 {
111 dr_mode = "otg";
112 status = "okay";
113 };
114
115 &hscif0 {
116 pinctrl-0 = <&hscif0_pins>;
117 pinctrl-names = "default";
118 uart-has-rtscts;
119
120 status = "okay";
121 };
122
123 &hsusb {
124 dr_mode = "otg";
125 status = "okay";
126 };
127
128 &i2c2 {
129 i2cswitch2: i2c-switch@71 {
130 compatible = "nxp,pca9548";
131 #address-cells = <1>;
132 #size-cells = <0>;
133 reg = <0x71>;
134 reset-gpios = <&gpio5 3 GPIO_ACTIVE_LOW>;
135
136 /* HDMIoSDA, HDMIoSCL */
137 i2c@4 {
138 #address-cells = <1>;
139 #size-cells = <0>;
140 reg = <4>;
141
142 hdmi@3d {
143 compatible = "adi,adv7513";
144 reg = <0x3d>;
145
146 pinctrl-0 = <&hdmi1_pins>;
147 pinctrl-names = "default";
148
149 interrupt-parent = <&gpio2>;
150 interrupts = <14 IRQ_TYPE_LEVEL_LOW>;
151
152 clocks = <&cs2000>;
153 clock-names = "cec";
154
155 pd-gpios = <&gpio_exp_75 5 GPIO_ACTIVE_LOW>;
156
157 avdd-supply = <&hdmi_1v8>;
158 dvdd-supply = <&hdmi_1v8>;
159 pvdd-supply = <&hdmi_1v8>;
160 dvdd-3v-supply = <&hdmi_3v3>;
161 bgvdd-supply = <&hdmi_1v8>;
162
163 adi,input-depth = <8>;
164 adi,input-colorspace = "rgb";
165 adi,input-clock = "1x";
166
167 ports {
168 #address-cells = <1>;
169 #size-cells = <0>;
170
171 port@0 {
172 reg = <0>;
173 adv7513_in: endpoint {
174 remote-endpoint = <&du_out_rgb>;
175 };
176 };
177
178 port@1 {
179 reg = <1>;
180 adv7513_out: endpoint {
181 remote-endpoint = <&hdmi1_con>;
182 };
183 };
184 };
185 };
186 };
187
188 /* Audio_SDA, Audio_SCL */
189 i2c@7 {
190 #address-cells = <1>;
191 #size-cells = <0>;
192 reg = <7>;
193
194 accelerometer@1d {
195 compatible = "st,lsm9ds0-imu";
196 reg = <0x1d>;
197
198 vdd-supply = <&accel_3v3>;
199 vddio-supply = <&accel_3v3>;
200 };
201
202 pcm3168a: audio-codec@44 {
203 #sound-dai-cells = <0>;
204 compatible = "ti,pcm3168a";
205 reg = <0x44>;
206 clocks = <&clksndsel>;
207 clock-names = "scki";
208
209 VDD1-supply = <&snd_3p3v>;
210 VDD2-supply = <&snd_3p3v>;
211 VCCAD1-supply = <&snd_vcc5v>;
212 VCCAD2-supply = <&snd_vcc5v>;
213 VCCDA1-supply = <&snd_vcc5v>;
214 VCCDA2-supply = <&snd_vcc5v>;
215
216 ports {
217 #address-cells = <1>;
218 #size-cells = <0>;
219 mclk-fs = <512>;
220 port@0 {
221 reg = <0>;
222 pcm3168a_endpoint_p: endpoint {
223 remote-endpoint = <&rsnd_for_pcm3168a_play>;
224 clocks = <&clksndsel>;
225 };
226 };
227 port@1 {
228 reg = <1>;
229 pcm3168a_endpoint_c: endpoint {
230 remote-endpoint = <&rsnd_for_pcm3168a_capture>;
231 clocks = <&clksndsel>;
232 };
233 };
234 };
235 };
236
237 gyroscope@6b {
238 compatible = "st,lsm9ds0-gyro";
239 reg = <0x6b>;
240
241 vdd-supply = <&accel_3v3>;
242 vddio-supply = <&accel_3v3>;
243 };
244 };
245 };
246
247 /* U11 */
248 gpio_exp_74: gpio@74 {
249 compatible = "ti,tca9539";
250 reg = <0x74>;
251 gpio-controller;
252 #gpio-cells = <2>;
253 interrupt-controller;
254 interrupt-parent = <&gpio6>;
255 interrupts = <8 IRQ_TYPE_EDGE_FALLING>;
256
257 audio-out-off-hog {
258 gpio-hog;
259 gpios = <0 GPIO_ACTIVE_HIGH>; /* P00 */
260 output-high;
261 line-name = "Audio_Out_OFF";
262 };
263
264 hub-pwen-hog {
265 gpio-hog;
266 gpios = <6 GPIO_ACTIVE_HIGH>;
267 output-high;
268 line-name = "HUB pwen";
269 };
270
271 hub-rst-hog {
272 gpio-hog;
273 gpios = <7 GPIO_ACTIVE_HIGH>;
274 output-high;
275 line-name = "HUB rst";
276 };
277
278 otg-extlpn-hog {
279 gpio-hog;
280 gpios = <9 GPIO_ACTIVE_HIGH>;
281 output-high;
282 line-name = "OTG EXTLPn";
283 };
284
285 otg-offvbusn-hog {
286 gpio-hog;
287 gpios = <8 GPIO_ACTIVE_HIGH>;
288 output-low;
289 line-name = "OTG OFFVBUSn";
290 };
291
292 sd-wifi-mux-hog {
293 gpio-hog;
294 gpios = <5 GPIO_ACTIVE_HIGH>;
295 output-low; /* Connect WL1837 */
296 line-name = "SD WiFi mux";
297 };
298
299 snd-rst-hog {
300 gpio-hog;
301 gpios = <15 GPIO_ACTIVE_HIGH>; /* P17 */
302 output-high;
303 line-name = "SND_RST";
304 };
305 };
306
307 /* U5 */
308 gpio_exp_75: gpio@75 {
309 compatible = "ti,tca9539";
310 reg = <0x75>;
311 gpio-controller;
312 #gpio-cells = <2>;
313 interrupt-controller;
314 interrupt-parent = <&gpio6>;
315 interrupts = <4 IRQ_TYPE_EDGE_FALLING>;
316 };
317 };
318
319 &i2c4 {
320 i2cswitch4: i2c-switch@71 {
321 compatible = "nxp,pca9548";
322 #address-cells = <1>;
323 #size-cells = <0>;
324 reg = <0x71>;
325 reset-gpios = <&gpio3 15 GPIO_ACTIVE_LOW>;
326 };
327
328 gpio_exp_76: gpio@76 {
329 compatible = "ti,tca9539";
330 reg = <0x76>;
331 gpio-controller;
332 #gpio-cells = <2>;
333 interrupt-controller;
334 interrupt-parent = <&gpio7>;
335 interrupts = <3 IRQ_TYPE_EDGE_FALLING>;
336 };
337
338 gpio_exp_77: gpio@77 {
339 compatible = "ti,tca9539";
340 reg = <0x77>;
341 gpio-controller;
342 #gpio-cells = <2>;
343 interrupt-controller;
344 interrupt-parent = <&gpio5>;
345 interrupts = <9 IRQ_TYPE_EDGE_FALLING>;
346 };
347 };
348
349 &ohci0 {
350 dr_mode = "otg";
351 status = "okay";
352 };
353
354 &pcie_bus_clk {
355 clock-frequency = <100000000>;
356 };
357
358 &pciec0 {
359 status = "okay";
360 };
361
362 &pciec1 {
363 status = "okay";
364 };
365
366 &pfc {
367 can0_pins: can0 {
368 groups = "can0_data_a";
369 function = "can0";
370 };
371
372 can1_pins: can1 {
373 groups = "can1_data";
374 function = "can1";
375 };
376
377 hdmi1_pins: hdmi1 {
378 adv7513-interrupt {
379 pins = "GP_2_14";
380 bias-pull-up;
381 };
382
383 du {
384 groups = "du_rgb888", "du_sync", "du_clk_out_0",
385 "du_disp";
386 function = "du";
387 };
388 };
389
390 hscif0_pins: hscif0 {
391 groups = "hscif0_data", "hscif0_ctrl";
392 function = "hscif0";
393 };
394
395 scif1_pins: scif1 {
396 groups = "scif1_data_b", "scif1_ctrl";
397 function = "scif1";
398 };
399
400 sdhi3_pins: sdhi3 {
401 groups = "sdhi3_data4", "sdhi3_ctrl";
402 function = "sdhi3";
403 power-source = <3300>;
404 };
405
406 sound_pcm_pins: sound-pcm {
407 groups = "ssi349_ctrl", "ssi3_data", "ssi4_data";
408 function = "ssi";
409 };
410
411 usb0_pins: usb0 {
412 groups = "usb0";
413 function = "usb0";
414 };
415 };
416
417 &rcar_sound {
418 pinctrl-0 = <&sound_pins
419 &sound_clk_pins
420 &sound_pcm_pins>;
421
422 ports {
423 /* rsnd_port0/1 are defined in ulcb.dtsi */
424 rsnd_port2: port@2 {
425 reg = <2>;
426 rsnd_for_pcm3168a_play: endpoint {
427 remote-endpoint = <&pcm3168a_endpoint_p>;
428 bitclock-master;
429 frame-master;
430 dai-tdm-slot-num = <8>;
431 playback = <&ssi3>;
432 };
433 };
434 rsnd_port3: port@3 {
435 reg = <3>;
436 rsnd_for_pcm3168a_capture: endpoint {
437 remote-endpoint = <&pcm3168a_endpoint_c>;
438 bitclock-master;
439 frame-master;
440 dai-tdm-slot-num = <6>;
441 capture = <&ssi4>;
442 };
443 };
444 };
445 };
446
447 &scif1 {
448 pinctrl-0 = <&scif1_pins>;
449 pinctrl-names = "default";
450 uart-has-rtscts;
451
452 status = "okay";
453 };
454
455 &sdhi3 {
456 pinctrl-0 = <&sdhi3_pins>;
457 pinctrl-names = "default";
458
459 vmmc-supply = <&wlan_en>;
460 vqmmc-supply = <&wlan_en>;
461 bus-width = <4>;
462 no-1-8-v;
463 non-removable;
464 cap-power-off-card;
465 keep-power-in-suspend;
466 max-frequency = <26000000>;
467 status = "okay";
468
469 #address-cells = <1>;
470 #size-cells = <0>;
471 wlcore: wlcore@2 {
472 compatible = "ti,wl1837";
473 reg = <2>;
474 interrupt-parent = <&gpio1>;
475 interrupts = <25 IRQ_TYPE_EDGE_FALLING>;
476 };
477 };
478
479 &sound_card {
480 links = <&rsnd_port0 /* ak4613 */
481 &rsnd_port1 /* HDMI0 */
482 &rsnd_port2 /* pcm3168a playback */
483 &rsnd_port3 /* pcm3168a capture */
484 >;
485 };
486
487 &ssi4 {
488 shared-pin;
489 };
490
491 &usb2_phy0 {
492 pinctrl-0 = <&usb0_pins>;
493 pinctrl-names = "default";
494
495 status = "okay";
496 };
497
498 &xhci0 {
499 status = "okay";
500 };
Cache object: f79d71e506c740da52d84eae4530263d
|