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-cells = <2>;
238		interrupt-parent = <&gpio6>;
239		interrupts = <8 IRQ_TYPE_EDGE_FALLING>;
240
241		audio-out-off-hog {
242			gpio-hog;
243			gpios = <0 GPIO_ACTIVE_HIGH>; /* P00 */
244			output-high;
245			line-name = "Audio_Out_OFF";
246		};
247
248		hub-pwen-hog {
249			gpio-hog;
250			gpios = <6 GPIO_ACTIVE_HIGH>;
251			output-high;
252			line-name = "HUB pwen";
253		};
254
255		hub-rst-hog {
256			gpio-hog;
257			gpios = <7 GPIO_ACTIVE_HIGH>;
258			output-high;
259			line-name = "HUB rst";
260		};
261
262		otg-extlpn-hog {
263			gpio-hog;
264			gpios = <9 GPIO_ACTIVE_HIGH>;
265			output-high;
266			line-name = "OTG EXTLPn";
267		};
268
269		otg-offvbusn-hog {
270			gpio-hog;
271			gpios = <8 GPIO_ACTIVE_HIGH>;
272			output-low;
273			line-name = "OTG OFFVBUSn";
274		};
275
276		sd-wifi-mux-hog {
277			gpio-hog;
278			gpios = <5 GPIO_ACTIVE_HIGH>;
279			output-low;	/* Connect WL1837 */
280			line-name = "SD WiFi mux";
281		};
282
283		snd-rst-hog {
284			gpio-hog;
285			gpios = <15 GPIO_ACTIVE_HIGH>; /* P17 */
286			output-high;
287			line-name = "SND_RST";
288		};
289	};
290
291	/* U5 */
292	gpio_exp_75: gpio@75 {
293		compatible = "ti,tca9539";
294		reg = <0x75>;
295		gpio-controller;
296		#gpio-cells = <2>;
297		interrupt-controller;
298		#interrupt-cells = <2>;
299		interrupt-parent = <&gpio6>;
300		interrupts = <4 IRQ_TYPE_EDGE_FALLING>;
301	};
302};
303
304&i2c4 {
305	i2cmux4: i2c-mux@71 {
306		compatible = "nxp,pca9548";
307		#address-cells = <1>;
308		#size-cells = <0>;
309		reg = <0x71>;
310		reset-gpios = <&gpio3 15 GPIO_ACTIVE_LOW>;
311	};
312
313	gpio_exp_76: gpio@76 {
314		compatible = "ti,tca9539";
315		reg = <0x76>;
316		gpio-controller;
317		#gpio-cells = <2>;
318		interrupt-controller;
319		#interrupt-cells = <2>;
320		interrupt-parent = <&gpio7>;
321		interrupts = <3 IRQ_TYPE_EDGE_FALLING>;
322	};
323
324	gpio_exp_77: gpio@77 {
325		compatible = "ti,tca9539";
326		reg = <0x77>;
327		gpio-controller;
328		#gpio-cells = <2>;
329		interrupt-controller;
330		#interrupt-cells = <2>;
331		interrupt-parent = <&gpio5>;
332		interrupts = <9 IRQ_TYPE_EDGE_FALLING>;
333	};
334};
335
336&ohci0 {
337	dr_mode = "otg";
338	status = "okay";
339};
340
341&pcie_bus_clk {
342	clock-frequency = <100000000>;
343};
344
345&pciec0 {
346	status = "okay";
347};
348
349&pciec1 {
350	status = "okay";
351};
352
353&pfc {
354	can0_pins: can0 {
355		groups = "can0_data_a";
356		function = "can0";
357	};
358
359	can1_pins: can1 {
360		groups = "can1_data";
361		function = "can1";
362	};
363
364	hdmi1_pins: hdmi1 {
365		adv7513-interrupt {
366			pins = "GP_2_14";
367			bias-pull-up;
368		};
369
370		du {
371			groups = "du_rgb888", "du_sync", "du_clk_out_0",
372				 "du_disp";
373			function = "du";
374		};
375	};
376
377	hscif0_pins: hscif0 {
378		groups = "hscif0_data", "hscif0_ctrl";
379		function = "hscif0";
380	};
381
382	hscif1_pins: hscif1 {
383		groups = "hscif1_data_a", "hscif1_ctrl_a";
384		function = "hscif1";
385	};
386
387	scif1_pins: scif1 {
388		groups = "scif1_data_b";
389		function = "scif1";
390	};
391
392	sdhi3_pins: sdhi3 {
393		groups = "sdhi3_data4", "sdhi3_ctrl";
394		function = "sdhi3";
395		power-source = <3300>;
396	};
397
398	sound_pcm_pins: sound-pcm {
399		groups = "ssi349_ctrl", "ssi3_data", "ssi4_data";
400		function = "ssi";
401	};
402
403	usb0_pins: usb0 {
404		groups = "usb0";
405		function = "usb0";
406	};
407};
408
409&rcar_sound {
410	pinctrl-0 = <&sound_pins
411		     &sound_clk_pins
412		     &sound_pcm_pins>;
413};
414
415&scif1 {
416	pinctrl-0 = <&scif1_pins>;
417	pinctrl-names = "default";
418
419	status = "okay";
420};
421
422&sdhi3 {
423	pinctrl-0 = <&sdhi3_pins>;
424	pinctrl-names = "default";
425
426	vmmc-supply = <&wlan_en>;
427	vqmmc-supply = <&wlan_en>;
428	bus-width = <4>;
429	no-1-8-v;
430	non-removable;
431	cap-power-off-card;
432	keep-power-in-suspend;
433	max-frequency = <26000000>;
434	status = "okay";
435
436	#address-cells = <1>;
437	#size-cells = <0>;
438	wlcore: wlcore@2 {
439		compatible = "ti,wl1837";
440		reg = <2>;
441		interrupt-parent = <&gpio1>;
442		interrupts = <25 IRQ_TYPE_EDGE_FALLING>;
443	};
444};
445
446&ssi4 {
447	shared-pin;
448};
449
450&usb2_phy0 {
451	pinctrl-0 = <&usb0_pins>;
452	pinctrl-names = "default";
453
454	status = "okay";
455};
456
457&xhci0 {
458	status = "okay";
459};
460
461/*
462 * For sound-test.
463 *
464 * We can switch Audio Card for testing
465 * see also ulcb.dtsi
466 *
467 * #include "ulcb-kf-simple-audio-card.dtsi"
468 * #include "ulcb-kf-simple-audio-card-mix+split.dtsi"
469 * #include "ulcb-kf-audio-graph-card.dtsi"
470 * #include "ulcb-kf-audio-graph-card-mix+split.dtsi"
471 * #include "ulcb-kf-audio-graph-card2-mix+split.dtsi"
472 */
473#include "ulcb-kf-audio-graph-card2.dtsi"
474