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 * SSI-PCM3168A
11 *	aplay   -D plughw:0,2 xxx.wav
12 *	arecord -D plughw:0,3 xxx.wav
13 */
14
15/ {
16	aliases {
17		serial1 = &hscif0;
18		serial2 = &scif1;
19	};
20
21	clksndsel: clksndsel {
22		#clock-cells = <0>;
23		compatible = "gpio-mux-clock";
24		clocks = <&cs2000>, <&audio_clk_a>; /* clk8snd, clksnd */
25		select-gpios = <&gpio_exp_75 13 GPIO_ACTIVE_HIGH>;
26	};
27
28	snd_3p3v: regulator-snd_3p3v {
29		compatible = "regulator-fixed";
30		regulator-name = "snd-3.3v";
31		regulator-min-microvolt = <3300000>;
32		regulator-max-microvolt = <3300000>;
33	};
34
35	snd_vcc5v: regulator-snd_vcc5v {
36		compatible = "regulator-fixed";
37		regulator-name = "snd-vcc5v";
38		regulator-min-microvolt = <5000000>;
39		regulator-max-microvolt = <5000000>;
40	};
41};
42
43&can0 {
44	pinctrl-0 = <&can0_pins>;
45	pinctrl-names = "default";
46	status = "okay";
47};
48
49&can1 {
50	pinctrl-0 = <&can1_pins>;
51	pinctrl-names = "default";
52	status = "okay";
53};
54
55&ehci0 {
56	dr_mode = "otg";
57	status = "okay";
58};
59
60&hscif0 {
61	pinctrl-0 = <&hscif0_pins>;
62	pinctrl-names = "default";
63	uart-has-rtscts;
64
65	status = "okay";
66};
67
68&hsusb {
69	dr_mode = "otg";
70	status = "okay";
71};
72
73&i2c2 {
74	/* U11 */
75	gpio_exp_74: gpio@74 {
76		compatible = "ti,tca9539";
77		reg = <0x74>;
78		gpio-controller;
79		#gpio-cells = <2>;
80		interrupt-controller;
81		interrupt-parent = <&gpio6>;
82		interrupts = <8 IRQ_TYPE_EDGE_FALLING>;
83
84		audio_out_off {
85			gpio-hog;
86			gpios = <0 GPIO_ACTIVE_HIGH>; /* P00 */
87			output-high;
88			line-name = "Audio_Out_OFF";
89		};
90
91		hub_pwen {
92			gpio-hog;
93			gpios = <6 GPIO_ACTIVE_HIGH>;
94			output-high;
95			line-name = "HUB pwen";
96		};
97
98		hub_rst {
99			gpio-hog;
100			gpios = <7 GPIO_ACTIVE_HIGH>;
101			output-high;
102			line-name = "HUB rst";
103		};
104
105		otg_offvbusn {
106			gpio-hog;
107			gpios = <8 GPIO_ACTIVE_HIGH>;
108			output-low;
109			line-name = "OTG OFFVBUSn";
110		};
111
112		otg_extlpn {
113			gpio-hog;
114			gpios = <9 GPIO_ACTIVE_HIGH>;
115			output-high;
116			line-name = "OTG EXTLPn";
117		};
118
119		snd_rst {
120			gpio-hog;
121			gpios = <15 GPIO_ACTIVE_HIGH>; /* P17 */
122			output-high;
123			line-name = "SND_RST";
124		};
125	};
126
127	/* U5 */
128	gpio_exp_75: gpio@75 {
129		compatible = "ti,tca9539";
130		reg = <0x75>;
131		gpio-controller;
132		#gpio-cells = <2>;
133		interrupt-controller;
134		interrupt-parent = <&gpio6>;
135		interrupts = <4 IRQ_TYPE_EDGE_FALLING>;
136	};
137
138	i2cswitch2: i2c-switch@71 {
139		compatible = "nxp,pca9548";
140		#address-cells = <1>;
141		#size-cells = <0>;
142		reg = <0x71>;
143		reset-gpios = <&gpio5 3 GPIO_ACTIVE_LOW>;
144
145		/* Audio_SDA, Audio_SCL */
146		i2c@7 {
147			#address-cells = <1>;
148			#size-cells = <0>;
149			reg = <7>;
150
151			pcm3168a: audio-codec@44 {
152				#sound-dai-cells = <0>;
153				compatible = "ti,pcm3168a";
154				reg = <0x44>;
155				clocks = <&clksndsel>;
156				clock-names = "scki";
157
158				VDD1-supply	= <&snd_3p3v>;
159				VDD2-supply	= <&snd_3p3v>;
160				VCCAD1-supply	= <&snd_vcc5v>;
161				VCCAD2-supply	= <&snd_vcc5v>;
162				VCCDA1-supply	= <&snd_vcc5v>;
163				VCCDA2-supply	= <&snd_vcc5v>;
164
165				ports {
166					#address-cells = <1>;
167					#size-cells = <0>;
168					mclk-fs = <512>;
169					port@0 {
170						reg = <0>;
171						pcm3168a_endpoint_p: endpoint {
172							remote-endpoint = <&rsnd_for_pcm3168a_play>;
173							clocks = <&clksndsel>;
174						};
175					};
176					port@1 {
177						reg = <1>;
178						pcm3168a_endpoint_c: endpoint {
179							remote-endpoint = <&rsnd_for_pcm3168a_capture>;
180							clocks = <&clksndsel>;
181						};
182					};
183				};
184			};
185		};
186	};
187};
188
189&i2c4 {
190	gpio_exp_76: gpio@76 {
191		compatible = "ti,tca9539";
192		reg = <0x76>;
193		gpio-controller;
194		#gpio-cells = <2>;
195		interrupt-controller;
196		interrupt-parent = <&gpio7>;
197		interrupts = <3 IRQ_TYPE_EDGE_FALLING>;
198	};
199
200	gpio_exp_77: gpio@77 {
201		compatible = "ti,tca9539";
202		reg = <0x77>;
203		gpio-controller;
204		#gpio-cells = <2>;
205		interrupt-controller;
206		interrupt-parent = <&gpio5>;
207		interrupts = <9 IRQ_TYPE_EDGE_FALLING>;
208	};
209
210	i2cswitch4: i2c-switch@71 {
211		compatible = "nxp,pca9548";
212		#address-cells = <1>;
213		#size-cells = <0>;
214		reg = <0x71>;
215		reset-gpios = <&gpio3 15 GPIO_ACTIVE_LOW>;
216	};
217};
218
219&ohci0 {
220	dr_mode = "otg";
221	status = "okay";
222};
223
224&pcie_bus_clk {
225	clock-frequency = <100000000>;
226};
227
228&pciec0 {
229	status = "okay";
230};
231
232&pciec1 {
233	status = "okay";
234};
235
236&pfc {
237	can0_pins: can0 {
238		groups = "can0_data_a";
239		function = "can0";
240	};
241
242	can1_pins: can1 {
243		groups = "can1_data";
244		function = "can1";
245	};
246
247	hscif0_pins: hscif0 {
248		groups = "hscif0_data", "hscif0_ctrl";
249		function = "hscif0";
250	};
251
252	scif1_pins: scif1 {
253		groups = "scif1_data_b", "scif1_ctrl";
254		function = "scif1";
255	};
256
257	usb0_pins: usb0 {
258		groups = "usb0";
259		function = "usb0";
260	};
261
262	sound_pcm_pins: sound-pcm {
263		groups = "ssi349_ctrl", "ssi3_data", "ssi4_data";
264		function = "ssi";
265	};
266};
267
268&scif1 {
269	pinctrl-0 = <&scif1_pins>;
270	pinctrl-names = "default";
271	uart-has-rtscts;
272
273	status = "okay";
274};
275
276&usb2_phy0 {
277	pinctrl-0 = <&usb0_pins>;
278	pinctrl-names = "default";
279
280	status = "okay";
281};
282
283&xhci0 {
284	status = "okay";
285};
286
287&sound_card {
288	dais = <&rsnd_port0	/* ak4613 */
289		&rsnd_port1	/* HDMI0  */
290		&rsnd_port2	/* pcm3168a playback */
291		&rsnd_port3	/* pcm3168a capture  */
292		>;
293};
294
295&rcar_sound {
296	pinctrl-0 = <&sound_pins
297		     &sound_clk_pins
298		     &sound_pcm_pins>;
299
300	ports {
301		/* rsnd_port0/1 are on salvator-common */
302		rsnd_port2: port@2 {
303			reg = <2>;
304			rsnd_for_pcm3168a_play: endpoint {
305				remote-endpoint = <&pcm3168a_endpoint_p>;
306
307				dai-format = "i2s";
308				bitclock-master = <&rsnd_for_pcm3168a_play>;
309				frame-master = <&rsnd_for_pcm3168a_play>;
310				dai-tdm-slot-num = <8>;
311
312				playback = <&ssi3>;
313			};
314		};
315		rsnd_port3: port@3 {
316			reg = <3>;
317			rsnd_for_pcm3168a_capture: endpoint {
318				remote-endpoint = <&pcm3168a_endpoint_c>;
319
320				dai-format = "i2s";
321				bitclock-master = <&rsnd_for_pcm3168a_capture>;
322				frame-master = <&rsnd_for_pcm3168a_capture>;
323				dai-tdm-slot-num = <6>;
324
325				capture  = <&ssi4>;
326			};
327		};
328	};
329};
330
331&ssi4 {
332	shared-pin;
333};
334