xref: /openbmc/u-boot/arch/arm/dts/ulcb.dtsi (revision baefb63a)
1/*
2 * Device Tree Source for the R-Car Gen3 ULCB board
3 *
4 * Copyright (C) 2016 Renesas Electronics Corp.
5 * Copyright (C) 2016 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#include <dt-bindings/gpio/gpio.h>
13#include <dt-bindings/input/input.h>
14
15/ {
16	model = "Renesas R-Car Gen3 ULCB board";
17
18	aliases {
19		serial0 = &scif2;
20		ethernet0 = &avb;
21	};
22
23	chosen {
24		stdout-path = "serial0:115200n8";
25	};
26
27	cpld {
28		compatible = "renesas,ulcb-cpld";
29		status = "okay";
30		gpio-sck = <&gpio6 8 0>;
31		gpio-mosi = <&gpio6 7 0>;
32		gpio-miso = <&gpio6 10 0>;
33		gpio-sstbz = <&gpio2 3 0>;
34	};
35
36	audio_clkout: audio-clkout {
37		/*
38		 * This is same as <&rcar_sound 0>
39		 * but needed to avoid cs2000/rcar_sound probe dead-lock
40		 */
41		compatible = "fixed-clock";
42		#clock-cells = <0>;
43		clock-frequency = <11289600>;
44	};
45
46	keyboard {
47		compatible = "gpio-keys";
48
49		key-1 {
50			linux,code = <KEY_1>;
51			label = "SW3";
52			wakeup-source;
53			debounce-interval = <20>;
54			gpios = <&gpio6 11 GPIO_ACTIVE_LOW>;
55		};
56	};
57
58	leds {
59		compatible = "gpio-leds";
60
61		led5 {
62			gpios = <&gpio6 12 GPIO_ACTIVE_HIGH>;
63		};
64		led6 {
65			gpios = <&gpio6 13 GPIO_ACTIVE_HIGH>;
66		};
67	};
68
69	reg_1p8v: regulator0 {
70		compatible = "regulator-fixed";
71		regulator-name = "fixed-1.8V";
72		regulator-min-microvolt = <1800000>;
73		regulator-max-microvolt = <1800000>;
74		regulator-boot-on;
75		regulator-always-on;
76	};
77
78	reg_3p3v: regulator1 {
79		compatible = "regulator-fixed";
80		regulator-name = "fixed-3.3V";
81		regulator-min-microvolt = <3300000>;
82		regulator-max-microvolt = <3300000>;
83		regulator-boot-on;
84		regulator-always-on;
85	};
86
87	rsnd_ak4613: sound {
88		compatible = "simple-audio-card";
89
90		simple-audio-card,format = "left_j";
91		simple-audio-card,bitclock-master = <&sndcpu>;
92		simple-audio-card,frame-master = <&sndcpu>;
93
94		sndcpu: simple-audio-card,cpu {
95			sound-dai = <&rcar_sound>;
96		};
97
98		sndcodec: simple-audio-card,codec {
99			sound-dai = <&ak4613>;
100		};
101	};
102
103	vcc_sdhi0: regulator-vcc-sdhi0 {
104		compatible = "regulator-fixed";
105
106		regulator-name = "SDHI0 Vcc";
107		regulator-min-microvolt = <3300000>;
108		regulator-max-microvolt = <3300000>;
109
110		gpio = <&gpio5 2 GPIO_ACTIVE_HIGH>;
111		enable-active-high;
112	};
113
114	vccq_sdhi0: regulator-vccq-sdhi0 {
115		compatible = "regulator-gpio";
116
117		regulator-name = "SDHI0 VccQ";
118		regulator-min-microvolt = <1800000>;
119		regulator-max-microvolt = <3300000>;
120
121		gpios = <&gpio5 1 GPIO_ACTIVE_HIGH>;
122		gpios-states = <1>;
123		states = <3300000 1
124			  1800000 0>;
125	};
126
127	x12_clk: x12 {
128		compatible = "fixed-clock";
129		#clock-cells = <0>;
130		clock-frequency = <24576000>;
131	};
132};
133
134&audio_clk_a {
135	clock-frequency = <22579200>;
136};
137
138&avb {
139	pinctrl-0 = <&avb_pins>;
140	pinctrl-names = "default";
141	renesas,no-ether-link;
142	phy-handle = <&phy0>;
143	reset-gpios = <&gpio2 10 GPIO_ACTIVE_LOW>;
144	status = "okay";
145
146	phy0: ethernet-phy@0 {
147		rxc-skew-ps = <1500>;
148		reg = <0>;
149		interrupt-parent = <&gpio2>;
150		interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
151	};
152};
153
154&ehci1 {
155	status = "okay";
156};
157
158&extal_clk {
159	clock-frequency = <16666666>;
160};
161
162&extalr_clk {
163	clock-frequency = <32768>;
164};
165
166&i2c2 {
167	pinctrl-0 = <&i2c2_pins>;
168	pinctrl-names = "default";
169
170	status = "okay";
171
172	clock-frequency = <100000>;
173
174	ak4613: codec@10 {
175		compatible = "asahi-kasei,ak4613";
176		#sound-dai-cells = <0>;
177		reg = <0x10>;
178		clocks = <&rcar_sound 3>;
179
180		asahi-kasei,in1-single-end;
181		asahi-kasei,in2-single-end;
182		asahi-kasei,out1-single-end;
183		asahi-kasei,out2-single-end;
184		asahi-kasei,out3-single-end;
185		asahi-kasei,out4-single-end;
186		asahi-kasei,out5-single-end;
187		asahi-kasei,out6-single-end;
188	};
189
190	cs2000: clk-multiplier@4f {
191		#clock-cells = <0>;
192		compatible = "cirrus,cs2000-cp";
193		reg = <0x4f>;
194		clocks = <&audio_clkout>, <&x12_clk>;
195		clock-names = "clk_in", "ref_clk";
196
197		assigned-clocks = <&cs2000>;
198		assigned-clock-rates = <24576000>; /* 1/1 divide */
199	};
200};
201
202&i2c_dvfs {
203	status = "okay";
204};
205
206&ohci1 {
207	status = "okay";
208};
209
210&pfc {
211	pinctrl-0 = <&scif_clk_pins>;
212	pinctrl-names = "default";
213
214	avb_pins: avb {
215		mux {
216			groups = "avb_link", "avb_phy_int", "avb_mdc",
217				 "avb_mii";
218			function = "avb";
219		};
220
221		pins_mdc {
222			groups = "avb_mdc";
223			drive-strength = <24>;
224		};
225
226		pins_mii_tx {
227			pins = "PIN_AVB_TX_CTL", "PIN_AVB_TXC", "PIN_AVB_TD0",
228			       "PIN_AVB_TD1", "PIN_AVB_TD2", "PIN_AVB_TD3";
229			drive-strength = <12>;
230		};
231	};
232
233	i2c2_pins: i2c2 {
234		groups = "i2c2_a";
235		function = "i2c2";
236	};
237
238	scif2_pins: scif2 {
239		groups = "scif2_data_a";
240		function = "scif2";
241	};
242
243	scif_clk_pins: scif_clk {
244		groups = "scif_clk_a";
245		function = "scif_clk";
246	};
247
248	sdhi0_pins: sd0 {
249		groups = "sdhi0_data4", "sdhi0_ctrl";
250		function = "sdhi0";
251		power-source = <3300>;
252	};
253
254	sdhi0_pins_uhs: sd0_uhs {
255		groups = "sdhi0_data4", "sdhi0_ctrl";
256		function = "sdhi0";
257		power-source = <1800>;
258	};
259
260	sdhi2_pins: sd2 {
261		groups = "sdhi2_data8", "sdhi2_ctrl";
262		function = "sdhi2";
263		power-source = <1800>;
264	};
265
266	sdhi2_pins_uhs: sd2_uhs {
267		groups = "sdhi2_data8", "sdhi2_ctrl";
268		function = "sdhi2";
269		power-source = <1800>;
270	};
271
272	sound_pins: sound {
273		groups = "ssi01239_ctrl", "ssi0_data", "ssi1_data_a";
274		function = "ssi";
275	};
276
277	sound_clk_pins: sound-clk {
278		groups = "audio_clk_a_a", "audio_clk_b_a", "audio_clk_c_a",
279			 "audio_clkout_a", "audio_clkout3_a";
280		function = "audio_clk";
281	};
282
283	usb1_pins: usb1 {
284		groups = "usb1";
285		function = "usb1";
286	};
287};
288
289&rcar_sound {
290	pinctrl-0 = <&sound_pins &sound_clk_pins>;
291	pinctrl-names = "default";
292
293	/* Single DAI */
294	#sound-dai-cells = <0>;
295
296	/* audio_clkout0/1/2/3 */
297	#clock-cells = <1>;
298	clock-frequency = <12288000 11289600>;
299
300	status = "okay";
301
302	/* update <audio_clk_b> to <cs2000> */
303	clocks = <&cpg CPG_MOD 1005>,
304		 <&cpg CPG_MOD 1006>, <&cpg CPG_MOD 1007>,
305		 <&cpg CPG_MOD 1008>, <&cpg CPG_MOD 1009>,
306		 <&cpg CPG_MOD 1010>, <&cpg CPG_MOD 1011>,
307		 <&cpg CPG_MOD 1012>, <&cpg CPG_MOD 1013>,
308		 <&cpg CPG_MOD 1014>, <&cpg CPG_MOD 1015>,
309		 <&cpg CPG_MOD 1022>, <&cpg CPG_MOD 1023>,
310		 <&cpg CPG_MOD 1024>, <&cpg CPG_MOD 1025>,
311		 <&cpg CPG_MOD 1026>, <&cpg CPG_MOD 1027>,
312		 <&cpg CPG_MOD 1028>, <&cpg CPG_MOD 1029>,
313		 <&cpg CPG_MOD 1030>, <&cpg CPG_MOD 1031>,
314		 <&cpg CPG_MOD 1020>, <&cpg CPG_MOD 1021>,
315		 <&cpg CPG_MOD 1020>, <&cpg CPG_MOD 1021>,
316		 <&cpg CPG_MOD 1019>, <&cpg CPG_MOD 1018>,
317		 <&audio_clk_a>, <&cs2000>,
318		 <&audio_clk_c>,
319		 <&cpg CPG_CORE CPG_AUDIO_CLK_I>;
320
321	rcar_sound,dai {
322		dai0 {
323			playback = <&ssi0 &src0 &dvc0>;
324			capture  = <&ssi1 &src1 &dvc1>;
325		};
326	};
327};
328
329&scif2 {
330	pinctrl-0 = <&scif2_pins>;
331	pinctrl-names = "default";
332
333	status = "okay";
334};
335
336&scif_clk {
337	clock-frequency = <14745600>;
338};
339
340&sdhi0 {
341	pinctrl-0 = <&sdhi0_pins>;
342	pinctrl-1 = <&sdhi0_pins_uhs>;
343	pinctrl-names = "default", "state_uhs";
344
345	vmmc-supply = <&vcc_sdhi0>;
346	vqmmc-supply = <&vccq_sdhi0>;
347	cd-gpios = <&gpio3 12 GPIO_ACTIVE_LOW>;
348	bus-width = <4>;
349	sd-uhs-sdr50;
350	status = "okay";
351};
352
353&sdhi2 {
354	/* used for on-board 8bit eMMC */
355	pinctrl-0 = <&sdhi2_pins>;
356	pinctrl-1 = <&sdhi2_pins_uhs>;
357	pinctrl-names = "default", "state_uhs";
358
359	vmmc-supply = <&reg_3p3v>;
360	vqmmc-supply = <&reg_1p8v>;
361	bus-width = <8>;
362	mmc-hs200-1_8v;
363	non-removable;
364	status = "okay";
365};
366
367&ssi1 {
368	shared-pin;
369};
370
371&usb2_phy1 {
372	pinctrl-0 = <&usb1_pins>;
373	pinctrl-names = "default";
374
375	status = "okay";
376};
377
378&wdt0 {
379	timeout-sec = <60>;
380	status = "okay";
381};
382