1/*
2 * Device Tree Source for the Lager board
3 *
4 * Copyright (C) 2013-2014 Renesas Solutions Corp.
5 * Copyright (C) 2014 Cogent Embedded, Inc.
6 *
7 * This file is licensed under the terms of the GNU General Public License
8 * version 2.  This program is licensed "as is" without any warranty of any
9 * kind, whether express or implied.
10 */
11
12/*
13 * SSI-AK4643
14 *
15 * SW1: 1: AK4643
16 *      2: CN22
17 *      3: ADV7511
18 *
19 * This command is required when Playback/Capture
20 *
21 *	amixer set "LINEOUT Mixer DACL" on
22 *	amixer set "DVC Out" 100%
23 *	amixer set "DVC In" 100%
24 *
25 * You can use Mute
26 *
27 *	amixer set "DVC Out Mute" on
28 *	amixer set "DVC In Mute" on
29 *
30 * You can use Volume Ramp
31 *
32 *	amixer set "DVC Out Ramp Up Rate"   "0.125 dB/64 steps"
33 *	amixer set "DVC Out Ramp Down Rate" "0.125 dB/512 steps"
34 *	amixer set "DVC Out Ramp" on
35 *	aplay xxx.wav &
36 *	amixer set "DVC Out"  80%  // Volume Down
37 *	amixer set "DVC Out" 100%  // Volume Up
38 */
39
40/dts-v1/;
41#include "r8a7790.dtsi"
42#include <dt-bindings/gpio/gpio.h>
43#include <dt-bindings/input/input.h>
44
45/ {
46	model = "Lager";
47	compatible = "renesas,lager", "renesas,r8a7790";
48
49	aliases {
50		serial0 = &scifa0;
51		serial1 = &scifa1;
52	};
53
54	chosen {
55		bootargs = "ignore_loglevel rw root=/dev/nfs ip=dhcp";
56		stdout-path = &scifa0;
57	};
58
59	memory@40000000 {
60		device_type = "memory";
61		reg = <0 0x40000000 0 0x40000000>;
62	};
63
64	memory@140000000 {
65		device_type = "memory";
66		reg = <1 0x40000000 0 0xc0000000>;
67	};
68
69	lbsc {
70		#address-cells = <1>;
71		#size-cells = <1>;
72	};
73
74	keyboard {
75		compatible = "gpio-keys";
76
77		button@1 {
78			linux,code = <KEY_1>;
79			label = "SW2-1";
80			gpio-key,wakeup;
81			debounce-interval = <20>;
82			gpios = <&gpio1 14 GPIO_ACTIVE_LOW>;
83		};
84		button@2 {
85			linux,code = <KEY_2>;
86			label = "SW2-2";
87			gpio-key,wakeup;
88			debounce-interval = <20>;
89			gpios = <&gpio1 24 GPIO_ACTIVE_LOW>;
90		};
91		button@3 {
92			linux,code = <KEY_3>;
93			label = "SW2-3";
94			gpio-key,wakeup;
95			debounce-interval = <20>;
96			gpios = <&gpio1 26 GPIO_ACTIVE_LOW>;
97		};
98		button@4 {
99			linux,code = <KEY_4>;
100			label = "SW2-4";
101			gpio-key,wakeup;
102			debounce-interval = <20>;
103			gpios = <&gpio1 28 GPIO_ACTIVE_LOW>;
104		};
105	};
106
107	leds {
108		compatible = "gpio-leds";
109		led6 {
110			gpios = <&gpio4 22 GPIO_ACTIVE_HIGH>;
111		};
112		led7 {
113			gpios = <&gpio4 23 GPIO_ACTIVE_HIGH>;
114		};
115		led8 {
116			gpios = <&gpio5 17 GPIO_ACTIVE_HIGH>;
117		};
118	};
119
120	fixedregulator3v3: fixedregulator@0 {
121		compatible = "regulator-fixed";
122		regulator-name = "fixed-3.3V";
123		regulator-min-microvolt = <3300000>;
124		regulator-max-microvolt = <3300000>;
125		regulator-boot-on;
126		regulator-always-on;
127	};
128
129	vcc_sdhi0: regulator@1 {
130		compatible = "regulator-fixed";
131
132		regulator-name = "SDHI0 Vcc";
133		regulator-min-microvolt = <3300000>;
134		regulator-max-microvolt = <3300000>;
135
136		gpio = <&gpio5 24 GPIO_ACTIVE_HIGH>;
137		enable-active-high;
138	};
139
140	vccq_sdhi0: regulator@2 {
141		compatible = "regulator-gpio";
142
143		regulator-name = "SDHI0 VccQ";
144		regulator-min-microvolt = <1800000>;
145		regulator-max-microvolt = <3300000>;
146
147		gpios = <&gpio5 29 GPIO_ACTIVE_HIGH>;
148		gpios-states = <1>;
149		states = <3300000 1
150			  1800000 0>;
151	};
152
153	vcc_sdhi2: regulator@3 {
154		compatible = "regulator-fixed";
155
156		regulator-name = "SDHI2 Vcc";
157		regulator-min-microvolt = <3300000>;
158		regulator-max-microvolt = <3300000>;
159
160		gpio = <&gpio5 25 GPIO_ACTIVE_HIGH>;
161		enable-active-high;
162	};
163
164	vccq_sdhi2: regulator@4 {
165		compatible = "regulator-gpio";
166
167		regulator-name = "SDHI2 VccQ";
168		regulator-min-microvolt = <1800000>;
169		regulator-max-microvolt = <3300000>;
170
171		gpios = <&gpio5 30 GPIO_ACTIVE_HIGH>;
172		gpios-states = <1>;
173		states = <3300000 1
174			  1800000 0>;
175	};
176
177	sound {
178		compatible = "simple-audio-card";
179
180		simple-audio-card,format = "left_j";
181		simple-audio-card,bitclock-master = <&sndcodec>;
182		simple-audio-card,frame-master = <&sndcodec>;
183
184		sndcpu: simple-audio-card,cpu {
185			sound-dai = <&rcar_sound>;
186		};
187
188		sndcodec: simple-audio-card,codec {
189			sound-dai = <&ak4643>;
190			system-clock-frequency = <11289600>;
191		};
192	};
193
194	vga-encoder {
195		compatible = "adi,adv7123";
196
197		ports {
198			#address-cells = <1>;
199			#size-cells = <0>;
200
201			port@0 {
202				reg = <0>;
203				adv7123_in: endpoint {
204					remote-endpoint = <&du_out_rgb>;
205				};
206			};
207			port@1 {
208				reg = <1>;
209				adv7123_out: endpoint {
210					remote-endpoint = <&vga_in>;
211				};
212			};
213		};
214	};
215
216	vga {
217		compatible = "vga-connector";
218
219		port {
220			vga_in: endpoint {
221				remote-endpoint = <&adv7123_out>;
222			};
223		};
224	};
225
226	hdmi-out {
227		compatible = "hdmi-connector";
228		type = "a";
229
230		port {
231			hdmi_con: endpoint {
232				remote-endpoint = <&adv7511_out>;
233			};
234		};
235	};
236
237	x2_clk: x2-clock {
238		compatible = "fixed-clock";
239		#clock-cells = <0>;
240		clock-frequency = <148500000>;
241	};
242
243	x13_clk: x13-clock {
244		compatible = "fixed-clock";
245		#clock-cells = <0>;
246		clock-frequency = <148500000>;
247	};
248};
249
250&du {
251	pinctrl-0 = <&du_pins>;
252	pinctrl-names = "default";
253	status = "okay";
254
255	clocks = <&mstp7_clks R8A7790_CLK_DU0>,
256		 <&mstp7_clks R8A7790_CLK_DU1>,
257		 <&mstp7_clks R8A7790_CLK_DU2>,
258		 <&mstp7_clks R8A7790_CLK_LVDS0>,
259		 <&mstp7_clks R8A7790_CLK_LVDS1>,
260		 <&x13_clk>, <&x2_clk>;
261	clock-names = "du.0", "du.1", "du.2", "lvds.0", "lvds.1",
262		      "dclkin.0", "dclkin.1";
263
264	ports {
265		port@0 {
266			endpoint {
267				remote-endpoint = <&adv7123_in>;
268			};
269		};
270		port@1 {
271			endpoint {
272				remote-endpoint = <&adv7511_in>;
273			};
274		};
275		port@2 {
276			lvds_connector: endpoint {
277			};
278		};
279	};
280};
281
282&extal_clk {
283	clock-frequency = <20000000>;
284};
285
286&pfc {
287	du_pins: du {
288		renesas,groups = "du_rgb666", "du_sync_1", "du_clk_out_0";
289		renesas,function = "du";
290	};
291
292	scifa0_pins: serial0 {
293		renesas,groups = "scifa0_data";
294		renesas,function = "scifa0";
295	};
296
297	ether_pins: ether {
298		renesas,groups = "eth_link", "eth_mdio", "eth_rmii";
299		renesas,function = "eth";
300	};
301
302	phy1_pins: phy1 {
303		renesas,groups = "intc_irq0";
304		renesas,function = "intc";
305	};
306
307	scifa1_pins: serial1 {
308		renesas,groups = "scifa1_data";
309		renesas,function = "scifa1";
310	};
311
312	sdhi0_pins: sd0 {
313		renesas,groups = "sdhi0_data4", "sdhi0_ctrl";
314		renesas,function = "sdhi0";
315	};
316
317	sdhi2_pins: sd2 {
318		renesas,groups = "sdhi2_data4", "sdhi2_ctrl";
319		renesas,function = "sdhi2";
320	};
321
322	mmc1_pins: mmc1 {
323		renesas,groups = "mmc1_data8", "mmc1_ctrl";
324		renesas,function = "mmc1";
325	};
326
327	qspi_pins: spi0 {
328		renesas,groups = "qspi_ctrl", "qspi_data4";
329		renesas,function = "qspi";
330	};
331
332	msiof1_pins: spi2 {
333		renesas,groups = "msiof1_clk", "msiof1_sync", "msiof1_rx",
334				 "msiof1_tx";
335		renesas,function = "msiof1";
336	};
337
338	iic1_pins: iic1 {
339		renesas,groups = "iic1";
340		renesas,function = "iic1";
341	};
342
343	iic2_pins: iic2 {
344		renesas,groups = "iic2";
345		renesas,function = "iic2";
346	};
347
348	iic3_pins: iic3 {
349		renesas,groups = "iic3";
350		renesas,function = "iic3";
351	};
352
353	hsusb_pins: hsusb {
354		renesas,groups = "usb0_ovc_vbus";
355		renesas,function = "usb0";
356	};
357
358	usb0_pins: usb0 {
359		renesas,groups = "usb0";
360		renesas,function = "usb0";
361	};
362
363	usb1_pins: usb1 {
364		renesas,groups = "usb1";
365		renesas,function = "usb1";
366	};
367
368	usb2_pins: usb2 {
369		renesas,groups = "usb2";
370		renesas,function = "usb2";
371	};
372
373	vin1_pins: vin {
374		renesas,groups = "vin1_data8", "vin1_clk";
375		renesas,function = "vin1";
376	};
377
378	sound_pins: sound {
379		renesas,groups = "ssi0129_ctrl", "ssi0_data", "ssi1_data";
380		renesas,function = "ssi";
381	};
382
383	sound_clk_pins: sound_clk {
384		renesas,groups = "audio_clk_a";
385		renesas,function = "audio_clk";
386	};
387};
388
389&ether {
390	pinctrl-0 = <&ether_pins &phy1_pins>;
391	pinctrl-names = "default";
392
393	phy-handle = <&phy1>;
394	renesas,ether-link-active-low;
395	status = "okay";
396
397	phy1: ethernet-phy@1 {
398		reg = <1>;
399		interrupt-parent = <&irqc0>;
400		interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
401		micrel,led-mode = <1>;
402	};
403};
404
405&cmt0 {
406	status = "okay";
407};
408
409&mmcif1 {
410	pinctrl-0 = <&mmc1_pins>;
411	pinctrl-names = "default";
412
413	vmmc-supply = <&fixedregulator3v3>;
414	bus-width = <8>;
415	non-removable;
416	status = "okay";
417};
418
419&sata1 {
420	status = "okay";
421};
422
423&qspi {
424	pinctrl-0 = <&qspi_pins>;
425	pinctrl-names = "default";
426
427	status = "okay";
428
429	flash: flash@0 {
430		#address-cells = <1>;
431		#size-cells = <1>;
432		compatible = "spansion,s25fl512s";
433		reg = <0>;
434		spi-max-frequency = <30000000>;
435		spi-tx-bus-width = <4>;
436		spi-rx-bus-width = <4>;
437		spi-cpha;
438		spi-cpol;
439		m25p,fast-read;
440
441		partition@0 {
442			label = "loader";
443			reg = <0x00000000 0x00040000>;
444			read-only;
445		};
446		partition@40000 {
447			label = "user";
448			reg = <0x00040000 0x00400000>;
449			read-only;
450		};
451		partition@440000 {
452			label = "flash";
453			reg = <0x00440000 0x03bc0000>;
454		};
455	};
456};
457
458&scifa0 {
459	pinctrl-0 = <&scifa0_pins>;
460	pinctrl-names = "default";
461
462	status = "okay";
463};
464
465&scifa1 {
466	pinctrl-0 = <&scifa1_pins>;
467	pinctrl-names = "default";
468
469	status = "okay";
470};
471
472&msiof1 {
473	pinctrl-0 = <&msiof1_pins>;
474	pinctrl-names = "default";
475
476	status = "okay";
477
478	pmic: pmic@0 {
479		compatible = "renesas,r2a11302ft";
480		reg = <0>;
481		spi-max-frequency = <6000000>;
482		spi-cpol;
483		spi-cpha;
484	};
485};
486
487&sdhi0 {
488	pinctrl-0 = <&sdhi0_pins>;
489	pinctrl-names = "default";
490
491	vmmc-supply = <&vcc_sdhi0>;
492	vqmmc-supply = <&vccq_sdhi0>;
493	cd-gpios = <&gpio3 6 GPIO_ACTIVE_LOW>;
494	status = "okay";
495};
496
497&sdhi2 {
498	pinctrl-0 = <&sdhi2_pins>;
499	pinctrl-names = "default";
500
501	vmmc-supply = <&vcc_sdhi2>;
502	vqmmc-supply = <&vccq_sdhi2>;
503	cd-gpios = <&gpio3 22 GPIO_ACTIVE_LOW>;
504	status = "okay";
505};
506
507&cpu0 {
508	cpu0-supply = <&vdd_dvfs>;
509};
510
511&iic0	{
512	status = "okay";
513};
514
515&iic1	{
516	status = "okay";
517	pinctrl-0 = <&iic1_pins>;
518	pinctrl-names = "default";
519};
520
521&iic2	{
522	status = "okay";
523	pinctrl-0 = <&iic2_pins>;
524	pinctrl-names = "default";
525
526	clock-frequency = <100000>;
527
528	ak4643: sound-codec@12 {
529		compatible = "asahi-kasei,ak4643";
530		#sound-dai-cells = <0>;
531		reg = <0x12>;
532	};
533
534	composite-in@20 {
535		compatible = "adi,adv7180";
536		reg = <0x20>;
537		remote = <&vin1>;
538
539		port {
540			adv7180: endpoint {
541				bus-width = <8>;
542				remote-endpoint = <&vin1ep0>;
543			};
544		};
545	};
546
547	hdmi@39 {
548		compatible = "adi,adv7511w";
549		reg = <0x39>;
550		interrupt-parent = <&gpio1>;
551		interrupts = <15 IRQ_TYPE_EDGE_FALLING>;
552
553		adi,input-depth = <8>;
554		adi,input-colorspace = "rgb";
555		adi,input-clock = "1x";
556		adi,input-style = <1>;
557		adi,input-justification = "evenly";
558
559		ports {
560			#address-cells = <1>;
561			#size-cells = <0>;
562
563			port@0 {
564				reg = <0>;
565				adv7511_in: endpoint {
566					remote-endpoint = <&du_out_lvds0>;
567				};
568			};
569
570			port@1 {
571				reg = <1>;
572				adv7511_out: endpoint {
573					remote-endpoint = <&hdmi_con>;
574				};
575			};
576		};
577	};
578};
579
580&iic3 {
581	pinctrl-names = "default";
582	pinctrl-0 = <&iic3_pins>;
583	status = "okay";
584
585	pmic@58 {
586		compatible = "dlg,da9063";
587		reg = <0x58>;
588		interrupt-parent = <&irqc0>;
589		interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
590		interrupt-controller;
591
592		rtc {
593			compatible = "dlg,da9063-rtc";
594		};
595
596		wdt {
597			compatible = "dlg,da9063-watchdog";
598		};
599	};
600
601	vdd_dvfs: regulator@68 {
602		compatible = "dlg,da9210";
603		reg = <0x68>;
604		interrupt-parent = <&irqc0>;
605		interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
606
607		regulator-min-microvolt = <1000000>;
608		regulator-max-microvolt = <1000000>;
609		regulator-boot-on;
610		regulator-always-on;
611	};
612};
613
614&pci0 {
615	status = "okay";
616	pinctrl-0 = <&usb0_pins>;
617	pinctrl-names = "default";
618};
619
620&pci1 {
621	status = "okay";
622	pinctrl-0 = <&usb1_pins>;
623	pinctrl-names = "default";
624};
625
626&xhci {
627	status = "okay";
628	pinctrl-0 = <&usb2_pins>;
629	pinctrl-names = "default";
630};
631
632&pci2 {
633	status = "okay";
634	pinctrl-0 = <&usb2_pins>;
635	pinctrl-names = "default";
636};
637
638&hsusb {
639	status = "okay";
640	pinctrl-0 = <&hsusb_pins>;
641	pinctrl-names = "default";
642	renesas,enable-gpio = <&gpio5 18 GPIO_ACTIVE_HIGH>;
643};
644
645&usbphy {
646	status = "okay";
647};
648
649/* composite video input */
650&vin1 {
651	pinctrl-0 = <&vin1_pins>;
652	pinctrl-names = "default";
653
654	status = "okay";
655
656	port {
657		#address-cells = <1>;
658		#size-cells = <0>;
659
660		vin1ep0: endpoint {
661			remote-endpoint = <&adv7180>;
662			bus-width = <8>;
663		};
664	};
665};
666
667&rcar_sound {
668	pinctrl-0 = <&sound_pins &sound_clk_pins>;
669	pinctrl-names = "default";
670
671	/* Single DAI */
672	#sound-dai-cells = <0>;
673
674	status = "okay";
675
676	rcar_sound,dai {
677		dai0 {
678			playback = <&ssi0 &src2 &dvc0>;
679			capture  = <&ssi1 &src3 &dvc1>;
680		};
681	};
682};
683
684&ssi1 {
685	shared-pin;
686};
687