xref: /rk3399_ARM-atf/fdts/stm32mp15xx-dhcor-som.dtsi (revision 78ff36192f7dd4defa874d8f4387ec94cfcd20ee)
151e22305SJohann Neuhauser// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
251e22305SJohann Neuhauser/*
351e22305SJohann Neuhauser * Copyright (C) Linaro Ltd 2019 - All Rights Reserved
451e22305SJohann Neuhauser * Author: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
551e22305SJohann Neuhauser * Copyright (C) 2020 Marek Vasut <marex@denx.de>
651e22305SJohann Neuhauser * Copyright (C) 2022 DH electronics GmbH
7d594239dSLionel Debieve * Copyright (C) 2023-2024, STMicroelectronics - All Rights Reserved
851e22305SJohann Neuhauser */
951e22305SJohann Neuhauser
1051e22305SJohann Neuhauser#include "stm32mp15-pinctrl.dtsi"
1151e22305SJohann Neuhauser#include "stm32mp15xxaa-pinctrl.dtsi"
1251e22305SJohann Neuhauser#include <dt-bindings/clock/stm32mp1-clksrc.h>
1351e22305SJohann Neuhauser#include "stm32mp15-ddr3-dhsom-2x4Gb-1066-binG.dtsi"
1451e22305SJohann Neuhauser
1551e22305SJohann Neuhauser/ {
1651e22305SJohann Neuhauser	memory@c0000000 {
1751e22305SJohann Neuhauser		device_type = "memory";
1851e22305SJohann Neuhauser		reg = <0xc0000000 0x40000000>;
1951e22305SJohann Neuhauser	};
2051e22305SJohann Neuhauser};
2151e22305SJohann Neuhauser
2251e22305SJohann Neuhauser&cpu0 {
2351e22305SJohann Neuhauser	cpu-supply = <&vddcore>;
2451e22305SJohann Neuhauser};
2551e22305SJohann Neuhauser
2651e22305SJohann Neuhauser&cpu1 {
2751e22305SJohann Neuhauser	cpu-supply = <&vddcore>;
2851e22305SJohann Neuhauser};
2951e22305SJohann Neuhauser
3051e22305SJohann Neuhauser&hash1 {
3151e22305SJohann Neuhauser	status = "okay";
3251e22305SJohann Neuhauser};
3351e22305SJohann Neuhauser
3451e22305SJohann Neuhauser&i2c4 {
3551e22305SJohann Neuhauser	pinctrl-names = "default";
3651e22305SJohann Neuhauser	pinctrl-0 = <&i2c4_pins_a>;
3751e22305SJohann Neuhauser	i2c-scl-rising-time-ns = <185>;
3851e22305SJohann Neuhauser	i2c-scl-falling-time-ns = <20>;
3951e22305SJohann Neuhauser	status = "okay";
4051e22305SJohann Neuhauser
4151e22305SJohann Neuhauser	pmic: stpmic@33 {
4251e22305SJohann Neuhauser		compatible = "st,stpmic1";
4351e22305SJohann Neuhauser		reg = <0x33>;
4451e22305SJohann Neuhauser		interrupts-extended = <&gpioa 0 IRQ_TYPE_EDGE_FALLING>;
4551e22305SJohann Neuhauser		interrupt-controller;
4651e22305SJohann Neuhauser		#interrupt-cells = <2>;
4751e22305SJohann Neuhauser		status = "okay";
4851e22305SJohann Neuhauser
4951e22305SJohann Neuhauser		regulators {
5051e22305SJohann Neuhauser			compatible = "st,stpmic1-regulators";
5151e22305SJohann Neuhauser			ldo1-supply = <&v3v3>;
5251e22305SJohann Neuhauser			ldo2-supply = <&v3v3>;
5351e22305SJohann Neuhauser			ldo3-supply = <&vdd_ddr>;
5451e22305SJohann Neuhauser			ldo5-supply = <&v3v3>;
5551e22305SJohann Neuhauser			ldo6-supply = <&v3v3>;
5651e22305SJohann Neuhauser			pwr_sw1-supply = <&bst_out>;
5751e22305SJohann Neuhauser			pwr_sw2-supply = <&bst_out>;
5851e22305SJohann Neuhauser
5951e22305SJohann Neuhauser			vddcore: buck1 {
6051e22305SJohann Neuhauser				regulator-name = "vddcore";
6151e22305SJohann Neuhauser				regulator-min-microvolt = <1200000>;
6251e22305SJohann Neuhauser				regulator-max-microvolt = <1350000>;
6351e22305SJohann Neuhauser				regulator-always-on;
6451e22305SJohann Neuhauser				regulator-initial-mode = <0>;
6551e22305SJohann Neuhauser				regulator-over-current-protection;
6651e22305SJohann Neuhauser			};
6751e22305SJohann Neuhauser
6851e22305SJohann Neuhauser			vdd_ddr: buck2 {
6951e22305SJohann Neuhauser				regulator-name = "vdd_ddr";
7051e22305SJohann Neuhauser				regulator-min-microvolt = <1350000>;
7151e22305SJohann Neuhauser				regulator-max-microvolt = <1350000>;
7251e22305SJohann Neuhauser				regulator-always-on;
7351e22305SJohann Neuhauser				regulator-initial-mode = <0>;
7451e22305SJohann Neuhauser				regulator-over-current-protection;
7551e22305SJohann Neuhauser			};
7651e22305SJohann Neuhauser
7751e22305SJohann Neuhauser			vdd: buck3 {
7851e22305SJohann Neuhauser				regulator-name = "vdd";
7951e22305SJohann Neuhauser				regulator-min-microvolt = <3300000>;
8051e22305SJohann Neuhauser				regulator-max-microvolt = <3300000>;
8151e22305SJohann Neuhauser				regulator-always-on;
8251e22305SJohann Neuhauser				regulator-initial-mode = <0>;
8351e22305SJohann Neuhauser				regulator-over-current-protection;
8451e22305SJohann Neuhauser			};
8551e22305SJohann Neuhauser
8651e22305SJohann Neuhauser			v3v3: buck4 {
8751e22305SJohann Neuhauser				regulator-name = "v3v3";
8851e22305SJohann Neuhauser				regulator-min-microvolt = <3300000>;
8951e22305SJohann Neuhauser				regulator-max-microvolt = <3300000>;
9051e22305SJohann Neuhauser				regulator-always-on;
9151e22305SJohann Neuhauser				regulator-over-current-protection;
9251e22305SJohann Neuhauser				regulator-initial-mode = <0>;
9351e22305SJohann Neuhauser			};
9451e22305SJohann Neuhauser
9551e22305SJohann Neuhauser			vdda: ldo1 {
9651e22305SJohann Neuhauser				regulator-name = "vdda";
9751e22305SJohann Neuhauser				regulator-min-microvolt = <2900000>;
9851e22305SJohann Neuhauser				regulator-max-microvolt = <2900000>;
9951e22305SJohann Neuhauser			};
10051e22305SJohann Neuhauser
10151e22305SJohann Neuhauser			v2v8: ldo2 {
10251e22305SJohann Neuhauser				regulator-name = "v2v8";
10351e22305SJohann Neuhauser				regulator-min-microvolt = <2800000>;
10451e22305SJohann Neuhauser				regulator-max-microvolt = <2800000>;
10551e22305SJohann Neuhauser			};
10651e22305SJohann Neuhauser
10751e22305SJohann Neuhauser			vtt_ddr: ldo3 {
10851e22305SJohann Neuhauser				regulator-name = "vtt_ddr";
10951e22305SJohann Neuhauser				regulator-always-on;
11051e22305SJohann Neuhauser				regulator-over-current-protection;
11151e22305SJohann Neuhauser				st,regulator-sink-source;
11251e22305SJohann Neuhauser			};
11351e22305SJohann Neuhauser
11451e22305SJohann Neuhauser			vdd_usb: ldo4 {
11551e22305SJohann Neuhauser				regulator-name = "vdd_usb";
11651e22305SJohann Neuhauser				regulator-min-microvolt = <3300000>;
11751e22305SJohann Neuhauser				regulator-max-microvolt = <3300000>;
11851e22305SJohann Neuhauser			};
11951e22305SJohann Neuhauser
12051e22305SJohann Neuhauser			vdd_sd: ldo5 {
12151e22305SJohann Neuhauser				regulator-name = "vdd_sd";
12251e22305SJohann Neuhauser				regulator-min-microvolt = <2900000>;
12351e22305SJohann Neuhauser				regulator-max-microvolt = <2900000>;
12451e22305SJohann Neuhauser				regulator-boot-on;
12551e22305SJohann Neuhauser			};
12651e22305SJohann Neuhauser
12751e22305SJohann Neuhauser			v1v8: ldo6 {
12851e22305SJohann Neuhauser				regulator-name = "v1v8";
12951e22305SJohann Neuhauser				regulator-min-microvolt = <1800000>;
13051e22305SJohann Neuhauser				regulator-max-microvolt = <1800000>;
13151e22305SJohann Neuhauser				regulator-enable-ramp-delay = <300000>;
13251e22305SJohann Neuhauser			};
13351e22305SJohann Neuhauser
13451e22305SJohann Neuhauser			vref_ddr: vref_ddr {
13551e22305SJohann Neuhauser				regulator-name = "vref_ddr";
13651e22305SJohann Neuhauser				regulator-always-on;
13751e22305SJohann Neuhauser			};
13851e22305SJohann Neuhauser
13951e22305SJohann Neuhauser			bst_out: boost {
14051e22305SJohann Neuhauser				regulator-name = "bst_out";
14151e22305SJohann Neuhauser			};
14251e22305SJohann Neuhauser
14351e22305SJohann Neuhauser			vbus_otg: pwr_sw1 {
14451e22305SJohann Neuhauser				regulator-name = "vbus_otg";
14551e22305SJohann Neuhauser				regulator-active-discharge = <1>;
14651e22305SJohann Neuhauser			};
14751e22305SJohann Neuhauser
14851e22305SJohann Neuhauser			vbus_sw: pwr_sw2 {
14951e22305SJohann Neuhauser				regulator-name = "vbus_sw";
15051e22305SJohann Neuhauser				regulator-active-discharge = <1>;
15151e22305SJohann Neuhauser			};
15251e22305SJohann Neuhauser		};
15351e22305SJohann Neuhauser	};
15451e22305SJohann Neuhauser};
15551e22305SJohann Neuhauser
15651e22305SJohann Neuhauser&iwdg2 {
15751e22305SJohann Neuhauser	timeout-sec = <32>;
15851e22305SJohann Neuhauser	status = "okay";
15951e22305SJohann Neuhauser};
16051e22305SJohann Neuhauser
16151e22305SJohann Neuhauser&pwr_regulators {
16251e22305SJohann Neuhauser	vdd-supply = <&vdd>;
16351e22305SJohann Neuhauser	vdd_3v3_usbfs-supply = <&vdd_usb>;
16451e22305SJohann Neuhauser};
16551e22305SJohann Neuhauser
16651e22305SJohann Neuhauser&qspi {
16751e22305SJohann Neuhauser	pinctrl-names = "default";
1684c8e8ea7SYann Gautier	pinctrl-0 = <&qspi_clk_pins_a
1694c8e8ea7SYann Gautier		     &qspi_bk1_pins_a
1704c8e8ea7SYann Gautier		     &qspi_cs1_pins_a>;
17151e22305SJohann Neuhauser	reg = <0x58003000 0x1000>, <0x70000000 0x200000>;
17251e22305SJohann Neuhauser	#address-cells = <1>;
17351e22305SJohann Neuhauser	#size-cells = <0>;
17451e22305SJohann Neuhauser	status = "okay";
17551e22305SJohann Neuhauser
17651e22305SJohann Neuhauser	flash0: flash@0 {
17751e22305SJohann Neuhauser		compatible = "jedec,spi-nor";
17851e22305SJohann Neuhauser		reg = <0>;
17951e22305SJohann Neuhauser		spi-rx-bus-width = <4>;
18051e22305SJohann Neuhauser		spi-max-frequency = <50000000>;
18151e22305SJohann Neuhauser		#address-cells = <1>;
18251e22305SJohann Neuhauser		#size-cells = <1>;
18351e22305SJohann Neuhauser	};
18451e22305SJohann Neuhauser};
18551e22305SJohann Neuhauser
18651e22305SJohann Neuhauser&rcc {
18751e22305SJohann Neuhauser	st,clksrc = <
18851e22305SJohann Neuhauser		CLK_MPU_PLL1P
18951e22305SJohann Neuhauser		CLK_AXI_PLL2P
19051e22305SJohann Neuhauser		CLK_MCU_PLL3P
19151e22305SJohann Neuhauser		CLK_RTC_LSE
19251e22305SJohann Neuhauser		CLK_MCO1_DISABLED
19351e22305SJohann Neuhauser		CLK_MCO2_DISABLED
19451e22305SJohann Neuhauser		CLK_CKPER_HSE
19551e22305SJohann Neuhauser		CLK_FMC_ACLK
19651e22305SJohann Neuhauser		CLK_QSPI_ACLK
19751e22305SJohann Neuhauser		CLK_ETH_DISABLED
19851e22305SJohann Neuhauser		CLK_SDMMC12_PLL4P
19951e22305SJohann Neuhauser		CLK_DSI_DSIPLL
20051e22305SJohann Neuhauser		CLK_STGEN_HSE
20151e22305SJohann Neuhauser		CLK_USBPHY_HSE
20251e22305SJohann Neuhauser		CLK_SPI2S1_PLL3Q
20351e22305SJohann Neuhauser		CLK_SPI2S23_PLL3Q
20451e22305SJohann Neuhauser		CLK_SPI45_HSI
20551e22305SJohann Neuhauser		CLK_SPI6_HSI
20651e22305SJohann Neuhauser		CLK_I2C46_HSI
20751e22305SJohann Neuhauser		CLK_SDMMC3_PLL4P
20851e22305SJohann Neuhauser		CLK_USBO_USBPHY
20951e22305SJohann Neuhauser		CLK_ADC_CKPER
21051e22305SJohann Neuhauser		CLK_CEC_LSE
21151e22305SJohann Neuhauser		CLK_I2C12_HSI
21251e22305SJohann Neuhauser		CLK_I2C35_HSI
21351e22305SJohann Neuhauser		CLK_UART1_HSI
21451e22305SJohann Neuhauser		CLK_UART24_HSI
21551e22305SJohann Neuhauser		CLK_UART35_HSI
21651e22305SJohann Neuhauser		CLK_UART6_HSI
21751e22305SJohann Neuhauser		CLK_UART78_HSI
21851e22305SJohann Neuhauser		CLK_SPDIF_PLL4P
21951e22305SJohann Neuhauser		CLK_FDCAN_PLL4R
22051e22305SJohann Neuhauser		CLK_SAI1_PLL3Q
22151e22305SJohann Neuhauser		CLK_SAI2_PLL3Q
22251e22305SJohann Neuhauser		CLK_SAI3_PLL3Q
22351e22305SJohann Neuhauser		CLK_SAI4_PLL3Q
224d594239dSLionel Debieve		CLK_RNG1_CSI
22551e22305SJohann Neuhauser		CLK_RNG2_LSI
22651e22305SJohann Neuhauser		CLK_LPTIM1_PCLK1
22751e22305SJohann Neuhauser		CLK_LPTIM23_PCLK3
22851e22305SJohann Neuhauser		CLK_LPTIM45_LSE
22951e22305SJohann Neuhauser	>;
23051e22305SJohann Neuhauser
231*4391e5edSGabriel Fernandez	st,clkdiv = <
232*4391e5edSGabriel Fernandez		DIV(DIV_MPU, 1)
233*4391e5edSGabriel Fernandez		DIV(DIV_AXI, 0)
234*4391e5edSGabriel Fernandez		DIV(DIV_MCU, 0)
235*4391e5edSGabriel Fernandez		DIV(DIV_APB1, 1)
236*4391e5edSGabriel Fernandez		DIV(DIV_APB2, 1)
237*4391e5edSGabriel Fernandez		DIV(DIV_APB3, 1)
238*4391e5edSGabriel Fernandez		DIV(DIV_APB4, 1)
239*4391e5edSGabriel Fernandez		DIV(DIV_APB5, 2)
240*4391e5edSGabriel Fernandez		DIV(DIV_RTC, 23)
241*4391e5edSGabriel Fernandez		DIV(DIV_MCO1, 0)
242*4391e5edSGabriel Fernandez		DIV(DIV_MCO2, 0)
243*4391e5edSGabriel Fernandez	>;
244*4391e5edSGabriel Fernandez
245*4391e5edSGabriel Fernandez	st,pll_vco {
246*4391e5edSGabriel Fernandez		pll2_vco_1066Mhz: pll2-vco-1066Mhz {
247*4391e5edSGabriel Fernandez			src = <CLK_PLL12_HSE>;
248*4391e5edSGabriel Fernandez			divmn = <2 65>;
249*4391e5edSGabriel Fernandez			frac = <0x1400>;
250*4391e5edSGabriel Fernandez		};
251*4391e5edSGabriel Fernandez
252*4391e5edSGabriel Fernandez		pll3_vco_417Mhz: pll3-vco-417Mhz {
253*4391e5edSGabriel Fernandez			src = <CLK_PLL3_HSE>;
254*4391e5edSGabriel Fernandez			divmn = <1 33>;
255*4391e5edSGabriel Fernandez			frac = <0x1a04>;
256*4391e5edSGabriel Fernandez		};
257*4391e5edSGabriel Fernandez
258*4391e5edSGabriel Fernandez		pll4_vco_594Mhz: pll4-vco-594Mhz {
259*4391e5edSGabriel Fernandez			src = <CLK_PLL4_HSE>;
260*4391e5edSGabriel Fernandez			divmn = <3 98>;
261*4391e5edSGabriel Fernandez		};
262*4391e5edSGabriel Fernandez	};
263*4391e5edSGabriel Fernandez
26451e22305SJohann Neuhauser	/* VCO = 1066.0 MHz => P = 266 (AXI), Q = 533 (GPU), R = 533 (DDR) */
26551e22305SJohann Neuhauser	pll2: st,pll@1 {
26651e22305SJohann Neuhauser		compatible = "st,stm32mp1-pll";
26751e22305SJohann Neuhauser		reg = <1>;
268*4391e5edSGabriel Fernandez
269*4391e5edSGabriel Fernandez		st,pll = <&pll2_cfg1>;
270*4391e5edSGabriel Fernandez
271*4391e5edSGabriel Fernandez		pll2_cfg1: pll2_cfg1 {
272*4391e5edSGabriel Fernandez			st,pll_vco = <&pll2_vco_1066Mhz>;
273*4391e5edSGabriel Fernandez			st,pll_div_pqr = <1 0 0>;
274*4391e5edSGabriel Fernandez		};
27551e22305SJohann Neuhauser	};
27651e22305SJohann Neuhauser
27751e22305SJohann Neuhauser	/* VCO = 417.8 MHz => P = 209, Q = 24, R = 11 */
27851e22305SJohann Neuhauser	pll3: st,pll@2 {
27951e22305SJohann Neuhauser		compatible = "st,stm32mp1-pll";
28051e22305SJohann Neuhauser		reg = <2>;
281*4391e5edSGabriel Fernandez
282*4391e5edSGabriel Fernandez		st,pll = <&pll3_cfg1>;
283*4391e5edSGabriel Fernandez
284*4391e5edSGabriel Fernandez		pll3_cfg1: pll3_cfg1 {
285*4391e5edSGabriel Fernandez			st,pll_vco = <&pll3_vco_417Mhz>;
286*4391e5edSGabriel Fernandez			st,pll_div_pqr = <1 16 36>;
287*4391e5edSGabriel Fernandez		};
28851e22305SJohann Neuhauser	};
28951e22305SJohann Neuhauser
290*4391e5edSGabriel Fernandez	/* VCO = 600.0 MHz => P = 99, Q = 74, R = 99 */ /* @TOCHECK */
291*4391e5edSGabriel Fernandez	/* VCO = 594.0 MHz => P = 99, Q = 74, R = 74 */
29251e22305SJohann Neuhauser	pll4: st,pll@3 {
29351e22305SJohann Neuhauser		compatible = "st,stm32mp1-pll";
29451e22305SJohann Neuhauser		reg = <3>;
295*4391e5edSGabriel Fernandez
296*4391e5edSGabriel Fernandez		st,pll = <&pll4_cfg1>;
297*4391e5edSGabriel Fernandez
298*4391e5edSGabriel Fernandez		pll4_cfg1: pll4_cfg1 {
299*4391e5edSGabriel Fernandez			st,pll_vco = <&pll4_vco_594Mhz>;
300*4391e5edSGabriel Fernandez			st,pll_div_pqr = <5 7 7>;
301*4391e5edSGabriel Fernandez		};
30251e22305SJohann Neuhauser	};
30351e22305SJohann Neuhauser};
30451e22305SJohann Neuhauser
30551e22305SJohann Neuhauser&rng1 {
30651e22305SJohann Neuhauser	status = "okay";
30751e22305SJohann Neuhauser};
30851e22305SJohann Neuhauser
30951e22305SJohann Neuhauser&rtc {
31051e22305SJohann Neuhauser	status = "okay";
31151e22305SJohann Neuhauser};
312