blob: c97d59a5322d7cdd485c144fc17a3fd78e5a2564 [file] [log] [blame]
Tom Rini10e47792018-05-06 17:58:06 -04001// SPDX-License-Identifier: GPL-2.0
Marek Vasut53485762018-01-07 20:17:23 +01002/*
3 * Device Tree Source for the Lager board
4 *
5 * Copyright (C) 2013-2014 Renesas Solutions Corp.
6 * Copyright (C) 2014 Cogent Embedded, Inc.
7 * Copyright (C) 2015-2016 Renesas Electronics Corporation
Marek Vasut53485762018-01-07 20:17:23 +01008 */
9
10/*
11 * SSI-AK4643
12 *
13 * SW1: 1: AK4643
14 * 2: CN22
15 * 3: ADV7511
16 *
17 * This command is required when Playback/Capture
18 *
19 * amixer set "LINEOUT Mixer DACL" on
20 * amixer set "DVC Out" 100%
21 * amixer set "DVC In" 100%
22 *
23 * You can use Mute
24 *
25 * amixer set "DVC Out Mute" on
26 * amixer set "DVC In Mute" on
27 *
28 * You can use Volume Ramp
29 *
30 * amixer set "DVC Out Ramp Up Rate" "0.125 dB/64 steps"
31 * amixer set "DVC Out Ramp Down Rate" "0.125 dB/512 steps"
32 * amixer set "DVC Out Ramp" on
33 * aplay xxx.wav &
34 * amixer set "DVC Out" 80% // Volume Down
35 * amixer set "DVC Out" 100% // Volume Up
36 */
37
38/dts-v1/;
39#include "r8a7790.dtsi"
40#include <dt-bindings/gpio/gpio.h>
41#include <dt-bindings/input/input.h>
42
43/ {
44 model = "Lager";
45 compatible = "renesas,lager", "renesas,r8a7790";
46
47 aliases {
48 serial0 = &scif0;
49 serial1 = &scifa1;
50 i2c8 = &gpioi2c1;
51 i2c10 = &i2cexio0;
52 i2c11 = &i2cexio1;
53 };
54
55 chosen {
56 bootargs = "ignore_loglevel rw root=/dev/nfs ip=dhcp";
57 stdout-path = "serial0:115200n8";
58 };
59
60 memory@40000000 {
61 device_type = "memory";
62 reg = <0 0x40000000 0 0x40000000>;
63 };
64
65 memory@140000000 {
66 device_type = "memory";
67 reg = <1 0x40000000 0 0xc0000000>;
68 };
69
70 lbsc {
71 #address-cells = <1>;
72 #size-cells = <1>;
73 };
74
75 keyboard {
76 compatible = "gpio-keys";
77
78 one {
79 linux,code = <KEY_1>;
80 label = "SW2-1";
81 wakeup-source;
82 debounce-interval = <20>;
83 gpios = <&gpio1 14 GPIO_ACTIVE_LOW>;
84 };
85 two {
86 linux,code = <KEY_2>;
87 label = "SW2-2";
88 wakeup-source;
89 debounce-interval = <20>;
90 gpios = <&gpio1 24 GPIO_ACTIVE_LOW>;
91 };
92 three {
93 linux,code = <KEY_3>;
94 label = "SW2-3";
95 wakeup-source;
96 debounce-interval = <20>;
97 gpios = <&gpio1 26 GPIO_ACTIVE_LOW>;
98 };
99 four {
100 linux,code = <KEY_4>;
101 label = "SW2-4";
102 wakeup-source;
103 debounce-interval = <20>;
104 gpios = <&gpio1 28 GPIO_ACTIVE_LOW>;
105 };
106 };
107
108 leds {
109 compatible = "gpio-leds";
110 led6 {
111 gpios = <&gpio4 22 GPIO_ACTIVE_HIGH>;
112 };
113 led7 {
114 gpios = <&gpio4 23 GPIO_ACTIVE_HIGH>;
115 };
116 led8 {
117 gpios = <&gpio5 17 GPIO_ACTIVE_HIGH>;
118 };
119 };
120
121 fixedregulator3v3: regulator-3v3 {
122 compatible = "regulator-fixed";
123 regulator-name = "fixed-3.3V";
124 regulator-min-microvolt = <3300000>;
125 regulator-max-microvolt = <3300000>;
126 regulator-boot-on;
127 regulator-always-on;
128 };
129
130 vcc_sdhi0: regulator-vcc-sdhi0 {
131 compatible = "regulator-fixed";
132
133 regulator-name = "SDHI0 Vcc";
134 regulator-min-microvolt = <3300000>;
135 regulator-max-microvolt = <3300000>;
136
137 gpio = <&gpio5 24 GPIO_ACTIVE_HIGH>;
138 enable-active-high;
139 };
140
141 vccq_sdhi0: regulator-vccq-sdhi0 {
142 compatible = "regulator-gpio";
143
144 regulator-name = "SDHI0 VccQ";
145 regulator-min-microvolt = <1800000>;
146 regulator-max-microvolt = <3300000>;
147
148 gpios = <&gpio5 29 GPIO_ACTIVE_HIGH>;
149 gpios-states = <1>;
150 states = <3300000 1
151 1800000 0>;
152 };
153
154 vcc_sdhi2: regulator-vcc-sdhi2 {
155 compatible = "regulator-fixed";
156
157 regulator-name = "SDHI2 Vcc";
158 regulator-min-microvolt = <3300000>;
159 regulator-max-microvolt = <3300000>;
160
161 gpio = <&gpio5 25 GPIO_ACTIVE_HIGH>;
162 enable-active-high;
163 };
164
165 vccq_sdhi2: regulator-vccq-sdhi2 {
166 compatible = "regulator-gpio";
167
168 regulator-name = "SDHI2 VccQ";
169 regulator-min-microvolt = <1800000>;
170 regulator-max-microvolt = <3300000>;
171
172 gpios = <&gpio5 30 GPIO_ACTIVE_HIGH>;
173 gpios-states = <1>;
174 states = <3300000 1
175 1800000 0>;
176 };
177
178 audio_clock: audio_clock {
179 compatible = "fixed-clock";
180 #clock-cells = <0>;
181 clock-frequency = <11289600>;
182 };
183
184 rsnd_ak4643: sound {
185 compatible = "simple-audio-card";
186
187 simple-audio-card,format = "left_j";
188 simple-audio-card,bitclock-master = <&sndcodec>;
189 simple-audio-card,frame-master = <&sndcodec>;
190
191 sndcpu: simple-audio-card,cpu {
192 sound-dai = <&rcar_sound>;
193 };
194
195 sndcodec: simple-audio-card,codec {
196 sound-dai = <&ak4643>;
197 clocks = <&audio_clock>;
198 };
199 };
200
201 vga-encoder {
202 compatible = "adi,adv7123";
203
204 ports {
205 #address-cells = <1>;
206 #size-cells = <0>;
207
208 port@0 {
209 reg = <0>;
210 adv7123_in: endpoint {
211 remote-endpoint = <&du_out_rgb>;
212 };
213 };
214 port@1 {
215 reg = <1>;
216 adv7123_out: endpoint {
217 remote-endpoint = <&vga_in>;
218 };
219 };
220 };
221 };
222
223 vga {
224 compatible = "vga-connector";
225
226 port {
227 vga_in: endpoint {
228 remote-endpoint = <&adv7123_out>;
229 };
230 };
231 };
232
233 hdmi-in {
234 compatible = "hdmi-connector";
235 type = "a";
236
237 port {
238 hdmi_con_in: endpoint {
239 remote-endpoint = <&adv7612_in>;
240 };
241 };
242 };
243
244 hdmi-out {
245 compatible = "hdmi-connector";
246 type = "a";
247
248 port {
249 hdmi_con_out: endpoint {
250 remote-endpoint = <&adv7511_out>;
251 };
252 };
253 };
254
255 x2_clk: x2-clock {
256 compatible = "fixed-clock";
257 #clock-cells = <0>;
258 clock-frequency = <148500000>;
259 };
260
261 x13_clk: x13-clock {
262 compatible = "fixed-clock";
263 #clock-cells = <0>;
264 clock-frequency = <148500000>;
265 };
266
267 gpioi2c1: i2c-8 {
268 #address-cells = <1>;
269 #size-cells = <0>;
270 compatible = "i2c-gpio";
271 status = "disabled";
272 gpios = <&gpio1 17 GPIO_ACTIVE_HIGH /* sda */
273 &gpio1 16 GPIO_ACTIVE_HIGH /* scl */
274 >;
275 i2c-gpio,delay-us = <5>;
276 };
277
278 /*
279 * IIC0/I2C0 is routed to EXIO connector A, pins 114 (SCL) + 116 (SDA) only.
280 * We use the I2C demuxer, so the desired IP core can be selected at runtime
281 * depending on the use case (e.g. DMA with IIC0 or slave support with I2C0).
282 * Note: For testing the I2C slave feature, it is convenient to connect this
283 * bus with IIC3 on pins 110 (SCL) + 112 (SDA), select I2C0 at runtime, and
284 * instantiate the slave device at runtime according to the documentation.
285 * You can then communicate with the slave via IIC3.
286 *
287 * IIC0/I2C0 does not appear to support fallback to GPIO.
288 */
289 i2cexio0: i2c-10 {
290 compatible = "i2c-demux-pinctrl";
291 i2c-parent = <&iic0>, <&i2c0>;
292 i2c-bus-name = "i2c-exio0";
293 #address-cells = <1>;
294 #size-cells = <0>;
295 };
296
297 /*
298 * IIC1/I2C1 is routed to EXIO connector A, pins 78 (SCL) + 80 (SDA).
299 * This is similar to the arangement described for i2cexio0 (above)
300 * with a fallback to GPIO also provided.
301 */
302 i2cexio1: i2c-11 {
303 compatible = "i2c-demux-pinctrl";
304 i2c-parent = <&iic1>, <&i2c1>, <&gpioi2c1>;
305 i2c-bus-name = "i2c-exio1";
306 #address-cells = <1>;
307 #size-cells = <0>;
308 };
309};
310
311&du {
312 pinctrl-0 = <&du_pins>;
313 pinctrl-names = "default";
314 status = "okay";
315
316 clocks = <&cpg CPG_MOD 724>, <&cpg CPG_MOD 723>, <&cpg CPG_MOD 722>,
317 <&cpg CPG_MOD 726>, <&cpg CPG_MOD 725>,
318 <&x13_clk>, <&x2_clk>;
319 clock-names = "du.0", "du.1", "du.2", "lvds.0", "lvds.1",
320 "dclkin.0", "dclkin.1";
321
322 ports {
323 port@0 {
324 endpoint {
325 remote-endpoint = <&adv7123_in>;
326 };
327 };
328 port@1 {
329 endpoint {
330 remote-endpoint = <&adv7511_in>;
331 };
332 };
333 port@2 {
334 lvds_connector: endpoint {
335 };
336 };
337 };
338};
339
340&extal_clk {
341 clock-frequency = <20000000>;
342};
343
344&pfc {
345 pinctrl-0 = <&scif_clk_pins>;
346 pinctrl-names = "default";
347
348 du_pins: du {
349 groups = "du_rgb666", "du_sync_1", "du_clk_out_0";
350 function = "du";
351 };
352
353 scif0_pins: scif0 {
354 groups = "scif0_data";
355 function = "scif0";
356 };
357
358 scif_clk_pins: scif_clk {
359 groups = "scif_clk";
360 function = "scif_clk";
361 };
362
363 ether_pins: ether {
364 groups = "eth_link", "eth_mdio", "eth_rmii";
365 function = "eth";
366 };
367
368 phy1_pins: phy1 {
369 groups = "intc_irq0";
370 function = "intc";
371 };
372
373 scifa1_pins: scifa1 {
374 groups = "scifa1_data";
375 function = "scifa1";
376 };
377
378 sdhi0_pins: sd0 {
379 groups = "sdhi0_data4", "sdhi0_ctrl";
380 function = "sdhi0";
381 power-source = <3300>;
382 };
383
384 sdhi0_pins_uhs: sd0_uhs {
385 groups = "sdhi0_data4", "sdhi0_ctrl";
386 function = "sdhi0";
387 power-source = <1800>;
388 };
389
390 sdhi2_pins: sd2 {
391 groups = "sdhi2_data4", "sdhi2_ctrl";
392 function = "sdhi2";
393 power-source = <3300>;
394 };
395
396 sdhi2_pins_uhs: sd2_uhs {
397 groups = "sdhi2_data4", "sdhi2_ctrl";
398 function = "sdhi2";
399 power-source = <1800>;
400 };
401
402 mmc1_pins: mmc1 {
403 groups = "mmc1_data8", "mmc1_ctrl";
404 function = "mmc1";
405 };
406
407 qspi_pins: qspi {
408 groups = "qspi_ctrl", "qspi_data4";
409 function = "qspi";
410 };
411
412 msiof1_pins: msiof1 {
413 groups = "msiof1_clk", "msiof1_sync", "msiof1_rx",
414 "msiof1_tx";
415 function = "msiof1";
416 };
417
418 i2c0_pins: i2c0 {
419 groups = "i2c0";
420 function = "i2c0";
421 };
422
423 iic0_pins: iic0 {
424 groups = "iic0";
425 function = "iic0";
426 };
427
428 i2c1_pins: i2c1 {
429 groups = "i2c1";
430 function = "i2c1";
431 };
432
433 iic1_pins: iic1 {
434 groups = "iic1";
435 function = "iic1";
436 };
437
438 iic2_pins: iic2 {
439 groups = "iic2";
440 function = "iic2";
441 };
442
443 iic3_pins: iic3 {
444 groups = "iic3";
445 function = "iic3";
446 };
447
448 hsusb_pins: hsusb {
449 groups = "usb0_ovc_vbus";
450 function = "usb0";
451 };
452
453 usb0_pins: usb0 {
454 groups = "usb0";
455 function = "usb0";
456 };
457
458 usb1_pins: usb1 {
459 groups = "usb1";
460 function = "usb1";
461 };
462
463 usb2_pins: usb2 {
464 groups = "usb2";
465 function = "usb2";
466 };
467
468 vin0_pins: vin0 {
469 groups = "vin0_data24", "vin0_sync", "vin0_clkenb", "vin0_clk";
470 function = "vin0";
471 };
472
473 vin1_pins: vin1 {
474 groups = "vin1_data8", "vin1_clk";
475 function = "vin1";
476 };
477
478 sound_pins: sound {
479 groups = "ssi0129_ctrl", "ssi0_data", "ssi1_data";
480 function = "ssi";
481 };
482
483 sound_clk_pins: sound_clk {
484 groups = "audio_clk_a";
485 function = "audio_clk";
486 };
487};
488
489&ether {
490 pinctrl-0 = <&ether_pins &phy1_pins>;
491 pinctrl-names = "default";
492
493 phy-handle = <&phy1>;
494 renesas,ether-link-active-low;
495 status = "okay";
496
497 phy1: ethernet-phy@1 {
498 reg = <1>;
499 interrupt-parent = <&irqc0>;
500 interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
501 micrel,led-mode = <1>;
502 };
503};
504
505&cmt0 {
506 status = "okay";
507};
508
509&mmcif1 {
510 pinctrl-0 = <&mmc1_pins>;
511 pinctrl-names = "default";
512
513 vmmc-supply = <&fixedregulator3v3>;
514 bus-width = <8>;
515 non-removable;
516 status = "okay";
517};
518
519&sata1 {
520 status = "okay";
521};
522
523&qspi {
524 pinctrl-0 = <&qspi_pins>;
525 pinctrl-names = "default";
526
527 status = "okay";
528
529 flash: flash@0 {
530 compatible = "spansion,s25fl512s", "jedec,spi-nor";
531 reg = <0>;
532 spi-max-frequency = <30000000>;
533 spi-tx-bus-width = <4>;
534 spi-rx-bus-width = <4>;
535 spi-cpha;
536 spi-cpol;
537 m25p,fast-read;
538
539 partitions {
540 compatible = "fixed-partitions";
541 #address-cells = <1>;
542 #size-cells = <1>;
543
544 partition@0 {
545 label = "loader";
546 reg = <0x00000000 0x00040000>;
547 read-only;
548 };
549 partition@40000 {
550 label = "user";
551 reg = <0x00040000 0x00400000>;
552 read-only;
553 };
554 partition@440000 {
555 label = "flash";
556 reg = <0x00440000 0x03bc0000>;
557 };
558 };
559 };
560};
561
562&scif0 {
563 pinctrl-0 = <&scif0_pins>;
564 pinctrl-names = "default";
565
566 status = "okay";
567};
568
569&scifa1 {
570 pinctrl-0 = <&scifa1_pins>;
571 pinctrl-names = "default";
572
573 status = "okay";
574};
575
576&scif_clk {
577 clock-frequency = <14745600>;
578};
579
580&msiof1 {
581 pinctrl-0 = <&msiof1_pins>;
582 pinctrl-names = "default";
583
584 status = "okay";
585
586 pmic: pmic@0 {
587 compatible = "renesas,r2a11302ft";
588 reg = <0>;
589 spi-max-frequency = <6000000>;
590 spi-cpol;
591 spi-cpha;
592 };
593};
594
595&sdhi0 {
596 pinctrl-0 = <&sdhi0_pins>;
597 pinctrl-1 = <&sdhi0_pins_uhs>;
598 pinctrl-names = "default", "state_uhs";
599
600 vmmc-supply = <&vcc_sdhi0>;
601 vqmmc-supply = <&vccq_sdhi0>;
602 cd-gpios = <&gpio3 6 GPIO_ACTIVE_LOW>;
603 sd-uhs-sdr50;
604 sd-uhs-sdr104;
605 status = "okay";
606};
607
608&sdhi2 {
609 pinctrl-0 = <&sdhi2_pins>;
610 pinctrl-1 = <&sdhi2_pins_uhs>;
611 pinctrl-names = "default", "state_uhs";
612
613 vmmc-supply = <&vcc_sdhi2>;
614 vqmmc-supply = <&vccq_sdhi2>;
615 cd-gpios = <&gpio3 22 GPIO_ACTIVE_LOW>;
616 sd-uhs-sdr50;
617 status = "okay";
618};
619
620&cpu0 {
621 cpu0-supply = <&vdd_dvfs>;
622};
623
624&i2c0 {
625 pinctrl-0 = <&i2c0_pins>;
626 pinctrl-names = "i2c-exio0";
627};
628
629&iic0 {
630 pinctrl-0 = <&iic0_pins>;
631 pinctrl-names = "i2c-exio0";
632};
633
634&i2c1 {
635 pinctrl-0 = <&i2c1_pins>;
636 pinctrl-names = "i2c-exio1";
637};
638
639&iic1 {
640 pinctrl-0 = <&iic1_pins>;
641 pinctrl-names = "i2c-exio1";
642};
643
644&iic2 {
645 status = "okay";
646 pinctrl-0 = <&iic2_pins>;
647 pinctrl-names = "default";
648
649 clock-frequency = <100000>;
650
651 ak4643: codec@12 {
652 compatible = "asahi-kasei,ak4643";
653 #sound-dai-cells = <0>;
654 reg = <0x12>;
655 };
656
657 composite-in@20 {
658 compatible = "adi,adv7180";
659 reg = <0x20>;
660 remote = <&vin1>;
661
662 port {
663 adv7180: endpoint {
664 bus-width = <8>;
665 remote-endpoint = <&vin1ep0>;
666 };
667 };
668 };
669
670 hdmi@39 {
671 compatible = "adi,adv7511w";
672 reg = <0x39>;
673 interrupt-parent = <&gpio1>;
674 interrupts = <15 IRQ_TYPE_LEVEL_LOW>;
675
676 adi,input-depth = <8>;
677 adi,input-colorspace = "rgb";
678 adi,input-clock = "1x";
679 adi,input-style = <1>;
680 adi,input-justification = "evenly";
681
682 ports {
683 #address-cells = <1>;
684 #size-cells = <0>;
685
686 port@0 {
687 reg = <0>;
688 adv7511_in: endpoint {
689 remote-endpoint = <&du_out_lvds0>;
690 };
691 };
692
693 port@1 {
694 reg = <1>;
695 adv7511_out: endpoint {
696 remote-endpoint = <&hdmi_con_out>;
697 };
698 };
699 };
700 };
701
702 hdmi-in@4c {
703 compatible = "adi,adv7612";
704 reg = <0x4c>;
705 interrupt-parent = <&gpio1>;
706 interrupts = <20 IRQ_TYPE_LEVEL_LOW>;
707 default-input = <0>;
708
709 ports {
710 #address-cells = <1>;
711 #size-cells = <0>;
712
713 port@0 {
714 reg = <0>;
715 adv7612_in: endpoint {
716 remote-endpoint = <&hdmi_con_in>;
717 };
718 };
719
720 port@2 {
721 reg = <2>;
722 adv7612_out: endpoint {
723 remote-endpoint = <&vin0ep2>;
724 };
725 };
726 };
727 };
728};
729
730&iic3 {
731 pinctrl-names = "default";
732 pinctrl-0 = <&iic3_pins>;
733 status = "okay";
734
735 pmic@58 {
736 compatible = "dlg,da9063";
737 reg = <0x58>;
738 interrupt-parent = <&irqc0>;
739 interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
740 interrupt-controller;
741
742 rtc {
743 compatible = "dlg,da9063-rtc";
744 };
745
746 wdt {
747 compatible = "dlg,da9063-watchdog";
748 };
749 };
750
751 vdd_dvfs: regulator@68 {
752 compatible = "dlg,da9210";
753 reg = <0x68>;
754 interrupt-parent = <&irqc0>;
755 interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
756
757 regulator-min-microvolt = <1000000>;
758 regulator-max-microvolt = <1000000>;
759 regulator-boot-on;
760 regulator-always-on;
761 };
762};
763
764&pci0 {
765 status = "okay";
766 pinctrl-0 = <&usb0_pins>;
767 pinctrl-names = "default";
768};
769
770&pci1 {
771 status = "okay";
772 pinctrl-0 = <&usb1_pins>;
773 pinctrl-names = "default";
774};
775
776&xhci {
777 status = "okay";
778 pinctrl-0 = <&usb2_pins>;
779 pinctrl-names = "default";
780};
781
782&pci2 {
783 status = "okay";
784 pinctrl-0 = <&usb2_pins>;
785 pinctrl-names = "default";
786};
787
788&hsusb {
789 status = "okay";
790 pinctrl-0 = <&hsusb_pins>;
791 pinctrl-names = "default";
792 renesas,enable-gpio = <&gpio5 18 GPIO_ACTIVE_HIGH>;
793};
794
795&usbphy {
796 status = "okay";
797};
798
799/* HDMI video input */
800&vin0 {
801 pinctrl-0 = <&vin0_pins>;
802 pinctrl-names = "default";
803
804 status = "okay";
805
806 port {
807 vin0ep2: endpoint {
808 remote-endpoint = <&adv7612_out>;
809 bus-width = <24>;
810 hsync-active = <0>;
811 vsync-active = <0>;
812 pclk-sample = <1>;
813 data-active = <1>;
814 };
815 };
816};
817
818/* composite video input */
819&vin1 {
820 pinctrl-0 = <&vin1_pins>;
821 pinctrl-names = "default";
822
823 status = "okay";
824
825 port {
826 #address-cells = <1>;
827 #size-cells = <0>;
828
829 vin1ep0: endpoint {
830 remote-endpoint = <&adv7180>;
831 bus-width = <8>;
832 };
833 };
834};
835
836&rcar_sound {
837 pinctrl-0 = <&sound_pins &sound_clk_pins>;
838 pinctrl-names = "default";
839
840 /* Single DAI */
841 #sound-dai-cells = <0>;
842
843 status = "okay";
844
845 rcar_sound,dai {
846 dai0 {
847 playback = <&ssi0 &src2 &dvc0>;
848 capture = <&ssi1 &src3 &dvc1>;
849 };
850 };
851};
852
853&ssi1 {
854 shared-pin;
855};