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