1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Device Tree Source for the SILK board
4 *
5 * Copyright (C) 2014 Renesas Electronics Corporation
6 * Copyright (C) 2014-2015 Renesas Solutions Corp.
7 * Copyright (C) 2014-2015 Cogent Embedded, Inc.
8 */
9
10/*
11 * SSI-AK4643
12 *
13 * SW1: 2-1: AK4643
14 *      2-3: ADV7511
15 *
16 * This command is required before playback/capture:
17 *
18 *	amixer set "LINEOUT Mixer DACL" on
19 */
20
21/dts-v1/;
22#include "r8a7794.dtsi"
23#include <dt-bindings/gpio/gpio.h>
24#include <dt-bindings/input/input.h>
25
26/ {
27	model = "SILK";
28	compatible = "renesas,silk", "renesas,r8a7794";
29
30	aliases {
31		serial0 = &scif2;
32		i2c9 = &gpioi2c1;
33		i2c10 = &i2chdmi;
34		mmc0 = &mmcif0;
35		mmc1 = &sdhi1;
36	};
37
38	chosen {
39		bootargs = "ignore_loglevel rw root=/dev/nfs ip=on";
40		stdout-path = "serial0:115200n8";
41	};
42
43	memory@40000000 {
44		device_type = "memory";
45		reg = <0 0x40000000 0 0x40000000>;
46	};
47
48	keyboard {
49		compatible = "gpio-keys";
50
51		pinctrl-0 = <&keyboard_pins>;
52		pinctrl-names = "default";
53
54		key-3 {
55			gpios = <&gpio5 10 GPIO_ACTIVE_LOW>;
56			linux,code = <KEY_3>;
57			label = "SW3";
58			wakeup-source;
59			debounce-interval = <20>;
60		};
61		key-4 {
62			gpios = <&gpio5 11 GPIO_ACTIVE_LOW>;
63			linux,code = <KEY_4>;
64			label = "SW4";
65			wakeup-source;
66			debounce-interval = <20>;
67		};
68		key-6 {
69			gpios = <&gpio5 12 GPIO_ACTIVE_LOW>;
70			linux,code = <KEY_6>;
71			label = "SW6";
72			wakeup-source;
73			debounce-interval = <20>;
74		};
75		key-a {
76			gpios = <&gpio3 9 GPIO_ACTIVE_LOW>;
77			linux,code = <KEY_A>;
78			label = "SW12-1";
79			wakeup-source;
80			debounce-interval = <20>;
81		};
82		key-b {
83			gpios = <&gpio3 10 GPIO_ACTIVE_LOW>;
84			linux,code = <KEY_B>;
85			label = "SW12-2";
86			wakeup-source;
87			debounce-interval = <20>;
88		};
89		key-c {
90			gpios = <&gpio3 11 GPIO_ACTIVE_LOW>;
91			linux,code = <KEY_C>;
92			label = "SW12-3";
93			wakeup-source;
94			debounce-interval = <20>;
95		};
96		key-d {
97			gpios = <&gpio3 12 GPIO_ACTIVE_LOW>;
98			linux,code = <KEY_D>;
99			label = "SW12-4";
100			wakeup-source;
101			debounce-interval = <20>;
102		};
103	};
104
105	d3_3v: regulator-d3-3v {
106		compatible = "regulator-fixed";
107		regulator-name = "D3.3V";
108		regulator-min-microvolt = <3300000>;
109		regulator-max-microvolt = <3300000>;
110		regulator-boot-on;
111		regulator-always-on;
112	};
113
114	vcc_sdhi1: regulator-vcc-sdhi1 {
115		compatible = "regulator-fixed";
116
117		regulator-name = "SDHI1 Vcc";
118		regulator-min-microvolt = <3300000>;
119		regulator-max-microvolt = <3300000>;
120
121		gpio = <&gpio4 26 GPIO_ACTIVE_HIGH>;
122		enable-active-high;
123	};
124
125	vccq_sdhi1: regulator-vccq-sdhi1 {
126		compatible = "regulator-gpio";
127
128		regulator-name = "SDHI1 VccQ";
129		regulator-min-microvolt = <1800000>;
130		regulator-max-microvolt = <3300000>;
131
132		gpios = <&gpio4 29 GPIO_ACTIVE_HIGH>;
133		gpios-states = <1>;
134		states = <3300000 1>, <1800000 0>;
135	};
136
137	vga-encoder {
138		compatible = "adi,adv7123";
139
140		ports {
141			#address-cells = <1>;
142			#size-cells = <0>;
143
144			port@0 {
145				reg = <0>;
146				adv7123_in: endpoint {
147					remote-endpoint = <&du_out_rgb1>;
148				};
149			};
150			port@1 {
151				reg = <1>;
152				adv7123_out: endpoint {
153					remote-endpoint = <&vga_in>;
154				};
155			};
156		};
157	};
158
159	hdmi-out {
160		compatible = "hdmi-connector";
161		type = "a";
162
163		port {
164			hdmi_con: endpoint {
165				remote-endpoint = <&adv7511_out>;
166			};
167		};
168	};
169
170	vga {
171		compatible = "vga-connector";
172
173		port {
174			vga_in: endpoint {
175				remote-endpoint = <&adv7123_out>;
176			};
177		};
178	};
179
180	x2_clk: x2-clock {
181		compatible = "fixed-clock";
182		#clock-cells = <0>;
183		clock-frequency = <148500000>;
184	};
185
186	x3_clk: x3-clock {
187		compatible = "fixed-clock";
188		#clock-cells = <0>;
189		clock-frequency = <74250000>;
190	};
191
192	x9_clk: audio_clock {
193		compatible = "fixed-clock";
194		#clock-cells = <0>;
195		clock-frequency = <12288000>;
196	};
197
198	sound {
199		compatible = "simple-audio-card";
200
201		simple-audio-card,format = "left_j";
202		simple-audio-card,bitclock-master = <&soundcodec>;
203		simple-audio-card,frame-master = <&soundcodec>;
204
205		simple-audio-card,cpu {
206			sound-dai = <&rcar_sound>;
207		};
208
209		soundcodec: simple-audio-card,codec {
210			sound-dai = <&ak4643>;
211			clocks = <&x9_clk>;
212		};
213	};
214
215	gpioi2c1: i2c-9 {
216		#address-cells = <1>;
217		#size-cells = <0>;
218		compatible = "i2c-gpio";
219		status = "disabled";
220		scl-gpios = <&gpio4 0 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
221		sda-gpios = <&gpio4 1 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
222		i2c-gpio,delay-us = <5>;
223	};
224
225	/*
226	 * A fallback to GPIO is provided for I2C1.
227	 */
228	i2chdmi: i2c-10 {
229		compatible = "i2c-demux-pinctrl";
230		i2c-parent = <&i2c1>, <&gpioi2c1>;
231		i2c-bus-name = "i2c-hdmi";
232		#address-cells = <1>;
233		#size-cells = <0>;
234
235		ak4643: codec@12 {
236			compatible = "asahi-kasei,ak4643";
237			#sound-dai-cells = <0>;
238			reg = <0x12>;
239		};
240
241		composite-in@20 {
242			compatible = "adi,adv7180";
243			reg = <0x20>;
244
245			port {
246				adv7180: endpoint {
247					bus-width = <8>;
248					remote-endpoint = <&vin0ep>;
249				};
250			};
251		};
252
253		hdmi@39 {
254			compatible = "adi,adv7511w";
255			reg = <0x39>;
256			interrupt-parent = <&gpio5>;
257			interrupts = <23 IRQ_TYPE_LEVEL_LOW>;
258
259			adi,input-depth = <8>;
260			adi,input-colorspace = "rgb";
261			adi,input-clock = "1x";
262
263			ports {
264				#address-cells = <1>;
265				#size-cells = <0>;
266
267				port@0 {
268					reg = <0>;
269					adv7511_in: endpoint {
270						remote-endpoint = <&du_out_rgb0>;
271					};
272				};
273
274				port@1 {
275					reg = <1>;
276					adv7511_out: endpoint {
277						remote-endpoint = <&hdmi_con>;
278					};
279				};
280			};
281		};
282
283		eeprom@50 {
284			compatible = "renesas,r1ex24002", "atmel,24c02";
285			reg = <0x50>;
286			pagesize = <16>;
287		};
288	};
289};
290
291&extal_clk {
292	clock-frequency = <20000000>;
293};
294
295&pfc {
296	pinctrl-0 = <&scif_clk_pins>;
297	pinctrl-names = "default";
298
299	scif2_pins: scif2 {
300		groups = "scif2_data";
301		function = "scif2";
302	};
303
304	scif_clk_pins: scif_clk {
305		groups = "scif_clk";
306		function = "scif_clk";
307	};
308
309	ether_pins: ether {
310		groups = "eth_link", "eth_mdio", "eth_rmii";
311		function = "eth";
312	};
313
314	phy1_pins: phy1 {
315		groups = "intc_irq8";
316		function = "intc";
317	};
318
319	i2c1_pins: i2c1 {
320		groups = "i2c1";
321		function = "i2c1";
322	};
323
324	mmcif0_pins: mmcif0 {
325		groups = "mmc_data8", "mmc_ctrl";
326		function = "mmc";
327	};
328
329	sdhi1_pins: sd1 {
330		groups = "sdhi1_data4", "sdhi1_ctrl";
331		function = "sdhi1";
332	};
333
334	qspi_pins: qspi {
335		groups = "qspi_ctrl", "qspi_data4";
336		function = "qspi";
337	};
338
339	vin0_pins: vin0 {
340		groups = "vin0_data8", "vin0_clk";
341		function = "vin0";
342	};
343
344	usb0_pins: usb0 {
345		groups = "usb0";
346		function = "usb0";
347	};
348
349	usb1_pins: usb1 {
350		groups = "usb1";
351		function = "usb1";
352	};
353
354	du0_pins: du0 {
355		groups = "du0_rgb888", "du0_sync", "du0_disp", "du0_clk0_out";
356		function = "du0";
357	};
358
359	du1_pins: du1 {
360		groups = "du1_rgb666", "du1_sync", "du1_disp", "du1_clk0_out";
361		function = "du1";
362	};
363
364	keyboard_pins: keyboard {
365		pins = "GP_3_9", "GP_3_10", "GP_3_11", "GP_3_12";
366		bias-pull-up;
367	};
368
369	ssi_pins: sound {
370		groups = "ssi0129_ctrl", "ssi0_data", "ssi1_data";
371		function = "ssi";
372	};
373
374	audio_clk_pins: audio_clk {
375		groups = "audio_clkc";
376		function = "audio_clk";
377	};
378};
379
380&scif2 {
381	pinctrl-0 = <&scif2_pins>;
382	pinctrl-names = "default";
383
384	status = "okay";
385};
386
387&scif_clk {
388	clock-frequency = <14745600>;
389};
390
391&ether {
392	pinctrl-0 = <&ether_pins>, <&phy1_pins>;
393	pinctrl-names = "default";
394
395	phy-handle = <&phy1>;
396	renesas,ether-link-active-low;
397	status = "okay";
398
399	phy1: ethernet-phy@1 {
400		compatible = "ethernet-phy-id0022.1537",
401			     "ethernet-phy-ieee802.3-c22";
402		reg = <1>;
403		interrupt-parent = <&irqc0>;
404		interrupts = <8 IRQ_TYPE_LEVEL_LOW>;
405		micrel,led-mode = <1>;
406		reset-gpios = <&gpio1 24 GPIO_ACTIVE_LOW>;
407	};
408};
409
410&i2c1 {
411	pinctrl-0 = <&i2c1_pins>;
412	pinctrl-names = "i2c-hdmi";
413
414	clock-frequency = <400000>;
415};
416
417&i2c7 {
418	status = "okay";
419	clock-frequency = <100000>;
420
421	pmic@58 {
422		compatible = "dlg,da9063";
423		reg = <0x58>;
424		interrupt-parent = <&gpio3>;
425		interrupts = <31 IRQ_TYPE_LEVEL_LOW>;
426		interrupt-controller;
427
428		onkey {
429			compatible = "dlg,da9063-onkey";
430		};
431
432		rtc {
433			compatible = "dlg,da9063-rtc";
434		};
435
436		watchdog {
437			compatible = "dlg,da9063-watchdog";
438		};
439	};
440};
441
442&mmcif0 {
443	pinctrl-0 = <&mmcif0_pins>;
444	pinctrl-names = "default";
445
446	vmmc-supply = <&d3_3v>;
447	vqmmc-supply = <&d3_3v>;
448	bus-width = <8>;
449	non-removable;
450	status = "okay";
451};
452
453&sdhi1 {
454	pinctrl-0 = <&sdhi1_pins>;
455	pinctrl-names = "default";
456
457	vmmc-supply = <&vcc_sdhi1>;
458	vqmmc-supply = <&vccq_sdhi1>;
459	cd-gpios = <&gpio6 14 GPIO_ACTIVE_LOW>;
460	status = "okay";
461};
462
463&qspi {
464	pinctrl-0 = <&qspi_pins>;
465	pinctrl-names = "default";
466
467	status = "okay";
468
469	flash@0 {
470		compatible = "spansion,s25fl512s", "jedec,spi-nor";
471		reg = <0>;
472		spi-max-frequency = <30000000>;
473		spi-tx-bus-width = <4>;
474		spi-rx-bus-width = <4>;
475		spi-cpol;
476		spi-cpha;
477		m25p,fast-read;
478
479		partitions {
480			compatible = "fixed-partitions";
481			#address-cells = <1>;
482			#size-cells = <1>;
483
484			partition@0 {
485				label = "loader";
486				reg = <0x00000000 0x00040000>;
487				read-only;
488			};
489			partition@40000 {
490				label = "user";
491				reg = <0x00040000 0x00400000>;
492				read-only;
493			};
494			partition@440000 {
495				label = "flash";
496				reg = <0x00440000 0x03bc0000>;
497			};
498		};
499	};
500};
501
502/* composite video input */
503&vin0 {
504	status = "okay";
505	pinctrl-0 = <&vin0_pins>;
506	pinctrl-names = "default";
507
508	port {
509		vin0ep: endpoint {
510			remote-endpoint = <&adv7180>;
511			bus-width = <8>;
512		};
513	};
514};
515
516&pci0 {
517	status = "okay";
518	pinctrl-0 = <&usb0_pins>;
519	pinctrl-names = "default";
520};
521
522&pci1 {
523	status = "okay";
524	pinctrl-0 = <&usb1_pins>;
525	pinctrl-names = "default";
526};
527
528&usbphy {
529	status = "okay";
530};
531
532&du {
533	pinctrl-0 = <&du0_pins>, <&du1_pins>;
534	pinctrl-names = "default";
535	status = "okay";
536
537	clocks = <&cpg CPG_MOD 724>, <&cpg CPG_MOD 723>,
538		 <&x2_clk>, <&x3_clk>;
539	clock-names = "du.0", "du.1", "dclkin.0", "dclkin.1";
540
541	ports {
542		port@0 {
543			endpoint {
544				remote-endpoint = <&adv7511_in>;
545			};
546		};
547		port@1 {
548			endpoint {
549				remote-endpoint = <&adv7123_in>;
550			};
551		};
552	};
553};
554
555&rcar_sound {
556	pinctrl-0 = <&ssi_pins>, <&audio_clk_pins>;
557	pinctrl-names = "default";
558	status = "okay";
559
560	/* Single DAI */
561	#sound-dai-cells = <0>;
562
563	rcar_sound,dai {
564		dai0 {
565			playback = <&ssi0>;
566			capture  = <&ssi1>;
567		};
568	};
569};
570
571&rwdt {
572	timeout-sec = <60>;
573	status = "okay";
574};
575
576&ssi1 {
577	shared-pin;
578};
579