usb: Migrate to support live DT for some driver
[oweals/u-boot.git] / arch / arm / dts / stm32mp157a-dk1.dts
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 /dts-v1/;
8
9 #include "stm32mp157c.dtsi"
10 #include "stm32mp157xac-pinctrl.dtsi"
11 #include <dt-bindings/gpio/gpio.h>
12 #include <dt-bindings/mfd/st,stpmic1.h>
13
14 / {
15         model = "STMicroelectronics STM32MP157A-DK1 Discovery Board";
16         compatible = "st,stm32mp157a-dk1", "st,stm32mp157";
17
18         aliases {
19                 ethernet0 = &ethernet0;
20                 serial0 = &uart4;
21         };
22
23         chosen {
24                 stdout-path = "serial0:115200n8";
25         };
26
27         memory@c0000000 {
28                 device_type = "memory";
29                 reg = <0xc0000000 0x20000000>;
30         };
31
32         reserved-memory {
33                 #address-cells = <1>;
34                 #size-cells = <1>;
35                 ranges;
36
37                 mcuram2: mcuram2@10000000 {
38                         compatible = "shared-dma-pool";
39                         reg = <0x10000000 0x40000>;
40                         no-map;
41                 };
42
43                 vdev0vring0: vdev0vring0@10040000 {
44                         compatible = "shared-dma-pool";
45                         reg = <0x10040000 0x1000>;
46                         no-map;
47                 };
48
49                 vdev0vring1: vdev0vring1@10041000 {
50                         compatible = "shared-dma-pool";
51                         reg = <0x10041000 0x1000>;
52                         no-map;
53                 };
54
55                 vdev0buffer: vdev0buffer@10042000 {
56                         compatible = "shared-dma-pool";
57                         reg = <0x10042000 0x4000>;
58                         no-map;
59                 };
60
61                 mcuram: mcuram@30000000 {
62                         compatible = "shared-dma-pool";
63                         reg = <0x30000000 0x40000>;
64                         no-map;
65                 };
66
67                 retram: retram@38000000 {
68                         compatible = "shared-dma-pool";
69                         reg = <0x38000000 0x10000>;
70                         no-map;
71                 };
72
73                 gpu_reserved: gpu@d4000000 {
74                         reg = <0xd4000000 0x4000000>;
75                         no-map;
76                 };
77         };
78
79         led {
80                 compatible = "gpio-leds";
81                 blue {
82                         label = "heartbeat";
83                         gpios = <&gpiod 11 GPIO_ACTIVE_HIGH>;
84                         linux,default-trigger = "heartbeat";
85                         default-state = "off";
86                 };
87         };
88
89         sound {
90                 compatible = "audio-graph-card";
91                 label = "STM32MP1-DK";
92                 routing =
93                         "Playback" , "MCLK",
94                         "Capture" , "MCLK",
95                         "MICL" , "Mic Bias";
96                 dais = <&sai2a_port &sai2b_port &i2s2_port>;
97                 status = "okay";
98         };
99 };
100
101 &adc {
102         pinctrl-names = "default";
103         pinctrl-0 = <&adc12_ain_pins_a>, <&adc12_usb_cc_pins_a>;
104         vdd-supply = <&vdd>;
105         vdda-supply = <&vdd>;
106         vref-supply = <&vrefbuf>;
107         status = "disabled";
108         adc1: adc@0 {
109                 /*
110                  * Type-C USB_PWR_CC1 & USB_PWR_CC2 on in18 & in19.
111                  * Use at least 5 * RC time, e.g. 5 * (Rp + Rd) * C:
112                  * 5 * (56 + 47kOhms) * 5pF => 2.5us.
113                  * Use arbitrary margin here (e.g. 5us).
114                  */
115                 st,min-sample-time-nsecs = <5000>;
116                 /* AIN connector, USB Type-C CC1 & CC2 */
117                 st,adc-channels = <0 1 6 13 18 19>;
118                 status = "okay";
119         };
120         adc2: adc@100 {
121                 /* AIN connector, USB Type-C CC1 & CC2 */
122                 st,adc-channels = <0 1 2 6 18 19>;
123                 st,min-sample-time-nsecs = <5000>;
124                 status = "okay";
125         };
126 };
127
128 &cec {
129         pinctrl-names = "default", "sleep";
130         pinctrl-0 = <&cec_pins_b>;
131         pinctrl-1 = <&cec_pins_sleep_b>;
132         status = "okay";
133 };
134
135 &ethernet0 {
136         status = "okay";
137         pinctrl-0 = <&ethernet0_rgmii_pins_a>;
138         pinctrl-1 = <&ethernet0_rgmii_pins_sleep_a>;
139         pinctrl-names = "default", "sleep";
140         phy-mode = "rgmii-id";
141         max-speed = <1000>;
142         phy-handle = <&phy0>;
143
144         mdio0 {
145                 #address-cells = <1>;
146                 #size-cells = <0>;
147                 compatible = "snps,dwmac-mdio";
148                 phy0: ethernet-phy@0 {
149                         reg = <0>;
150                 };
151         };
152 };
153
154 &gpu {
155         contiguous-area = <&gpu_reserved>;
156         status = "okay";
157 };
158
159 &i2c1 {
160         pinctrl-names = "default", "sleep";
161         pinctrl-0 = <&i2c1_pins_a>;
162         pinctrl-1 = <&i2c1_pins_sleep_a>;
163         i2c-scl-rising-time-ns = <100>;
164         i2c-scl-falling-time-ns = <7>;
165         status = "okay";
166         /delete-property/dmas;
167         /delete-property/dma-names;
168
169         hdmi-transmitter@39 {
170                 compatible = "sil,sii9022";
171                 reg = <0x39>;
172                 iovcc-supply = <&v3v3_hdmi>;
173                 cvcc12-supply = <&v1v2_hdmi>;
174                 reset-gpios = <&gpioa 10 GPIO_ACTIVE_LOW>;
175                 interrupts = <1 IRQ_TYPE_EDGE_FALLING>;
176                 interrupt-parent = <&gpiog>;
177                 #sound-dai-cells = <0>;
178                 status = "okay";
179
180                 ports {
181                         #address-cells = <1>;
182                         #size-cells = <0>;
183
184                         port@0 {
185                                 reg = <0>;
186                                 sii9022_in: endpoint {
187                                         remote-endpoint = <&ltdc_ep0_out>;
188                                 };
189                         };
190
191                         port@3 {
192                                 reg = <3>;
193                                 sii9022_tx_endpoint: endpoint {
194                                         remote-endpoint = <&i2s2_endpoint>;
195                                 };
196                         };
197                 };
198         };
199
200         cs42l51: cs42l51@4a {
201                 compatible = "cirrus,cs42l51";
202                 reg = <0x4a>;
203                 #sound-dai-cells = <0>;
204                 VL-supply = <&v3v3>;
205                 VD-supply = <&v1v8_audio>;
206                 VA-supply = <&v1v8_audio>;
207                 VAHP-supply = <&v1v8_audio>;
208                 reset-gpios = <&gpiog 9 GPIO_ACTIVE_LOW>;
209                 clocks = <&sai2a>;
210                 clock-names = "MCLK";
211                 status = "okay";
212
213                 cs42l51_port: port {
214                         #address-cells = <1>;
215                         #size-cells = <0>;
216
217                         cs42l51_tx_endpoint: endpoint@0 {
218                                 reg = <0>;
219                                 remote-endpoint = <&sai2a_endpoint>;
220                                 frame-master;
221                                 bitclock-master;
222                         };
223
224                         cs42l51_rx_endpoint: endpoint@1 {
225                                 reg = <1>;
226                                 remote-endpoint = <&sai2b_endpoint>;
227                                 frame-master;
228                                 bitclock-master;
229                         };
230                 };
231         };
232 };
233
234 &i2c4 {
235         pinctrl-names = "default";
236         pinctrl-0 = <&i2c4_pins_a>;
237         i2c-scl-rising-time-ns = <185>;
238         i2c-scl-falling-time-ns = <20>;
239         status = "okay";
240         /* spare dmas for other usage */
241         /delete-property/dmas;
242         /delete-property/dma-names;
243
244         typec: stusb1600@28 {
245                 compatible = "st,stusb1600";
246                 reg = <0x28>;
247                 interrupts = <11 IRQ_TYPE_EDGE_FALLING>;
248                 interrupt-parent = <&gpioi>;
249                 pinctrl-names = "default";
250                 pinctrl-0 = <&stusb1600_pins_a>;
251
252                 status = "okay";
253
254                 typec_con: connector {
255                         compatible = "usb-c-connector";
256                         label = "USB-C";
257                         power-role = "sink";
258                         power-opmode = "default";
259                 };
260         };
261
262         pmic: stpmic@33 {
263                 compatible = "st,stpmic1";
264                 reg = <0x33>;
265                 interrupts-extended = <&gpioa 0 IRQ_TYPE_EDGE_FALLING>;
266                 interrupt-controller;
267                 #interrupt-cells = <2>;
268                 status = "okay";
269
270                 regulators {
271                         compatible = "st,stpmic1-regulators";
272                         ldo1-supply = <&v3v3>;
273                         ldo3-supply = <&vdd_ddr>;
274                         ldo6-supply = <&v3v3>;
275                         pwr_sw1-supply = <&bst_out>;
276                         pwr_sw2-supply = <&bst_out>;
277
278                         vddcore: buck1 {
279                                 regulator-name = "vddcore";
280                                 regulator-min-microvolt = <1200000>;
281                                 regulator-max-microvolt = <1350000>;
282                                 regulator-always-on;
283                                 regulator-initial-mode = <0>;
284                                 regulator-over-current-protection;
285                         };
286
287                         vdd_ddr: buck2 {
288                                 regulator-name = "vdd_ddr";
289                                 regulator-min-microvolt = <1350000>;
290                                 regulator-max-microvolt = <1350000>;
291                                 regulator-always-on;
292                                 regulator-initial-mode = <0>;
293                                 regulator-over-current-protection;
294                         };
295
296                         vdd: buck3 {
297                                 regulator-name = "vdd";
298                                 regulator-min-microvolt = <3300000>;
299                                 regulator-max-microvolt = <3300000>;
300                                 regulator-always-on;
301                                 st,mask-reset;
302                                 regulator-initial-mode = <0>;
303                                 regulator-over-current-protection;
304                         };
305
306                         v3v3: buck4 {
307                                 regulator-name = "v3v3";
308                                 regulator-min-microvolt = <3300000>;
309                                 regulator-max-microvolt = <3300000>;
310                                 regulator-always-on;
311                                 regulator-over-current-protection;
312                                 regulator-initial-mode = <0>;
313                         };
314
315                         v1v8_audio: ldo1 {
316                                 regulator-name = "v1v8_audio";
317                                 regulator-min-microvolt = <1800000>;
318                                 regulator-max-microvolt = <1800000>;
319                                 regulator-always-on;
320                                 interrupts = <IT_CURLIM_LDO1 0>;
321                         };
322
323                         v3v3_hdmi: ldo2 {
324                                 regulator-name = "v3v3_hdmi";
325                                 regulator-min-microvolt = <3300000>;
326                                 regulator-max-microvolt = <3300000>;
327                                 regulator-always-on;
328                                 interrupts = <IT_CURLIM_LDO2 0>;
329                         };
330
331                         vtt_ddr: ldo3 {
332                                 regulator-name = "vtt_ddr";
333                                 regulator-min-microvolt = <500000>;
334                                 regulator-max-microvolt = <750000>;
335                                 regulator-always-on;
336                                 regulator-over-current-protection;
337                         };
338
339                         vdd_usb: ldo4 {
340                                 regulator-name = "vdd_usb";
341                                 regulator-min-microvolt = <3300000>;
342                                 regulator-max-microvolt = <3300000>;
343                                 interrupts = <IT_CURLIM_LDO4 0>;
344                         };
345
346                         vdda: ldo5 {
347                                 regulator-name = "vdda";
348                                 regulator-min-microvolt = <2900000>;
349                                 regulator-max-microvolt = <2900000>;
350                                 interrupts = <IT_CURLIM_LDO5 0>;
351                                 regulator-boot-on;
352                         };
353
354                         v1v2_hdmi: ldo6 {
355                                 regulator-name = "v1v2_hdmi";
356                                 regulator-min-microvolt = <1200000>;
357                                 regulator-max-microvolt = <1200000>;
358                                 regulator-always-on;
359                                 interrupts = <IT_CURLIM_LDO6 0>;
360                         };
361
362                         vref_ddr: vref_ddr {
363                                 regulator-name = "vref_ddr";
364                                 regulator-always-on;
365                                 regulator-over-current-protection;
366                         };
367
368                          bst_out: boost {
369                                 regulator-name = "bst_out";
370                                 interrupts = <IT_OCP_BOOST 0>;
371                          };
372
373                         vbus_otg: pwr_sw1 {
374                                 regulator-name = "vbus_otg";
375                                 interrupts = <IT_OCP_OTG 0>;
376                          };
377
378                          vbus_sw: pwr_sw2 {
379                                 regulator-name = "vbus_sw";
380                                 interrupts = <IT_OCP_SWOUT 0>;
381                                 regulator-active-discharge = <1>;
382                          };
383                 };
384
385                 onkey {
386                         compatible = "st,stpmic1-onkey";
387                         interrupts = <IT_PONKEY_F 0>, <IT_PONKEY_R 0>;
388                         interrupt-names = "onkey-falling", "onkey-rising";
389                         power-off-time-sec = <10>;
390                         status = "okay";
391                 };
392
393                 watchdog {
394                         compatible = "st,stpmic1-wdt";
395                         status = "disabled";
396                 };
397         };
398 };
399
400 &i2s2 {
401         clocks = <&rcc SPI2>, <&rcc SPI2_K>, <&rcc PLL3_Q>, <&rcc PLL3_R>;
402         clock-names = "pclk", "i2sclk", "x8k", "x11k";
403         pinctrl-names = "default", "sleep";
404         pinctrl-0 = <&i2s2_pins_a>;
405         pinctrl-1 = <&i2s2_pins_sleep_a>;
406         status = "okay";
407
408         i2s2_port: port {
409                 i2s2_endpoint: endpoint {
410                         remote-endpoint = <&sii9022_tx_endpoint>;
411                         format = "i2s";
412                         mclk-fs = <256>;
413                 };
414         };
415 };
416
417 &ipcc {
418         status = "okay";
419 };
420
421 &iwdg2 {
422         timeout-sec = <32>;
423         status = "okay";
424 };
425
426 &ltdc {
427         pinctrl-names = "default", "sleep";
428         pinctrl-0 = <&ltdc_pins_a>;
429         pinctrl-1 = <&ltdc_pins_sleep_a>;
430         status = "okay";
431
432         port {
433                 #address-cells = <1>;
434                 #size-cells = <0>;
435
436                 ltdc_ep0_out: endpoint@0 {
437                         reg = <0>;
438                         remote-endpoint = <&sii9022_in>;
439                 };
440         };
441 };
442
443 &m4_rproc {
444         memory-region = <&retram>, <&mcuram>, <&mcuram2>, <&vdev0vring0>,
445                         <&vdev0vring1>, <&vdev0buffer>;
446         mboxes = <&ipcc 0>, <&ipcc 1>, <&ipcc 2>;
447         mbox-names = "vq0", "vq1", "shutdown";
448         interrupt-parent = <&exti>;
449         interrupts = <68 1>;
450         status = "okay";
451 };
452
453 &pwr_regulators {
454         vdd-supply = <&vdd>;
455         vdd_3v3_usbfs-supply = <&vdd_usb>;
456 };
457
458 &rng1 {
459         status = "okay";
460 };
461
462 &rtc {
463         status = "okay";
464 };
465
466 &sai2 {
467         clocks = <&rcc SAI2>, <&rcc PLL3_Q>, <&rcc PLL3_R>;
468         clock-names = "pclk", "x8k", "x11k";
469         pinctrl-names = "default", "sleep";
470         pinctrl-0 = <&sai2a_pins_a>, <&sai2b_pins_b>;
471         pinctrl-1 = <&sai2a_sleep_pins_a>, <&sai2b_sleep_pins_b>;
472         status = "okay";
473
474         sai2a: audio-controller@4400b004 {
475                 #clock-cells = <0>;
476                 dma-names = "tx";
477                 clocks = <&rcc SAI2_K>;
478                 clock-names = "sai_ck";
479                 status = "okay";
480
481                 sai2a_port: port {
482                         sai2a_endpoint: endpoint {
483                                 remote-endpoint = <&cs42l51_tx_endpoint>;
484                                 format = "i2s";
485                                 mclk-fs = <256>;
486                                 dai-tdm-slot-num = <2>;
487                                 dai-tdm-slot-width = <32>;
488                         };
489                 };
490         };
491
492         sai2b: audio-controller@4400b024 {
493                 dma-names = "rx";
494                 st,sync = <&sai2a 2>;
495                 clocks = <&rcc SAI2_K>, <&sai2a>;
496                 clock-names = "sai_ck", "MCLK";
497                 status = "okay";
498
499                 sai2b_port: port {
500                         sai2b_endpoint: endpoint {
501                                 remote-endpoint = <&cs42l51_rx_endpoint>;
502                                 format = "i2s";
503                                 mclk-fs = <256>;
504                                 dai-tdm-slot-num = <2>;
505                                 dai-tdm-slot-width = <32>;
506                         };
507                 };
508         };
509 };
510
511 &sdmmc1 {
512         pinctrl-names = "default", "opendrain", "sleep";
513         pinctrl-0 = <&sdmmc1_b4_pins_a>;
514         pinctrl-1 = <&sdmmc1_b4_od_pins_a>;
515         pinctrl-2 = <&sdmmc1_b4_sleep_pins_a>;
516         broken-cd;
517         st,neg-edge;
518         bus-width = <4>;
519         vmmc-supply = <&v3v3>;
520         status = "okay";
521 };
522
523 &uart4 {
524         pinctrl-names = "default";
525         pinctrl-0 = <&uart4_pins_a>;
526         status = "okay";
527 };
528
529 &usbh_ehci {
530         phys = <&usbphyc_port0>;
531         phy-names = "usb";
532         status = "okay";
533 };
534
535 &usbotg_hs {
536         dr_mode = "peripheral";
537         phys = <&usbphyc_port1 0>;
538         phy-names = "usb2-phy";
539         status = "okay";
540 };
541
542 &usbphyc {
543         status = "okay";
544 };
545
546 &usbphyc_port0 {
547         phy-supply = <&vdd_usb>;
548 };
549
550 &usbphyc_port1 {
551         phy-supply = <&vdd_usb>;
552 };
553
554 &vrefbuf {
555         regulator-min-microvolt = <2500000>;
556         regulator-max-microvolt = <2500000>;
557         vdda-supply = <&vdd>;
558         status = "okay";
559 };