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