e7a46e7b5fb1713b50c1b0b7de841093f8febecb
[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                 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
85 &adc {
86         pinctrl-names = "default";
87         pinctrl-0 = <&adc12_ain_pins_a>, <&adc12_usb_cc_pins_a>;
88         vdd-supply = <&vdd>;
89         vdda-supply = <&vdd>;
90         vref-supply = <&vrefbuf>;
91         status = "disabled";
92         adc1: adc@0 {
93                 /*
94                  * Type-C USB_PWR_CC1 & USB_PWR_CC2 on in18 & in19.
95                  * Use at least 5 * RC time, e.g. 5 * (Rp + Rd) * C:
96                  * 5 * (56 + 47kOhms) * 5pF => 2.5us.
97                  * Use arbitrary margin here (e.g. 5us).
98                  */
99                 st,min-sample-time-nsecs = <5000>;
100                 /* AIN connector, USB Type-C CC1 & CC2 */
101                 st,adc-channels = <0 1 6 13 18 19>;
102                 status = "okay";
103         };
104         adc2: adc@100 {
105                 /* AIN connector, USB Type-C CC1 & CC2 */
106                 st,adc-channels = <0 1 2 6 18 19>;
107                 st,min-sample-time-nsecs = <5000>;
108                 status = "okay";
109         };
110 };
111
112 &cec {
113         pinctrl-names = "default", "sleep";
114         pinctrl-0 = <&cec_pins_b>;
115         pinctrl-1 = <&cec_pins_sleep_b>;
116         status = "okay";
117 };
118
119 &cpu0{
120         cpu-supply = <&vddcore>;
121 };
122
123 &cpu1{
124         cpu-supply = <&vddcore>;
125 };
126
127 &ethernet0 {
128         status = "okay";
129         pinctrl-0 = <&ethernet0_rgmii_pins_a>;
130         pinctrl-1 = <&ethernet0_rgmii_pins_sleep_a>;
131         pinctrl-names = "default", "sleep";
132         phy-mode = "rgmii-id";
133         max-speed = <1000>;
134         phy-handle = <&phy0>;
135
136         mdio0 {
137                 #address-cells = <1>;
138                 #size-cells = <0>;
139                 compatible = "snps,dwmac-mdio";
140                 phy0: ethernet-phy@0 {
141                         reg = <0>;
142                 };
143         };
144 };
145
146 &gpu {
147         contiguous-area = <&gpu_reserved>;
148         status = "okay";
149 };
150
151 &i2c1 {
152         pinctrl-names = "default", "sleep";
153         pinctrl-0 = <&i2c1_pins_a>;
154         pinctrl-1 = <&i2c1_pins_sleep_a>;
155         i2c-scl-rising-time-ns = <100>;
156         i2c-scl-falling-time-ns = <7>;
157         status = "okay";
158         /delete-property/dmas;
159         /delete-property/dma-names;
160
161         hdmi-transmitter@39 {
162                 compatible = "sil,sii9022";
163                 reg = <0x39>;
164                 iovcc-supply = <&v3v3_hdmi>;
165                 cvcc12-supply = <&v1v2_hdmi>;
166                 reset-gpios = <&gpioa 10 GPIO_ACTIVE_LOW>;
167                 interrupts = <1 IRQ_TYPE_EDGE_FALLING>;
168                 interrupt-parent = <&gpiog>;
169                 #sound-dai-cells = <0>;
170                 status = "okay";
171
172                 ports {
173                         #address-cells = <1>;
174                         #size-cells = <0>;
175
176                         port@0 {
177                                 reg = <0>;
178                                 sii9022_in: endpoint {
179                                         remote-endpoint = <&ltdc_ep0_out>;
180                                 };
181                         };
182
183                         port@3 {
184                                 reg = <3>;
185                                 sii9022_tx_endpoint: endpoint {
186                                         remote-endpoint = <&i2s2_endpoint>;
187                                 };
188                         };
189                 };
190         };
191
192         cs42l51: cs42l51@4a {
193                 compatible = "cirrus,cs42l51";
194                 reg = <0x4a>;
195                 #sound-dai-cells = <0>;
196                 VL-supply = <&v3v3>;
197                 VD-supply = <&v1v8_audio>;
198                 VA-supply = <&v1v8_audio>;
199                 VAHP-supply = <&v1v8_audio>;
200                 reset-gpios = <&gpiog 9 GPIO_ACTIVE_LOW>;
201                 clocks = <&sai2a>;
202                 clock-names = "MCLK";
203                 status = "okay";
204
205                 cs42l51_port: port {
206                         #address-cells = <1>;
207                         #size-cells = <0>;
208
209                         cs42l51_tx_endpoint: endpoint@0 {
210                                 reg = <0>;
211                                 remote-endpoint = <&sai2a_endpoint>;
212                                 frame-master;
213                                 bitclock-master;
214                         };
215
216                         cs42l51_rx_endpoint: endpoint@1 {
217                                 reg = <1>;
218                                 remote-endpoint = <&sai2b_endpoint>;
219                                 frame-master;
220                                 bitclock-master;
221                         };
222                 };
223         };
224 };
225
226 &i2c4 {
227         pinctrl-names = "default", "sleep";
228         pinctrl-0 = <&i2c4_pins_a>;
229         pinctrl-1 = <&i2c4_pins_sleep_a>;
230         i2c-scl-rising-time-ns = <185>;
231         i2c-scl-falling-time-ns = <20>;
232         clock-frequency = <400000>;
233         status = "okay";
234         /* spare dmas for other usage */
235         /delete-property/dmas;
236         /delete-property/dma-names;
237
238         typec: stusb1600@28 {
239                 compatible = "st,stusb1600";
240                 reg = <0x28>;
241                 interrupts = <11 IRQ_TYPE_EDGE_FALLING>;
242                 interrupt-parent = <&gpioi>;
243                 pinctrl-names = "default";
244                 pinctrl-0 = <&stusb1600_pins_a>;
245
246                 status = "okay";
247
248                 typec_con: connector {
249                         compatible = "usb-c-connector";
250                         label = "USB-C";
251                         power-role = "sink";
252                         power-opmode = "default";
253                 };
254         };
255
256         pmic: stpmic@33 {
257                 compatible = "st,stpmic1";
258                 reg = <0x33>;
259                 interrupts-extended = <&gpioa 0 IRQ_TYPE_EDGE_FALLING>;
260                 interrupt-controller;
261                 #interrupt-cells = <2>;
262                 status = "okay";
263
264                 regulators {
265                         compatible = "st,stpmic1-regulators";
266                         ldo1-supply = <&v3v3>;
267                         ldo3-supply = <&vdd_ddr>;
268                         ldo6-supply = <&v3v3>;
269                         pwr_sw1-supply = <&bst_out>;
270                         pwr_sw2-supply = <&bst_out>;
271
272                         vddcore: buck1 {
273                                 regulator-name = "vddcore";
274                                 regulator-min-microvolt = <1200000>;
275                                 regulator-max-microvolt = <1350000>;
276                                 regulator-always-on;
277                                 regulator-initial-mode = <0>;
278                                 regulator-over-current-protection;
279                         };
280
281                         vdd_ddr: buck2 {
282                                 regulator-name = "vdd_ddr";
283                                 regulator-min-microvolt = <1350000>;
284                                 regulator-max-microvolt = <1350000>;
285                                 regulator-always-on;
286                                 regulator-initial-mode = <0>;
287                                 regulator-over-current-protection;
288                         };
289
290                         vdd: buck3 {
291                                 regulator-name = "vdd";
292                                 regulator-min-microvolt = <3300000>;
293                                 regulator-max-microvolt = <3300000>;
294                                 regulator-always-on;
295                                 st,mask-reset;
296                                 regulator-initial-mode = <0>;
297                                 regulator-over-current-protection;
298                         };
299
300                         v3v3: buck4 {
301                                 regulator-name = "v3v3";
302                                 regulator-min-microvolt = <3300000>;
303                                 regulator-max-microvolt = <3300000>;
304                                 regulator-always-on;
305                                 regulator-over-current-protection;
306                                 regulator-initial-mode = <0>;
307                         };
308
309                         v1v8_audio: ldo1 {
310                                 regulator-name = "v1v8_audio";
311                                 regulator-min-microvolt = <1800000>;
312                                 regulator-max-microvolt = <1800000>;
313                                 regulator-always-on;
314                                 interrupts = <IT_CURLIM_LDO1 0>;
315                         };
316
317                         v3v3_hdmi: ldo2 {
318                                 regulator-name = "v3v3_hdmi";
319                                 regulator-min-microvolt = <3300000>;
320                                 regulator-max-microvolt = <3300000>;
321                                 regulator-always-on;
322                                 interrupts = <IT_CURLIM_LDO2 0>;
323                         };
324
325                         vtt_ddr: ldo3 {
326                                 regulator-name = "vtt_ddr";
327                                 regulator-min-microvolt = <500000>;
328                                 regulator-max-microvolt = <750000>;
329                                 regulator-always-on;
330                                 regulator-over-current-protection;
331                         };
332
333                         vdd_usb: ldo4 {
334                                 regulator-name = "vdd_usb";
335                                 interrupts = <IT_CURLIM_LDO4 0>;
336                         };
337
338                         vdda: ldo5 {
339                                 regulator-name = "vdda";
340                                 regulator-min-microvolt = <2900000>;
341                                 regulator-max-microvolt = <2900000>;
342                                 interrupts = <IT_CURLIM_LDO5 0>;
343                                 regulator-boot-on;
344                         };
345
346                         v1v2_hdmi: ldo6 {
347                                 regulator-name = "v1v2_hdmi";
348                                 regulator-min-microvolt = <1200000>;
349                                 regulator-max-microvolt = <1200000>;
350                                 regulator-always-on;
351                                 interrupts = <IT_CURLIM_LDO6 0>;
352                         };
353
354                         vref_ddr: vref_ddr {
355                                 regulator-name = "vref_ddr";
356                                 regulator-always-on;
357                         };
358
359                          bst_out: boost {
360                                 regulator-name = "bst_out";
361                                 interrupts = <IT_OCP_BOOST 0>;
362                          };
363
364                         vbus_otg: pwr_sw1 {
365                                 regulator-name = "vbus_otg";
366                                 interrupts = <IT_OCP_OTG 0>;
367                          };
368
369                          vbus_sw: pwr_sw2 {
370                                 regulator-name = "vbus_sw";
371                                 interrupts = <IT_OCP_SWOUT 0>;
372                                 regulator-active-discharge = <1>;
373                          };
374                 };
375
376                 onkey {
377                         compatible = "st,stpmic1-onkey";
378                         interrupts = <IT_PONKEY_F 0>, <IT_PONKEY_R 0>;
379                         interrupt-names = "onkey-falling", "onkey-rising";
380                         power-off-time-sec = <10>;
381                         status = "okay";
382                 };
383
384                 watchdog {
385                         compatible = "st,stpmic1-wdt";
386                         status = "disabled";
387                 };
388         };
389 };
390
391 &i2s2 {
392         clocks = <&rcc SPI2>, <&rcc SPI2_K>, <&rcc PLL3_Q>, <&rcc PLL3_R>;
393         clock-names = "pclk", "i2sclk", "x8k", "x11k";
394         pinctrl-names = "default", "sleep";
395         pinctrl-0 = <&i2s2_pins_a>;
396         pinctrl-1 = <&i2s2_pins_sleep_a>;
397         status = "okay";
398
399         i2s2_port: port {
400                 i2s2_endpoint: endpoint {
401                         remote-endpoint = <&sii9022_tx_endpoint>;
402                         format = "i2s";
403                         mclk-fs = <256>;
404                 };
405         };
406 };
407
408 &ipcc {
409         status = "okay";
410 };
411
412 &iwdg2 {
413         timeout-sec = <32>;
414         status = "okay";
415 };
416
417 &ltdc {
418         pinctrl-names = "default", "sleep";
419         pinctrl-0 = <&ltdc_pins_a>;
420         pinctrl-1 = <&ltdc_pins_sleep_a>;
421         status = "okay";
422
423         port {
424                 #address-cells = <1>;
425                 #size-cells = <0>;
426
427                 ltdc_ep0_out: endpoint@0 {
428                         reg = <0>;
429                         remote-endpoint = <&sii9022_in>;
430                 };
431         };
432 };
433
434 &m4_rproc {
435         memory-region = <&retram>, <&mcuram>, <&mcuram2>, <&vdev0vring0>,
436                         <&vdev0vring1>, <&vdev0buffer>;
437         mboxes = <&ipcc 0>, <&ipcc 1>, <&ipcc 2>;
438         mbox-names = "vq0", "vq1", "shutdown";
439         interrupt-parent = <&exti>;
440         interrupts = <68 1>;
441         status = "okay";
442 };
443
444 &pwr_regulators {
445         vdd-supply = <&vdd>;
446         vdd_3v3_usbfs-supply = <&vdd_usb>;
447 };
448
449 &rng1 {
450         status = "okay";
451 };
452
453 &rtc {
454         status = "okay";
455 };
456
457 &sai2 {
458         clocks = <&rcc SAI2>, <&rcc PLL3_Q>, <&rcc PLL3_R>;
459         clock-names = "pclk", "x8k", "x11k";
460         pinctrl-names = "default", "sleep";
461         pinctrl-0 = <&sai2a_pins_a>, <&sai2b_pins_b>;
462         pinctrl-1 = <&sai2a_sleep_pins_a>, <&sai2b_sleep_pins_b>;
463         status = "okay";
464
465         sai2a: audio-controller@4400b004 {
466                 #clock-cells = <0>;
467                 dma-names = "tx";
468                 clocks = <&rcc SAI2_K>;
469                 clock-names = "sai_ck";
470                 status = "okay";
471
472                 sai2a_port: port {
473                         sai2a_endpoint: endpoint {
474                                 remote-endpoint = <&cs42l51_tx_endpoint>;
475                                 format = "i2s";
476                                 mclk-fs = <256>;
477                                 dai-tdm-slot-num = <2>;
478                                 dai-tdm-slot-width = <32>;
479                         };
480                 };
481         };
482
483         sai2b: audio-controller@4400b024 {
484                 dma-names = "rx";
485                 st,sync = <&sai2a 2>;
486                 clocks = <&rcc SAI2_K>, <&sai2a>;
487                 clock-names = "sai_ck", "MCLK";
488                 status = "okay";
489
490                 sai2b_port: port {
491                         sai2b_endpoint: endpoint {
492                                 remote-endpoint = <&cs42l51_rx_endpoint>;
493                                 format = "i2s";
494                                 mclk-fs = <256>;
495                                 dai-tdm-slot-num = <2>;
496                                 dai-tdm-slot-width = <32>;
497                         };
498                 };
499         };
500 };
501
502 &sdmmc1 {
503         pinctrl-names = "default", "opendrain", "sleep";
504         pinctrl-0 = <&sdmmc1_b4_pins_a>;
505         pinctrl-1 = <&sdmmc1_b4_od_pins_a>;
506         pinctrl-2 = <&sdmmc1_b4_sleep_pins_a>;
507         cd-gpios = <&gpiob 7 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
508         disable-wp;
509         st,neg-edge;
510         bus-width = <4>;
511         vmmc-supply = <&v3v3>;
512         status = "okay";
513 };
514
515 &sdmmc3 {
516         pinctrl-names = "default", "opendrain", "sleep";
517         pinctrl-0 = <&sdmmc3_b4_pins_a>;
518         pinctrl-1 = <&sdmmc3_b4_od_pins_a>;
519         pinctrl-2 = <&sdmmc3_b4_sleep_pins_a>;
520         broken-cd;
521         st,neg-edge;
522         bus-width = <4>;
523         vmmc-supply = <&v3v3>;
524         status = "disabled";
525 };
526
527 &timers1 {
528         /* spare dmas for other usage */
529         /delete-property/dmas;
530         /delete-property/dma-names;
531         status = "disabled";
532         pwm {
533                 pinctrl-0 = <&pwm1_pins_a>;
534                 pinctrl-1 = <&pwm1_sleep_pins_a>;
535                 pinctrl-names = "default", "sleep";
536                 status = "okay";
537         };
538         timer@0 {
539                 status = "okay";
540         };
541 };
542
543 &timers3 {
544         /delete-property/dmas;
545         /delete-property/dma-names;
546         status = "disabled";
547         pwm {
548                 pinctrl-0 = <&pwm3_pins_a>;
549                 pinctrl-1 = <&pwm3_sleep_pins_a>;
550                 pinctrl-names = "default", "sleep";
551                 status = "okay";
552         };
553         timer@2 {
554                 status = "okay";
555         };
556 };
557
558 &timers4 {
559         /delete-property/dmas;
560         /delete-property/dma-names;
561         status = "disabled";
562         pwm {
563                 pinctrl-0 = <&pwm4_pins_a &pwm4_pins_b>;
564                 pinctrl-1 = <&pwm4_sleep_pins_a &pwm4_sleep_pins_b>;
565                 pinctrl-names = "default", "sleep";
566                 status = "okay";
567         };
568         timer@3 {
569                 status = "okay";
570         };
571 };
572
573 &timers5 {
574         /delete-property/dmas;
575         /delete-property/dma-names;
576         status = "disabled";
577         pwm {
578                 pinctrl-0 = <&pwm5_pins_a>;
579                 pinctrl-1 = <&pwm5_sleep_pins_a>;
580                 pinctrl-names = "default", "sleep";
581                 status = "okay";
582         };
583         timer@4 {
584                 status = "okay";
585         };
586 };
587
588 &timers6 {
589         /delete-property/dmas;
590         /delete-property/dma-names;
591         status = "disabled";
592         timer@5 {
593                 status = "okay";
594         };
595 };
596
597 &timers12 {
598         /delete-property/dmas;
599         /delete-property/dma-names;
600         status = "disabled";
601         pwm {
602                 pinctrl-0 = <&pwm12_pins_a>;
603                 pinctrl-1 = <&pwm12_sleep_pins_a>;
604                 pinctrl-names = "default", "sleep";
605                 status = "okay";
606         };
607         timer@11 {
608                 status = "okay";
609         };
610 };
611
612 &uart4 {
613         pinctrl-names = "default";
614         pinctrl-0 = <&uart4_pins_a>;
615         status = "okay";
616 };
617
618 &usbh_ehci {
619         phys = <&usbphyc_port0>;
620         status = "okay";
621 };
622
623 &usbotg_hs {
624         dr_mode = "peripheral";
625         phys = <&usbphyc_port1 0>;
626         phy-names = "usb2-phy";
627         status = "okay";
628 };
629
630 &usbphyc {
631         status = "okay";
632 };
633
634 &usbphyc_port0 {
635         phy-supply = <&vdd_usb>;
636 };
637
638 &usbphyc_port1 {
639         phy-supply = <&vdd_usb>;
640 };
641
642 &vrefbuf {
643         regulator-min-microvolt = <2500000>;
644         regulator-max-microvolt = <2500000>;
645         vdda-supply = <&vdd>;
646         status = "okay";
647 };