1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Device Tree Source for the Kingfisher (ULCB extension) board
4 *
5 * Copyright (C) 2017 Renesas Electronics Corp.
6 * Copyright (C) 2017 Cogent Embedded, Inc.
7 */
8
9/ {
10	aliases {
11		serial1 = &hscif0;
12		serial2 = &scif1;
13		serial3 = &hscif1;
14		mmc2 = &sdhi3;
15	};
16
17	clksndsel: clksndsel {
18		#clock-cells = <0>;
19		compatible = "gpio-mux-clock";
20		clocks = <&cs2000>, <&audio_clk_a>; /* clk8snd, clksnd */
21		select-gpios = <&gpio_exp_75 13 GPIO_ACTIVE_HIGH>;
22	};
23
24	hdmi1-out {
25		compatible = "hdmi-connector";
26		type = "a";
27
28		port {
29			hdmi1_con: endpoint {
30				remote-endpoint = <&adv7513_out>;
31			};
32		};
33	};
34
35	accel_3v3: regulator-acc-3v3 {
36		compatible = "regulator-fixed";
37		regulator-name = "accel-3v3";
38		regulator-min-microvolt = <3300000>;
39		regulator-max-microvolt = <3300000>;
40	};
41
42	hdmi_1v8: regulator-hdmi-1v8 {
43		compatible = "regulator-fixed";
44		regulator-name = "hdmi-1v8";
45		regulator-min-microvolt = <1800000>;
46		regulator-max-microvolt = <1800000>;
47	};
48
49	hdmi_3v3: regulator-hdmi-3v3 {
50		compatible = "regulator-fixed";
51		regulator-name = "hdmi-3v3";
52		regulator-min-microvolt = <3300000>;
53		regulator-max-microvolt = <3300000>;
54	};
55
56	snd_3p3v: regulator-snd_3p3v {
57		compatible = "regulator-fixed";
58		regulator-name = "snd-3.3v";
59		regulator-min-microvolt = <3300000>;
60		regulator-max-microvolt = <3300000>;
61	};
62
63	snd_vcc5v: regulator-snd_vcc5v {
64		compatible = "regulator-fixed";
65		regulator-name = "snd-vcc5v";
66		regulator-min-microvolt = <5000000>;
67		regulator-max-microvolt = <5000000>;
68	};
69
70	wlan_en: regulator-wlan_en {
71		compatible = "regulator-fixed";
72		regulator-name = "wlan-en-regulator";
73
74		regulator-min-microvolt = <3300000>;
75		regulator-max-microvolt = <3300000>;
76
77		gpio = <&gpio_exp_74 4 GPIO_ACTIVE_HIGH>;
78		startup-delay-us = <70000>;
79		enable-active-high;
80	};
81};
82
83&can0 {
84	pinctrl-0 = <&can0_pins>;
85	pinctrl-names = "default";
86	status = "okay";
87};
88
89&can1 {
90	pinctrl-0 = <&can1_pins>;
91	pinctrl-names = "default";
92	status = "okay";
93};
94
95&du {
96	ports {
97		port@0 {
98			du_out_rgb: endpoint {
99				remote-endpoint = <&adv7513_in>;
100			};
101		};
102	};
103};
104
105&ehci0 {
106	dr_mode = "otg";
107	status = "okay";
108};
109
110&hscif0 {
111	pinctrl-0 = <&hscif0_pins>;
112	pinctrl-names = "default";
113	uart-has-rtscts;
114
115	status = "okay";
116};
117
118&hscif1 {
119	pinctrl-0 = <&hscif1_pins>;
120	pinctrl-names = "default";
121	uart-has-rtscts;
122
123	status = "okay";
124};
125
126&hsusb {
127	dr_mode = "otg";
128	status = "okay";
129};
130
131&i2c2 {
132	i2cmux2: i2c-mux@71 {
133		compatible = "nxp,pca9548";
134		#address-cells = <1>;
135		#size-cells = <0>;
136		reg = <0x71>;
137		reset-gpios = <&gpio5 3 GPIO_ACTIVE_LOW>;
138
139		/* HDMIoSDA, HDMIoSCL */
140		i2c@4 {
141			#address-cells = <1>;
142			#size-cells = <0>;
143			reg = <4>;
144
145			hdmi@3d {
146				compatible = "adi,adv7513";
147				reg = <0x3d>;
148
149				pinctrl-0 = <&hdmi1_pins>;
150				pinctrl-names = "default";
151
152				interrupt-parent = <&gpio2>;
153				interrupts = <14 IRQ_TYPE_LEVEL_LOW>;
154
155				clocks = <&cs2000>;
156				clock-names = "cec";
157
158				pd-gpios = <&gpio_exp_75 5 GPIO_ACTIVE_LOW>;
159
160				avdd-supply = <&hdmi_1v8>;
161				dvdd-supply = <&hdmi_1v8>;
162				pvdd-supply = <&hdmi_1v8>;
163				dvdd-3v-supply = <&hdmi_3v3>;
164				bgvdd-supply = <&hdmi_1v8>;
165
166				adi,input-depth = <8>;
167				adi,input-colorspace = "rgb";
168				adi,input-clock = "1x";
169
170				ports {
171					#address-cells = <1>;
172					#size-cells = <0>;
173
174					port@0 {
175						reg = <0>;
176						adv7513_in: endpoint {
177							remote-endpoint = <&du_out_rgb>;
178						};
179					};
180
181					port@1 {
182						reg = <1>;
183						adv7513_out: endpoint {
184							remote-endpoint = <&hdmi1_con>;
185						};
186					};
187				};
188			};
189		};
190
191		/* Audio_SDA, Audio_SCL */
192		i2c@7 {
193			#address-cells = <1>;
194			#size-cells = <0>;
195			reg = <7>;
196
197			accelerometer@1d {
198				compatible = "st,lsm9ds0-imu";
199				reg = <0x1d>;
200
201				vdd-supply = <&accel_3v3>;
202				vddio-supply = <&accel_3v3>;
203			};
204
205			pcm3168a: audio-codec@44 {
206				#sound-dai-cells = <0>;
207				compatible = "ti,pcm3168a";
208				reg = <0x44>;
209				clocks = <&clksndsel>;
210				clock-names = "scki";
211
212				VDD1-supply = <&snd_3p3v>;
213				VDD2-supply = <&snd_3p3v>;
214				VCCAD1-supply = <&snd_vcc5v>;
215				VCCAD2-supply = <&snd_vcc5v>;
216				VCCDA1-supply = <&snd_vcc5v>;
217				VCCDA2-supply = <&snd_vcc5v>;
218			};
219
220			gyroscope@6b {
221				compatible = "st,lsm9ds0-gyro";
222				reg = <0x6b>;
223
224				vdd-supply = <&accel_3v3>;
225				vddio-supply = <&accel_3v3>;
226			};
227		};
228	};
229
230	/* U11 */
231	gpio_exp_74: gpio@74 {
232		compatible = "ti,tca9539";
233		reg = <0x74>;
234		gpio-controller;
235		#gpio-cells = <2>;
236		interrupt-controller;
237		interrupt-parent = <&gpio6>;
238		interrupts = <8 IRQ_TYPE_EDGE_FALLING>;
239
240		audio-out-off-hog {
241			gpio-hog;
242			gpios = <0 GPIO_ACTIVE_HIGH>; /* P00 */
243			output-high;
244			line-name = "Audio_Out_OFF";
245		};
246
247		hub-pwen-hog {
248			gpio-hog;
249			gpios = <6 GPIO_ACTIVE_HIGH>;
250			output-high;
251			line-name = "HUB pwen";
252		};
253
254		hub-rst-hog {
255			gpio-hog;
256			gpios = <7 GPIO_ACTIVE_HIGH>;
257			output-high;
258			line-name = "HUB rst";
259		};
260
261		otg-extlpn-hog {
262			gpio-hog;
263			gpios = <9 GPIO_ACTIVE_HIGH>;
264			output-high;
265			line-name = "OTG EXTLPn";
266		};
267
268		otg-offvbusn-hog {
269			gpio-hog;
270			gpios = <8 GPIO_ACTIVE_HIGH>;
271			output-low;
272			line-name = "OTG OFFVBUSn";
273		};
274
275		sd-wifi-mux-hog {
276			gpio-hog;
277			gpios = <5 GPIO_ACTIVE_HIGH>;
278			output-low;	/* Connect WL1837 */
279			line-name = "SD WiFi mux";
280		};
281
282		snd-rst-hog {
283			gpio-hog;
284			gpios = <15 GPIO_ACTIVE_HIGH>; /* P17 */
285			output-high;
286			line-name = "SND_RST";
287		};
288	};
289
290	/* U5 */
291	gpio_exp_75: gpio@75 {
292		compatible = "ti,tca9539";
293		reg = <0x75>;
294		gpio-controller;
295		#gpio-cells = <2>;
296		interrupt-controller;
297		interrupt-parent = <&gpio6>;
298		interrupts = <4 IRQ_TYPE_EDGE_FALLING>;
299	};
300};
301
302&i2c4 {
303	i2cmux4: i2c-mux@71 {
304		compatible = "nxp,pca9548";
305		#address-cells = <1>;
306		#size-cells = <0>;
307		reg = <0x71>;
308		reset-gpios = <&gpio3 15 GPIO_ACTIVE_LOW>;
309	};
310
311	gpio_exp_76: gpio@76 {
312		compatible = "ti,tca9539";
313		reg = <0x76>;
314		gpio-controller;
315		#gpio-cells = <2>;
316		interrupt-controller;
317		interrupt-parent = <&gpio7>;
318		interrupts = <3 IRQ_TYPE_EDGE_FALLING>;
319	};
320
321	gpio_exp_77: gpio@77 {
322		compatible = "ti,tca9539";
323		reg = <0x77>;
324		gpio-controller;
325		#gpio-cells = <2>;
326		interrupt-controller;
327		interrupt-parent = <&gpio5>;
328		interrupts = <9 IRQ_TYPE_EDGE_FALLING>;
329	};
330};
331
332&ohci0 {
333	dr_mode = "otg";
334	status = "okay";
335};
336
337&pcie_bus_clk {
338	clock-frequency = <100000000>;
339};
340
341&pciec0 {
342	status = "okay";
343};
344
345&pciec1 {
346	status = "okay";
347};
348
349&pfc {
350	can0_pins: can0 {
351		groups = "can0_data_a";
352		function = "can0";
353	};
354
355	can1_pins: can1 {
356		groups = "can1_data";
357		function = "can1";
358	};
359
360	hdmi1_pins: hdmi1 {
361		adv7513-interrupt {
362			pins = "GP_2_14";
363			bias-pull-up;
364		};
365
366		du {
367			groups = "du_rgb888", "du_sync", "du_clk_out_0",
368				 "du_disp";
369			function = "du";
370		};
371	};
372
373	hscif0_pins: hscif0 {
374		groups = "hscif0_data", "hscif0_ctrl";
375		function = "hscif0";
376	};
377
378	hscif1_pins: hscif1 {
379		groups = "hscif1_data_a", "hscif1_ctrl_a";
380		function = "hscif1";
381	};
382
383	scif1_pins: scif1 {
384		groups = "scif1_data_b";
385		function = "scif1";
386	};
387
388	sdhi3_pins: sdhi3 {
389		groups = "sdhi3_data4", "sdhi3_ctrl";
390		function = "sdhi3";
391		power-source = <3300>;
392	};
393
394	sound_pcm_pins: sound-pcm {
395		groups = "ssi349_ctrl", "ssi3_data", "ssi4_data";
396		function = "ssi";
397	};
398
399	usb0_pins: usb0 {
400		groups = "usb0";
401		function = "usb0";
402	};
403};
404
405&rcar_sound {
406	pinctrl-0 = <&sound_pins
407		     &sound_clk_pins
408		     &sound_pcm_pins>;
409};
410
411&scif1 {
412	pinctrl-0 = <&scif1_pins>;
413	pinctrl-names = "default";
414
415	status = "okay";
416};
417
418&sdhi3 {
419	pinctrl-0 = <&sdhi3_pins>;
420	pinctrl-names = "default";
421
422	vmmc-supply = <&wlan_en>;
423	vqmmc-supply = <&wlan_en>;
424	bus-width = <4>;
425	no-1-8-v;
426	non-removable;
427	cap-power-off-card;
428	keep-power-in-suspend;
429	max-frequency = <26000000>;
430	status = "okay";
431
432	#address-cells = <1>;
433	#size-cells = <0>;
434	wlcore: wlcore@2 {
435		compatible = "ti,wl1837";
436		reg = <2>;
437		interrupt-parent = <&gpio1>;
438		interrupts = <25 IRQ_TYPE_EDGE_FALLING>;
439	};
440};
441
442&ssi4 {
443	shared-pin;
444};
445
446&usb2_phy0 {
447	pinctrl-0 = <&usb0_pins>;
448	pinctrl-names = "default";
449
450	status = "okay";
451};
452
453&xhci0 {
454	status = "okay";
455};
456
457/*
458 * For sound-test.
459 *
460 * We can switch Audio Card for testing
461 * see also ulcb.dtsi
462 *
463 * #include "ulcb-kf-simple-audio-card.dtsi"
464 * #include "ulcb-kf-simple-audio-card-mix+split.dtsi"
465 * #include "ulcb-kf-audio-graph-card.dtsi"
466 * #include "ulcb-kf-audio-graph-card-mix+split.dtsi"
467 * #include "ulcb-kf-audio-graph-card2-mix+split.dtsi"
468 */
469#include "ulcb-kf-audio-graph-card2.dtsi"
470