xref: /rk3399_ARM-atf/fdts/stm32mp15xx-dhcom-som.dtsi (revision 4b55bcb5a44a9a7a7ea3f1d2d03c6c0e8f383ad3)
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_RTC_LSE
197eef485abSJohann Neuhauser		CLK_MCO1_DISABLED
198*fc2e4babSYann Gautier		CLK_MCO2_PLL4
199eef485abSJohann Neuhauser		CLK_CKPER_HSE
200eef485abSJohann Neuhauser		CLK_FMC_ACLK
201eef485abSJohann Neuhauser		CLK_QSPI_ACLK
202eef485abSJohann Neuhauser		CLK_ETH_PLL4P
203eef485abSJohann Neuhauser		CLK_SDMMC12_PLL4P
204eef485abSJohann Neuhauser		CLK_DSI_DSIPLL
205eef485abSJohann Neuhauser		CLK_STGEN_HSE
206eef485abSJohann Neuhauser		CLK_USBPHY_HSE
207eef485abSJohann Neuhauser		CLK_SPI2S1_PLL3Q
208eef485abSJohann Neuhauser		CLK_SPI2S23_PLL3Q
209eef485abSJohann Neuhauser		CLK_SPI45_HSI
210eef485abSJohann Neuhauser		CLK_SPI6_HSI
211eef485abSJohann Neuhauser		CLK_I2C46_HSI
212eef485abSJohann Neuhauser		CLK_SDMMC3_PLL4P
213eef485abSJohann Neuhauser		CLK_USBO_USBPHY
214eef485abSJohann Neuhauser		CLK_ADC_CKPER
215eef485abSJohann Neuhauser		CLK_CEC_LSE
216eef485abSJohann Neuhauser		CLK_I2C12_HSI
217eef485abSJohann Neuhauser		CLK_I2C35_HSI
218eef485abSJohann Neuhauser		CLK_UART1_HSI
219eef485abSJohann Neuhauser		CLK_UART24_HSI
220eef485abSJohann Neuhauser		CLK_UART35_HSI
221eef485abSJohann Neuhauser		CLK_UART6_HSI
222eef485abSJohann Neuhauser		CLK_UART78_HSI
223eef485abSJohann Neuhauser		CLK_SPDIF_PLL4P
224eef485abSJohann Neuhauser		CLK_FDCAN_PLL4R
225eef485abSJohann Neuhauser		CLK_SAI1_PLL3Q
226eef485abSJohann Neuhauser		CLK_SAI2_PLL3Q
227eef485abSJohann Neuhauser		CLK_SAI3_PLL3Q
228eef485abSJohann Neuhauser		CLK_SAI4_PLL3Q
229d594239dSLionel Debieve		CLK_RNG1_CSI
230eef485abSJohann Neuhauser		CLK_RNG2_LSI
231eef485abSJohann Neuhauser		CLK_LPTIM1_PCLK1
232eef485abSJohann Neuhauser		CLK_LPTIM23_PCLK3
233eef485abSJohann Neuhauser		CLK_LPTIM45_LSE
234eef485abSJohann Neuhauser	>;
235eef485abSJohann Neuhauser
2364391e5edSGabriel Fernandez	st,clkdiv = <
2374391e5edSGabriel Fernandez		DIV(DIV_MPU, 1)
2384391e5edSGabriel Fernandez		DIV(DIV_AXI, 0)
2394391e5edSGabriel Fernandez		DIV(DIV_MCU, 0)
2404391e5edSGabriel Fernandez		DIV(DIV_APB1, 1)
2414391e5edSGabriel Fernandez		DIV(DIV_APB2, 1)
2424391e5edSGabriel Fernandez		DIV(DIV_APB3, 1)
2434391e5edSGabriel Fernandez		DIV(DIV_APB4, 1)
2444391e5edSGabriel Fernandez		DIV(DIV_APB5, 2)
2454391e5edSGabriel Fernandez		DIV(DIV_RTC, 23)
2464391e5edSGabriel Fernandez		DIV(DIV_MCO1, 0)
2474391e5edSGabriel Fernandez		DIV(DIV_MCO2, 1)
2484391e5edSGabriel Fernandez	>;
2494391e5edSGabriel Fernandez
2504391e5edSGabriel Fernandez	st,pll_vco {
2514391e5edSGabriel Fernandez		pll2_vco_1066Mhz: pll2-vco-1066Mhz {
2524391e5edSGabriel Fernandez			src = <CLK_PLL12_HSE>;
2534391e5edSGabriel Fernandez			divmn = <2 65>;
2544391e5edSGabriel Fernandez			frac = <0x1400>;
2554391e5edSGabriel Fernandez		};
2564391e5edSGabriel Fernandez
2574391e5edSGabriel Fernandez		pll3_vco_417Mhz: pll3-vco-417Mhz {
2584391e5edSGabriel Fernandez			src = <CLK_PLL3_HSE>;
2594391e5edSGabriel Fernandez			divmn = <1 33>;
2604391e5edSGabriel Fernandez			frac = <0x1a04>;
2614391e5edSGabriel Fernandez		};
2624391e5edSGabriel Fernandez
2634391e5edSGabriel Fernandez		pll4_vco_600Mhz: pll4-vco-600hz {
2644391e5edSGabriel Fernandez			src = <CLK_PLL4_HSE>;
2654391e5edSGabriel Fernandez			divmn = <1 49>;
2664391e5edSGabriel Fernandez		};
2674391e5edSGabriel Fernandez	};
2684391e5edSGabriel Fernandez
269eef485abSJohann Neuhauser	/* VCO = 1066.0 MHz => P = 266 (AXI), Q = 533 (GPU), R = 533 (DDR) */
270eef485abSJohann Neuhauser	pll2: st,pll@1 {
271eef485abSJohann Neuhauser		compatible = "st,stm32mp1-pll";
272eef485abSJohann Neuhauser		reg = <1>;
2734391e5edSGabriel Fernandez
2744391e5edSGabriel Fernandez		st,pll = <&pll2_cfg1>;
2754391e5edSGabriel Fernandez
2764391e5edSGabriel Fernandez		pll2_cfg1: pll2_cfg1 {
2774391e5edSGabriel Fernandez			st,pll_vco = <&pll2_vco_1066Mhz>;
2784391e5edSGabriel Fernandez			st,pll_div_pqr = <1 0 0>;
2794391e5edSGabriel Fernandez		};
280eef485abSJohann Neuhauser	};
281eef485abSJohann Neuhauser
282eef485abSJohann Neuhauser	/* VCO = 417.8 MHz => P = 209, Q = 24, R = 11 */
283eef485abSJohann Neuhauser	pll3: st,pll@2 {
284eef485abSJohann Neuhauser		compatible = "st,stm32mp1-pll";
285eef485abSJohann Neuhauser		reg = <2>;
2864391e5edSGabriel Fernandez
2874391e5edSGabriel Fernandez		st,pll = <&pll3_cfg1>;
2884391e5edSGabriel Fernandez
2894391e5edSGabriel Fernandez		pll3_cfg1: pll3_cfg1 {
2904391e5edSGabriel Fernandez			st,pll_vco = <&pll3_vco_417Mhz>;
2914391e5edSGabriel Fernandez			st,pll_div_pqr = <1 16 36>;
2924391e5edSGabriel Fernandez		};
293eef485abSJohann Neuhauser	};
294eef485abSJohann Neuhauser
295eef485abSJohann Neuhauser	/* VCO = 600.0 MHz => P = 50, Q = 50, R = 50 */
296eef485abSJohann Neuhauser	pll4: st,pll@3 {
297eef485abSJohann Neuhauser		compatible = "st,stm32mp1-pll";
298eef485abSJohann Neuhauser		reg = <3>;
2994391e5edSGabriel Fernandez
3004391e5edSGabriel Fernandez		st,pll = <&pll4_cfg1>;
3014391e5edSGabriel Fernandez
3024391e5edSGabriel Fernandez		pll4_cfg1: pll4_cfg1 {
3034391e5edSGabriel Fernandez			st,pll_vco = <&pll4_vco_600Mhz>;
3044391e5edSGabriel Fernandez			st,pll_div_pqr = <5 11 11>;
3054391e5edSGabriel Fernandez		};
306eef485abSJohann Neuhauser	};
307eef485abSJohann Neuhauser};
308eef485abSJohann Neuhauser
309eef485abSJohann Neuhauser&rng1 {
310eef485abSJohann Neuhauser	status = "okay";
311eef485abSJohann Neuhauser};
312eef485abSJohann Neuhauser
313eef485abSJohann Neuhauser&rtc {
314eef485abSJohann Neuhauser	status = "okay";
315eef485abSJohann Neuhauser};
316eef485abSJohann Neuhauser
317eef485abSJohann Neuhauser&sdmmc1 {
318eef485abSJohann Neuhauser	pinctrl-names = "default";
319eef485abSJohann Neuhauser	pinctrl-0 = <&sdmmc1_b4_pins_a &sdmmc1_dir_pins_a>;
320eef485abSJohann Neuhauser	disable-wp;
321eef485abSJohann Neuhauser	st,sig-dir;
322eef485abSJohann Neuhauser	st,neg-edge;
323eef485abSJohann Neuhauser	bus-width = <4>;
324eef485abSJohann Neuhauser	vmmc-supply = <&vdd_sd>;
325eef485abSJohann Neuhauser	status = "okay";
326eef485abSJohann Neuhauser};
327eef485abSJohann Neuhauser
328eef485abSJohann Neuhauser&sdmmc1_b4_pins_a {
329eef485abSJohann Neuhauser	/*
330eef485abSJohann Neuhauser	 * SD bus pull-up resistors:
331eef485abSJohann Neuhauser	 * - optional on SoMs with SD voltage translator
332eef485abSJohann Neuhauser	 * - mandatory on SoMs without SD voltage translator
333eef485abSJohann Neuhauser	 */
334eef485abSJohann Neuhauser	pins1 {
335eef485abSJohann Neuhauser		bias-pull-up;
336eef485abSJohann Neuhauser	};
337eef485abSJohann Neuhauser	pins2 {
338eef485abSJohann Neuhauser		bias-pull-up;
339eef485abSJohann Neuhauser	};
340eef485abSJohann Neuhauser};
341eef485abSJohann Neuhauser
342eef485abSJohann Neuhauser&sdmmc2 {
343eef485abSJohann Neuhauser	pinctrl-names = "default";
344eef485abSJohann Neuhauser	pinctrl-0 = <&sdmmc2_b4_pins_a &sdmmc2_d47_pins_a>;
345eef485abSJohann Neuhauser	non-removable;
346eef485abSJohann Neuhauser	no-sd;
347eef485abSJohann Neuhauser	no-sdio;
348eef485abSJohann Neuhauser	st,neg-edge;
349eef485abSJohann Neuhauser	bus-width = <8>;
350eef485abSJohann Neuhauser	vmmc-supply = <&v3v3>;
351eef485abSJohann Neuhauser	vqmmc-supply = <&v3v3>;
352eef485abSJohann Neuhauser	mmc-ddr-3_3v;
353eef485abSJohann Neuhauser	status = "okay";
354eef485abSJohann Neuhauser};
355eef485abSJohann Neuhauser
356eef485abSJohann Neuhauser&uart4 {
357eef485abSJohann Neuhauser	pinctrl-names = "default";
358eef485abSJohann Neuhauser	pinctrl-0 = <&uart4_pins_a>;
359eef485abSJohann Neuhauser	status = "okay";
360eef485abSJohann Neuhauser};
361