1*51e22305SJohann Neuhauser// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause 2*51e22305SJohann Neuhauser/* 3*51e22305SJohann Neuhauser * Copyright (C) Linaro Ltd 2019 - All Rights Reserved 4*51e22305SJohann Neuhauser * Author: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> 5*51e22305SJohann Neuhauser * Copyright (C) 2020 Marek Vasut <marex@denx.de> 6*51e22305SJohann Neuhauser * Copyright (C) 2022 DH electronics GmbH 7*51e22305SJohann Neuhauser */ 8*51e22305SJohann Neuhauser 9*51e22305SJohann Neuhauser#include "stm32mp15-pinctrl.dtsi" 10*51e22305SJohann Neuhauser#include "stm32mp15xxaa-pinctrl.dtsi" 11*51e22305SJohann Neuhauser#include <dt-bindings/clock/stm32mp1-clksrc.h> 12*51e22305SJohann Neuhauser#include "stm32mp15-ddr3-dhsom-2x4Gb-1066-binG.dtsi" 13*51e22305SJohann Neuhauser 14*51e22305SJohann Neuhauser/ { 15*51e22305SJohann Neuhauser memory@c0000000 { 16*51e22305SJohann Neuhauser device_type = "memory"; 17*51e22305SJohann Neuhauser reg = <0xc0000000 0x40000000>; 18*51e22305SJohann Neuhauser }; 19*51e22305SJohann Neuhauser}; 20*51e22305SJohann Neuhauser 21*51e22305SJohann Neuhauser&cpu0 { 22*51e22305SJohann Neuhauser cpu-supply = <&vddcore>; 23*51e22305SJohann Neuhauser}; 24*51e22305SJohann Neuhauser 25*51e22305SJohann Neuhauser&cpu1 { 26*51e22305SJohann Neuhauser cpu-supply = <&vddcore>; 27*51e22305SJohann Neuhauser}; 28*51e22305SJohann Neuhauser 29*51e22305SJohann Neuhauser&hash1 { 30*51e22305SJohann Neuhauser status = "okay"; 31*51e22305SJohann Neuhauser}; 32*51e22305SJohann Neuhauser 33*51e22305SJohann Neuhauser&i2c4 { 34*51e22305SJohann Neuhauser pinctrl-names = "default"; 35*51e22305SJohann Neuhauser pinctrl-0 = <&i2c4_pins_a>; 36*51e22305SJohann Neuhauser i2c-scl-rising-time-ns = <185>; 37*51e22305SJohann Neuhauser i2c-scl-falling-time-ns = <20>; 38*51e22305SJohann Neuhauser status = "okay"; 39*51e22305SJohann Neuhauser 40*51e22305SJohann Neuhauser pmic: stpmic@33 { 41*51e22305SJohann Neuhauser compatible = "st,stpmic1"; 42*51e22305SJohann Neuhauser reg = <0x33>; 43*51e22305SJohann Neuhauser interrupts-extended = <&gpioa 0 IRQ_TYPE_EDGE_FALLING>; 44*51e22305SJohann Neuhauser interrupt-controller; 45*51e22305SJohann Neuhauser #interrupt-cells = <2>; 46*51e22305SJohann Neuhauser status = "okay"; 47*51e22305SJohann Neuhauser 48*51e22305SJohann Neuhauser regulators { 49*51e22305SJohann Neuhauser compatible = "st,stpmic1-regulators"; 50*51e22305SJohann Neuhauser ldo1-supply = <&v3v3>; 51*51e22305SJohann Neuhauser ldo2-supply = <&v3v3>; 52*51e22305SJohann Neuhauser ldo3-supply = <&vdd_ddr>; 53*51e22305SJohann Neuhauser ldo5-supply = <&v3v3>; 54*51e22305SJohann Neuhauser ldo6-supply = <&v3v3>; 55*51e22305SJohann Neuhauser pwr_sw1-supply = <&bst_out>; 56*51e22305SJohann Neuhauser pwr_sw2-supply = <&bst_out>; 57*51e22305SJohann Neuhauser 58*51e22305SJohann Neuhauser vddcore: buck1 { 59*51e22305SJohann Neuhauser regulator-name = "vddcore"; 60*51e22305SJohann Neuhauser regulator-min-microvolt = <1200000>; 61*51e22305SJohann Neuhauser regulator-max-microvolt = <1350000>; 62*51e22305SJohann Neuhauser regulator-always-on; 63*51e22305SJohann Neuhauser regulator-initial-mode = <0>; 64*51e22305SJohann Neuhauser regulator-over-current-protection; 65*51e22305SJohann Neuhauser }; 66*51e22305SJohann Neuhauser 67*51e22305SJohann Neuhauser vdd_ddr: buck2 { 68*51e22305SJohann Neuhauser regulator-name = "vdd_ddr"; 69*51e22305SJohann Neuhauser regulator-min-microvolt = <1350000>; 70*51e22305SJohann Neuhauser regulator-max-microvolt = <1350000>; 71*51e22305SJohann Neuhauser regulator-always-on; 72*51e22305SJohann Neuhauser regulator-initial-mode = <0>; 73*51e22305SJohann Neuhauser regulator-over-current-protection; 74*51e22305SJohann Neuhauser }; 75*51e22305SJohann Neuhauser 76*51e22305SJohann Neuhauser vdd: buck3 { 77*51e22305SJohann Neuhauser regulator-name = "vdd"; 78*51e22305SJohann Neuhauser regulator-min-microvolt = <3300000>; 79*51e22305SJohann Neuhauser regulator-max-microvolt = <3300000>; 80*51e22305SJohann Neuhauser regulator-always-on; 81*51e22305SJohann Neuhauser regulator-initial-mode = <0>; 82*51e22305SJohann Neuhauser regulator-over-current-protection; 83*51e22305SJohann Neuhauser }; 84*51e22305SJohann Neuhauser 85*51e22305SJohann Neuhauser v3v3: buck4 { 86*51e22305SJohann Neuhauser regulator-name = "v3v3"; 87*51e22305SJohann Neuhauser regulator-min-microvolt = <3300000>; 88*51e22305SJohann Neuhauser regulator-max-microvolt = <3300000>; 89*51e22305SJohann Neuhauser regulator-always-on; 90*51e22305SJohann Neuhauser regulator-over-current-protection; 91*51e22305SJohann Neuhauser regulator-initial-mode = <0>; 92*51e22305SJohann Neuhauser }; 93*51e22305SJohann Neuhauser 94*51e22305SJohann Neuhauser vdda: ldo1 { 95*51e22305SJohann Neuhauser regulator-name = "vdda"; 96*51e22305SJohann Neuhauser regulator-min-microvolt = <2900000>; 97*51e22305SJohann Neuhauser regulator-max-microvolt = <2900000>; 98*51e22305SJohann Neuhauser }; 99*51e22305SJohann Neuhauser 100*51e22305SJohann Neuhauser v2v8: ldo2 { 101*51e22305SJohann Neuhauser regulator-name = "v2v8"; 102*51e22305SJohann Neuhauser regulator-min-microvolt = <2800000>; 103*51e22305SJohann Neuhauser regulator-max-microvolt = <2800000>; 104*51e22305SJohann Neuhauser }; 105*51e22305SJohann Neuhauser 106*51e22305SJohann Neuhauser vtt_ddr: ldo3 { 107*51e22305SJohann Neuhauser regulator-name = "vtt_ddr"; 108*51e22305SJohann Neuhauser regulator-always-on; 109*51e22305SJohann Neuhauser regulator-over-current-protection; 110*51e22305SJohann Neuhauser st,regulator-sink-source; 111*51e22305SJohann Neuhauser }; 112*51e22305SJohann Neuhauser 113*51e22305SJohann Neuhauser vdd_usb: ldo4 { 114*51e22305SJohann Neuhauser regulator-name = "vdd_usb"; 115*51e22305SJohann Neuhauser regulator-min-microvolt = <3300000>; 116*51e22305SJohann Neuhauser regulator-max-microvolt = <3300000>; 117*51e22305SJohann Neuhauser }; 118*51e22305SJohann Neuhauser 119*51e22305SJohann Neuhauser vdd_sd: ldo5 { 120*51e22305SJohann Neuhauser regulator-name = "vdd_sd"; 121*51e22305SJohann Neuhauser regulator-min-microvolt = <2900000>; 122*51e22305SJohann Neuhauser regulator-max-microvolt = <2900000>; 123*51e22305SJohann Neuhauser regulator-boot-on; 124*51e22305SJohann Neuhauser }; 125*51e22305SJohann Neuhauser 126*51e22305SJohann Neuhauser v1v8: ldo6 { 127*51e22305SJohann Neuhauser regulator-name = "v1v8"; 128*51e22305SJohann Neuhauser regulator-min-microvolt = <1800000>; 129*51e22305SJohann Neuhauser regulator-max-microvolt = <1800000>; 130*51e22305SJohann Neuhauser regulator-enable-ramp-delay = <300000>; 131*51e22305SJohann Neuhauser }; 132*51e22305SJohann Neuhauser 133*51e22305SJohann Neuhauser vref_ddr: vref_ddr { 134*51e22305SJohann Neuhauser regulator-name = "vref_ddr"; 135*51e22305SJohann Neuhauser regulator-always-on; 136*51e22305SJohann Neuhauser }; 137*51e22305SJohann Neuhauser 138*51e22305SJohann Neuhauser bst_out: boost { 139*51e22305SJohann Neuhauser regulator-name = "bst_out"; 140*51e22305SJohann Neuhauser }; 141*51e22305SJohann Neuhauser 142*51e22305SJohann Neuhauser vbus_otg: pwr_sw1 { 143*51e22305SJohann Neuhauser regulator-name = "vbus_otg"; 144*51e22305SJohann Neuhauser regulator-active-discharge = <1>; 145*51e22305SJohann Neuhauser }; 146*51e22305SJohann Neuhauser 147*51e22305SJohann Neuhauser vbus_sw: pwr_sw2 { 148*51e22305SJohann Neuhauser regulator-name = "vbus_sw"; 149*51e22305SJohann Neuhauser regulator-active-discharge = <1>; 150*51e22305SJohann Neuhauser }; 151*51e22305SJohann Neuhauser }; 152*51e22305SJohann Neuhauser }; 153*51e22305SJohann Neuhauser}; 154*51e22305SJohann Neuhauser 155*51e22305SJohann Neuhauser&iwdg2 { 156*51e22305SJohann Neuhauser timeout-sec = <32>; 157*51e22305SJohann Neuhauser status = "okay"; 158*51e22305SJohann Neuhauser secure-status = "okay"; 159*51e22305SJohann Neuhauser}; 160*51e22305SJohann Neuhauser 161*51e22305SJohann Neuhauser&pwr_regulators { 162*51e22305SJohann Neuhauser vdd-supply = <&vdd>; 163*51e22305SJohann Neuhauser vdd_3v3_usbfs-supply = <&vdd_usb>; 164*51e22305SJohann Neuhauser}; 165*51e22305SJohann Neuhauser 166*51e22305SJohann Neuhauser&qspi { 167*51e22305SJohann Neuhauser pinctrl-names = "default"; 168*51e22305SJohann Neuhauser pinctrl-0 = <&qspi_clk_pins_a &qspi_bk1_pins_a>; 169*51e22305SJohann Neuhauser reg = <0x58003000 0x1000>, <0x70000000 0x200000>; 170*51e22305SJohann Neuhauser #address-cells = <1>; 171*51e22305SJohann Neuhauser #size-cells = <0>; 172*51e22305SJohann Neuhauser status = "okay"; 173*51e22305SJohann Neuhauser 174*51e22305SJohann Neuhauser flash0: flash@0 { 175*51e22305SJohann Neuhauser compatible = "jedec,spi-nor"; 176*51e22305SJohann Neuhauser reg = <0>; 177*51e22305SJohann Neuhauser spi-rx-bus-width = <4>; 178*51e22305SJohann Neuhauser spi-max-frequency = <50000000>; 179*51e22305SJohann Neuhauser #address-cells = <1>; 180*51e22305SJohann Neuhauser #size-cells = <1>; 181*51e22305SJohann Neuhauser }; 182*51e22305SJohann Neuhauser}; 183*51e22305SJohann Neuhauser 184*51e22305SJohann Neuhauser&rcc { 185*51e22305SJohann Neuhauser secure-status = "disabled"; 186*51e22305SJohann Neuhauser st,clksrc = < 187*51e22305SJohann Neuhauser CLK_MPU_PLL1P 188*51e22305SJohann Neuhauser CLK_AXI_PLL2P 189*51e22305SJohann Neuhauser CLK_MCU_PLL3P 190*51e22305SJohann Neuhauser CLK_PLL12_HSE 191*51e22305SJohann Neuhauser CLK_PLL3_HSE 192*51e22305SJohann Neuhauser CLK_PLL4_HSE 193*51e22305SJohann Neuhauser CLK_RTC_LSE 194*51e22305SJohann Neuhauser CLK_MCO1_DISABLED 195*51e22305SJohann Neuhauser CLK_MCO2_DISABLED 196*51e22305SJohann Neuhauser >; 197*51e22305SJohann Neuhauser 198*51e22305SJohann Neuhauser st,clkdiv = < 199*51e22305SJohann Neuhauser 1 /*MPU*/ 200*51e22305SJohann Neuhauser 0 /*AXI*/ 201*51e22305SJohann Neuhauser 0 /*MCU*/ 202*51e22305SJohann Neuhauser 1 /*APB1*/ 203*51e22305SJohann Neuhauser 1 /*APB2*/ 204*51e22305SJohann Neuhauser 1 /*APB3*/ 205*51e22305SJohann Neuhauser 1 /*APB4*/ 206*51e22305SJohann Neuhauser 2 /*APB5*/ 207*51e22305SJohann Neuhauser 23 /*RTC*/ 208*51e22305SJohann Neuhauser 0 /*MCO1*/ 209*51e22305SJohann Neuhauser 0 /*MCO2*/ 210*51e22305SJohann Neuhauser >; 211*51e22305SJohann Neuhauser 212*51e22305SJohann Neuhauser st,pkcs = < 213*51e22305SJohann Neuhauser CLK_CKPER_HSE 214*51e22305SJohann Neuhauser CLK_FMC_ACLK 215*51e22305SJohann Neuhauser CLK_QSPI_ACLK 216*51e22305SJohann Neuhauser CLK_ETH_DISABLED 217*51e22305SJohann Neuhauser CLK_SDMMC12_PLL4P 218*51e22305SJohann Neuhauser CLK_DSI_DSIPLL 219*51e22305SJohann Neuhauser CLK_STGEN_HSE 220*51e22305SJohann Neuhauser CLK_USBPHY_HSE 221*51e22305SJohann Neuhauser CLK_SPI2S1_PLL3Q 222*51e22305SJohann Neuhauser CLK_SPI2S23_PLL3Q 223*51e22305SJohann Neuhauser CLK_SPI45_HSI 224*51e22305SJohann Neuhauser CLK_SPI6_HSI 225*51e22305SJohann Neuhauser CLK_I2C46_HSI 226*51e22305SJohann Neuhauser CLK_SDMMC3_PLL4P 227*51e22305SJohann Neuhauser CLK_USBO_USBPHY 228*51e22305SJohann Neuhauser CLK_ADC_CKPER 229*51e22305SJohann Neuhauser CLK_CEC_LSE 230*51e22305SJohann Neuhauser CLK_I2C12_HSI 231*51e22305SJohann Neuhauser CLK_I2C35_HSI 232*51e22305SJohann Neuhauser CLK_UART1_HSI 233*51e22305SJohann Neuhauser CLK_UART24_HSI 234*51e22305SJohann Neuhauser CLK_UART35_HSI 235*51e22305SJohann Neuhauser CLK_UART6_HSI 236*51e22305SJohann Neuhauser CLK_UART78_HSI 237*51e22305SJohann Neuhauser CLK_SPDIF_PLL4P 238*51e22305SJohann Neuhauser CLK_FDCAN_PLL4R 239*51e22305SJohann Neuhauser CLK_SAI1_PLL3Q 240*51e22305SJohann Neuhauser CLK_SAI2_PLL3Q 241*51e22305SJohann Neuhauser CLK_SAI3_PLL3Q 242*51e22305SJohann Neuhauser CLK_SAI4_PLL3Q 243*51e22305SJohann Neuhauser CLK_RNG1_LSI 244*51e22305SJohann Neuhauser CLK_RNG2_LSI 245*51e22305SJohann Neuhauser CLK_LPTIM1_PCLK1 246*51e22305SJohann Neuhauser CLK_LPTIM23_PCLK3 247*51e22305SJohann Neuhauser CLK_LPTIM45_LSE 248*51e22305SJohann Neuhauser >; 249*51e22305SJohann Neuhauser 250*51e22305SJohann Neuhauser /* VCO = 1300.0 MHz => P = 650 (CPU) */ 251*51e22305SJohann Neuhauser pll1: st,pll@0 { 252*51e22305SJohann Neuhauser compatible = "st,stm32mp1-pll"; 253*51e22305SJohann Neuhauser reg = <0>; 254*51e22305SJohann Neuhauser cfg = <2 80 0 0 0 PQR(1,0,0)>; 255*51e22305SJohann Neuhauser frac = <0x800>; 256*51e22305SJohann Neuhauser }; 257*51e22305SJohann Neuhauser 258*51e22305SJohann Neuhauser /* VCO = 1066.0 MHz => P = 266 (AXI), Q = 533 (GPU), R = 533 (DDR) */ 259*51e22305SJohann Neuhauser pll2: st,pll@1 { 260*51e22305SJohann Neuhauser compatible = "st,stm32mp1-pll"; 261*51e22305SJohann Neuhauser reg = <1>; 262*51e22305SJohann Neuhauser cfg = <2 65 1 0 0 PQR(1,1,1)>; 263*51e22305SJohann Neuhauser frac = <0x1400>; 264*51e22305SJohann Neuhauser }; 265*51e22305SJohann Neuhauser 266*51e22305SJohann Neuhauser /* VCO = 417.8 MHz => P = 209, Q = 24, R = 11 */ 267*51e22305SJohann Neuhauser pll3: st,pll@2 { 268*51e22305SJohann Neuhauser compatible = "st,stm32mp1-pll"; 269*51e22305SJohann Neuhauser reg = <2>; 270*51e22305SJohann Neuhauser cfg = <1 33 1 16 36 PQR(1,1,1)>; 271*51e22305SJohann Neuhauser frac = <0x1a04>; 272*51e22305SJohann Neuhauser }; 273*51e22305SJohann Neuhauser 274*51e22305SJohann Neuhauser /* VCO = 600.0 MHz => P = 99, Q = 74, R = 99 */ 275*51e22305SJohann Neuhauser pll4: st,pll@3 { 276*51e22305SJohann Neuhauser compatible = "st,stm32mp1-pll"; 277*51e22305SJohann Neuhauser reg = <3>; 278*51e22305SJohann Neuhauser cfg = <3 98 5 7 5 PQR(1,1,1)>; 279*51e22305SJohann Neuhauser }; 280*51e22305SJohann Neuhauser}; 281*51e22305SJohann Neuhauser 282*51e22305SJohann Neuhauser&rng1 { 283*51e22305SJohann Neuhauser status = "okay"; 284*51e22305SJohann Neuhauser}; 285*51e22305SJohann Neuhauser 286*51e22305SJohann Neuhauser&rtc { 287*51e22305SJohann Neuhauser status = "okay"; 288*51e22305SJohann Neuhauser}; 289