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