xref: /rk3399_ARM-atf/fdts/stm32mp15xx-dhcor-som.dtsi (revision 51e223058fe70b311542178f1865514745fa7874)
1*51e22305SJohann Neuhauser// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
2*51e22305SJohann Neuhauser/*
3*51e22305SJohann Neuhauser * Copyright (C) Linaro Ltd 2019 - All Rights Reserved
4*51e22305SJohann Neuhauser * Author: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
5*51e22305SJohann Neuhauser * Copyright (C) 2020 Marek Vasut <marex@denx.de>
6*51e22305SJohann Neuhauser * Copyright (C) 2022 DH electronics GmbH
7*51e22305SJohann Neuhauser */
8*51e22305SJohann Neuhauser
9*51e22305SJohann Neuhauser#include "stm32mp15-pinctrl.dtsi"
10*51e22305SJohann Neuhauser#include "stm32mp15xxaa-pinctrl.dtsi"
11*51e22305SJohann Neuhauser#include <dt-bindings/clock/stm32mp1-clksrc.h>
12*51e22305SJohann Neuhauser#include "stm32mp15-ddr3-dhsom-2x4Gb-1066-binG.dtsi"
13*51e22305SJohann Neuhauser
14*51e22305SJohann Neuhauser/ {
15*51e22305SJohann Neuhauser	memory@c0000000 {
16*51e22305SJohann Neuhauser		device_type = "memory";
17*51e22305SJohann Neuhauser		reg = <0xc0000000 0x40000000>;
18*51e22305SJohann Neuhauser	};
19*51e22305SJohann Neuhauser};
20*51e22305SJohann Neuhauser
21*51e22305SJohann Neuhauser&cpu0 {
22*51e22305SJohann Neuhauser	cpu-supply = <&vddcore>;
23*51e22305SJohann Neuhauser};
24*51e22305SJohann Neuhauser
25*51e22305SJohann Neuhauser&cpu1 {
26*51e22305SJohann Neuhauser	cpu-supply = <&vddcore>;
27*51e22305SJohann Neuhauser};
28*51e22305SJohann Neuhauser
29*51e22305SJohann Neuhauser&hash1 {
30*51e22305SJohann Neuhauser	status = "okay";
31*51e22305SJohann Neuhauser};
32*51e22305SJohann Neuhauser
33*51e22305SJohann Neuhauser&i2c4 {
34*51e22305SJohann Neuhauser	pinctrl-names = "default";
35*51e22305SJohann Neuhauser	pinctrl-0 = <&i2c4_pins_a>;
36*51e22305SJohann Neuhauser	i2c-scl-rising-time-ns = <185>;
37*51e22305SJohann Neuhauser	i2c-scl-falling-time-ns = <20>;
38*51e22305SJohann Neuhauser	status = "okay";
39*51e22305SJohann Neuhauser
40*51e22305SJohann Neuhauser	pmic: stpmic@33 {
41*51e22305SJohann Neuhauser		compatible = "st,stpmic1";
42*51e22305SJohann Neuhauser		reg = <0x33>;
43*51e22305SJohann Neuhauser		interrupts-extended = <&gpioa 0 IRQ_TYPE_EDGE_FALLING>;
44*51e22305SJohann Neuhauser		interrupt-controller;
45*51e22305SJohann Neuhauser		#interrupt-cells = <2>;
46*51e22305SJohann Neuhauser		status = "okay";
47*51e22305SJohann Neuhauser
48*51e22305SJohann Neuhauser		regulators {
49*51e22305SJohann Neuhauser			compatible = "st,stpmic1-regulators";
50*51e22305SJohann Neuhauser			ldo1-supply = <&v3v3>;
51*51e22305SJohann Neuhauser			ldo2-supply = <&v3v3>;
52*51e22305SJohann Neuhauser			ldo3-supply = <&vdd_ddr>;
53*51e22305SJohann Neuhauser			ldo5-supply = <&v3v3>;
54*51e22305SJohann Neuhauser			ldo6-supply = <&v3v3>;
55*51e22305SJohann Neuhauser			pwr_sw1-supply = <&bst_out>;
56*51e22305SJohann Neuhauser			pwr_sw2-supply = <&bst_out>;
57*51e22305SJohann Neuhauser
58*51e22305SJohann Neuhauser			vddcore: buck1 {
59*51e22305SJohann Neuhauser				regulator-name = "vddcore";
60*51e22305SJohann Neuhauser				regulator-min-microvolt = <1200000>;
61*51e22305SJohann Neuhauser				regulator-max-microvolt = <1350000>;
62*51e22305SJohann Neuhauser				regulator-always-on;
63*51e22305SJohann Neuhauser				regulator-initial-mode = <0>;
64*51e22305SJohann Neuhauser				regulator-over-current-protection;
65*51e22305SJohann Neuhauser			};
66*51e22305SJohann Neuhauser
67*51e22305SJohann Neuhauser			vdd_ddr: buck2 {
68*51e22305SJohann Neuhauser				regulator-name = "vdd_ddr";
69*51e22305SJohann Neuhauser				regulator-min-microvolt = <1350000>;
70*51e22305SJohann Neuhauser				regulator-max-microvolt = <1350000>;
71*51e22305SJohann Neuhauser				regulator-always-on;
72*51e22305SJohann Neuhauser				regulator-initial-mode = <0>;
73*51e22305SJohann Neuhauser				regulator-over-current-protection;
74*51e22305SJohann Neuhauser			};
75*51e22305SJohann Neuhauser
76*51e22305SJohann Neuhauser			vdd: buck3 {
77*51e22305SJohann Neuhauser				regulator-name = "vdd";
78*51e22305SJohann Neuhauser				regulator-min-microvolt = <3300000>;
79*51e22305SJohann Neuhauser				regulator-max-microvolt = <3300000>;
80*51e22305SJohann Neuhauser				regulator-always-on;
81*51e22305SJohann Neuhauser				regulator-initial-mode = <0>;
82*51e22305SJohann Neuhauser				regulator-over-current-protection;
83*51e22305SJohann Neuhauser			};
84*51e22305SJohann Neuhauser
85*51e22305SJohann Neuhauser			v3v3: buck4 {
86*51e22305SJohann Neuhauser				regulator-name = "v3v3";
87*51e22305SJohann Neuhauser				regulator-min-microvolt = <3300000>;
88*51e22305SJohann Neuhauser				regulator-max-microvolt = <3300000>;
89*51e22305SJohann Neuhauser				regulator-always-on;
90*51e22305SJohann Neuhauser				regulator-over-current-protection;
91*51e22305SJohann Neuhauser				regulator-initial-mode = <0>;
92*51e22305SJohann Neuhauser			};
93*51e22305SJohann Neuhauser
94*51e22305SJohann Neuhauser			vdda: ldo1 {
95*51e22305SJohann Neuhauser				regulator-name = "vdda";
96*51e22305SJohann Neuhauser				regulator-min-microvolt = <2900000>;
97*51e22305SJohann Neuhauser				regulator-max-microvolt = <2900000>;
98*51e22305SJohann Neuhauser			};
99*51e22305SJohann Neuhauser
100*51e22305SJohann Neuhauser			v2v8: ldo2 {
101*51e22305SJohann Neuhauser				regulator-name = "v2v8";
102*51e22305SJohann Neuhauser				regulator-min-microvolt = <2800000>;
103*51e22305SJohann Neuhauser				regulator-max-microvolt = <2800000>;
104*51e22305SJohann Neuhauser			};
105*51e22305SJohann Neuhauser
106*51e22305SJohann Neuhauser			vtt_ddr: ldo3 {
107*51e22305SJohann Neuhauser				regulator-name = "vtt_ddr";
108*51e22305SJohann Neuhauser				regulator-always-on;
109*51e22305SJohann Neuhauser				regulator-over-current-protection;
110*51e22305SJohann Neuhauser				st,regulator-sink-source;
111*51e22305SJohann Neuhauser			};
112*51e22305SJohann Neuhauser
113*51e22305SJohann Neuhauser			vdd_usb: ldo4 {
114*51e22305SJohann Neuhauser				regulator-name = "vdd_usb";
115*51e22305SJohann Neuhauser				regulator-min-microvolt = <3300000>;
116*51e22305SJohann Neuhauser				regulator-max-microvolt = <3300000>;
117*51e22305SJohann Neuhauser			};
118*51e22305SJohann Neuhauser
119*51e22305SJohann Neuhauser			vdd_sd: ldo5 {
120*51e22305SJohann Neuhauser				regulator-name = "vdd_sd";
121*51e22305SJohann Neuhauser				regulator-min-microvolt = <2900000>;
122*51e22305SJohann Neuhauser				regulator-max-microvolt = <2900000>;
123*51e22305SJohann Neuhauser				regulator-boot-on;
124*51e22305SJohann Neuhauser			};
125*51e22305SJohann Neuhauser
126*51e22305SJohann Neuhauser			v1v8: ldo6 {
127*51e22305SJohann Neuhauser				regulator-name = "v1v8";
128*51e22305SJohann Neuhauser				regulator-min-microvolt = <1800000>;
129*51e22305SJohann Neuhauser				regulator-max-microvolt = <1800000>;
130*51e22305SJohann Neuhauser				regulator-enable-ramp-delay = <300000>;
131*51e22305SJohann Neuhauser			};
132*51e22305SJohann Neuhauser
133*51e22305SJohann Neuhauser			vref_ddr: vref_ddr {
134*51e22305SJohann Neuhauser				regulator-name = "vref_ddr";
135*51e22305SJohann Neuhauser				regulator-always-on;
136*51e22305SJohann Neuhauser			};
137*51e22305SJohann Neuhauser
138*51e22305SJohann Neuhauser			bst_out: boost {
139*51e22305SJohann Neuhauser				regulator-name = "bst_out";
140*51e22305SJohann Neuhauser			};
141*51e22305SJohann Neuhauser
142*51e22305SJohann Neuhauser			vbus_otg: pwr_sw1 {
143*51e22305SJohann Neuhauser				regulator-name = "vbus_otg";
144*51e22305SJohann Neuhauser				regulator-active-discharge = <1>;
145*51e22305SJohann Neuhauser			};
146*51e22305SJohann Neuhauser
147*51e22305SJohann Neuhauser			vbus_sw: pwr_sw2 {
148*51e22305SJohann Neuhauser				regulator-name = "vbus_sw";
149*51e22305SJohann Neuhauser				regulator-active-discharge = <1>;
150*51e22305SJohann Neuhauser			};
151*51e22305SJohann Neuhauser		};
152*51e22305SJohann Neuhauser	};
153*51e22305SJohann Neuhauser};
154*51e22305SJohann Neuhauser
155*51e22305SJohann Neuhauser&iwdg2 {
156*51e22305SJohann Neuhauser	timeout-sec = <32>;
157*51e22305SJohann Neuhauser	status = "okay";
158*51e22305SJohann Neuhauser	secure-status = "okay";
159*51e22305SJohann Neuhauser};
160*51e22305SJohann Neuhauser
161*51e22305SJohann Neuhauser&pwr_regulators {
162*51e22305SJohann Neuhauser	vdd-supply = <&vdd>;
163*51e22305SJohann Neuhauser	vdd_3v3_usbfs-supply = <&vdd_usb>;
164*51e22305SJohann Neuhauser};
165*51e22305SJohann Neuhauser
166*51e22305SJohann Neuhauser&qspi {
167*51e22305SJohann Neuhauser	pinctrl-names = "default";
168*51e22305SJohann Neuhauser	pinctrl-0 = <&qspi_clk_pins_a &qspi_bk1_pins_a>;
169*51e22305SJohann Neuhauser	reg = <0x58003000 0x1000>, <0x70000000 0x200000>;
170*51e22305SJohann Neuhauser	#address-cells = <1>;
171*51e22305SJohann Neuhauser	#size-cells = <0>;
172*51e22305SJohann Neuhauser	status = "okay";
173*51e22305SJohann Neuhauser
174*51e22305SJohann Neuhauser	flash0: flash@0 {
175*51e22305SJohann Neuhauser		compatible = "jedec,spi-nor";
176*51e22305SJohann Neuhauser		reg = <0>;
177*51e22305SJohann Neuhauser		spi-rx-bus-width = <4>;
178*51e22305SJohann Neuhauser		spi-max-frequency = <50000000>;
179*51e22305SJohann Neuhauser		#address-cells = <1>;
180*51e22305SJohann Neuhauser		#size-cells = <1>;
181*51e22305SJohann Neuhauser	};
182*51e22305SJohann Neuhauser};
183*51e22305SJohann Neuhauser
184*51e22305SJohann Neuhauser&rcc {
185*51e22305SJohann Neuhauser	secure-status = "disabled";
186*51e22305SJohann Neuhauser	st,clksrc = <
187*51e22305SJohann Neuhauser		CLK_MPU_PLL1P
188*51e22305SJohann Neuhauser		CLK_AXI_PLL2P
189*51e22305SJohann Neuhauser		CLK_MCU_PLL3P
190*51e22305SJohann Neuhauser		CLK_PLL12_HSE
191*51e22305SJohann Neuhauser		CLK_PLL3_HSE
192*51e22305SJohann Neuhauser		CLK_PLL4_HSE
193*51e22305SJohann Neuhauser		CLK_RTC_LSE
194*51e22305SJohann Neuhauser		CLK_MCO1_DISABLED
195*51e22305SJohann Neuhauser		CLK_MCO2_DISABLED
196*51e22305SJohann Neuhauser	>;
197*51e22305SJohann Neuhauser
198*51e22305SJohann Neuhauser	st,clkdiv = <
199*51e22305SJohann Neuhauser		1 /*MPU*/
200*51e22305SJohann Neuhauser		0 /*AXI*/
201*51e22305SJohann Neuhauser		0 /*MCU*/
202*51e22305SJohann Neuhauser		1 /*APB1*/
203*51e22305SJohann Neuhauser		1 /*APB2*/
204*51e22305SJohann Neuhauser		1 /*APB3*/
205*51e22305SJohann Neuhauser		1 /*APB4*/
206*51e22305SJohann Neuhauser		2 /*APB5*/
207*51e22305SJohann Neuhauser		23 /*RTC*/
208*51e22305SJohann Neuhauser		0 /*MCO1*/
209*51e22305SJohann Neuhauser		0 /*MCO2*/
210*51e22305SJohann Neuhauser	>;
211*51e22305SJohann Neuhauser
212*51e22305SJohann Neuhauser	st,pkcs = <
213*51e22305SJohann Neuhauser		CLK_CKPER_HSE
214*51e22305SJohann Neuhauser		CLK_FMC_ACLK
215*51e22305SJohann Neuhauser		CLK_QSPI_ACLK
216*51e22305SJohann Neuhauser		CLK_ETH_DISABLED
217*51e22305SJohann Neuhauser		CLK_SDMMC12_PLL4P
218*51e22305SJohann Neuhauser		CLK_DSI_DSIPLL
219*51e22305SJohann Neuhauser		CLK_STGEN_HSE
220*51e22305SJohann Neuhauser		CLK_USBPHY_HSE
221*51e22305SJohann Neuhauser		CLK_SPI2S1_PLL3Q
222*51e22305SJohann Neuhauser		CLK_SPI2S23_PLL3Q
223*51e22305SJohann Neuhauser		CLK_SPI45_HSI
224*51e22305SJohann Neuhauser		CLK_SPI6_HSI
225*51e22305SJohann Neuhauser		CLK_I2C46_HSI
226*51e22305SJohann Neuhauser		CLK_SDMMC3_PLL4P
227*51e22305SJohann Neuhauser		CLK_USBO_USBPHY
228*51e22305SJohann Neuhauser		CLK_ADC_CKPER
229*51e22305SJohann Neuhauser		CLK_CEC_LSE
230*51e22305SJohann Neuhauser		CLK_I2C12_HSI
231*51e22305SJohann Neuhauser		CLK_I2C35_HSI
232*51e22305SJohann Neuhauser		CLK_UART1_HSI
233*51e22305SJohann Neuhauser		CLK_UART24_HSI
234*51e22305SJohann Neuhauser		CLK_UART35_HSI
235*51e22305SJohann Neuhauser		CLK_UART6_HSI
236*51e22305SJohann Neuhauser		CLK_UART78_HSI
237*51e22305SJohann Neuhauser		CLK_SPDIF_PLL4P
238*51e22305SJohann Neuhauser		CLK_FDCAN_PLL4R
239*51e22305SJohann Neuhauser		CLK_SAI1_PLL3Q
240*51e22305SJohann Neuhauser		CLK_SAI2_PLL3Q
241*51e22305SJohann Neuhauser		CLK_SAI3_PLL3Q
242*51e22305SJohann Neuhauser		CLK_SAI4_PLL3Q
243*51e22305SJohann Neuhauser		CLK_RNG1_LSI
244*51e22305SJohann Neuhauser		CLK_RNG2_LSI
245*51e22305SJohann Neuhauser		CLK_LPTIM1_PCLK1
246*51e22305SJohann Neuhauser		CLK_LPTIM23_PCLK3
247*51e22305SJohann Neuhauser		CLK_LPTIM45_LSE
248*51e22305SJohann Neuhauser	>;
249*51e22305SJohann Neuhauser
250*51e22305SJohann Neuhauser	/* VCO = 1300.0 MHz => P = 650 (CPU) */
251*51e22305SJohann Neuhauser	pll1: st,pll@0 {
252*51e22305SJohann Neuhauser		compatible = "st,stm32mp1-pll";
253*51e22305SJohann Neuhauser		reg = <0>;
254*51e22305SJohann Neuhauser		cfg = <2 80 0 0 0 PQR(1,0,0)>;
255*51e22305SJohann Neuhauser		frac = <0x800>;
256*51e22305SJohann Neuhauser	};
257*51e22305SJohann Neuhauser
258*51e22305SJohann Neuhauser	/* VCO = 1066.0 MHz => P = 266 (AXI), Q = 533 (GPU), R = 533 (DDR) */
259*51e22305SJohann Neuhauser	pll2: st,pll@1 {
260*51e22305SJohann Neuhauser		compatible = "st,stm32mp1-pll";
261*51e22305SJohann Neuhauser		reg = <1>;
262*51e22305SJohann Neuhauser		cfg = <2 65 1 0 0 PQR(1,1,1)>;
263*51e22305SJohann Neuhauser		frac = <0x1400>;
264*51e22305SJohann Neuhauser	};
265*51e22305SJohann Neuhauser
266*51e22305SJohann Neuhauser	/* VCO = 417.8 MHz => P = 209, Q = 24, R = 11 */
267*51e22305SJohann Neuhauser	pll3: st,pll@2 {
268*51e22305SJohann Neuhauser		compatible = "st,stm32mp1-pll";
269*51e22305SJohann Neuhauser		reg = <2>;
270*51e22305SJohann Neuhauser		cfg = <1 33 1 16 36 PQR(1,1,1)>;
271*51e22305SJohann Neuhauser		frac = <0x1a04>;
272*51e22305SJohann Neuhauser	};
273*51e22305SJohann Neuhauser
274*51e22305SJohann Neuhauser	/* VCO = 600.0 MHz => P = 99, Q = 74, R = 99 */
275*51e22305SJohann Neuhauser	pll4: st,pll@3 {
276*51e22305SJohann Neuhauser		compatible = "st,stm32mp1-pll";
277*51e22305SJohann Neuhauser		reg = <3>;
278*51e22305SJohann Neuhauser		cfg = <3 98 5 7 5 PQR(1,1,1)>;
279*51e22305SJohann Neuhauser	};
280*51e22305SJohann Neuhauser};
281*51e22305SJohann Neuhauser
282*51e22305SJohann Neuhauser&rng1 {
283*51e22305SJohann Neuhauser	status = "okay";
284*51e22305SJohann Neuhauser};
285*51e22305SJohann Neuhauser
286*51e22305SJohann Neuhauser&rtc {
287*51e22305SJohann Neuhauser	status = "okay";
288*51e22305SJohann Neuhauser};
289