1*4157c472SMarek Vasut/*
2*4157c472SMarek Vasut * Device Tree Source for the Salvator-X board
3*4157c472SMarek Vasut *
4*4157c472SMarek Vasut * Copyright (C) 2016 Renesas Electronics Corp.
5*4157c472SMarek Vasut *
6*4157c472SMarek Vasut * This file is licensed under the terms of the GNU General Public License
7*4157c472SMarek Vasut * version 2.  This program is licensed "as is" without any warranty of any
8*4157c472SMarek Vasut * kind, whether express or implied.
9*4157c472SMarek Vasut */
10*4157c472SMarek Vasut
11*4157c472SMarek Vasut/dts-v1/;
12*4157c472SMarek Vasut#include "r8a7796.dtsi"
13*4157c472SMarek Vasut#include <dt-bindings/gpio/gpio.h>
14*4157c472SMarek Vasut
15*4157c472SMarek Vasut/ {
16*4157c472SMarek Vasut	model = "Renesas Salvator-X board based on r8a7796";
17*4157c472SMarek Vasut	compatible = "renesas,salvator-x", "renesas,r8a7796";
18*4157c472SMarek Vasut
19*4157c472SMarek Vasut	aliases {
20*4157c472SMarek Vasut		serial0 = &scif2;
21*4157c472SMarek Vasut		serial1 = &scif1;
22*4157c472SMarek Vasut		ethernet0 = &avb;
23*4157c472SMarek Vasut	};
24*4157c472SMarek Vasut
25*4157c472SMarek Vasut	chosen {
26*4157c472SMarek Vasut		bootargs = "ignore_loglevel";
27*4157c472SMarek Vasut		stdout-path = "serial0:115200n8";
28*4157c472SMarek Vasut	};
29*4157c472SMarek Vasut
30*4157c472SMarek Vasut	memory@48000000 {
31*4157c472SMarek Vasut		device_type = "memory";
32*4157c472SMarek Vasut		/* first 128MB is reserved for secure area. */
33*4157c472SMarek Vasut		reg = <0x0 0x48000000 0x0 0x78000000>;
34*4157c472SMarek Vasut	};
35*4157c472SMarek Vasut
36*4157c472SMarek Vasut	memory@600000000 {
37*4157c472SMarek Vasut		device_type = "memory";
38*4157c472SMarek Vasut		reg = <0x6 0x00000000 0x0 0x80000000>;
39*4157c472SMarek Vasut	};
40*4157c472SMarek Vasut
41*4157c472SMarek Vasut	reg_1p8v: regulator0 {
42*4157c472SMarek Vasut		compatible = "regulator-fixed";
43*4157c472SMarek Vasut		regulator-name = "fixed-1.8V";
44*4157c472SMarek Vasut		regulator-min-microvolt = <1800000>;
45*4157c472SMarek Vasut		regulator-max-microvolt = <1800000>;
46*4157c472SMarek Vasut		regulator-boot-on;
47*4157c472SMarek Vasut		regulator-always-on;
48*4157c472SMarek Vasut	};
49*4157c472SMarek Vasut
50*4157c472SMarek Vasut	reg_3p3v: regulator1 {
51*4157c472SMarek Vasut		compatible = "regulator-fixed";
52*4157c472SMarek Vasut		regulator-name = "fixed-3.3V";
53*4157c472SMarek Vasut		regulator-min-microvolt = <3300000>;
54*4157c472SMarek Vasut		regulator-max-microvolt = <3300000>;
55*4157c472SMarek Vasut		regulator-boot-on;
56*4157c472SMarek Vasut		regulator-always-on;
57*4157c472SMarek Vasut	};
58*4157c472SMarek Vasut
59*4157c472SMarek Vasut	vcc_sdhi0: regulator-vcc-sdhi0 {
60*4157c472SMarek Vasut		compatible = "regulator-fixed";
61*4157c472SMarek Vasut
62*4157c472SMarek Vasut		regulator-name = "SDHI0 Vcc";
63*4157c472SMarek Vasut		regulator-min-microvolt = <3300000>;
64*4157c472SMarek Vasut		regulator-max-microvolt = <3300000>;
65*4157c472SMarek Vasut
66*4157c472SMarek Vasut		gpio = <&gpio5 2 GPIO_ACTIVE_HIGH>;
67*4157c472SMarek Vasut		enable-active-high;
68*4157c472SMarek Vasut	};
69*4157c472SMarek Vasut
70*4157c472SMarek Vasut	vccq_sdhi0: regulator-vccq-sdhi0 {
71*4157c472SMarek Vasut		compatible = "regulator-gpio";
72*4157c472SMarek Vasut
73*4157c472SMarek Vasut		regulator-name = "SDHI0 VccQ";
74*4157c472SMarek Vasut		regulator-min-microvolt = <1800000>;
75*4157c472SMarek Vasut		regulator-max-microvolt = <3300000>;
76*4157c472SMarek Vasut
77*4157c472SMarek Vasut		gpios = <&gpio5 1 GPIO_ACTIVE_HIGH>;
78*4157c472SMarek Vasut		gpios-states = <1>;
79*4157c472SMarek Vasut		states = <3300000 1
80*4157c472SMarek Vasut			  1800000 0>;
81*4157c472SMarek Vasut	};
82*4157c472SMarek Vasut
83*4157c472SMarek Vasut	vcc_sdhi3: regulator-vcc-sdhi3 {
84*4157c472SMarek Vasut		compatible = "regulator-fixed";
85*4157c472SMarek Vasut
86*4157c472SMarek Vasut		regulator-name = "SDHI3 Vcc";
87*4157c472SMarek Vasut		regulator-min-microvolt = <3300000>;
88*4157c472SMarek Vasut		regulator-max-microvolt = <3300000>;
89*4157c472SMarek Vasut
90*4157c472SMarek Vasut		gpio = <&gpio3 15 GPIO_ACTIVE_HIGH>;
91*4157c472SMarek Vasut		enable-active-high;
92*4157c472SMarek Vasut	};
93*4157c472SMarek Vasut
94*4157c472SMarek Vasut	vccq_sdhi3: regulator-vccq-sdhi3 {
95*4157c472SMarek Vasut		compatible = "regulator-gpio";
96*4157c472SMarek Vasut
97*4157c472SMarek Vasut		regulator-name = "SDHI3 VccQ";
98*4157c472SMarek Vasut		regulator-min-microvolt = <1800000>;
99*4157c472SMarek Vasut		regulator-max-microvolt = <3300000>;
100*4157c472SMarek Vasut
101*4157c472SMarek Vasut		gpios = <&gpio3 14 GPIO_ACTIVE_HIGH>;
102*4157c472SMarek Vasut		gpios-states = <1>;
103*4157c472SMarek Vasut		states = <3300000 1
104*4157c472SMarek Vasut			  1800000 0>;
105*4157c472SMarek Vasut	};
106*4157c472SMarek Vasut};
107*4157c472SMarek Vasut
108*4157c472SMarek Vasut&pfc {
109*4157c472SMarek Vasut	pinctrl-0 = <&scif_clk_pins>;
110*4157c472SMarek Vasut	pinctrl-names = "default";
111*4157c472SMarek Vasut
112*4157c472SMarek Vasut	avb_pins: avb {
113*4157c472SMarek Vasut		groups = "avb_mdc";
114*4157c472SMarek Vasut		function = "avb";
115*4157c472SMarek Vasut	};
116*4157c472SMarek Vasut
117*4157c472SMarek Vasut	scif1_pins: scif1 {
118*4157c472SMarek Vasut		groups = "scif1_data_a", "scif1_ctrl";
119*4157c472SMarek Vasut		function = "scif1";
120*4157c472SMarek Vasut	};
121*4157c472SMarek Vasut
122*4157c472SMarek Vasut	scif2_pins: scif2 {
123*4157c472SMarek Vasut		groups = "scif2_data_a";
124*4157c472SMarek Vasut		function = "scif2";
125*4157c472SMarek Vasut	};
126*4157c472SMarek Vasut	scif_clk_pins: scif_clk {
127*4157c472SMarek Vasut		groups = "scif_clk_a";
128*4157c472SMarek Vasut		function = "scif_clk";
129*4157c472SMarek Vasut	};
130*4157c472SMarek Vasut
131*4157c472SMarek Vasut	i2c2_pins: i2c2 {
132*4157c472SMarek Vasut		groups = "i2c2_a";
133*4157c472SMarek Vasut		function = "i2c2";
134*4157c472SMarek Vasut	};
135*4157c472SMarek Vasut
136*4157c472SMarek Vasut	sdhi0_pins: sd0 {
137*4157c472SMarek Vasut		groups = "sdhi0_data4", "sdhi0_ctrl";
138*4157c472SMarek Vasut		function = "sdhi0";
139*4157c472SMarek Vasut		power-source = <3300>;
140*4157c472SMarek Vasut	};
141*4157c472SMarek Vasut
142*4157c472SMarek Vasut	sdhi0_pins_uhs: sd0_uhs {
143*4157c472SMarek Vasut		groups = "sdhi0_data4", "sdhi0_ctrl";
144*4157c472SMarek Vasut		function = "sdhi0";
145*4157c472SMarek Vasut		power-source = <1800>;
146*4157c472SMarek Vasut	};
147*4157c472SMarek Vasut
148*4157c472SMarek Vasut	sdhi2_pins: sd2 {
149*4157c472SMarek Vasut		groups = "sdhi2_data8", "sdhi2_ctrl";
150*4157c472SMarek Vasut		function = "sdhi2";
151*4157c472SMarek Vasut		power-source = <3300>;
152*4157c472SMarek Vasut	};
153*4157c472SMarek Vasut
154*4157c472SMarek Vasut	sdhi2_pins_uhs: sd2_uhs {
155*4157c472SMarek Vasut		groups = "sdhi2_data8", "sdhi2_ctrl";
156*4157c472SMarek Vasut		function = "sdhi2";
157*4157c472SMarek Vasut		power-source = <1800>;
158*4157c472SMarek Vasut	};
159*4157c472SMarek Vasut
160*4157c472SMarek Vasut	sdhi3_pins: sd3 {
161*4157c472SMarek Vasut		groups = "sdhi3_data4", "sdhi3_ctrl";
162*4157c472SMarek Vasut		function = "sdhi3";
163*4157c472SMarek Vasut		power-source = <3300>;
164*4157c472SMarek Vasut	};
165*4157c472SMarek Vasut
166*4157c472SMarek Vasut	sdhi3_pins_uhs: sd3_uhs {
167*4157c472SMarek Vasut		groups = "sdhi3_data4", "sdhi3_ctrl";
168*4157c472SMarek Vasut		function = "sdhi3";
169*4157c472SMarek Vasut		power-source = <1800>;
170*4157c472SMarek Vasut	};
171*4157c472SMarek Vasut};
172*4157c472SMarek Vasut
173*4157c472SMarek Vasut&avb {
174*4157c472SMarek Vasut	pinctrl-0 = <&avb_pins>;
175*4157c472SMarek Vasut	pinctrl-names = "default";
176*4157c472SMarek Vasut	renesas,no-ether-link;
177*4157c472SMarek Vasut	phy-handle = <&phy0>;
178*4157c472SMarek Vasut	status = "okay";
179*4157c472SMarek Vasut
180*4157c472SMarek Vasut	phy0: ethernet-phy@0 {
181*4157c472SMarek Vasut		rxc-skew-ps = <1500>;
182*4157c472SMarek Vasut		reg = <0>;
183*4157c472SMarek Vasut		interrupt-parent = <&gpio2>;
184*4157c472SMarek Vasut		interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
185*4157c472SMarek Vasut	};
186*4157c472SMarek Vasut};
187*4157c472SMarek Vasut
188*4157c472SMarek Vasut&extal_clk {
189*4157c472SMarek Vasut	clock-frequency = <16666666>;
190*4157c472SMarek Vasut};
191*4157c472SMarek Vasut
192*4157c472SMarek Vasut&extalr_clk {
193*4157c472SMarek Vasut	clock-frequency = <32768>;
194*4157c472SMarek Vasut};
195*4157c472SMarek Vasut
196*4157c472SMarek Vasut&sdhi0 {
197*4157c472SMarek Vasut	pinctrl-0 = <&sdhi0_pins>;
198*4157c472SMarek Vasut	pinctrl-1 = <&sdhi0_pins_uhs>;
199*4157c472SMarek Vasut	pinctrl-names = "default", "state_uhs";
200*4157c472SMarek Vasut
201*4157c472SMarek Vasut	vmmc-supply = <&vcc_sdhi0>;
202*4157c472SMarek Vasut	vqmmc-supply = <&vccq_sdhi0>;
203*4157c472SMarek Vasut	cd-gpios = <&gpio3 12 GPIO_ACTIVE_LOW>;
204*4157c472SMarek Vasut	wp-gpios = <&gpio3 13 GPIO_ACTIVE_HIGH>;
205*4157c472SMarek Vasut	bus-width = <4>;
206*4157c472SMarek Vasut	sd-uhs-sdr50;
207*4157c472SMarek Vasut	status = "okay";
208*4157c472SMarek Vasut};
209*4157c472SMarek Vasut
210*4157c472SMarek Vasut&sdhi2 {
211*4157c472SMarek Vasut	/* used for on-board 8bit eMMC */
212*4157c472SMarek Vasut	pinctrl-0 = <&sdhi2_pins>;
213*4157c472SMarek Vasut	pinctrl-1 = <&sdhi2_pins_uhs>;
214*4157c472SMarek Vasut	pinctrl-names = "default", "state_uhs";
215*4157c472SMarek Vasut
216*4157c472SMarek Vasut	vmmc-supply = <&reg_3p3v>;
217*4157c472SMarek Vasut	vqmmc-supply = <&reg_1p8v>;
218*4157c472SMarek Vasut	bus-width = <8>;
219*4157c472SMarek Vasut	non-removable;
220*4157c472SMarek Vasut	status = "okay";
221*4157c472SMarek Vasut};
222*4157c472SMarek Vasut
223*4157c472SMarek Vasut&sdhi3 {
224*4157c472SMarek Vasut	pinctrl-0 = <&sdhi3_pins>;
225*4157c472SMarek Vasut	pinctrl-1 = <&sdhi3_pins_uhs>;
226*4157c472SMarek Vasut	pinctrl-names = "default", "state_uhs";
227*4157c472SMarek Vasut
228*4157c472SMarek Vasut	vmmc-supply = <&vcc_sdhi3>;
229*4157c472SMarek Vasut	vqmmc-supply = <&vccq_sdhi3>;
230*4157c472SMarek Vasut	cd-gpios = <&gpio4 15 GPIO_ACTIVE_LOW>;
231*4157c472SMarek Vasut	wp-gpios = <&gpio4 16 GPIO_ACTIVE_HIGH>;
232*4157c472SMarek Vasut	bus-width = <4>;
233*4157c472SMarek Vasut	sd-uhs-sdr50;
234*4157c472SMarek Vasut	status = "okay";
235*4157c472SMarek Vasut};
236*4157c472SMarek Vasut
237*4157c472SMarek Vasut&scif1 {
238*4157c472SMarek Vasut	pinctrl-0 = <&scif1_pins>;
239*4157c472SMarek Vasut	pinctrl-names = "default";
240*4157c472SMarek Vasut
241*4157c472SMarek Vasut	uart-has-rtscts;
242*4157c472SMarek Vasut	status = "okay";
243*4157c472SMarek Vasut};
244*4157c472SMarek Vasut
245*4157c472SMarek Vasut&scif2 {
246*4157c472SMarek Vasut	pinctrl-0 = <&scif2_pins>;
247*4157c472SMarek Vasut	pinctrl-names = "default";
248*4157c472SMarek Vasut	status = "okay";
249*4157c472SMarek Vasut};
250*4157c472SMarek Vasut
251*4157c472SMarek Vasut&scif_clk {
252*4157c472SMarek Vasut	clock-frequency = <14745600>;
253*4157c472SMarek Vasut};
254*4157c472SMarek Vasut
255*4157c472SMarek Vasut&i2c2 {
256*4157c472SMarek Vasut	pinctrl-0 = <&i2c2_pins>;
257*4157c472SMarek Vasut	pinctrl-names = "default";
258*4157c472SMarek Vasut
259*4157c472SMarek Vasut	status = "okay";
260*4157c472SMarek Vasut};
261*4157c472SMarek Vasut
262*4157c472SMarek Vasut&wdt0 {
263*4157c472SMarek Vasut	timeout-sec = <60>;
264*4157c472SMarek Vasut	status = "okay";
265*4157c472SMarek Vasut};
266*4157c472SMarek Vasut
267*4157c472SMarek Vasut&i2c_dvfs {
268*4157c472SMarek Vasut	status = "okay";
269*4157c472SMarek Vasut};
270