GNU Linux-libre 5.19-rc6-gnu
[releases.git] / arch / arm / boot / dts / stm32mp157c-emstamp-argon.dtsi
1 // SPDX-License-Identifier: (GPL-2.0 or MIT)
2 //
3 // Copyright (c) 2021 emtrion GmbH
4 // Author: Reinhold Müller <reinhold.mueller@emtrion.de>.
5 //
6
7 #include "stm32mp157.dtsi"
8 #include "stm32mp15xc.dtsi"
9 #include "stm32mp15-pinctrl.dtsi"
10 #include "stm32mp15xxac-pinctrl.dtsi"
11 #include <dt-bindings/gpio/gpio.h>
12 #include <dt-bindings/mfd/st,stpmic1.h>
13
14 / {
15         aliases {
16                 ethernet0 = &ethernet0;
17                 serial0 = &uart4;
18                 serial1 = &usart2;
19                 serial2 = &usart3;
20         };
21
22         chosen {
23                 stdout-path = "serial0:115200n8";
24         };
25
26         memory@c0000000 {
27                 device_type = "memory";
28                 reg = <0xc0000000 0x20000000>;
29         };
30
31         reserved-memory {
32                 #address-cells = <1>;
33                 #size-cells = <1>;
34                 ranges;
35
36                 mcuram2: mcuram2@10000000 {
37                         compatible = "shared-dma-pool";
38                         reg = <0x10000000 0x40000>;
39                         no-map;
40                 };
41
42                 vdev0vring0: vdev0vring0@10040000 {
43                         compatible = "shared-dma-pool";
44                         reg = <0x10040000 0x2000>;
45                         no-map;
46                 };
47
48                 vdev0vring1: vdev0vring1@10042000 {
49                         compatible = "shared-dma-pool";
50                         reg = <0x10042000 0x2000>;
51                         no-map;
52                 };
53
54                 vdev0buffer: vdev0buffer@10044000 {
55                         compatible = "shared-dma-pool";
56                         reg = <0x10044000 0x4000>;
57                         no-map;
58                 };
59
60                 mcuram: mcuram@30000000 {
61                         compatible = "shared-dma-pool";
62                         reg = <0x30000000 0x40000>;
63                         no-map;
64                 };
65
66                 retram: retram@38000000 {
67                         compatible = "shared-dma-pool";
68                         reg = <0x38000000 0x10000>;
69                         no-map;
70                 };
71
72                 gpu_reserved: gpu@dc000000 {
73                         reg = <0xdc000000 0x4000000>;
74                         no-map;
75                 };
76         };
77
78         led: gpio_leds {
79                 compatible = "gpio-leds";
80                 led-0 {
81                         label = "panic";
82                         gpios = <&gpioa 13 GPIO_ACTIVE_LOW>;
83                         linux,default-trigger = "none";
84                         default-state = "off";
85                         panic-indicator;
86                 };
87                 led-1 {
88                         label = "heartbeat";
89                         gpios = <&gpioa 14 GPIO_ACTIVE_LOW>;
90                         linux,default-trigger = "heartbeat";
91                         default-state = "on";
92                 };
93         };
94 };
95
96 &adc {
97         vdd-supply = <&vdd>;
98         vdda-supply = <&vdd>;
99         vref-supply = <&vrefbuf>;
100         status = "okay";
101
102         adc1: adc@0 {
103                 pinctrl-names = "default";
104                 pinctrl-0 = <&adc1_in6_pins_a>;
105                 st,min-sample-time-nsecs = <5000>;
106                 st,adc-channels = <6>;
107                 status = "disabled";
108         };
109
110         adc2: adc@100 {
111                 #address-cells = <1>;
112                 #size-cells = <0>;
113                 status = "okay";
114                 channel@12 {
115                         reg = <12>;
116                         label = "sense_temp";
117                         st,min-sample-time-ns = <9000>;
118                 };
119                 channel@15 {
120                         reg = <15>;
121                         label = "vbat";
122                         st,min-sample-time-ns = <9000>;
123                 };
124                 channel@16 {
125                         reg = <16>;
126                         label = "dac_out1";
127                         st,min-sample-time-ns = <9000>;
128                 };
129                 channel@17 {
130                         reg = <17>;
131                         label = "dac_out1";
132                         st,min-sample-time-ns = <9000>;
133                 };
134         };
135 };
136
137 &crc1 {
138         status = "okay";
139 };
140
141 &cryp1 {
142         status = "okay";
143 };
144
145 &dac {
146         pinctrl-names = "default";
147         pinctrl-0 = <&dac_ch1_pins_a &dac_ch2_pins_a>;
148         vref-supply = <&vdda>;
149         status = "disabled";
150
151         dac1: dac@1 {
152                 status = "okay";
153         };
154         dac2: dac@2 {
155                 status = "okay";
156         };
157 };
158
159 &dts {
160         status = "okay";
161 };
162
163 &ethernet0 {
164         status = "okay";
165         snps,reset-gpio = <&gpioa 1 GPIO_ACTIVE_LOW>;
166         snps,reset-active-low;
167         snps,reset-delays-us = <0 30000 50000>;
168         pinctrl-0 = <&ethernet0_rmii_pins_b>;
169         pinctrl-1 = <&ethernet0_rmii_sleep_pins_b>;
170         pinctrl-names = "default", "sleep";
171         phy-mode = "rmii";
172         max-speed = <100>;
173         phy-handle = <&phy0>;
174         st,eth-ref-clk-sel;
175
176         mdio0 {
177                 #address-cells = <1>;
178                 #size-cells = <0>;
179                 compatible = "snps,dwmac-mdio";
180                 phy0: ethernet-phy@0 {
181                         reg = <0>;
182                 };
183         };
184 };
185
186 &gpu {
187         contiguous-area = <&gpu_reserved>;
188 };
189
190 &hash1 {
191         status = "okay";
192 };
193
194 &i2c1 {
195         pinctrl-names = "default", "sleep";
196         pinctrl-0 = <&i2c1_pins_a>;
197         pinctrl-1 = <&i2c1_sleep_pins_a>;
198         i2c-scl-rising-time-ns = <100>;
199         i2c-scl-falling-time-ns = <7>;
200         status = "disabled";
201         /delete-property/dmas;
202         /delete-property/dma-names;
203 };
204
205 &i2c4 {
206         pinctrl-names = "default", "sleep";
207         pinctrl-0 = <&i2c4_pins_a>;
208         pinctrl-1 = <&i2c4_sleep_pins_a>;
209         i2c-scl-rising-time-ns = <185>;
210         i2c-scl-falling-time-ns = <20>;
211         status = "okay";
212         /delete-property/dmas;
213         /delete-property/dma-names;
214
215         pmic: stpmic@33 {
216                 compatible = "st,stpmic1";
217                 reg = <0x33>;
218                 interrupts-extended = <&gpioa 0 IRQ_TYPE_EDGE_FALLING>;
219                 interrupt-controller;
220                 #interrupt-cells = <2>;
221                 status = "okay";
222
223                 regulators {
224                         compatible = "st,stpmic1-regulators";
225
226                         ldo1-supply = <&v3v3>;
227                         ldo3-supply = <&vdd_ddr>;
228                         ldo6-supply = <&v3v3>;
229                         pwr_sw1-supply = <&bst_out>;
230                         pwr_sw2-supply = <&bst_out>;
231
232                         vddcore: buck1 {
233                                 regulator-name = "vddcore";
234                                 regulator-min-microvolt = <1200000>;
235                                 regulator-max-microvolt = <1350000>;
236                                 regulator-always-on;
237                                 regulator-initial-mode = <0>;
238                                 regulator-over-current-protection;
239                         };
240
241                         vdd_ddr: buck2 {
242                                 regulator-name = "vdd_ddr";
243                                 regulator-min-microvolt = <1350000>;
244                                 regulator-max-microvolt = <1350000>;
245                                 regulator-always-on;
246                                 regulator-initial-mode = <0>;
247                                 regulator-over-current-protection;
248                         };
249
250                         vdd: buck3 {
251                                 regulator-name = "vdd";
252                                 regulator-min-microvolt = <3300000>;
253                                 regulator-max-microvolt = <3300000>;
254                                 regulator-always-on;
255                                 st,mask-reset;
256                                 regulator-initial-mode = <0>;
257                                 regulator-over-current-protection;
258                         };
259
260                         v3v3: buck4 {
261                                 regulator-name = "v3v3";
262                                 regulator-min-microvolt = <3300000>;
263                                 regulator-max-microvolt = <3300000>;
264                                 regulator-always-on;
265                                 regulator-over-current-protection;
266                                 regulator-initial-mode = <0>;
267                         };
268
269                         v1v8_audio: ldo1 {
270                                 regulator-name = "v1v8_audio";
271                                 regulator-min-microvolt = <1800000>;
272                                 regulator-max-microvolt = <1800000>;
273                                 regulator-always-on;
274                                 interrupts = <IT_CURLIM_LDO1 0>;
275                         };
276
277                         v3v3_hdmi: ldo2 {
278                                 regulator-name = "v3v3_hdmi";
279                                 regulator-min-microvolt = <3300000>;
280                                 regulator-max-microvolt = <3300000>;
281                                 regulator-always-on;
282                                 interrupts = <IT_CURLIM_LDO2 0>;
283                         };
284
285                         vtt_ddr: ldo3 {
286                                 regulator-name = "vtt_ddr";
287                                 regulator-min-microvolt = <500000>;
288                                 regulator-max-microvolt = <750000>;
289                                 regulator-always-on;
290                                 regulator-over-current-protection;
291                         };
292
293                         vdd_usb: ldo4 {
294                                 regulator-name = "vdd_usb";
295                                 regulator-min-microvolt = <3300000>;
296                                 regulator-max-microvolt = <3300000>;
297                                 interrupts = <IT_CURLIM_LDO4 0>;
298                         };
299
300                         vdd_sd: ldo5 {
301                                 regulator-name = "vdd_sd";
302                                 regulator-min-microvolt = <3300000>;
303                                 regulator-max-microvolt = <3300000>;
304                                 interrupts = <IT_CURLIM_LDO5 0>;
305                                 regulator-always-on;
306                         };
307
308                         vdda: ldo6 {
309                                 regulator-name = "vdda";
310                                 regulator-min-microvolt = <2900000>;
311                                 regulator-max-microvolt = <2900000>;
312                                 regulator-always-on;
313                                 interrupts = <IT_CURLIM_LDO6 0>;
314                                 regulator-boot-on;
315                         };
316
317                         vref_ddr: vref_ddr {
318                                 regulator-name = "vref_ddr";
319                                 regulator-always-on;
320                                 regulator-over-current-protection;
321                         };
322
323                         bst_out: boost {
324                                 regulator-name = "bst_out";
325                                 interrupts = <IT_OCP_BOOST 0>;
326                         };
327
328                         vbus_otg: pwr_sw1 {
329                                 regulator-name = "vbus_otg";
330                                 interrupts = <IT_OCP_OTG 0>;
331                                 regulator-active-discharge;
332                         };
333
334                         vbus_usbh: pwr_sw2 {
335                                 regulator-name = "usbh_vbus";
336                                 interrupts = <IT_OCP_SWOUT 0>;
337                                 regulator-always-on;
338                                 regulator-boot-on;
339                         };
340                 };
341
342                 onkey {
343                         compatible = "st,stpmic1-onkey";
344                         interrupts = <IT_PONKEY_F 0>, <IT_PONKEY_R 1>;
345                         interrupt-names = "onkey-falling", "onkey-rising";
346                         status = "okay";
347                 };
348
349                 watchdog {
350                         compatible = "st,stpmic1-wdt";
351                         status = "disabled";
352                 };
353         };
354 };
355
356 &i2c5 {
357         pinctrl-names = "default", "sleep";
358         pinctrl-0 = <&i2c5_pins_a>;
359         pinctrl-1 = <&i2c5_sleep_pins_a>;
360         i2c-scl-rising-time-ns = <185>;
361         i2c-scl-falling-time-ns = <20>;
362         /delete-property/dmas;
363         /delete-property/dma-names;
364 };
365
366 &ipcc {
367         status = "okay";
368 };
369
370 &iwdg2 {
371         timeout-sec = <32>;
372         status = "okay";
373 };
374
375 &m4_rproc {
376         memory-region = <&retram>, <&mcuram>, <&mcuram2>, <&vdev0vring0>,
377                         <&vdev0vring1>, <&vdev0buffer>;
378         mboxes = <&ipcc 0>, <&ipcc 1>, <&ipcc 2>;
379         mbox-names = "vq0", "vq1", "shutdown";
380         interrupt-parent = <&exti>;
381         interrupts = <68 1>;
382         interrupt-names = "wdg";
383         recovery;
384         status = "okay";
385 };
386
387 &pwr_regulators {
388         vdd-supply = <&vdd>;
389         vdd_3v3_usbfs-supply = <&vdd_usb>;
390 };
391
392 &qspi {
393         pinctrl-names = "default", "sleep";
394         pinctrl-0 = <&qspi_clk_pins_a &qspi_bk1_pins_a>;
395         pinctrl-1 = <&qspi_clk_sleep_pins_a &qspi_bk1_sleep_pins_a>;
396         reg = <0x58003000 0x1000>, <0x70000000 0x4000000>;
397         #address-cells = <1>;
398         #size-cells = <0>;
399         status = "okay";
400
401         flash0: flash@0 {
402                 compatible = "jedec,spi-nor";
403                 reg = <0>;
404                 spi-max-frequency = <133000000>;
405                 spi-rx-bus-width = <1>;
406                 spi-tx-bus-width = <1>;
407                 #address-cells = <1>;
408                 #size-cells = <1>;
409         };
410 };
411
412 &rng1 {
413         status = "okay";
414 };
415
416 &rtc {
417         status = "okay";
418 };
419
420 &sdmmc2 {
421         arm,primecell-periphid = <0x10153180>;
422         pinctrl-names = "default", "opendrain", "sleep";
423         pinctrl-0 = <&sdmmc2_b4_pins_b>;
424         pinctrl-1 = <&sdmmc2_b4_od_pins_b>;
425         pinctrl-2 = <&sdmmc2_b4_sleep_pins_a>;
426         non-removable;
427         st,neg-edge;
428         bus-width = <4>;
429         vmmc-supply = <&v3v3>;
430         status = "okay";
431 };
432
433 &spi1 {
434         pinctrl-names = "default";
435         pinctrl-0 = <&spi1_pins_a>;
436         cs-gpios = <&gpioz 3 0>;
437         status = "disabled";
438
439         spidev@0  {
440                 compatible = "spidev";
441                 reg = <0>;
442                 spi-max-frequency = <100000>;
443         };
444 };
445
446 &timers1 {
447         /* spare dmas for other usage */
448         /delete-property/dmas;
449         /delete-property/dma-names;
450         pwm {
451                 pinctrl-0 = <&pwm1_pins_b>;
452                 pinctrl-1 = <&pwm1_sleep_pins_b>;
453                 pinctrl-names = "default", "sleep";
454                 status = "okay";
455         };
456         timer@0 {
457                 status = "okay";
458         };
459 };
460
461 &timers4 {
462         /delete-property/dmas;
463         /delete-property/dma-names;
464         pwm {
465                 pinctrl-0 = <&pwm4_pins_b>;
466                 pinctrl-1 = <&pwm4_sleep_pins_b>;
467                 pinctrl-names = "default", "sleep";
468                 status = "okay";
469         };
470         timer@3 {
471                 status = "okay";
472         };
473 };
474
475 &timers5 {
476         /delete-property/dmas;
477         /delete-property/dma-names;
478         pwm {
479                 pinctrl-0 = <&pwm5_pins_a>;
480                 pinctrl-1 = <&pwm5_sleep_pins_a>;
481                 pinctrl-names = "default", "sleep";
482                 status = "okay";
483         };
484         timer@4 {
485                 status = "okay";
486         };
487 };
488
489 &uart4 {
490         pinctrl-names = "default", "sleep", "idle";
491         pinctrl-0 = <&uart4_pins_a>;
492         pinctrl-1 = <&uart4_sleep_pins_a>;
493         pinctrl-2 = <&uart4_idle_pins_a>;
494         status = "okay";
495 };
496
497 &usart2 {
498         pinctrl-names = "default", "sleep";
499         pinctrl-0 = <&usart2_pins_a>;
500         pinctrl-1 = <&usart2_sleep_pins_a>;
501         status = "okay";
502 };
503
504 &usart3 {
505         pinctrl-names = "default", "sleep", "idle";
506         pinctrl-0 = <&usart3_pins_d>;
507         pinctrl-1 = <&usart3_sleep_pins_d>;
508         pinctrl-2 = <&usart3_idle_pins_d>;
509         status = "okay";
510 };
511
512 &usbh_ehci {
513         phys = <&usbphyc_port0>;
514         phy-names = "usb";
515         status = "okay";
516 };
517
518 &usbh_ohci {
519         phys = <&usbphyc_port0>;
520         phy-names = "usb";
521         status = "okay";
522 };
523
524 &usbotg_hs {
525         dr_mode = "peripheral";
526         pinctrl-names = "default";
527         pinctrl-0 = <&usbotg_hs_pins_a>;
528         phy-names = "usb2-phy";
529         phys = <&usbphyc_port1 0>;
530         vbus-supply = <&vbus_otg>;
531         status = "okay";
532 };
533
534 &usbphyc {
535         status = "okay";
536 };
537
538 &usbphyc_port0 {
539         phy-supply = <&vdd_usb>;
540 };
541
542 &usbphyc_port1 {
543         phy-supply = <&vdd_usb>;
544 };
545
546 &vrefbuf {
547         regulator-min-microvolt = <2500000>;
548         regulator-max-microvolt = <2500000>;
549         vdda-supply = <&vdd>;
550         status = "okay";
551 };
552