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