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