1*91f16700Schasinglulu// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) 2*91f16700Schasinglulu/* 3*91f16700Schasinglulu * Copyright (C) 2023, Protonic Holland - All Rights Reserved 4*91f16700Schasinglulu * Author: David Jander <david@protonic.nl> 5*91f16700Schasinglulu */ 6*91f16700Schasinglulu/dts-v1/; 7*91f16700Schasinglulu 8*91f16700Schasinglulu#include "stm32mp151.dtsi" 9*91f16700Schasinglulu#include "stm32mp15-pinctrl.dtsi" 10*91f16700Schasinglulu#include "stm32mp15xxad-pinctrl.dtsi" 11*91f16700Schasinglulu#include <dt-bindings/clock/stm32mp1-clksrc.h> 12*91f16700Schasinglulu#include "stm32mp15-ddr3-1x2Gb-1066-binG.dtsi" 13*91f16700Schasinglulu 14*91f16700Schasinglulu/ { 15*91f16700Schasinglulu model = "Protonic PRTT1A"; 16*91f16700Schasinglulu compatible = "prt,prtt1a", "st,stm32mp151"; 17*91f16700Schasinglulu 18*91f16700Schasinglulu chosen { 19*91f16700Schasinglulu stdout-path = "serial0:115200n8"; 20*91f16700Schasinglulu }; 21*91f16700Schasinglulu 22*91f16700Schasinglulu aliases { 23*91f16700Schasinglulu mmc0 = &sdmmc1; 24*91f16700Schasinglulu mmc1 = &sdmmc2; 25*91f16700Schasinglulu serial0 = &uart4; 26*91f16700Schasinglulu }; 27*91f16700Schasinglulu 28*91f16700Schasinglulu memory@c0000000 { 29*91f16700Schasinglulu device_type = "memory"; 30*91f16700Schasinglulu reg = <0xC0000000 0x10000000>; 31*91f16700Schasinglulu }; 32*91f16700Schasinglulu}; 33*91f16700Schasinglulu 34*91f16700Schasinglulu&iwdg2 { 35*91f16700Schasinglulu timeout-sec = <32>; 36*91f16700Schasinglulu status = "okay"; 37*91f16700Schasinglulu secure-status = "okay"; 38*91f16700Schasinglulu}; 39*91f16700Schasinglulu 40*91f16700Schasinglulu&qspi { 41*91f16700Schasinglulu pinctrl-names = "default", "sleep"; 42*91f16700Schasinglulu pinctrl-0 = <&qspi_clk_pins_a 43*91f16700Schasinglulu &qspi_bk1_pins_a 44*91f16700Schasinglulu &qspi_cs1_pins_a>; 45*91f16700Schasinglulu reg = <0x58003000 0x1000>, <0x70000000 0x4000000>; 46*91f16700Schasinglulu #address-cells = <1>; 47*91f16700Schasinglulu #size-cells = <0>; 48*91f16700Schasinglulu status = "okay"; 49*91f16700Schasinglulu 50*91f16700Schasinglulu flash@0 { 51*91f16700Schasinglulu compatible = "spi-nand"; 52*91f16700Schasinglulu reg = <0>; 53*91f16700Schasinglulu spi-rx-bus-width = <4>; 54*91f16700Schasinglulu spi-max-frequency = <104000000>; 55*91f16700Schasinglulu #address-cells = <1>; 56*91f16700Schasinglulu #size-cells = <1>; 57*91f16700Schasinglulu }; 58*91f16700Schasinglulu}; 59*91f16700Schasinglulu 60*91f16700Schasinglulu&qspi_bk1_pins_a { 61*91f16700Schasinglulu pins { 62*91f16700Schasinglulu bias-pull-up; 63*91f16700Schasinglulu drive-push-pull; 64*91f16700Schasinglulu slew-rate = <1>; 65*91f16700Schasinglulu }; 66*91f16700Schasinglulu}; 67*91f16700Schasinglulu 68*91f16700Schasinglulu&rcc { 69*91f16700Schasinglulu st,clksrc = < 70*91f16700Schasinglulu CLK_MPU_PLL1P 71*91f16700Schasinglulu CLK_AXI_PLL2P 72*91f16700Schasinglulu CLK_MCU_PLL3P 73*91f16700Schasinglulu CLK_PLL12_HSE 74*91f16700Schasinglulu CLK_PLL3_HSE 75*91f16700Schasinglulu CLK_PLL4_HSE 76*91f16700Schasinglulu CLK_RTC_LSI 77*91f16700Schasinglulu CLK_MCO1_DISABLED 78*91f16700Schasinglulu CLK_MCO2_DISABLED 79*91f16700Schasinglulu >; 80*91f16700Schasinglulu 81*91f16700Schasinglulu st,clkdiv = < 82*91f16700Schasinglulu 1 /*MPU*/ 83*91f16700Schasinglulu 0 /*AXI*/ 84*91f16700Schasinglulu 0 /*MCU*/ 85*91f16700Schasinglulu 1 /*APB1*/ 86*91f16700Schasinglulu 1 /*APB2*/ 87*91f16700Schasinglulu 1 /*APB3*/ 88*91f16700Schasinglulu 1 /*APB4*/ 89*91f16700Schasinglulu 2 /*APB5*/ 90*91f16700Schasinglulu 23 /*RTC*/ 91*91f16700Schasinglulu 0 /*MCO1*/ 92*91f16700Schasinglulu 0 /*MCO2*/ 93*91f16700Schasinglulu >; 94*91f16700Schasinglulu 95*91f16700Schasinglulu st,pkcs = < 96*91f16700Schasinglulu CLK_CKPER_HSE 97*91f16700Schasinglulu CLK_FMC_ACLK 98*91f16700Schasinglulu CLK_QSPI_ACLK 99*91f16700Schasinglulu CLK_ETH_DISABLED 100*91f16700Schasinglulu CLK_SDMMC12_PLL4P 101*91f16700Schasinglulu CLK_DSI_DSIPLL 102*91f16700Schasinglulu CLK_STGEN_HSE 103*91f16700Schasinglulu CLK_USBPHY_HSE 104*91f16700Schasinglulu CLK_SPI2S1_PLL3Q 105*91f16700Schasinglulu CLK_SPI2S23_PLL3Q 106*91f16700Schasinglulu CLK_SPI45_HSI 107*91f16700Schasinglulu CLK_SPI6_HSI 108*91f16700Schasinglulu CLK_I2C46_HSI 109*91f16700Schasinglulu CLK_SDMMC3_PLL4P 110*91f16700Schasinglulu CLK_USBO_USBPHY 111*91f16700Schasinglulu CLK_ADC_CKPER 112*91f16700Schasinglulu CLK_CEC_LSI 113*91f16700Schasinglulu CLK_I2C12_HSI 114*91f16700Schasinglulu CLK_I2C35_HSI 115*91f16700Schasinglulu CLK_UART1_HSI 116*91f16700Schasinglulu CLK_UART24_HSI 117*91f16700Schasinglulu CLK_UART35_HSI 118*91f16700Schasinglulu CLK_UART6_HSI 119*91f16700Schasinglulu CLK_UART78_HSI 120*91f16700Schasinglulu CLK_SPDIF_PLL4P 121*91f16700Schasinglulu CLK_FDCAN_PLL4R 122*91f16700Schasinglulu CLK_SAI1_PLL3Q 123*91f16700Schasinglulu CLK_SAI2_PLL3Q 124*91f16700Schasinglulu CLK_SAI3_PLL3Q 125*91f16700Schasinglulu CLK_SAI4_PLL3Q 126*91f16700Schasinglulu CLK_RNG1_LSI 127*91f16700Schasinglulu CLK_RNG2_LSI 128*91f16700Schasinglulu CLK_LPTIM1_PCLK1 129*91f16700Schasinglulu CLK_LPTIM23_PCLK3 130*91f16700Schasinglulu CLK_LPTIM45_LSI 131*91f16700Schasinglulu >; 132*91f16700Schasinglulu 133*91f16700Schasinglulu /* VCO = 1300.0 MHz => P = 650 (CPU) */ 134*91f16700Schasinglulu pll1: st,pll@0 { 135*91f16700Schasinglulu compatible = "st,stm32mp1-pll"; 136*91f16700Schasinglulu reg = <0>; 137*91f16700Schasinglulu cfg = <2 80 0 0 0 PQR(1,0,0)>; 138*91f16700Schasinglulu frac = <0x800>; 139*91f16700Schasinglulu }; 140*91f16700Schasinglulu 141*91f16700Schasinglulu /* VCO = 1066.0 MHz => P = 266 (AXI), Q = 533 (GPU), R = 533 (DDR) */ 142*91f16700Schasinglulu pll2: st,pll@1 { 143*91f16700Schasinglulu compatible = "st,stm32mp1-pll"; 144*91f16700Schasinglulu reg = <1>; 145*91f16700Schasinglulu cfg = <2 65 1 0 0 PQR(1,1,1)>; 146*91f16700Schasinglulu frac = <0x1400>; 147*91f16700Schasinglulu }; 148*91f16700Schasinglulu 149*91f16700Schasinglulu /* VCO = 417.8 MHz => P = 209, Q = 24, R = 11 */ 150*91f16700Schasinglulu pll3: st,pll@2 { 151*91f16700Schasinglulu compatible = "st,stm32mp1-pll"; 152*91f16700Schasinglulu reg = <2>; 153*91f16700Schasinglulu cfg = <1 33 1 16 36 PQR(1,1,1)>; 154*91f16700Schasinglulu frac = <0x1a04>; 155*91f16700Schasinglulu }; 156*91f16700Schasinglulu 157*91f16700Schasinglulu /* VCO = 480.0 MHz => P = 120, Q = 40, R = 96 */ 158*91f16700Schasinglulu pll4: st,pll@3 { 159*91f16700Schasinglulu compatible = "st,stm32mp1-pll"; 160*91f16700Schasinglulu reg = <3>; 161*91f16700Schasinglulu cfg = <1 39 3 11 4 PQR(1,1,1)>; 162*91f16700Schasinglulu }; 163*91f16700Schasinglulu}; 164*91f16700Schasinglulu 165*91f16700Schasinglulu&rng1 { 166*91f16700Schasinglulu status = "okay"; 167*91f16700Schasinglulu}; 168*91f16700Schasinglulu 169*91f16700Schasinglulu&rtc { 170*91f16700Schasinglulu status = "okay"; 171*91f16700Schasinglulu}; 172*91f16700Schasinglulu 173*91f16700Schasinglulu&sdmmc1 { 174*91f16700Schasinglulu pinctrl-names = "default"; 175*91f16700Schasinglulu pinctrl-0 = <&sdmmc1_b4_pins_a>; 176*91f16700Schasinglulu bus-width = <4>; 177*91f16700Schasinglulu status = "okay"; 178*91f16700Schasinglulu}; 179*91f16700Schasinglulu 180*91f16700Schasinglulu&sdmmc1_b4_pins_a { 181*91f16700Schasinglulu pins1 { 182*91f16700Schasinglulu bias-pull-up; 183*91f16700Schasinglulu }; 184*91f16700Schasinglulu pins2 { 185*91f16700Schasinglulu bias-pull-up; 186*91f16700Schasinglulu }; 187*91f16700Schasinglulu}; 188*91f16700Schasinglulu 189*91f16700Schasinglulu/* NOTE: Although the PRTT1A does not have an eMMC, we declare it 190*91f16700Schasinglulu * anyway, in order to be able to use the same binary for the 191*91f16700Schasinglulu * PRTT1C also. All involved pins are N.C. on PRTT1A/S for that 192*91f16700Schasinglulu * reason, so it should do no harm. All inputs configured with 193*91f16700Schasinglulu * pull-ups to avoid floating inputs. */ 194*91f16700Schasinglulu&sdmmc2 { 195*91f16700Schasinglulu pinctrl-names = "default"; 196*91f16700Schasinglulu pinctrl-0 = <&sdmmc2_b4_pins_a &sdmmc2_d47_pins_a>; 197*91f16700Schasinglulu bus-width = <8>; 198*91f16700Schasinglulu status = "okay"; 199*91f16700Schasinglulu}; 200*91f16700Schasinglulu 201*91f16700Schasinglulu&sdmmc2_b4_pins_a { 202*91f16700Schasinglulu pins1 { 203*91f16700Schasinglulu pinmux = <STM32_PINMUX('B', 14, AF9)>, /* SDMMC2_D0 */ 204*91f16700Schasinglulu <STM32_PINMUX('B', 7, AF10)>, /* SDMMC2_D1 */ 205*91f16700Schasinglulu <STM32_PINMUX('B', 3, AF9)>, /* SDMMC2_D2 */ 206*91f16700Schasinglulu <STM32_PINMUX('B', 4, AF9)>, /* SDMMC2_D3 */ 207*91f16700Schasinglulu <STM32_PINMUX('G', 6, AF10)>; /* SDMMC2_CMD */ 208*91f16700Schasinglulu }; 209*91f16700Schasinglulu}; 210*91f16700Schasinglulu 211*91f16700Schasinglulu&sdmmc2_d47_pins_a { 212*91f16700Schasinglulu pins { 213*91f16700Schasinglulu pinmux = <STM32_PINMUX('A', 8, AF9)>, /* SDMMC2_D4 */ 214*91f16700Schasinglulu <STM32_PINMUX('A', 9, AF10)>, /* SDMMC2_D5 */ 215*91f16700Schasinglulu <STM32_PINMUX('C', 6, AF10)>, /* SDMMC2_D6 */ 216*91f16700Schasinglulu <STM32_PINMUX('C', 7, AF10)>; /* SDMMC2_D7 */ 217*91f16700Schasinglulu }; 218*91f16700Schasinglulu}; 219*91f16700Schasinglulu 220*91f16700Schasinglulu&uart4 { 221*91f16700Schasinglulu pinctrl-names = "default"; 222*91f16700Schasinglulu pinctrl-0 = <&uart4_pins_a>; 223*91f16700Schasinglulu status = "okay"; 224*91f16700Schasinglulu}; 225*91f16700Schasinglulu 226*91f16700Schasinglulu&uart4_pins_a { 227*91f16700Schasinglulu pins1 { 228*91f16700Schasinglulu pinmux = <STM32_PINMUX('B', 9, AF8)>; /* UART4_TX */ 229*91f16700Schasinglulu bias-disable; 230*91f16700Schasinglulu drive-push-pull; 231*91f16700Schasinglulu slew-rate = <0>; 232*91f16700Schasinglulu }; 233*91f16700Schasinglulu pins2 { 234*91f16700Schasinglulu pinmux = <STM32_PINMUX('B', 2, AF8)>; /* UART4_RX */ 235*91f16700Schasinglulu bias-pull-up; 236*91f16700Schasinglulu }; 237*91f16700Schasinglulu}; 238