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