ARM: dts: synquacer: Add device trees for DeveloperBox
[platform/kernel/u-boot.git] / arch / arm / dts / stm32mp15xx-dkx.dtsi
1 // SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
2 /*
3  * Copyright (C) STMicroelectronics 2019 - All Rights Reserved
4  * Author: Alexandre Torgue <alexandre.torgue@st.com> for STMicroelectronics.
5  */
6
7 #include <dt-bindings/gpio/gpio.h>
8 #include <dt-bindings/mfd/st,stpmic1.h>
9
10 / {
11         memory@c0000000 {
12                 device_type = "memory";
13                 reg = <0xc0000000 0x20000000>;
14         };
15
16         reserved-memory {
17                 #address-cells = <1>;
18                 #size-cells = <1>;
19                 ranges;
20
21                 mcuram2: mcuram2@10000000 {
22                         compatible = "shared-dma-pool";
23                         reg = <0x10000000 0x40000>;
24                         no-map;
25                 };
26
27                 vdev0vring0: vdev0vring0@10040000 {
28                         compatible = "shared-dma-pool";
29                         reg = <0x10040000 0x1000>;
30                         no-map;
31                 };
32
33                 vdev0vring1: vdev0vring1@10041000 {
34                         compatible = "shared-dma-pool";
35                         reg = <0x10041000 0x1000>;
36                         no-map;
37                 };
38
39                 vdev0buffer: vdev0buffer@10042000 {
40                         compatible = "shared-dma-pool";
41                         reg = <0x10042000 0x4000>;
42                         no-map;
43                 };
44
45                 mcuram: mcuram@30000000 {
46                         compatible = "shared-dma-pool";
47                         reg = <0x30000000 0x40000>;
48                         no-map;
49                 };
50
51                 retram: retram@38000000 {
52                         compatible = "shared-dma-pool";
53                         reg = <0x38000000 0x10000>;
54                         no-map;
55                 };
56
57                 gpu_reserved: gpu@d4000000 {
58                         reg = <0xd4000000 0x4000000>;
59                         no-map;
60                 };
61         };
62
63         led {
64                 compatible = "gpio-leds";
65                 led-blue {
66                         label = "heartbeat";
67                         gpios = <&gpiod 11 GPIO_ACTIVE_HIGH>;
68                         linux,default-trigger = "heartbeat";
69                         default-state = "off";
70                 };
71         };
72
73         sound {
74                 compatible = "audio-graph-card";
75                 label = "STM32MP1-DK";
76                 routing =
77                         "Playback" , "MCLK",
78                         "Capture" , "MCLK",
79                         "MICL" , "Mic Bias";
80                 dais = <&sai2a_port &sai2b_port &i2s2_port>;
81                 status = "okay";
82         };
83
84         vin: vin {
85                 compatible = "regulator-fixed";
86                 regulator-name = "vin";
87                 regulator-min-microvolt = <5000000>;
88                 regulator-max-microvolt = <5000000>;
89                 regulator-always-on;
90         };
91 };
92
93 &adc {
94         pinctrl-names = "default";
95         pinctrl-0 = <&adc12_ain_pins_a>, <&adc12_usb_cc_pins_a>;
96         vdd-supply = <&vdd>;
97         vdda-supply = <&vdd>;
98         vref-supply = <&vrefbuf>;
99         status = "disabled";
100         adc1: adc@0 {
101                 /*
102                  * Type-C USB_PWR_CC1 & USB_PWR_CC2 on in18 & in19.
103                  * Use at least 5 * RC time, e.g. 5 * (Rp + Rd) * C:
104                  * 5 * (56 + 47kOhms) * 5pF => 2.5us.
105                  * Use arbitrary margin here (e.g. 5us).
106                  */
107                 st,min-sample-time-nsecs = <5000>;
108                 /* AIN connector, USB Type-C CC1 & CC2 */
109                 st,adc-channels = <0 1 6 13 18 19>;
110                 status = "okay";
111         };
112         adc2: adc@100 {
113                 /* AIN connector, USB Type-C CC1 & CC2 */
114                 st,adc-channels = <0 1 2 6 18 19>;
115                 st,min-sample-time-nsecs = <5000>;
116                 status = "okay";
117         };
118 };
119
120 &cec {
121         pinctrl-names = "default", "sleep";
122         pinctrl-0 = <&cec_pins_b>;
123         pinctrl-1 = <&cec_sleep_pins_b>;
124         status = "okay";
125 };
126
127 &crc1 {
128         status = "okay";
129 };
130
131 &dts {
132         status = "okay";
133 };
134
135 &cpu0{
136         cpu-supply = <&vddcore>;
137 };
138
139 &cpu1{
140         cpu-supply = <&vddcore>;
141 };
142
143 &ethernet0 {
144         status = "okay";
145         pinctrl-0 = <&ethernet0_rgmii_pins_a>;
146         pinctrl-1 = <&ethernet0_rgmii_sleep_pins_a>;
147         pinctrl-names = "default", "sleep";
148         phy-mode = "rgmii-id";
149         max-speed = <1000>;
150         phy-handle = <&phy0>;
151
152         mdio0 {
153                 #address-cells = <1>;
154                 #size-cells = <0>;
155                 compatible = "snps,dwmac-mdio";
156                 phy0: ethernet-phy@0 {
157                         reg = <0>;
158                 };
159         };
160 };
161
162 &gpu {
163         contiguous-area = <&gpu_reserved>;
164 };
165
166 &hash1 {
167         status = "okay";
168 };
169
170 &i2c1 {
171         pinctrl-names = "default", "sleep";
172         pinctrl-0 = <&i2c1_pins_a>;
173         pinctrl-1 = <&i2c1_sleep_pins_a>;
174         i2c-scl-rising-time-ns = <100>;
175         i2c-scl-falling-time-ns = <7>;
176         status = "okay";
177         /delete-property/dmas;
178         /delete-property/dma-names;
179
180         hdmi-transmitter@39 {
181                 compatible = "sil,sii9022";
182                 reg = <0x39>;
183                 iovcc-supply = <&v3v3_hdmi>;
184                 cvcc12-supply = <&v1v2_hdmi>;
185                 reset-gpios = <&gpioa 10 GPIO_ACTIVE_LOW>;
186                 interrupts = <1 IRQ_TYPE_EDGE_FALLING>;
187                 interrupt-parent = <&gpiog>;
188                 #sound-dai-cells = <0>;
189                 status = "okay";
190
191                 ports {
192                         #address-cells = <1>;
193                         #size-cells = <0>;
194
195                         port@0 {
196                                 reg = <0>;
197                                 sii9022_in: endpoint {
198                                         remote-endpoint = <&ltdc_ep0_out>;
199                                 };
200                         };
201
202                         port@3 {
203                                 reg = <3>;
204                                 sii9022_tx_endpoint: endpoint {
205                                         remote-endpoint = <&i2s2_endpoint>;
206                                 };
207                         };
208                 };
209         };
210
211         cs42l51: cs42l51@4a {
212                 compatible = "cirrus,cs42l51";
213                 reg = <0x4a>;
214                 #sound-dai-cells = <0>;
215                 VL-supply = <&v3v3>;
216                 VD-supply = <&v1v8_audio>;
217                 VA-supply = <&v1v8_audio>;
218                 VAHP-supply = <&v1v8_audio>;
219                 reset-gpios = <&gpiog 9 GPIO_ACTIVE_LOW>;
220                 clocks = <&sai2a>;
221                 clock-names = "MCLK";
222                 status = "okay";
223
224                 cs42l51_port: port {
225                         #address-cells = <1>;
226                         #size-cells = <0>;
227
228                         cs42l51_tx_endpoint: endpoint@0 {
229                                 reg = <0>;
230                                 remote-endpoint = <&sai2a_endpoint>;
231                                 frame-master;
232                                 bitclock-master;
233                         };
234
235                         cs42l51_rx_endpoint: endpoint@1 {
236                                 reg = <1>;
237                                 remote-endpoint = <&sai2b_endpoint>;
238                                 frame-master;
239                                 bitclock-master;
240                         };
241                 };
242         };
243 };
244
245 &i2c4 {
246         pinctrl-names = "default", "sleep";
247         pinctrl-0 = <&i2c4_pins_a>;
248         pinctrl-1 = <&i2c4_sleep_pins_a>;
249         i2c-scl-rising-time-ns = <185>;
250         i2c-scl-falling-time-ns = <20>;
251         clock-frequency = <400000>;
252         status = "okay";
253         /* spare dmas for other usage */
254         /delete-property/dmas;
255         /delete-property/dma-names;
256
257         stusb1600@28 {
258                 compatible = "st,stusb1600";
259                 reg = <0x28>;
260                 interrupts = <11 IRQ_TYPE_EDGE_FALLING>;
261                 interrupt-parent = <&gpioi>;
262                 pinctrl-names = "default";
263                 pinctrl-0 = <&stusb1600_pins_a>;
264                 status = "okay";
265                 vdd-supply = <&vin>;
266
267                 connector {
268                         compatible = "usb-c-connector";
269                         label = "USB-C";
270                         power-role = "dual";
271                         typec-power-opmode = "default";
272
273                         port {
274                                 con_usbotg_hs_ep: endpoint {
275                                         remote-endpoint = <&usbotg_hs_ep>;
276                                 };
277                         };
278                 };
279         };
280
281         pmic: stpmic@33 {
282                 compatible = "st,stpmic1";
283                 reg = <0x33>;
284                 interrupts-extended = <&gpioa 0 IRQ_TYPE_EDGE_FALLING>;
285                 interrupt-controller;
286                 #interrupt-cells = <2>;
287                 status = "okay";
288
289                 regulators {
290                         compatible = "st,stpmic1-regulators";
291                         buck1-supply = <&vin>;
292                         buck2-supply = <&vin>;
293                         buck3-supply = <&vin>;
294                         buck4-supply = <&vin>;
295                         ldo1-supply = <&v3v3>;
296                         ldo2-supply = <&vin>;
297                         ldo3-supply = <&vdd_ddr>;
298                         ldo4-supply = <&vin>;
299                         ldo5-supply = <&vin>;
300                         ldo6-supply = <&v3v3>;
301                         vref_ddr-supply = <&vin>;
302                         boost-supply = <&vin>;
303                         pwr_sw1-supply = <&bst_out>;
304                         pwr_sw2-supply = <&bst_out>;
305
306                         vddcore: buck1 {
307                                 regulator-name = "vddcore";
308                                 regulator-min-microvolt = <1200000>;
309                                 regulator-max-microvolt = <1350000>;
310                                 regulator-always-on;
311                                 regulator-initial-mode = <0>;
312                                 regulator-over-current-protection;
313                         };
314
315                         vdd_ddr: buck2 {
316                                 regulator-name = "vdd_ddr";
317                                 regulator-min-microvolt = <1350000>;
318                                 regulator-max-microvolt = <1350000>;
319                                 regulator-always-on;
320                                 regulator-initial-mode = <0>;
321                                 regulator-over-current-protection;
322                         };
323
324                         vdd: buck3 {
325                                 regulator-name = "vdd";
326                                 regulator-min-microvolt = <3300000>;
327                                 regulator-max-microvolt = <3300000>;
328                                 regulator-always-on;
329                                 st,mask-reset;
330                                 regulator-initial-mode = <0>;
331                                 regulator-over-current-protection;
332                         };
333
334                         v3v3: buck4 {
335                                 regulator-name = "v3v3";
336                                 regulator-min-microvolt = <3300000>;
337                                 regulator-max-microvolt = <3300000>;
338                                 regulator-always-on;
339                                 regulator-over-current-protection;
340                                 regulator-initial-mode = <0>;
341                         };
342
343                         v1v8_audio: ldo1 {
344                                 regulator-name = "v1v8_audio";
345                                 regulator-min-microvolt = <1800000>;
346                                 regulator-max-microvolt = <1800000>;
347                                 regulator-always-on;
348                                 interrupts = <IT_CURLIM_LDO1 0>;
349                         };
350
351                         v3v3_hdmi: ldo2 {
352                                 regulator-name = "v3v3_hdmi";
353                                 regulator-min-microvolt = <3300000>;
354                                 regulator-max-microvolt = <3300000>;
355                                 regulator-always-on;
356                                 interrupts = <IT_CURLIM_LDO2 0>;
357                         };
358
359                         vtt_ddr: ldo3 {
360                                 regulator-name = "vtt_ddr";
361                                 regulator-min-microvolt = <500000>;
362                                 regulator-max-microvolt = <750000>;
363                                 regulator-always-on;
364                                 regulator-over-current-protection;
365                         };
366
367                         vdd_usb: ldo4 {
368                                 regulator-name = "vdd_usb";
369                                 interrupts = <IT_CURLIM_LDO4 0>;
370                         };
371
372                         vdda: ldo5 {
373                                 regulator-name = "vdda";
374                                 regulator-min-microvolt = <2900000>;
375                                 regulator-max-microvolt = <2900000>;
376                                 interrupts = <IT_CURLIM_LDO5 0>;
377                                 regulator-boot-on;
378                         };
379
380                         v1v2_hdmi: ldo6 {
381                                 regulator-name = "v1v2_hdmi";
382                                 regulator-min-microvolt = <1200000>;
383                                 regulator-max-microvolt = <1200000>;
384                                 regulator-always-on;
385                                 interrupts = <IT_CURLIM_LDO6 0>;
386                         };
387
388                         vref_ddr: vref_ddr {
389                                 regulator-name = "vref_ddr";
390                                 regulator-always-on;
391                         };
392
393                          bst_out: boost {
394                                 regulator-name = "bst_out";
395                                 interrupts = <IT_OCP_BOOST 0>;
396                          };
397
398                         vbus_otg: pwr_sw1 {
399                                 regulator-name = "vbus_otg";
400                                 interrupts = <IT_OCP_OTG 0>;
401                          };
402
403                          vbus_sw: pwr_sw2 {
404                                 regulator-name = "vbus_sw";
405                                 interrupts = <IT_OCP_SWOUT 0>;
406                                 regulator-active-discharge = <1>;
407                          };
408                 };
409
410                 onkey {
411                         compatible = "st,stpmic1-onkey";
412                         interrupts = <IT_PONKEY_F 0>, <IT_PONKEY_R 0>;
413                         interrupt-names = "onkey-falling", "onkey-rising";
414                         power-off-time-sec = <10>;
415                         status = "okay";
416                 };
417
418                 watchdog {
419                         compatible = "st,stpmic1-wdt";
420                         status = "disabled";
421                 };
422         };
423 };
424
425 &i2c5 {
426         pinctrl-names = "default", "sleep";
427         pinctrl-0 = <&i2c5_pins_a>;
428         pinctrl-1 = <&i2c5_sleep_pins_a>;
429         i2c-scl-rising-time-ns = <185>;
430         i2c-scl-falling-time-ns = <20>;
431         clock-frequency = <400000>;
432         /* spare dmas for other usage */
433         /delete-property/dmas;
434         /delete-property/dma-names;
435         status = "disabled";
436 };
437
438 &i2s2 {
439         clocks = <&rcc SPI2>, <&rcc SPI2_K>, <&rcc PLL3_Q>, <&rcc PLL3_R>;
440         clock-names = "pclk", "i2sclk", "x8k", "x11k";
441         pinctrl-names = "default", "sleep";
442         pinctrl-0 = <&i2s2_pins_a>;
443         pinctrl-1 = <&i2s2_sleep_pins_a>;
444         status = "okay";
445
446         i2s2_port: port {
447                 i2s2_endpoint: endpoint {
448                         remote-endpoint = <&sii9022_tx_endpoint>;
449                         format = "i2s";
450                         mclk-fs = <256>;
451                 };
452         };
453 };
454
455 &ipcc {
456         status = "okay";
457 };
458
459 &iwdg2 {
460         timeout-sec = <32>;
461         status = "okay";
462 };
463
464 &ltdc {
465         pinctrl-names = "default", "sleep";
466         pinctrl-0 = <&ltdc_pins_a>;
467         pinctrl-1 = <&ltdc_sleep_pins_a>;
468         status = "okay";
469
470         port {
471                 ltdc_ep0_out: endpoint@0 {
472                         reg = <0>;
473                         remote-endpoint = <&sii9022_in>;
474                 };
475         };
476 };
477
478 &m4_rproc {
479         memory-region = <&retram>, <&mcuram>, <&mcuram2>, <&vdev0vring0>,
480                         <&vdev0vring1>, <&vdev0buffer>;
481         mboxes = <&ipcc 0>, <&ipcc 1>, <&ipcc 2>;
482         mbox-names = "vq0", "vq1", "shutdown";
483         interrupt-parent = <&exti>;
484         interrupts = <68 1>;
485         status = "okay";
486 };
487
488 &pwr_regulators {
489         vdd-supply = <&vdd>;
490         vdd_3v3_usbfs-supply = <&vdd_usb>;
491 };
492
493 &rng1 {
494         status = "okay";
495 };
496
497 &rtc {
498         status = "okay";
499 };
500
501 &sai2 {
502         clocks = <&rcc SAI2>, <&rcc PLL3_Q>, <&rcc PLL3_R>;
503         clock-names = "pclk", "x8k", "x11k";
504         pinctrl-names = "default", "sleep";
505         pinctrl-0 = <&sai2a_pins_a>, <&sai2b_pins_b>;
506         pinctrl-1 = <&sai2a_sleep_pins_a>, <&sai2b_sleep_pins_b>;
507         status = "okay";
508
509         sai2a: audio-controller@4400b004 {
510                 #clock-cells = <0>;
511                 dma-names = "tx";
512                 clocks = <&rcc SAI2_K>;
513                 clock-names = "sai_ck";
514                 status = "okay";
515
516                 sai2a_port: port {
517                         sai2a_endpoint: endpoint {
518                                 remote-endpoint = <&cs42l51_tx_endpoint>;
519                                 format = "i2s";
520                                 mclk-fs = <256>;
521                                 dai-tdm-slot-num = <2>;
522                                 dai-tdm-slot-width = <32>;
523                         };
524                 };
525         };
526
527         sai2b: audio-controller@4400b024 {
528                 dma-names = "rx";
529                 st,sync = <&sai2a 2>;
530                 clocks = <&rcc SAI2_K>, <&sai2a>;
531                 clock-names = "sai_ck", "MCLK";
532                 status = "okay";
533
534                 sai2b_port: port {
535                         sai2b_endpoint: endpoint {
536                                 remote-endpoint = <&cs42l51_rx_endpoint>;
537                                 format = "i2s";
538                                 mclk-fs = <256>;
539                                 dai-tdm-slot-num = <2>;
540                                 dai-tdm-slot-width = <32>;
541                         };
542                 };
543         };
544 };
545
546 &sdmmc1 {
547         pinctrl-names = "default", "opendrain", "sleep";
548         pinctrl-0 = <&sdmmc1_b4_pins_a>;
549         pinctrl-1 = <&sdmmc1_b4_od_pins_a>;
550         pinctrl-2 = <&sdmmc1_b4_sleep_pins_a>;
551         cd-gpios = <&gpiob 7 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
552         disable-wp;
553         st,neg-edge;
554         bus-width = <4>;
555         vmmc-supply = <&v3v3>;
556         status = "okay";
557 };
558
559 &sdmmc3 {
560         pinctrl-names = "default", "opendrain", "sleep";
561         pinctrl-0 = <&sdmmc3_b4_pins_a>;
562         pinctrl-1 = <&sdmmc3_b4_od_pins_a>;
563         pinctrl-2 = <&sdmmc3_b4_sleep_pins_a>;
564         broken-cd;
565         st,neg-edge;
566         bus-width = <4>;
567         vmmc-supply = <&v3v3>;
568         status = "disabled";
569 };
570
571 &timers1 {
572         /* spare dmas for other usage */
573         /delete-property/dmas;
574         /delete-property/dma-names;
575         status = "disabled";
576         pwm {
577                 pinctrl-0 = <&pwm1_pins_a>;
578                 pinctrl-1 = <&pwm1_sleep_pins_a>;
579                 pinctrl-names = "default", "sleep";
580                 status = "okay";
581         };
582         timer@0 {
583                 status = "okay";
584         };
585 };
586
587 &timers3 {
588         /delete-property/dmas;
589         /delete-property/dma-names;
590         status = "disabled";
591         pwm {
592                 pinctrl-0 = <&pwm3_pins_a>;
593                 pinctrl-1 = <&pwm3_sleep_pins_a>;
594                 pinctrl-names = "default", "sleep";
595                 status = "okay";
596         };
597         timer@2 {
598                 status = "okay";
599         };
600 };
601
602 &timers4 {
603         /delete-property/dmas;
604         /delete-property/dma-names;
605         status = "disabled";
606         pwm {
607                 pinctrl-0 = <&pwm4_pins_a &pwm4_pins_b>;
608                 pinctrl-1 = <&pwm4_sleep_pins_a &pwm4_sleep_pins_b>;
609                 pinctrl-names = "default", "sleep";
610                 status = "okay";
611         };
612         timer@3 {
613                 status = "okay";
614         };
615 };
616
617 &timers5 {
618         /delete-property/dmas;
619         /delete-property/dma-names;
620         status = "disabled";
621         pwm {
622                 pinctrl-0 = <&pwm5_pins_a>;
623                 pinctrl-1 = <&pwm5_sleep_pins_a>;
624                 pinctrl-names = "default", "sleep";
625                 status = "okay";
626         };
627         timer@4 {
628                 status = "okay";
629         };
630 };
631
632 &timers6 {
633         /delete-property/dmas;
634         /delete-property/dma-names;
635         status = "disabled";
636         timer@5 {
637                 status = "okay";
638         };
639 };
640
641 &timers12 {
642         /delete-property/dmas;
643         /delete-property/dma-names;
644         status = "disabled";
645         pwm {
646                 pinctrl-0 = <&pwm12_pins_a>;
647                 pinctrl-1 = <&pwm12_sleep_pins_a>;
648                 pinctrl-names = "default", "sleep";
649                 status = "okay";
650         };
651         timer@11 {
652                 status = "okay";
653         };
654 };
655
656 &uart4 {
657         pinctrl-names = "default", "sleep", "idle";
658         pinctrl-0 = <&uart4_pins_a>;
659         pinctrl-1 = <&uart4_sleep_pins_a>;
660         pinctrl-2 = <&uart4_idle_pins_a>;
661         status = "okay";
662 };
663
664 &uart7 {
665         pinctrl-names = "default", "sleep", "idle";
666         pinctrl-0 = <&uart7_pins_c>;
667         pinctrl-1 = <&uart7_sleep_pins_c>;
668         pinctrl-2 = <&uart7_idle_pins_c>;
669         status = "disabled";
670 };
671
672 &usart3 {
673         pinctrl-names = "default", "sleep", "idle";
674         pinctrl-0 = <&usart3_pins_c>;
675         pinctrl-1 = <&usart3_sleep_pins_c>;
676         pinctrl-2 = <&usart3_idle_pins_c>;
677         uart-has-rtscts;
678         status = "disabled";
679 };
680
681 &usbh_ehci {
682         phys = <&usbphyc_port0>;
683         status = "okay";
684 };
685
686 &usbotg_hs {
687         phys = <&usbphyc_port1 0>;
688         phy-names = "usb2-phy";
689         usb-role-switch;
690         status = "okay";
691
692         port {
693                 usbotg_hs_ep: endpoint {
694                         remote-endpoint = <&con_usbotg_hs_ep>;
695                 };
696         };
697 };
698
699 &usbphyc {
700         status = "okay";
701 };
702
703 &usbphyc_port0 {
704         phy-supply = <&vdd_usb>;
705 };
706
707 &usbphyc_port1 {
708         phy-supply = <&vdd_usb>;
709 };
710
711 &vrefbuf {
712         regulator-min-microvolt = <2500000>;
713         regulator-max-microvolt = <2500000>;
714         vdda-supply = <&vdd>;
715         status = "okay";
716 };