blob: e7a46e7b5fb1713b50c1b0b7de841093f8febecb [file] [log] [blame]
Patrick Delaunay48c5e902020-03-06 17:54:41 +01001// 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 };
Patrick Delaunay48c5e902020-03-06 17:54:41 +010061 };
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
Patrick Delaunay0e20c1f2020-05-25 12:19:42 +0200119&cpu0{
120 cpu-supply = <&vddcore>;
121};
122
123&cpu1{
124 cpu-supply = <&vddcore>;
125};
126
Patrick Delaunay48c5e902020-03-06 17:54:41 +0100127&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 {
Patrick Delaunaydf0d20a2020-04-30 15:52:46 +0200227 pinctrl-names = "default", "sleep";
Patrick Delaunay48c5e902020-03-06 17:54:41 +0100228 pinctrl-0 = <&i2c4_pins_a>;
Patrick Delaunaydf0d20a2020-04-30 15:52:46 +0200229 pinctrl-1 = <&i2c4_pins_sleep_a>;
Patrick Delaunay48c5e902020-03-06 17:54:41 +0100230 i2c-scl-rising-time-ns = <185>;
231 i2c-scl-falling-time-ns = <20>;
Patrick Delaunaydf0d20a2020-04-30 15:52:46 +0200232 clock-frequency = <400000>;
Patrick Delaunay48c5e902020-03-06 17:54:41 +0100233 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";
Patrick Delaunay48c5e902020-03-06 17:54:41 +0100335 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;
Patrick Delaunay48c5e902020-03-06 17:54:41 +0100357 };
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>;
Patrick Delaunaydf0d20a2020-04-30 15:52:46 +0200507 cd-gpios = <&gpiob 7 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
508 disable-wp;
Patrick Delaunay48c5e902020-03-06 17:54:41 +0100509 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};