xref: /rk3399_ARM-atf/fdts/stm32mp131.dtsi (revision f2de48cb143c20ccd7a9c141df3d34cae74049de)
1// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
2/*
3 * Copyright (C) STMicroelectronics 2022 - All Rights Reserved
4 * Author: Alexandre Torgue <alexandre.torgue@foss.st.com> for STMicroelectronics.
5 */
6#include <dt-bindings/clock/stm32mp13-clks.h>
7#include <dt-bindings/interrupt-controller/arm-gic.h>
8#include <dt-bindings/reset/stm32mp13-resets.h>
9
10/ {
11	#address-cells = <1>;
12	#size-cells = <1>;
13
14	cpus {
15		#address-cells = <1>;
16		#size-cells = <0>;
17
18		cpu0: cpu@0 {
19			compatible = "arm,cortex-a7";
20			device_type = "cpu";
21			reg = <0>;
22			clocks = <&rcc CK_MPU>;
23			clock-names = "cpu";
24			nvmem-cells = <&part_number_otp>;
25			nvmem-cell-names = "part_number";
26		};
27	};
28
29	nvmem_layout: nvmem_layout@0 {
30		compatible = "st,stm32-nvmem-layout";
31
32		nvmem-cells = <&cfg0_otp>,
33			      <&part_number_otp>,
34			      <&monotonic_otp>,
35			      <&nand_otp>,
36			      <&nand2_otp>,
37			      <&uid_otp>,
38			      <&hw2_otp>;
39
40		nvmem-cell-names = "cfg0_otp",
41				   "part_number_otp",
42				   "monotonic_otp",
43				   "nand_otp",
44				   "nand2_otp",
45				   "uid_otp",
46				   "hw2_otp";
47	};
48
49	clocks {
50		clk_csi: clk-csi {
51			#clock-cells = <0>;
52			compatible = "fixed-clock";
53			clock-frequency = <4000000>;
54		};
55
56		clk_hse: clk-hse {
57			#clock-cells = <0>;
58			compatible = "fixed-clock";
59			clock-frequency = <24000000>;
60		};
61
62		clk_hsi: clk-hsi {
63			#clock-cells = <0>;
64			compatible = "fixed-clock";
65			clock-frequency = <64000000>;
66		};
67
68		clk_lse: clk-lse {
69			#clock-cells = <0>;
70			compatible = "fixed-clock";
71			clock-frequency = <32768>;
72		};
73
74		clk_lsi: clk-lsi {
75			#clock-cells = <0>;
76			compatible = "fixed-clock";
77			clock-frequency = <32000>;
78		};
79	};
80
81	intc: interrupt-controller@a0021000 {
82		compatible = "arm,cortex-a7-gic";
83		#interrupt-cells = <3>;
84		interrupt-controller;
85		reg = <0xa0021000 0x1000>,
86		      <0xa0022000 0x2000>;
87	};
88
89	psci {
90		compatible = "arm,psci-1.0";
91		method = "smc";
92	};
93
94	soc {
95		compatible = "simple-bus";
96		#address-cells = <1>;
97		#size-cells = <1>;
98		interrupt-parent = <&intc>;
99		ranges;
100
101		usart3: serial@4000f000 {
102			compatible = "st,stm32h7-uart";
103			reg = <0x4000f000 0x400>;
104			interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
105			clocks = <&rcc USART3_K>;
106			resets = <&rcc USART3_R>;
107			status = "disabled";
108		};
109
110		uart4: serial@40010000 {
111			compatible = "st,stm32h7-uart";
112			reg = <0x40010000 0x400>;
113			interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>;
114			clocks = <&rcc UART4_K>;
115			resets = <&rcc UART4_R>;
116			status = "disabled";
117		};
118
119		uart5: serial@40011000 {
120			compatible = "st,stm32h7-uart";
121			reg = <0x40011000 0x400>;
122			interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>;
123			clocks = <&rcc UART5_K>;
124			resets = <&rcc UART5_R>;
125			status = "disabled";
126		};
127
128		uart7: serial@40018000 {
129			compatible = "st,stm32h7-uart";
130			reg = <0x40018000 0x400>;
131			interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
132			clocks = <&rcc UART7_K>;
133			resets = <&rcc UART7_R>;
134			status = "disabled";
135		};
136
137		uart8: serial@40019000 {
138			compatible = "st,stm32h7-uart";
139			reg = <0x40019000 0x400>;
140			interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
141			clocks = <&rcc UART8_K>;
142			resets = <&rcc UART8_R>;
143			status = "disabled";
144		};
145
146		usart6: serial@44003000 {
147			compatible = "st,stm32h7-uart";
148			reg = <0x44003000 0x400>;
149			interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
150			clocks = <&rcc USART6_K>;
151			resets = <&rcc USART6_R>;
152			status = "disabled";
153		};
154
155		usbotg_hs: usb-otg@49000000 {
156			compatible = "st,stm32mp15-hsotg", "snps,dwc2";
157			reg = <0x49000000 0x40000>;
158			clocks = <&rcc USBO_K>;
159			clock-names = "otg";
160			resets = <&rcc USBO_R>;
161			reset-names = "dwc2";
162			interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
163			g-rx-fifo-size = <512>;
164			g-np-tx-fifo-size = <32>;
165			g-tx-fifo-size = <256 16 16 16 16 16 16 16>;
166			dr_mode = "otg";
167			usb33d-supply = <&usb33>;
168			status = "disabled";
169		};
170
171		usart1: serial@4c000000 {
172			compatible = "st,stm32h7-uart";
173			reg = <0x4c000000 0x400>;
174			interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
175			clocks = <&rcc USART1_K>;
176			resets = <&rcc USART1_R>;
177			status = "disabled";
178		};
179
180		usart2: serial@4c001000 {
181			compatible = "st,stm32h7-uart";
182			reg = <0x4c001000 0x400>;
183			interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
184			clocks = <&rcc USART2_K>;
185			resets = <&rcc USART2_R>;
186			status = "disabled";
187		};
188
189		i2c3: i2c@4c004000 {
190			compatible = "st,stm32mp13-i2c";
191			reg = <0x4c004000 0x400>;
192			interrupt-names = "event", "error";
193			interrupts-extended = <&exti 23 IRQ_TYPE_LEVEL_HIGH>,
194					      <&intc GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
195			clocks = <&rcc I2C3_K>;
196			resets = <&rcc I2C3_R>;
197			#address-cells = <1>;
198			#size-cells = <0>;
199			st,syscfg-fmp = <&syscfg 0x4 0x4>;
200			i2c-analog-filter;
201			status = "disabled";
202		};
203
204		i2c4: i2c@4c005000 {
205			compatible = "st,stm32mp13-i2c";
206			reg = <0x4c005000 0x400>;
207			interrupt-names = "event", "error";
208			interrupts-extended = <&exti 24 IRQ_TYPE_LEVEL_HIGH>,
209					      <&intc GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;
210			clocks = <&rcc I2C4_K>;
211			resets = <&rcc I2C4_R>;
212			#address-cells = <1>;
213			#size-cells = <0>;
214			st,syscfg-fmp = <&syscfg 0x4 0x8>;
215			i2c-analog-filter;
216			status = "disabled";
217		};
218
219		i2c5: i2c@4c006000 {
220			compatible = "st,stm32mp13-i2c";
221			reg = <0x4c006000 0x400>;
222			interrupt-names = "event", "error";
223			interrupts-extended = <&exti 25 IRQ_TYPE_LEVEL_HIGH>,
224					      <&intc GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>;
225			clocks = <&rcc I2C5_K>;
226			resets = <&rcc I2C5_R>;
227			#address-cells = <1>;
228			#size-cells = <0>;
229			st,syscfg-fmp = <&syscfg 0x4 0x10>;
230			i2c-analog-filter;
231			status = "disabled";
232		};
233
234		rcc: rcc@50000000 {
235			compatible = "st,stm32mp13-rcc", "syscon";
236			reg = <0x50000000 0x1000>;
237			#address-cells = <1>;
238			#size-cells = <0>;
239			#clock-cells = <1>;
240			#reset-cells = <1>;
241			interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
242			secure-interrupts = <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>;
243			secure-interrupt-names = "wakeup";
244		};
245
246		pwr_regulators: pwr@50001000 {
247			compatible = "st,stm32mp1,pwr-reg";
248			reg = <0x50001000 0x10>;
249
250			reg11: reg11 {
251				regulator-name = "reg11";
252				regulator-min-microvolt = <1100000>;
253				regulator-max-microvolt = <1100000>;
254			};
255
256			reg18: reg18 {
257				regulator-name = "reg18";
258				regulator-min-microvolt = <1800000>;
259				regulator-max-microvolt = <1800000>;
260			};
261
262			usb33: usb33 {
263				regulator-name = "usb33";
264				regulator-min-microvolt = <3300000>;
265				regulator-max-microvolt = <3300000>;
266			};
267		};
268
269		exti: interrupt-controller@5000d000 {
270			compatible = "st,stm32mp13-exti", "syscon";
271			interrupt-controller;
272			#interrupt-cells = <2>;
273			reg = <0x5000d000 0x400>;
274		};
275
276		syscfg: syscon@50020000 {
277			compatible = "st,stm32mp157-syscfg", "syscon";
278			reg = <0x50020000 0x400>;
279			clocks = <&rcc SYSCFG>;
280		};
281
282		vrefbuf: vrefbuf@50025000 {
283			compatible = "st,stm32-vrefbuf";
284			reg = <0x50025000 0x8>;
285			regulator-min-microvolt = <1500000>;
286			regulator-max-microvolt = <2500000>;
287			clocks = <&rcc VREF>;
288			status = "disabled";
289		};
290
291		hash: hash@54003000 {
292			compatible = "st,stm32mp13-hash";
293			reg = <0x54003000 0x400>;
294			clocks = <&rcc HASH1>;
295			resets = <&rcc HASH1_R>;
296			status = "disabled";
297		};
298
299		rng: rng@54004000 {
300			compatible = "st,stm32mp13-rng";
301			reg = <0x54004000 0x400>;
302			clocks = <&rcc RNG1_K>;
303			resets = <&rcc RNG1_R>;
304			status = "disabled";
305		};
306
307		fmc: memory-controller@58002000 {
308			#address-cells = <2>;
309			#size-cells = <1>;
310			compatible = "st,stm32mp1-fmc2-ebi";
311			reg = <0x58002000 0x1000>;
312			clocks = <&rcc FMC_K>;
313			resets = <&rcc FMC_R>;
314			status = "disabled";
315
316			ranges = <0 0 0x60000000 0x04000000>, /* EBI CS 1 */
317				 <1 0 0x64000000 0x04000000>, /* EBI CS 2 */
318				 <2 0 0x68000000 0x04000000>, /* EBI CS 3 */
319				 <3 0 0x6c000000 0x04000000>, /* EBI CS 4 */
320				 <4 0 0x80000000 0x10000000>; /* NAND */
321
322			nand-controller@4,0 {
323				#address-cells = <1>;
324				#size-cells = <0>;
325				compatible = "st,stm32mp1-fmc2-nfc";
326				reg = <4 0x00000000 0x1000>,
327				      <4 0x08010000 0x1000>,
328				      <4 0x08020000 0x1000>,
329				      <4 0x01000000 0x1000>,
330				      <4 0x09010000 0x1000>,
331				      <4 0x09020000 0x1000>;
332				interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
333				status = "disabled";
334			};
335		};
336
337		qspi: spi@58003000 {
338			compatible = "st,stm32f469-qspi";
339			reg = <0x58003000 0x1000>, <0x70000000 0x10000000>;
340			reg-names = "qspi", "qspi_mm";
341			interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
342			clocks = <&rcc QSPI_K>;
343			resets = <&rcc QSPI_R>;
344			status = "disabled";
345		};
346
347		sdmmc1: mmc@58005000 {
348			compatible = "st,stm32-sdmmc2", "arm,pl18x", "arm,primecell";
349			arm,primecell-periphid = <0x20253180>;
350			reg = <0x58005000 0x1000>, <0x58006000 0x1000>;
351			clocks = <&rcc SDMMC1_K>;
352			clock-names = "apb_pclk";
353			resets = <&rcc SDMMC1_R>;
354			cap-sd-highspeed;
355			cap-mmc-highspeed;
356			max-frequency = <120000000>;
357			status = "disabled";
358		};
359
360		sdmmc2: mmc@58007000 {
361			compatible = "st,stm32-sdmmc2", "arm,pl18x", "arm,primecell";
362			arm,primecell-periphid = <0x20253180>;
363			reg = <0x58007000 0x1000>, <0x58008000 0x1000>;
364			clocks = <&rcc SDMMC2_K>;
365			clock-names = "apb_pclk";
366			resets = <&rcc SDMMC2_R>;
367			cap-sd-highspeed;
368			cap-mmc-highspeed;
369			max-frequency = <120000000>;
370			status = "disabled";
371		};
372
373		crc1: crc@58009000 {
374			compatible = "st,stm32f7-crc";
375			reg = <0x58009000 0x400>;
376			clocks = <&rcc CRC1>;
377		};
378
379		usbh_ohci: usbh-ohci@5800c000 {
380			compatible = "generic-ohci";
381			reg = <0x5800c000 0x1000>;
382			clocks = <&rcc USBH>;
383			resets = <&rcc USBH_R>;
384			interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>;
385			status = "disabled";
386		};
387
388		usbh_ehci: usbh-ehci@5800d000 {
389			compatible = "generic-ehci";
390			reg = <0x5800d000 0x1000>;
391			clocks = <&rcc USBH>;
392			resets = <&rcc USBH_R>;
393			interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>;
394			companion = <&usbh_ohci>;
395			status = "disabled";
396		};
397
398		iwdg2: watchdog@5a002000 {
399			compatible = "st,stm32mp1-iwdg";
400			reg = <0x5a002000 0x400>;
401			clocks = <&rcc IWDG2>, <&rcc CK_LSI>;
402			clock-names = "pclk", "lsi";
403			status = "disabled";
404		};
405
406		ddr: ddr@5a003000{
407			compatible = "st,stm32mp13-ddr";
408			reg = <0x5a003000 0x550>, <0x5a004000 0x234>;
409			clocks = <&rcc AXIDCG>,
410				 <&rcc DDRC1>,
411				 <&rcc DDRPHYC>,
412				 <&rcc DDRCAPB>,
413				 <&rcc DDRPHYCAPB>;
414			clock-names = "axidcg",
415				      "ddrc1",
416				      "ddrphyc",
417				      "ddrcapb",
418				      "ddrphycapb";
419		};
420
421		usbphyc: usbphyc@5a006000 {
422			#address-cells = <1>;
423			#size-cells = <0>;
424			#clock-cells = <0>;
425			compatible = "st,stm32mp1-usbphyc";
426			reg = <0x5a006000 0x1000>;
427			clocks = <&rcc USBPHY_K>;
428			resets = <&rcc USBPHY_R>;
429			vdda1v1-supply = <&reg11>;
430			vdda1v8-supply = <&reg18>;
431			status = "disabled";
432
433			usbphyc_port0: usb-phy@0 {
434				#phy-cells = <0>;
435				reg = <0>;
436			};
437
438			usbphyc_port1: usb-phy@1 {
439				#phy-cells = <1>;
440				reg = <1>;
441			};
442		};
443
444		iwdg1: watchdog@5c003000 {
445			compatible = "st,stm32mp1-iwdg";
446			reg = <0x5c003000 0x400>;
447			interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>;
448			clocks = <&rcc IWDG1>, <&rcc CK_LSI>;
449			clock-names = "pclk", "lsi";
450			status = "disabled";
451		};
452
453		bsec: efuse@5c005000 {
454			compatible = "st,stm32mp15-bsec";
455			reg = <0x5c005000 0x400>;
456			#address-cells = <1>;
457			#size-cells = <1>;
458
459			cfg0_otp: cfg0_otp@0 {
460				reg = <0x0 0x2>;
461			};
462			part_number_otp: part_number_otp@4 {
463				reg = <0x4 0x2>;
464			};
465			monotonic_otp: monotonic_otp@10 {
466				reg = <0x10 0x4>;
467			};
468			nand_otp: cfg9_otp@24 {
469				reg = <0x24 0x4>;
470			};
471			nand2_otp: cfg10_otp@28 {
472				reg = <0x28 0x4>;
473			};
474			uid_otp: uid_otp@34 {
475				reg = <0x34 0xc>;
476			};
477			hw2_otp: hw2_otp@48 {
478				reg = <0x48 0x4>;
479			};
480			ts_cal1: calib@5c {
481				reg = <0x5c 0x2>;
482			};
483			ts_cal2: calib@5e {
484				reg = <0x5e 0x2>;
485			};
486			pkh_otp: pkh_otp@60 {
487				reg = <0x60 0x20>;
488			};
489			mac_addr: mac_addr@e4 {
490				reg = <0xe4 0xc>;
491				st,non-secure-otp;
492			};
493		};
494
495		tamp: tamp@5c00a000 {
496			reg = <0x5c00a000 0x400>;
497		};
498
499		/*
500		 * Break node order to solve dependency probe issue between
501		 * pinctrl and exti.
502		 */
503		pinctrl: pin-controller@50002000 {
504			#address-cells = <1>;
505			#size-cells = <1>;
506			compatible = "st,stm32mp135-pinctrl";
507			ranges = <0 0x50002000 0x8400>;
508			interrupt-parent = <&exti>;
509			st,syscfg = <&exti 0x60 0xff>;
510			pins-are-numbered;
511
512			gpioa: gpio@50002000 {
513				gpio-controller;
514				#gpio-cells = <2>;
515				interrupt-controller;
516				#interrupt-cells = <2>;
517				reg = <0x0 0x400>;
518				clocks = <&rcc GPIOA>;
519				st,bank-name = "GPIOA";
520				ngpios = <16>;
521				gpio-ranges = <&pinctrl 0 0 16>;
522			};
523
524			gpiob: gpio@50003000 {
525				gpio-controller;
526				#gpio-cells = <2>;
527				interrupt-controller;
528				#interrupt-cells = <2>;
529				reg = <0x1000 0x400>;
530				clocks = <&rcc GPIOB>;
531				st,bank-name = "GPIOB";
532				ngpios = <16>;
533				gpio-ranges = <&pinctrl 0 16 16>;
534			};
535
536			gpioc: gpio@50004000 {
537				gpio-controller;
538				#gpio-cells = <2>;
539				interrupt-controller;
540				#interrupt-cells = <2>;
541				reg = <0x2000 0x400>;
542				clocks = <&rcc GPIOC>;
543				st,bank-name = "GPIOC";
544				ngpios = <16>;
545				gpio-ranges = <&pinctrl 0 32 16>;
546			};
547
548			gpiod: gpio@50005000 {
549				gpio-controller;
550				#gpio-cells = <2>;
551				interrupt-controller;
552				#interrupt-cells = <2>;
553				reg = <0x3000 0x400>;
554				clocks = <&rcc GPIOD>;
555				st,bank-name = "GPIOD";
556				ngpios = <16>;
557				gpio-ranges = <&pinctrl 0 48 16>;
558			};
559
560			gpioe: gpio@50006000 {
561				gpio-controller;
562				#gpio-cells = <2>;
563				interrupt-controller;
564				#interrupt-cells = <2>;
565				reg = <0x4000 0x400>;
566				clocks = <&rcc GPIOE>;
567				st,bank-name = "GPIOE";
568				ngpios = <16>;
569				gpio-ranges = <&pinctrl 0 64 16>;
570			};
571
572			gpiof: gpio@50007000 {
573				gpio-controller;
574				#gpio-cells = <2>;
575				interrupt-controller;
576				#interrupt-cells = <2>;
577				reg = <0x5000 0x400>;
578				clocks = <&rcc GPIOF>;
579				st,bank-name = "GPIOF";
580				ngpios = <16>;
581				gpio-ranges = <&pinctrl 0 80 16>;
582			};
583
584			gpiog: gpio@50008000 {
585				gpio-controller;
586				#gpio-cells = <2>;
587				interrupt-controller;
588				#interrupt-cells = <2>;
589				reg = <0x6000 0x400>;
590				clocks = <&rcc GPIOG>;
591				st,bank-name = "GPIOG";
592				ngpios = <16>;
593				gpio-ranges = <&pinctrl 0 96 16>;
594			};
595
596			gpioh: gpio@50009000 {
597				gpio-controller;
598				#gpio-cells = <2>;
599				interrupt-controller;
600				#interrupt-cells = <2>;
601				reg = <0x7000 0x400>;
602				clocks = <&rcc GPIOH>;
603				st,bank-name = "GPIOH";
604				ngpios = <15>;
605				gpio-ranges = <&pinctrl 0 112 15>;
606			};
607
608			gpioi: gpio@5000a000 {
609				gpio-controller;
610				#gpio-cells = <2>;
611				interrupt-controller;
612				#interrupt-cells = <2>;
613				reg = <0x8000 0x400>;
614				clocks = <&rcc GPIOI>;
615				st,bank-name = "GPIOI";
616				ngpios = <8>;
617				gpio-ranges = <&pinctrl 0 128 8>;
618			};
619		};
620	};
621};
622