xref: /openbmc/u-boot/arch/arm/dts/r8a7791-porter.dts (revision 7d2a0534)
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Device Tree Source for the Porter board
4 *
5 * Copyright (C) 2015 Cogent Embedded, Inc.
6 */
7
8/*
9 * SSI-AK4642
10 *
11 * JP3: 2-1: AK4642
12 *      2-3: ADV7511
13 *
14 * This command is required before playback/capture:
15 *
16 *	amixer set "LINEOUT Mixer DACL" on
17 */
18
19/dts-v1/;
20#include "r8a7791.dtsi"
21#include <dt-bindings/gpio/gpio.h>
22
23/ {
24	model = "Porter";
25	compatible = "renesas,porter", "renesas,r8a7791";
26
27	aliases {
28		serial0 = &scif0;
29		i2c9 = &gpioi2c2;
30		i2c10 = &i2chdmi;
31	};
32
33	chosen {
34		bootargs = "ignore_loglevel rw root=/dev/nfs ip=dhcp";
35		stdout-path = "serial0:115200n8";
36	};
37
38	memory@40000000 {
39		device_type = "memory";
40		reg = <0 0x40000000 0 0x40000000>;
41	};
42
43	memory@200000000 {
44		device_type = "memory";
45		reg = <2 0x00000000 0 0x40000000>;
46	};
47
48	vcc_sdhi0: regulator-vcc-sdhi0 {
49		compatible = "regulator-fixed";
50
51		regulator-name = "SDHI0 Vcc";
52		regulator-min-microvolt = <3300000>;
53		regulator-max-microvolt = <3300000>;
54		regulator-always-on;
55	};
56
57	vccq_sdhi0: regulator-vccq-sdhi0 {
58		compatible = "regulator-gpio";
59
60		regulator-name = "SDHI0 VccQ";
61		regulator-min-microvolt = <1800000>;
62		regulator-max-microvolt = <3300000>;
63
64		gpios = <&gpio2 12 GPIO_ACTIVE_HIGH>;
65		gpios-states = <1>;
66		states = <3300000 1
67			  1800000 0>;
68	};
69
70	vcc_sdhi2: regulator-vcc-sdhi2 {
71		compatible = "regulator-fixed";
72
73		regulator-name = "SDHI2 Vcc";
74		regulator-min-microvolt = <3300000>;
75		regulator-max-microvolt = <3300000>;
76		regulator-always-on;
77	};
78
79	vccq_sdhi2: regulator-vccq-sdhi2 {
80		compatible = "regulator-gpio";
81
82		regulator-name = "SDHI2 VccQ";
83		regulator-min-microvolt = <1800000>;
84		regulator-max-microvolt = <3300000>;
85
86		gpios = <&gpio2 26 GPIO_ACTIVE_HIGH>;
87		gpios-states = <1>;
88		states = <3300000 1
89			  1800000 0>;
90	};
91
92	hdmi-out {
93		compatible = "hdmi-connector";
94		type = "a";
95
96		port {
97			hdmi_con: endpoint {
98				remote-endpoint = <&adv7511_out>;
99			};
100		};
101	};
102
103	x3_clk: x3-clock {
104		compatible = "fixed-clock";
105		#clock-cells = <0>;
106		clock-frequency = <148500000>;
107	};
108
109	x16_clk: x16-clock {
110		compatible = "fixed-clock";
111		#clock-cells = <0>;
112		clock-frequency = <74250000>;
113	};
114
115	x14_clk: audio_clock {
116		compatible = "fixed-clock";
117		#clock-cells = <0>;
118		clock-frequency = <11289600>;
119	};
120
121	sound {
122		compatible = "simple-audio-card";
123
124		simple-audio-card,format = "left_j";
125		simple-audio-card,bitclock-master = <&soundcodec>;
126		simple-audio-card,frame-master = <&soundcodec>;
127
128		simple-audio-card,cpu {
129			sound-dai = <&rcar_sound>;
130		};
131
132		soundcodec: simple-audio-card,codec {
133			sound-dai = <&ak4642>;
134			clocks = <&x14_clk>;
135		};
136	};
137
138	gpioi2c2: i2c-9 {
139		#address-cells = <1>;
140		#size-cells = <0>;
141		compatible = "i2c-gpio";
142		status = "disabled";
143		scl-gpios = <&gpio2 6 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
144		sda-gpios = <&gpio2 7 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
145		i2c-gpio,delay-us = <5>;
146	};
147
148	/*
149	 * A fallback to GPIO is provided for I2C2.
150	 */
151	i2chdmi: i2c-10 {
152		compatible = "i2c-demux-pinctrl";
153		i2c-parent = <&i2c2>, <&gpioi2c2>;
154		i2c-bus-name = "i2c-hdmi";
155		#address-cells = <1>;
156		#size-cells = <0>;
157
158		ak4642: codec@12 {
159			compatible = "asahi-kasei,ak4642";
160			#sound-dai-cells = <0>;
161			reg = <0x12>;
162		};
163
164		composite-in@20 {
165			compatible = "adi,adv7180";
166			reg = <0x20>;
167			remote = <&vin0>;
168
169			port {
170				adv7180: endpoint {
171					bus-width = <8>;
172					remote-endpoint = <&vin0ep>;
173				};
174			};
175		};
176
177		hdmi@39 {
178			compatible = "adi,adv7511w";
179			reg = <0x39>;
180			interrupt-parent = <&gpio3>;
181			interrupts = <29 IRQ_TYPE_LEVEL_LOW>;
182
183			adi,input-depth = <8>;
184			adi,input-colorspace = "rgb";
185			adi,input-clock = "1x";
186			adi,input-style = <1>;
187			adi,input-justification = "evenly";
188
189			ports {
190				#address-cells = <1>;
191				#size-cells = <0>;
192
193				port@0 {
194					reg = <0>;
195					adv7511_in: endpoint {
196						remote-endpoint = <&du_out_rgb>;
197					};
198				};
199
200				port@1 {
201					reg = <1>;
202					adv7511_out: endpoint {
203						remote-endpoint = <&hdmi_con>;
204					};
205				};
206			};
207		};
208	};
209};
210
211&extal_clk {
212	clock-frequency = <20000000>;
213};
214
215&pfc {
216	scif0_pins: scif0 {
217		groups = "scif0_data_d";
218		function = "scif0";
219	};
220
221	ether_pins: ether {
222		groups = "eth_link", "eth_mdio", "eth_rmii";
223		function = "eth";
224	};
225
226	phy1_pins: phy1 {
227		groups = "intc_irq0";
228		function = "intc";
229	};
230
231	sdhi0_pins: sd0 {
232		groups = "sdhi0_data4", "sdhi0_ctrl";
233		function = "sdhi0";
234	};
235
236	sdhi2_pins: sd2 {
237		groups = "sdhi2_data4", "sdhi2_ctrl";
238		function = "sdhi2";
239	};
240
241	qspi_pins: qspi {
242		groups = "qspi_ctrl", "qspi_data4";
243		function = "qspi";
244	};
245
246	i2c2_pins: i2c2 {
247		groups = "i2c2";
248		function = "i2c2";
249	};
250
251	usb0_pins: usb0 {
252		groups = "usb0";
253		function = "usb0";
254	};
255
256	usb1_pins: usb1 {
257		groups = "usb1";
258		function = "usb1";
259	};
260
261	vin0_pins: vin0 {
262		groups = "vin0_data8", "vin0_clk";
263		function = "vin0";
264	};
265
266	can0_pins: can0 {
267		groups = "can0_data";
268		function = "can0";
269	};
270
271	du_pins: du {
272		groups = "du_rgb888", "du_sync", "du_disp", "du_clk_out_0";
273		function = "du";
274	};
275
276	ssi_pins: sound {
277		groups = "ssi0129_ctrl", "ssi0_data", "ssi1_data";
278		function = "ssi";
279	};
280
281	audio_clk_pins: audio_clk {
282		groups = "audio_clk_a";
283		function = "audio_clk";
284	};
285};
286
287&scif0 {
288	pinctrl-0 = <&scif0_pins>;
289	pinctrl-names = "default";
290
291	status = "okay";
292};
293
294&ether {
295	pinctrl-0 = <&ether_pins &phy1_pins>;
296	pinctrl-names = "default";
297
298	phy-handle = <&phy1>;
299	renesas,ether-link-active-low;
300	status = "okay";
301
302	phy1: ethernet-phy@1 {
303		reg = <1>;
304		interrupt-parent = <&irqc0>;
305		interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
306		micrel,led-mode = <1>;
307	};
308};
309
310&sdhi0 {
311	pinctrl-0 = <&sdhi0_pins>;
312	pinctrl-names = "default";
313
314	vmmc-supply = <&vcc_sdhi0>;
315	vqmmc-supply = <&vccq_sdhi0>;
316	cd-gpios = <&gpio6 6 GPIO_ACTIVE_LOW>;
317	wp-gpios = <&gpio6 7 GPIO_ACTIVE_HIGH>;
318	status = "okay";
319};
320
321&sdhi2 {
322	pinctrl-0 = <&sdhi2_pins>;
323	pinctrl-names = "default";
324
325	vmmc-supply = <&vcc_sdhi2>;
326	vqmmc-supply = <&vccq_sdhi2>;
327	cd-gpios = <&gpio6 22 GPIO_ACTIVE_LOW>;
328	status = "okay";
329};
330
331&qspi {
332	pinctrl-0 = <&qspi_pins>;
333	pinctrl-names = "default";
334
335	status = "okay";
336
337	flash@0 {
338		compatible = "spansion,s25fl512s", "jedec,spi-nor";
339		reg = <0>;
340		spi-max-frequency = <30000000>;
341		spi-tx-bus-width = <4>;
342		spi-rx-bus-width = <4>;
343		m25p,fast-read;
344
345		partitions {
346			compatible = "fixed-partitions";
347			#address-cells = <1>;
348			#size-cells = <1>;
349
350			partition@0 {
351				label = "loader_prg";
352				reg = <0x00000000 0x00040000>;
353				read-only;
354			};
355			partition@40000 {
356				label = "user_prg";
357				reg = <0x00040000 0x00400000>;
358				read-only;
359			};
360			partition@440000 {
361				label = "flash_fs";
362				reg = <0x00440000 0x03bc0000>;
363			};
364		};
365	};
366};
367
368&i2c2 {
369	pinctrl-0 = <&i2c2_pins>;
370	pinctrl-names = "i2c-hdmi";
371
372	clock-frequency = <400000>;
373};
374
375&i2c6 {
376	status = "okay";
377	clock-frequency = <400000>;
378};
379
380&sata0 {
381	status = "okay";
382};
383
384/* composite video input */
385&vin0 {
386	status = "okay";
387	pinctrl-0 = <&vin0_pins>;
388	pinctrl-names = "default";
389
390	port {
391		#address-cells = <1>;
392		#size-cells = <0>;
393
394		vin0ep: endpoint {
395			remote-endpoint = <&adv7180>;
396			bus-width = <8>;
397		};
398	};
399};
400
401&pci0 {
402	pinctrl-0 = <&usb0_pins>;
403	pinctrl-names = "default";
404
405	status = "okay";
406};
407
408&pci1 {
409	pinctrl-0 = <&usb1_pins>;
410	pinctrl-names = "default";
411
412	status = "okay";
413};
414
415&hsusb {
416	pinctrl-0 = <&usb0_pins>;
417	pinctrl-names = "default";
418
419	status = "okay";
420};
421
422&usbphy {
423	status = "okay";
424};
425
426&pcie_bus_clk {
427	clock-frequency = <100000000>;
428};
429
430&pciec {
431	status = "okay";
432};
433
434&can0 {
435	pinctrl-0 = <&can0_pins>;
436	pinctrl-names = "default";
437
438	status = "okay";
439};
440
441&du {
442	pinctrl-0 = <&du_pins>;
443	pinctrl-names = "default";
444	status = "okay";
445
446	clocks = <&cpg CPG_MOD 724>, <&cpg CPG_MOD 723>,
447		 <&x3_clk>, <&x16_clk>;
448	clock-names = "du.0", "du.1", "dclkin.0", "dclkin.1";
449
450	ports {
451		port@0 {
452			endpoint {
453				remote-endpoint = <&adv7511_in>;
454			};
455		};
456	};
457};
458
459&lvds0 {
460	status = "okay";
461
462	ports {
463		port@1 {
464			lvds_connector: endpoint {
465			};
466		};
467	};
468};
469
470&rcar_sound {
471	pinctrl-0 = <&ssi_pins &audio_clk_pins>;
472	pinctrl-names = "default";
473	status = "okay";
474
475	/* Single DAI */
476	#sound-dai-cells = <0>;
477
478	rcar_sound,dai {
479		dai0 {
480			playback = <&ssi0>;
481			capture  = <&ssi1>;
482		};
483	};
484};
485
486&ssi1 {
487	shared-pin;
488};
489