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