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