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	audio_clock: clock {
178		compatible = "fixed-clock";
179		#clock-cells = <0>;
180		clock-frequency = <11289600>;
181		clock-output-names = "audio_clock";
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-out {
234		compatible = "hdmi-connector";
235		type = "a";
236
237		port {
238			hdmi_con: endpoint {
239				remote-endpoint = <&adv7511_out>;
240			};
241		};
242	};
243
244	x2_clk: x2-clock {
245		compatible = "fixed-clock";
246		#clock-cells = <0>;
247		clock-frequency = <148500000>;
248	};
249
250	x13_clk: x13-clock {
251		compatible = "fixed-clock";
252		#clock-cells = <0>;
253		clock-frequency = <148500000>;
254	};
255};
256
257&du {
258	pinctrl-0 = <&du_pins>;
259	pinctrl-names = "default";
260	status = "okay";
261
262	clocks = <&mstp7_clks R8A7790_CLK_DU0>,
263		 <&mstp7_clks R8A7790_CLK_DU1>,
264		 <&mstp7_clks R8A7790_CLK_DU2>,
265		 <&mstp7_clks R8A7790_CLK_LVDS0>,
266		 <&mstp7_clks R8A7790_CLK_LVDS1>,
267		 <&x13_clk>, <&x2_clk>;
268	clock-names = "du.0", "du.1", "du.2", "lvds.0", "lvds.1",
269		      "dclkin.0", "dclkin.1";
270
271	ports {
272		port@0 {
273			endpoint {
274				remote-endpoint = <&adv7123_in>;
275			};
276		};
277		port@1 {
278			endpoint {
279				remote-endpoint = <&adv7511_in>;
280			};
281		};
282		port@2 {
283			lvds_connector: endpoint {
284			};
285		};
286	};
287};
288
289&extal_clk {
290	clock-frequency = <20000000>;
291};
292
293&pfc {
294	du_pins: du {
295		renesas,groups = "du_rgb666", "du_sync_1", "du_clk_out_0";
296		renesas,function = "du";
297	};
298
299	scifa0_pins: serial0 {
300		renesas,groups = "scifa0_data";
301		renesas,function = "scifa0";
302	};
303
304	ether_pins: ether {
305		renesas,groups = "eth_link", "eth_mdio", "eth_rmii";
306		renesas,function = "eth";
307	};
308
309	phy1_pins: phy1 {
310		renesas,groups = "intc_irq0";
311		renesas,function = "intc";
312	};
313
314	scifa1_pins: serial1 {
315		renesas,groups = "scifa1_data";
316		renesas,function = "scifa1";
317	};
318
319	sdhi0_pins: sd0 {
320		renesas,groups = "sdhi0_data4", "sdhi0_ctrl";
321		renesas,function = "sdhi0";
322	};
323
324	sdhi2_pins: sd2 {
325		renesas,groups = "sdhi2_data4", "sdhi2_ctrl";
326		renesas,function = "sdhi2";
327	};
328
329	mmc1_pins: mmc1 {
330		renesas,groups = "mmc1_data8", "mmc1_ctrl";
331		renesas,function = "mmc1";
332	};
333
334	qspi_pins: spi0 {
335		renesas,groups = "qspi_ctrl", "qspi_data4";
336		renesas,function = "qspi";
337	};
338
339	msiof1_pins: spi2 {
340		renesas,groups = "msiof1_clk", "msiof1_sync", "msiof1_rx",
341				 "msiof1_tx";
342		renesas,function = "msiof1";
343	};
344
345	iic0_pins: iic0 {
346		renesas,groups = "iic0";
347		renesas,function = "iic0";
348	};
349
350	iic1_pins: iic1 {
351		renesas,groups = "iic1";
352		renesas,function = "iic1";
353	};
354
355	iic2_pins: iic2 {
356		renesas,groups = "iic2";
357		renesas,function = "iic2";
358	};
359
360	iic3_pins: iic3 {
361		renesas,groups = "iic3";
362		renesas,function = "iic3";
363	};
364
365	hsusb_pins: hsusb {
366		renesas,groups = "usb0_ovc_vbus";
367		renesas,function = "usb0";
368	};
369
370	usb0_pins: usb0 {
371		renesas,groups = "usb0";
372		renesas,function = "usb0";
373	};
374
375	usb1_pins: usb1 {
376		renesas,groups = "usb1";
377		renesas,function = "usb1";
378	};
379
380	usb2_pins: usb2 {
381		renesas,groups = "usb2";
382		renesas,function = "usb2";
383	};
384
385	vin1_pins: vin {
386		renesas,groups = "vin1_data8", "vin1_clk";
387		renesas,function = "vin1";
388	};
389
390	sound_pins: sound {
391		renesas,groups = "ssi0129_ctrl", "ssi0_data", "ssi1_data";
392		renesas,function = "ssi";
393	};
394
395	sound_clk_pins: sound_clk {
396		renesas,groups = "audio_clk_a";
397		renesas,function = "audio_clk";
398	};
399};
400
401&ether {
402	pinctrl-0 = <&ether_pins &phy1_pins>;
403	pinctrl-names = "default";
404
405	phy-handle = <&phy1>;
406	renesas,ether-link-active-low;
407	status = "okay";
408
409	phy1: ethernet-phy@1 {
410		reg = <1>;
411		interrupt-parent = <&irqc0>;
412		interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
413		micrel,led-mode = <1>;
414	};
415};
416
417&cmt0 {
418	status = "okay";
419};
420
421&mmcif1 {
422	pinctrl-0 = <&mmc1_pins>;
423	pinctrl-names = "default";
424
425	vmmc-supply = <&fixedregulator3v3>;
426	bus-width = <8>;
427	non-removable;
428	status = "okay";
429};
430
431&sata1 {
432	status = "okay";
433};
434
435&qspi {
436	pinctrl-0 = <&qspi_pins>;
437	pinctrl-names = "default";
438
439	status = "okay";
440
441	flash: flash@0 {
442		#address-cells = <1>;
443		#size-cells = <1>;
444		compatible = "spansion,s25fl512s", "jedec,spi-nor";
445		reg = <0>;
446		spi-max-frequency = <30000000>;
447		spi-tx-bus-width = <4>;
448		spi-rx-bus-width = <4>;
449		spi-cpha;
450		spi-cpol;
451		m25p,fast-read;
452
453		partition@0 {
454			label = "loader";
455			reg = <0x00000000 0x00040000>;
456			read-only;
457		};
458		partition@40000 {
459			label = "user";
460			reg = <0x00040000 0x00400000>;
461			read-only;
462		};
463		partition@440000 {
464			label = "flash";
465			reg = <0x00440000 0x03bc0000>;
466		};
467	};
468};
469
470&scifa0 {
471	pinctrl-0 = <&scifa0_pins>;
472	pinctrl-names = "default";
473
474	status = "okay";
475};
476
477&scifa1 {
478	pinctrl-0 = <&scifa1_pins>;
479	pinctrl-names = "default";
480
481	status = "okay";
482};
483
484&msiof1 {
485	pinctrl-0 = <&msiof1_pins>;
486	pinctrl-names = "default";
487
488	status = "okay";
489
490	pmic: pmic@0 {
491		compatible = "renesas,r2a11302ft";
492		reg = <0>;
493		spi-max-frequency = <6000000>;
494		spi-cpol;
495		spi-cpha;
496	};
497};
498
499&sdhi0 {
500	pinctrl-0 = <&sdhi0_pins>;
501	pinctrl-names = "default";
502
503	vmmc-supply = <&vcc_sdhi0>;
504	vqmmc-supply = <&vccq_sdhi0>;
505	cd-gpios = <&gpio3 6 GPIO_ACTIVE_LOW>;
506	status = "okay";
507};
508
509&sdhi2 {
510	pinctrl-0 = <&sdhi2_pins>;
511	pinctrl-names = "default";
512
513	vmmc-supply = <&vcc_sdhi2>;
514	vqmmc-supply = <&vccq_sdhi2>;
515	cd-gpios = <&gpio3 22 GPIO_ACTIVE_LOW>;
516	status = "okay";
517};
518
519&cpu0 {
520	cpu0-supply = <&vdd_dvfs>;
521};
522
523&iic0	{
524	status = "okay";
525	pinctrl-0 = <&iic0_pins>;
526	pinctrl-names = "default";
527};
528
529&iic1	{
530	status = "okay";
531	pinctrl-0 = <&iic1_pins>;
532	pinctrl-names = "default";
533};
534
535&iic2	{
536	status = "okay";
537	pinctrl-0 = <&iic2_pins>;
538	pinctrl-names = "default";
539
540	clock-frequency = <100000>;
541
542	ak4643: codec@12 {
543		compatible = "asahi-kasei,ak4643";
544		#sound-dai-cells = <0>;
545		reg = <0x12>;
546	};
547
548	composite-in@20 {
549		compatible = "adi,adv7180";
550		reg = <0x20>;
551		remote = <&vin1>;
552
553		port {
554			adv7180: endpoint {
555				bus-width = <8>;
556				remote-endpoint = <&vin1ep0>;
557			};
558		};
559	};
560
561	hdmi@39 {
562		compatible = "adi,adv7511w";
563		reg = <0x39>;
564		interrupt-parent = <&gpio1>;
565		interrupts = <15 IRQ_TYPE_LEVEL_LOW>;
566
567		adi,input-depth = <8>;
568		adi,input-colorspace = "rgb";
569		adi,input-clock = "1x";
570		adi,input-style = <1>;
571		adi,input-justification = "evenly";
572
573		ports {
574			#address-cells = <1>;
575			#size-cells = <0>;
576
577			port@0 {
578				reg = <0>;
579				adv7511_in: endpoint {
580					remote-endpoint = <&du_out_lvds0>;
581				};
582			};
583
584			port@1 {
585				reg = <1>;
586				adv7511_out: endpoint {
587					remote-endpoint = <&hdmi_con>;
588				};
589			};
590		};
591	};
592};
593
594&iic3 {
595	pinctrl-names = "default";
596	pinctrl-0 = <&iic3_pins>;
597	status = "okay";
598
599	pmic@58 {
600		compatible = "dlg,da9063";
601		reg = <0x58>;
602		interrupt-parent = <&irqc0>;
603		interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
604		interrupt-controller;
605
606		rtc {
607			compatible = "dlg,da9063-rtc";
608		};
609
610		wdt {
611			compatible = "dlg,da9063-watchdog";
612		};
613	};
614
615	vdd_dvfs: regulator@68 {
616		compatible = "dlg,da9210";
617		reg = <0x68>;
618		interrupt-parent = <&irqc0>;
619		interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
620
621		regulator-min-microvolt = <1000000>;
622		regulator-max-microvolt = <1000000>;
623		regulator-boot-on;
624		regulator-always-on;
625	};
626};
627
628&pci0 {
629	status = "okay";
630	pinctrl-0 = <&usb0_pins>;
631	pinctrl-names = "default";
632};
633
634&pci1 {
635	status = "okay";
636	pinctrl-0 = <&usb1_pins>;
637	pinctrl-names = "default";
638};
639
640&xhci {
641	status = "okay";
642	pinctrl-0 = <&usb2_pins>;
643	pinctrl-names = "default";
644};
645
646&pci2 {
647	status = "okay";
648	pinctrl-0 = <&usb2_pins>;
649	pinctrl-names = "default";
650};
651
652&hsusb {
653	status = "okay";
654	pinctrl-0 = <&hsusb_pins>;
655	pinctrl-names = "default";
656	renesas,enable-gpio = <&gpio5 18 GPIO_ACTIVE_HIGH>;
657};
658
659&usbphy {
660	status = "okay";
661};
662
663/* composite video input */
664&vin1 {
665	pinctrl-0 = <&vin1_pins>;
666	pinctrl-names = "default";
667
668	status = "okay";
669
670	port {
671		#address-cells = <1>;
672		#size-cells = <0>;
673
674		vin1ep0: endpoint {
675			remote-endpoint = <&adv7180>;
676			bus-width = <8>;
677		};
678	};
679};
680
681&rcar_sound {
682	pinctrl-0 = <&sound_pins &sound_clk_pins>;
683	pinctrl-names = "default";
684
685	/* Single DAI */
686	#sound-dai-cells = <0>;
687
688	status = "okay";
689
690	rcar_sound,dai {
691		dai0 {
692			playback = <&ssi0 &src2 &dvc0>;
693			capture  = <&ssi1 &src3 &dvc1>;
694		};
695	};
696};
697
698&ssi1 {
699	shared-pin;
700};
701