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